var enableSort = false; var closedPanels = new Array(); var hiddenPanels = new Array(); var shownPanels = new Array(); function togglePanelBody(id){ var panelbody = $('panelbody_' + id ); if ( panelbody.visible() ){ $('panelToggleImg_' + id).src = "/image/arrow_down.gif"; hiddenPanels.push(id); shownPanels = shownPanels.without(id); new Effect.BlindUp(panelbody, {duration: 0.5}); }else{ $('panelToggleImg_' + id).src = "/image/arrow_up.gif"; hiddenPanels = hiddenPanels.without(id); shownPanels.push(id); new Effect.BlindDown(panelbody, {duration: 0.5}); } return false; } function togglePanel(id){ var panel = $('panel_' + id ); if ( panel.visible() ){ closedPanels.push(id); panel.hide(); }else{ panel.show(); } return false; } function toggleSort(){ if ( enableSort ){ $('dashboardMng').show(); $('dashboardSettings').hide(); enableSort = false; var leftPanels = Sortable.sequence('leftPanels'); for (i=0; i < leftPanels.length; i++) $('panelCloseImg_' + leftPanels[i]).hide(); Sortable.destroy( 'leftPanels' ); var rightPanels = Sortable.sequence('rightPanels'); for (i=0; i < rightPanels.length; i++) $('panelCloseImg_' + rightPanels[i]).hide(); Sortable.destroy( 'rightPanels' ); // Save settings saveSettings(); }else{ $('dashboardMng').hide(); $('dashboardSettings').show(); enableSort = true; var leftPanelsOrder = $('leftPanelsOrder'); var rightPanelsOrder = $('rightPanelsOrder'); Sortable.create('leftPanels', { tag:'div', constraint: false, containment: ["leftPanels", "rightPanels"], dropOnEmpty: true, format: /^panel[_](.*)$/, onUpdate:function(){ leftPanelsOrder.value = Sortable.sequence('leftPanels').toJSON(); } }); var leftPanels = Sortable.sequence('leftPanels'); for (i=0; i < leftPanels.length; i++) $('panelCloseImg_' + leftPanels[i]).show(); Sortable.create('rightPanels', { tag:'div', constraint: false, containment: ["leftPanels", "rightPanels"], dropOnEmpty: true, format: /^panel[_](.*)$/, onUpdate:function(){ rightPanelsOrder.value = Sortable.sequence('rightPanels').toJSON(); } }); var rightPanels = Sortable.sequence('rightPanels'); for (i=0; i < rightPanels.length; i++) $('panelCloseImg_' + rightPanels[i]).show(); } return false; } function saveSettings(){ var leftPanelsOrder = $('leftPanelsOrder'); var rightPanelsOrder = $('rightPanelsOrder'); new Ajax.Request('/ajax/dashboard/', { method:'post', parameters: 'closed=' + closedPanels.toJSON() + '&hidden=' + hiddenPanels.toJSON() + '&shown='+ shownPanels.toJSON() + '&leftOrder=' + leftPanelsOrder.value + '&rightOrder=' + rightPanelsOrder.value }); } /********************************* * Panel Updates **********************************/ new PeriodicalExecuter(updatePanels, 180); var Panel = Class.create(); /** * Constructor */ Panel.prototype = { initialize: function(id) { this.id = id; this.complete = this.complete.bind(this); }, /** * Update panel */ update: function() { if ( loaded[this.id] ){ if ( this.id != 1 && this.id != 4 ){ $('panelbodycontent_' + this.id).update('Loading...'); } // Show refresh button this.toggleRefresh(); loaded[this.id] = false; // Send ajax request new Ajax.Request('/ajaxdashboard/panel_' + this.id, { method:'get', asynchronous: true, onComplete: this.complete } ); } }, /** * Actions on ajax request complete */ complete: function(transport) { // Hide refresh button this.toggleRefresh(); loaded[this.id] = true; // Update panel if it not chart if ( this.id != 1 && this.id != 4 ){ $('panelbodycontent_' + this.id).update(transport.responseText); }else{ var chartObj = getChartFromId('panelChart' + this.id); chartObj.setDataXML(transport.responseText); } }, /** * Show / hide the refresh panel */ toggleRefresh: function(){ $('panelrefresh_' + this.id).toggle(); } }; function updatePanels(){ for( var p=1; p <= 6; p++){ var panelToUpdate = new Panel(p.toString()); panelToUpdate.update(); } } updatePanels();