indexPortal.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. var panels = [];
  2. var autoRefreshPanels = [];
  3. var autoRefreshWindow;
  4. function getPanelOptions(id){
  5. for(var i=0; i<panels.length; i++){
  6. if (panels[i].id == id) {
  7. return panels[i];
  8. }
  9. }
  10. return undefined;
  11. }
  12. function addPanels(portalPanels){
  13. for(var i=0; i<portalPanels.length; i++){
  14. var options = getPanelOptions(portalPanels[i].id);
  15. if (options){
  16. var p = $('<div/>').attr('id',options.id).appendTo('#portal');
  17. p.panel(options);
  18. var columnIndex = portalPanels[i].index?portalPanels[i].index:i;
  19. var column = $('#portal').portal('getColumn');
  20. if(column){
  21. columnIndex = columnIndex%column;
  22. }
  23. $('#portal').portal('add',{
  24. panel:p,
  25. columnIndex:columnIndex
  26. });
  27. }
  28. }
  29. }
  30. $(function() {
  31. $('#portal').portal({
  32. border:false,
  33. fit:true
  34. });
  35. loadUsingPortal();
  36. function loadUsingPortal(){
  37. $('#portal').portal("removeAll");
  38. panels = [];
  39. autoRefreshPanels = [];
  40. ajaxRequest(WEBROOT + "/UserPortal/showUsingList.action", {
  41. }, function(response) {
  42. var data = response.data;
  43. for ( var i = 0; i < data.length; i++) {
  44. var portalPanelId = data[i].id;
  45. var title = data[i].title;
  46. var panel = {
  47. id:portalPanelId,
  48. title:title,
  49. height:data[i].height,
  50. width:data[i].width,
  51. index:data[i].index,
  52. href:data[i].href,
  53. tools:[{
  54. iconCls:'panel-tool-max',
  55. handler:function(event){
  56. var portalPanelId = event.currentTarget.parentElement.parentElement.nextSibling.id;
  57. var title = "";
  58. var maxHref = "";
  59. var maxPortalId = 'portal_'+portalPanelId;
  60. var maxPortalPanel = $('<div id="'+maxPortalId+'"></div>').appendTo(top);
  61. for ( var i = 0; i < data.length; i++) {
  62. if(data[i].id == portalPanelId){
  63. maxHref = data[i].maxHref;
  64. title = data[i].title;
  65. autoRefreshWindow = {window:maxPortalPanel,time:data[i].refreshTime,remainderTime:data[i].refreshTime};
  66. break;
  67. }
  68. }
  69. openWin(maxPortalPanel, {
  70. title:title,
  71. width:$(window).width(),
  72. height:$(window).height(),
  73. onClose: function() {
  74. maxPortalPanel.remove();
  75. autoRefreshWindow = undefined;
  76. }
  77. });
  78. maxPortalPanel.window('refresh', maxHref);
  79. }
  80. },{
  81. iconCls:'icon-edit',
  82. handler:function(event){
  83. var portalPanelId = event.currentTarget.parentElement.parentElement.nextSibling.id;
  84. var portalPopWindowId = 'portal_popWindow_'+portalPanelId;
  85. var portalForm = 'portal_form_'+portalPanelId;
  86. var portalPopWindow = $('<div id="'+portalPopWindowId+'"></div>').appendTo(document);
  87. portalPopWindow.append('<form id="'+portalForm+'"><input type="hidden" name="id" value="'+portalPanelId+'" /><table><tr><td class="title">自动刷新:</td><td><input type="checkbox" name="isAutoRefresh" id="isAutoRefresh" value="1" /></td></tr><tr><td class="title">刷新时间:</td><td><input type="text" class="easyui-numberbox" name="refreshTime" id="refreshTime" /></td></tr><tr><td colspan="2"><a href="#" icon="icon-save" id="saveUserPortalBtn" class="easyui-linkbutton">保存</a></td></tr></table></form>');
  88. portalPopWindow.find('#saveUserPortalBtn').click(function(){
  89. var windowId = portalPopWindow.find("input[name='id']").val();
  90. var index = -1;
  91. for ( var i = 0; i < autoRefreshPanels.length; i++) {
  92. if(autoRefreshPanels[i].panel.attr("id") == windowId){
  93. index = i;
  94. break;
  95. }
  96. }
  97. if(portalPopWindow.find('#isAutoRefresh').attr("checked")){
  98. for ( var i = 0; i < panels.length; i++) {
  99. if(panels[i].id == windowId){
  100. var initedPanels = $("#portal").portal("getPanels");
  101. for ( var j = 0; j < initedPanels.length; j++) {
  102. if(initedPanels[i].attr("id") == panels[i].id){
  103. var newElement = {panel: initedPanels[i],time:portalPopWindow.find("#refreshTime").val(),remainderTime:portalPopWindow.find("#refreshTime").val()};
  104. if(index == -1){
  105. autoRefreshPanels.push(newElement);
  106. }else{
  107. autoRefreshPanels.splice(index, 1, newElement);
  108. }
  109. break;
  110. }
  111. }
  112. }
  113. }
  114. }else{
  115. if(index){
  116. autoRefreshPanels.splice(index, 1);
  117. }
  118. }
  119. ajaxRequest(WEBROOT + '/UserPortal/savePortalEdit.action', {
  120. 'formData' : JSON.stringify(portalPopWindow.find('#'+portalForm).getFormValue())
  121. }, function(data) {
  122. showMsg('提示', '保存成功');
  123. });
  124. });
  125. openWin(portalPopWindow, {
  126. title:'编辑',
  127. onOpen: function() {
  128. portalPopWindow.find('#'+portalForm).form('reset');
  129. ajaxRequest(WEBROOT + '/UserPortal/showPortalEdit.action', {
  130. id : portalPanelId
  131. }, function(data) {
  132. if(data.code == "success"){
  133. data.data.id = undefined;
  134. portalPopWindow.find('#'+portalForm).fillForm(data.data);
  135. }else{
  136. showMsg('提示', '读取失败');
  137. }
  138. });
  139. },
  140. onClose: function() {
  141. portalPopWindow.remove();
  142. }
  143. });
  144. }
  145. }]
  146. };
  147. if(data[i].isAutoRefresh){
  148. autoRefreshPanels.push({panel:panel,time:data[i].refreshTime,remainderTime:data[i].refreshTime});
  149. }
  150. panels.push(panel);
  151. }
  152. addPanels(panels);
  153. if(autoRefreshPanels.length > 0){
  154. var initedPanels = $("#portal").portal("getPanels");
  155. for ( var i = 0; i < initedPanels.length; i++) {
  156. for ( var j = 0; j < autoRefreshPanels.length; j++) {
  157. if(initedPanels[i].attr("id") == autoRefreshPanels[j].panel.id){
  158. autoRefreshPanels[j].panel = initedPanels[i];
  159. }
  160. }
  161. }
  162. }
  163. $("#portal").portal("resize");
  164. });
  165. }
  166. setInterval(function(){
  167. for ( var i = 0; i < autoRefreshPanels.length; i++) {
  168. autoRefreshPanels[i].remainderTime = autoRefreshPanels[i].remainderTime - 1000;
  169. if(autoRefreshPanels[i].remainderTime <= 0){
  170. autoRefreshPanels[i].panel.panel("refresh");
  171. autoRefreshPanels[i].remainderTime = autoRefreshPanels[i].time;
  172. }
  173. if(autoRefreshWindow){
  174. autoRefreshWindow.remainderTime = autoRefreshWindow.remainderTime - 1000;
  175. if(autoRefreshWindow.remainderTime <= 0){
  176. autoRefreshWindow.window.window('refresh');
  177. autoRefreshWindow.remainderTime = autoRefreshWindow.time;
  178. }
  179. }
  180. }
  181. }, 1000);
  182. $("#portal").dblclick(function(){
  183. var portalEdit = $('<div id="portal_dblEdit"></div>').appendTo(top);
  184. var portalGrid = $('<table id="portalGrid"></table>').appendTo(portalEdit);
  185. portalGrid.datagrid({
  186. url:WEBROOT + '/UserPortal/showUserPortalList.action',
  187. idField:"id",
  188. height:350,
  189. columns:[[
  190. {field:'id',checkbox:true,width:100},
  191. {field:'title',title:'名称',width:100}
  192. ]],
  193. onLoadSuccess : function(data){
  194. var rows = data.rows;
  195. ajaxRequest(WEBROOT + "/UserPortal/showUsingList.action", {
  196. }, function(response) {
  197. var using = response.data;
  198. for ( var i = 0; i < rows.length; i++) {
  199. for ( var j = 0; j < using.length; j++) {
  200. if(using[j].id == rows[i].id){
  201. portalGrid.datagrid("selectRecord", using[j].id);
  202. }
  203. }
  204. }
  205. });
  206. }
  207. });
  208. openWin(portalEdit, {
  209. title:"订阅Portal",
  210. onClose: function() {
  211. portalEdit.remove();
  212. }
  213. });
  214. var userPortalSelect = $('<a href="#" icon="icon-save" id="userPortalSelectBtn" class="easyui-linkbutton">确认</a>').appendTo(portalEdit);
  215. userPortalSelect.click(function(){
  216. var rows = portalGrid.datagrid("getSelections");
  217. var ids = [];
  218. for ( var i = 0; i < rows.length; i++) {
  219. if (rows[i]["id"]) {
  220. ids.push(rows[i]["id"]);
  221. }
  222. }
  223. ajaxRequest(WEBROOT + '/UserPortal/saveUserPortalSelect.action', {
  224. ids : $.encodeJSON(ids)
  225. }, function(data) {
  226. if(data.code == "success"){
  227. loadUsingPortal();
  228. }else{
  229. showMsg('提示', '保存失败');
  230. }
  231. });
  232. });
  233. });
  234. $("#savePortalLocationBtn").click(function(){
  235. var layout = $("#portal").portal("getLayout");
  236. ajaxRequest(WEBROOT + '/UserPortal/saveUserPortalPosition.action', {
  237. layout : $.encodeJSON(layout)
  238. }, function(data) {
  239. if(data.code == "success"){
  240. showMsg('提示', '保存成功');
  241. }else{
  242. showMsg('提示', '保存失败');
  243. }
  244. });
  245. });
  246. function json2str(o) {
  247. var arr = [];
  248. var fmt = function(s) {
  249. if (typeof s == 'object' && s != null) return json2str(s);
  250. return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
  251. };
  252. for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));
  253. return '{' + arr.join(',') + '}';
  254. }
  255. });