//######################################################################################## // dashboard.js //######################################################################################## // Released : 14.11.2013 @svenson08 // Version : 1.00 // Revisions: // 0001: Released to testers // 0002: Add DebugMsg. Fix independent Groupsize adjustment after set & siterefresh. // First Release to FHEM SVN // // // Known Bugs/Todo's // See 95_Dashboard.pm //######################################################################################## function saveOrder() { var SaveResult = ""; //------------- Build new Position string --------------- $(".dashboard_column").each(function(index, value){ var colid = value.id; var order = $('#' + colid).sortable("toArray"); for ( var i = 0, n = order.length; i < n; i++ ) { var v = $('#' + order[i]).find('.dashboard_content').is(':visible'); var w = $('#' + order[i]).outerWidth(); if ( $('#' + order[i]).find(".dashboard_content").data("userheight") == null ) { var h = $('#' + order[i]).outerHeight(); } else { var h = $('#' + order[i]).find(".dashboard_content").data("userheight"); if (h.length == 0) { var h = $('#' + order[i]).outerHeight(); } } order[i] = order[i]+","+v+","+h+","+w; } SaveResult = SaveResult + index+','+order+':'; //Result: ,,,,,,,,:'); //############################################################ $( ".dashboard_column" ).sortable( "option", "disabled", true ); $( ".dashboard_widget" ).removeClass("dashboard_widgethelper"); if ($( ".dashboard_widget" ).hasClass("ui-resizable")) { $( ".dashboard_widget" ).resizable("destroy"); }; $( ".dashboard_column" ).removeClass("dashboard_columnhelper"); //############################################################ } function dashboard_unsetlock(){ var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration $("#dashboard_button_lock").prepend(''); //############################################################ $( ".dashboard_column" ).sortable( "option", "disabled", false ); if (params[2] == 1) { $( ".dashboard_widget" ).addClass("dashboard_widgethelper"); } else { $( ".dashboard_widget" ).removeClass("dashboard_widgethelper"); }//Show Widget-Helper Frame if (params[2] == 1) { $( ".dashboard_column" ).addClass("dashboard_columnhelper"); } else { $( ".dashboard_column" ).removeClass("dashboard_columnhelper"); }//Show Widget-Helper Frame dashboard_modifyWidget(); //############################################################ } function dashboard_setposition(){ var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration var sorting = document.getElementById("dashboard_currentsorting").value; FW_cmd(document.location.pathname+'?XHR=1&cmd.'+params[0]+'=attr '+params[0]+' dashboard_sorting '+sorting); document.getElementById("dashboard_button_set").classList.remove('dashboard_button_changed'); } function dashboard_modifyWidget(){ $( ".dashboard_widget" ).resizable({ 'grid': 1, 'minWidth': 150, start: function(e, ui) { var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration //-------- Widgetbegrenzung festlegen ------------------- var rowid = $(this).parent().attr("id"); if (rowid == "sortablecolumn100") { var widgetmaxwidth = (params[7] * params[1]) - 5; var widgetmaxheight = params[8] - 5; } else { if (rowid == "sortablecolumn200") { var widgetmaxwidth = (params[7] * params[1]) - 5; var widgetmaxheight = params[9] -5 ; } else { var widgetmaxwidth = params[1] - 5; var widgetmaxheight = params[5] -5; } } //------------------------------------------------------- maxWidthOffset = widgetmaxwidth; $(this).resizable("option","maxWidth",widgetmaxwidth); $(this).resizable("option","maxHeight",widgetmaxheight); }, resize: function(e, ui) { minHeightOffset = $(this).find(".dashboard_widgetinner").height()+5; ui.size.width = Math.round(ui.size.width); if (ui.size.width > (maxWidthOffset)) { $(this).resizable("option","maxWidth",maxWidthOffset); } if (ui.size.height < (minHeightOffset)) { $(this).resizable("option","minHeight",minHeightOffset); } }, stop: function() { minHeightOffset = $(this).find(".dashboard_widgetinner").height()+5; $(this).resizable("option","minHeight",minHeightOffset); saveOrder(); } }); } $(document).ready( function () { var params = (document.getElementById("dashboard_attr").value).split(","); //get current Configuration $(".dashboard_column").sortable({ connectWith: ['.dashboard_column', '.ui-row'], stop: function() { saveOrder(); } }); if (params[4] == 0){ //set if buttonbar not show dashboard_modifyWidget(); dashboard_setlock(); } restoreOrder(); if (params[6] == 1){ //ToogleButton show/hide $(".dashboard_widget") .addClass( "dashboard_widget dashboard_content ui-corner-all" ) .find(".dashboard_widgetheader") .addClass( "dashboard_widgetheader ui-corner-all" ) .prepend('') .end(); $(".dashboard_widgetheader .dashboard_button_icon").click(function(event) { if ($(this).hasClass("dashboard_button_iconplus")) { $(this).removeClass( "dashboard_button_iconplus" ); $(this).addClass( "dashboard_button_iconminus" ); $(this).parents(".dashboard_widget:first").find(".dashboard_content").show(); var newHeigth = $(this).parents(".dashboard_widget:first").find(".dashboard_content").data("userheight"); } else { $(this).removeClass( "dashboard_button_iconminus" ); $(this).addClass( "dashboard_button_iconplus" ); var currHeigth = Math.round($(this).parents(".dashboard_widget:first").height()); $(this).parents(".dashboard_widget:first").find(".dashboard_content").data("userheight", currHeigth); $(this).parents(".dashboard_widget:first").find(".dashboard_content").hide(); var newHeigth = $(this).parents(".dashboard_widget:first").find(".dashboard_widgetinner").height()+5; } $(this).parents(".dashboard_widget:first").height(newHeigth); saveOrder(); event.stopImmediatePropagation(); }); } $("#dashboard_button_set").button({ create: function( event, ui ) { $(this).addClass("dashboard_button_iconset"); } }); $("#dashboard_button_detail").button({ create: function( event, ui ) { $(this).addClass("dashboard_button_icondetail"); } }); $("#dashboard_button_lock").button({ create: function( event, ui ) { dashboard_modifyWidget(); if (params[3] == "lock") { $(this).button( "option", "label", "Unlock" ); dashboard_setlock(); } else { $(this).button( "option", "label", "Lock" ); dashboard_unsetlock(); } } }); });