var panels = []; var autoRefreshPanels = []; var autoRefreshWindow; function getPanelOptions(id){ for(var i=0; i').attr('id',options.id).appendTo('#portal'); p.panel(options); var columnIndex = portalPanels[i].index?portalPanels[i].index:i; var column = $('#portal').portal('getColumn'); if(column){ columnIndex = columnIndex%column; } $('#portal').portal('add',{ panel:p, columnIndex:columnIndex }); } } } $(function() { $('#portal').portal({ border:false, fit:true }); loadUsingPortal(); function loadUsingPortal(){ $('#portal').portal("removeAll"); panels = []; autoRefreshPanels = []; ajaxRequest(WEBROOT + "/UserPortal/showUsingList.action", { }, function(response) { var data = response.data; for ( var i = 0; i < data.length; i++) { var portalPanelId = data[i].id; var title = data[i].title; var panel = { id:portalPanelId, title:title, height:data[i].height, width:data[i].width, index:data[i].index, href:data[i].href, tools:[{ iconCls:'panel-tool-max', handler:function(event){ var portalPanelId = event.currentTarget.parentElement.parentElement.nextSibling.id; var title = ""; var maxHref = ""; var maxPortalId = 'portal_'+portalPanelId; var maxPortalPanel = $('
').appendTo(top); for ( var i = 0; i < data.length; i++) { if(data[i].id == portalPanelId){ maxHref = data[i].maxHref; title = data[i].title; autoRefreshWindow = {window:maxPortalPanel,time:data[i].refreshTime,remainderTime:data[i].refreshTime}; break; } } openWin(maxPortalPanel, { title:title, width:$(window).width(), height:$(window).height(), onClose: function() { maxPortalPanel.remove(); autoRefreshWindow = undefined; } }); maxPortalPanel.window('refresh', maxHref); } },{ iconCls:'icon-edit', handler:function(event){ var portalPanelId = event.currentTarget.parentElement.parentElement.nextSibling.id; var portalPopWindowId = 'portal_popWindow_'+portalPanelId; var portalForm = 'portal_form_'+portalPanelId; var portalPopWindow = $('
').appendTo(document); portalPopWindow.append('
自动刷新:
刷新时间:
保存
'); portalPopWindow.find('#saveUserPortalBtn').click(function(){ var windowId = portalPopWindow.find("input[name='id']").val(); var index = -1; for ( var i = 0; i < autoRefreshPanels.length; i++) { if(autoRefreshPanels[i].panel.attr("id") == windowId){ index = i; break; } } if(portalPopWindow.find('#isAutoRefresh').attr("checked")){ for ( var i = 0; i < panels.length; i++) { if(panels[i].id == windowId){ var initedPanels = $("#portal").portal("getPanels"); for ( var j = 0; j < initedPanels.length; j++) { if(initedPanels[i].attr("id") == panels[i].id){ var newElement = {panel: initedPanels[i],time:portalPopWindow.find("#refreshTime").val(),remainderTime:portalPopWindow.find("#refreshTime").val()}; if(index == -1){ autoRefreshPanels.push(newElement); }else{ autoRefreshPanels.splice(index, 1, newElement); } break; } } } } }else{ if(index){ autoRefreshPanels.splice(index, 1); } } ajaxRequest(WEBROOT + '/UserPortal/savePortalEdit.action', { 'formData' : JSON.stringify(portalPopWindow.find('#'+portalForm).getFormValue()) }, function(data) { showMsg('提示', '保存成功'); }); }); openWin(portalPopWindow, { title:'编辑', onOpen: function() { portalPopWindow.find('#'+portalForm).form('reset'); ajaxRequest(WEBROOT + '/UserPortal/showPortalEdit.action', { id : portalPanelId }, function(data) { if(data.code == "success"){ data.data.id = undefined; portalPopWindow.find('#'+portalForm).fillForm(data.data); }else{ showMsg('提示', '读取失败'); } }); }, onClose: function() { portalPopWindow.remove(); } }); } }] }; if(data[i].isAutoRefresh){ autoRefreshPanels.push({panel:panel,time:data[i].refreshTime,remainderTime:data[i].refreshTime}); } panels.push(panel); } addPanels(panels); if(autoRefreshPanels.length > 0){ var initedPanels = $("#portal").portal("getPanels"); for ( var i = 0; i < initedPanels.length; i++) { for ( var j = 0; j < autoRefreshPanels.length; j++) { if(initedPanels[i].attr("id") == autoRefreshPanels[j].panel.id){ autoRefreshPanels[j].panel = initedPanels[i]; } } } } $("#portal").portal("resize"); }); } setInterval(function(){ for ( var i = 0; i < autoRefreshPanels.length; i++) { autoRefreshPanels[i].remainderTime = autoRefreshPanels[i].remainderTime - 1000; if(autoRefreshPanels[i].remainderTime <= 0){ autoRefreshPanels[i].panel.panel("refresh"); autoRefreshPanels[i].remainderTime = autoRefreshPanels[i].time; } if(autoRefreshWindow){ autoRefreshWindow.remainderTime = autoRefreshWindow.remainderTime - 1000; if(autoRefreshWindow.remainderTime <= 0){ autoRefreshWindow.window.window('refresh'); autoRefreshWindow.remainderTime = autoRefreshWindow.time; } } } }, 1000); $("#portal").dblclick(function(){ var portalEdit = $('
').appendTo(top); var portalGrid = $('
').appendTo(portalEdit); portalGrid.datagrid({ url:WEBROOT + '/UserPortal/showUserPortalList.action', idField:"id", height:350, columns:[[ {field:'id',checkbox:true,width:100}, {field:'title',title:'名称',width:100} ]], onLoadSuccess : function(data){ var rows = data.rows; ajaxRequest(WEBROOT + "/UserPortal/showUsingList.action", { }, function(response) { var using = response.data; for ( var i = 0; i < rows.length; i++) { for ( var j = 0; j < using.length; j++) { if(using[j].id == rows[i].id){ portalGrid.datagrid("selectRecord", using[j].id); } } } }); } }); openWin(portalEdit, { title:"订阅Portal", onClose: function() { portalEdit.remove(); } }); var userPortalSelect = $('确认').appendTo(portalEdit); userPortalSelect.click(function(){ var rows = portalGrid.datagrid("getSelections"); var ids = []; for ( var i = 0; i < rows.length; i++) { if (rows[i]["id"]) { ids.push(rows[i]["id"]); } } ajaxRequest(WEBROOT + '/UserPortal/saveUserPortalSelect.action', { ids : $.encodeJSON(ids) }, function(data) { if(data.code == "success"){ loadUsingPortal(); }else{ showMsg('提示', '保存失败'); } }); }); }); $("#savePortalLocationBtn").click(function(){ var layout = $("#portal").portal("getLayout"); ajaxRequest(WEBROOT + '/UserPortal/saveUserPortalPosition.action', { layout : $.encodeJSON(layout) }, function(data) { if(data.code == "success"){ showMsg('提示', '保存成功'); }else{ showMsg('提示', '保存失败'); } }); }); function json2str(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; }; for (var i in o) arr.push("'" + i + "':" + fmt(o[i])); return '{' + arr.join(',') + '}'; } });