Bam.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  1. MWF.xApplication.TeamWork = MWF.xApplication.TeamWork || {};
  2. MWF.xDesktop.requireApp("TeamWork", "Common", null, false);
  3. MWF.xApplication.TeamWork.Bam = new Class({
  4. Extends: MWF.widget.Common,
  5. Implements: [Options, Events],
  6. options: {
  7. "style": "default"
  8. },
  9. initialize: function (container, app, data, options) {
  10. this.setOptions(options);
  11. this.container = container;
  12. this.app = app;
  13. this.lp = this.app.lp.bam;
  14. this.rootActions = this.app.rootActions;
  15. this.actions = this.rootActions.ProjectTemplateAction;
  16. this.path = "/x_component_TeamWork/$Bam/";
  17. this.cssPath = this.path+this.options.style+"/css.wcss";
  18. this._loadCss();
  19. this.data = data;
  20. },
  21. load: function () {
  22. this.container.empty();
  23. this.createTopBarLayout();
  24. this.createContainerLayout();
  25. },
  26. createTopBarLayout:function(){
  27. var _self = this;
  28. this.topBarLayout = new Element("div.topBarLayout",{styles:this.css.topBarLayout}).inject(this.container);
  29. this.topBarBackContainer = new Element("div.topBarBackContainer",{styles:this.css.topBarBackContainer}).inject(this.topBarLayout);
  30. this.topBarBackHomeIcon = new Element("div.topBarBackHomeIcon",{styles:this.css.topBarBackHomeIcon}).inject(this.topBarBackContainer);
  31. this.topBarBackHomeIcon.addEvents({
  32. click:function(){
  33. var pl = new MWF.xApplication.TeamWork.ProjectList(this.container,this.app,this.actions,{});
  34. pl.load();
  35. }.bind(this),
  36. mouseover:function(){
  37. var opt={
  38. axis: "y" //箭头在x轴还是y轴上展现
  39. };
  40. this.app.showTips(this.topBarBackHomeIcon,{_html:"<div style='margin:2px 5px;'>"+this.lp.backProject+"</div>"},opt);
  41. //this.app.tips(this.topBarBackHomeIcon,this.lp.backProject);
  42. }.bind(this)
  43. });
  44. this.topBarBackHomeNext = new Element("div.topBarBackHomeNext",{styles:this.css.topBarBackHomeNext}).inject(this.topBarBackContainer);
  45. this.bamTitle = new Element("div.bamTitle",{styles:this.css.bamTitle,text:this.lp.title}).inject(this.topBarBackContainer);
  46. },
  47. createContainerLayout: function(){
  48. this.containerLayout = new Element("div.containerLayout",{styles:this.css.containerLayout}).inject(this.container);
  49. this.createNaviLayout();
  50. this.createContentLayout();
  51. this.templateDiv.click();
  52. },
  53. createNaviLayout:function(){
  54. var _self = this;
  55. this.naviLayout = new Element("div.naviLayout",{styles:this.css.naviLayout}).inject(this.containerLayout);
  56. new Element("div.naviMenu",{styles:this.css.naviMenu, text:this.lp.base}).inject(this.naviLayout);
  57. //模板管理
  58. this.templateDiv = new Element("div.templateDiv",{styles:this.css.naviItem}).inject(this.naviLayout);
  59. this.templateDiv.addEvents({
  60. mouseenter:function(){
  61. if(this.curNavi == this.templateDiv) return;
  62. this.templateDiv.setStyles({"border-left":"2px solid #1b9aee","color":"#000000"});
  63. }.bind(this),
  64. mouseleave:function(){
  65. if(this.curNavi == this.templateDiv) return;
  66. this.templateDiv.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  67. }.bind(this),
  68. click:function(){
  69. if(this.curNavi)this.curNavi.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  70. this.curNavi = this.templateDiv;
  71. this.curNavi.setStyles({"border-left":"2px solid #0171c2","color":"#000000"});
  72. this.createTemplateLayout();
  73. }.bind(this)
  74. });
  75. new Element("div.templateIcon",{ styles: this.css.templateIcon }).inject(this.templateDiv);
  76. new Element("div.templateText",{styles: this.css.templateText, text: this.lp.navi.template}).inject(this.templateDiv);
  77. //优先级设置
  78. this.priorityDiv = new Element("div.priorityDiv",{styles:this.css.naviItem}).inject(this.naviLayout);
  79. this.priorityDiv.addEvents({
  80. mouseenter:function(){
  81. if(this.curNavi == this.priorityDiv) return;
  82. this.priorityDiv.setStyles({"border-left":"2px solid #1b9aee","color":"#000000"});
  83. }.bind(this),
  84. mouseleave:function(){
  85. if(this.curNavi == this.priorityDiv) return;
  86. this.priorityDiv.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  87. }.bind(this),
  88. click:function(){
  89. if(this.curNavi)this.curNavi.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  90. this.curNavi = this.priorityDiv;
  91. this.curNavi.setStyles({"border-left":"2px solid #0171c2","color":"#000000"});
  92. this.createPriorityLayout();
  93. }.bind(this)
  94. });
  95. new Element("div.priorityIcon",{ styles: this.css.priorityIcon }).inject(this.priorityDiv);
  96. new Element("div.priorityText",{styles: this.css.priorityText, text: this.lp.navi.priority}).inject(this.priorityDiv);
  97. //自定义字段
  98. this.fieldDiv = new Element("div.fieldDiv",{styles:this.css.naviItem}).inject(this.naviLayout);
  99. this.fieldDiv.addEvents({
  100. mouseenter:function(){
  101. if(this.curNavi == this.fieldDiv) return;
  102. this.fieldDiv.setStyles({"border-left":"2px solid #1b9aee","color":"#000000"});
  103. }.bind(this),
  104. mouseleave:function(){
  105. if(this.curNavi == this.fieldDiv) return;
  106. this.fieldDiv.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  107. }.bind(this),
  108. click:function(){
  109. if(this.curNavi)this.curNavi.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  110. this.curNavi = this.fieldDiv;
  111. this.curNavi.setStyles({"border-left":"2px solid #0171c2","color":"#000000"});
  112. }.bind(this)
  113. });
  114. new Element("div.fieldIcon",{ styles: this.css.fieldIcon }).inject(this.fieldDiv);
  115. new Element("div.fieldText",{styles: this.css.fieldText, text: this.lp.navi.extField}).inject(this.fieldDiv);
  116. //权限设置
  117. this.accessDiv = new Element("div.accessDiv",{styles:this.css.naviItem}).inject(this.naviLayout);
  118. this.accessDiv.addEvents({
  119. mouseenter:function(){
  120. if(this.curNavi == this.accessDiv) return;
  121. this.accessDiv.setStyles({"border-left":"2px solid #1b9aee","color":"#000000"});
  122. }.bind(this),
  123. mouseleave:function(){
  124. if(this.curNavi == this.accessDiv) return;
  125. this.accessDiv.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  126. }.bind(this),
  127. click:function(){
  128. if(this.curNavi)this.curNavi.setStyles({"border-left":"2px solid #ffffff","color":"#595959"});
  129. this.curNavi = this.accessDiv;
  130. this.curNavi.setStyles({"border-left":"2px solid #0171c2","color":"#000000"});
  131. }.bind(this)
  132. });
  133. new Element("div.accessIcon",{ styles: this.css.accessIcon }).inject(this.accessDiv);
  134. new Element("div.accessText",{styles: this.css.accessText, text: this.lp.navi.access}).inject(this.accessDiv);
  135. },
  136. createContentLayout:function(){
  137. this.contentLayout = new Element("div.contentLayout",{styles:this.css.contentLayout}).inject(this.containerLayout);
  138. },
  139. createPriorityLayout:function(){
  140. var _self = this;
  141. this.contentLayout.empty();
  142. var priorityTop = new Element("div.priorityTop",{styles:this.css.priorityTop}).inject(this.contentLayout);
  143. var priorityTopContent = new Element("div.priorityTopContent",{styles:this.css.priorityTopContent}).inject(priorityTop);
  144. var priorityTopTitle = new Element("div.priorityTopTitle",{styles:this.css.priorityTopTitle,text:this.lp.priority.title}).inject(priorityTopContent);
  145. var priorityTopDes = new Element("div.priorityTopDes",{styles:this.css.priorityTopDes,text:this.lp.priority.tips}).inject(priorityTopContent);
  146. // var templateTopAddContent = new Element("div.templateTopAddContent",{styles:this.css.templateTopAddContent}).inject(templateTop);
  147. // var templateTopAdd = new Element("div.templateTopAdd",{styles:this.css.templateTopAdd,text:this.lp.template.add}).inject(templateTopAddContent);
  148. // templateTopAdd.addEvents({
  149. // mouseover:function(){
  150. // this.setStyles({"color":"#0171c2"})
  151. // },
  152. // mouseout:function(){
  153. // this.setStyles({"color":"#1b9aee"})
  154. // },
  155. // click:function(){
  156. // _self.openTemplate();
  157. // }
  158. // });
  159. var priorityContainer = new Element("div.priorityContainer",{styles:this.css.priorityContainer}).inject(this.contentLayout);
  160. this.priorityItemContent = new Element("div.priorityItemContent",{styles:this.css.priorityItemContent}).inject(priorityContainer);
  161. this.app.setLoading(this.priorityItemContent);
  162. this.rootActions.GlobalAction.priorityList(function(json){
  163. this.priorityItemContent.empty();
  164. json.data.each(function(data){
  165. this.createPriorityItem(data);
  166. }.bind(this))
  167. }.bind(this))
  168. var addPriorityContainer = new Element("div.addPriorityContainer",{styles:this.css.addPriorityContainer}).inject(priorityContainer,"bottom");
  169. var addPriorityIcon = new Element("div.addPriorityIcon",{styles:this.css.addPriorityIcon}).inject(addPriorityContainer);
  170. var addPriorityTxt = new Element("div.addPriorityTxt",{styles:this.css.addPriorityTxt, text: this.lp.priority.add}).inject(addPriorityContainer);
  171. addPriorityContainer.addEvents({
  172. mouseenter:function(){
  173. addPriorityIcon.setStyles({"background-image":"url(/x_component_TeamWork/$Bam/default/icon/icon_add_click.png)"});
  174. addPriorityTxt.setStyles({"color":"#13227a"})
  175. },
  176. mouseleave:function(){
  177. addPriorityIcon.setStyles({"background-image":"url(/x_component_TeamWork/$Bam/default/icon/icon_add.png)"});
  178. addPriorityTxt.setStyles({"color":"#1296db"})
  179. },
  180. click:function(){ //fffffffff
  181. this.createPriorityItem();
  182. }.bind(this)
  183. })
  184. },
  185. createPriorityColorItem:function(content,data,vColor,bColor){
  186. var priorityColorItem = new Element("div.priorityColorItem",{styles:this.css.priorityColorItemContainer}).inject(content);
  187. var priorityColor = new Element("div.priorityColor",{styles:this.css.priorityColor}).inject(priorityColorItem);
  188. priorityColor.setStyles({"background-color":vColor});
  189. if(data && data.priorityColor.toUpperCase() == bColor.toUpperCase()){
  190. priorityColor.setStyles({
  191. "width":"18px",
  192. "height":"18px",
  193. "background-color":bColor,
  194. "border":"3px solid " + vColor + " "
  195. });
  196. priorityColor.set("name","active");
  197. }
  198. priorityColor.addEvents({
  199. mouseover:function(){
  200. if(this.get("name")=="active") return;
  201. this.setStyles({"background-color":bColor ,"width":"18px","height":"18px"});
  202. },
  203. mouseout:function(){
  204. if(this.get("name")=="active") return;
  205. this.setStyles({"background-color":vColor,"width":"14px","height":"14px"});
  206. },
  207. click:function(){
  208. if(this.get("name")=="active") return;
  209. var actName = content.getElements("div[name='active']");
  210. if(actName.length>0){
  211. actName[0].removeProperty("name");
  212. var color = actName[0].getStyle("border-left-color");
  213. actName[0].setStyles({
  214. "border":"0px",
  215. "width":"14px",
  216. "height":"14px",
  217. "background-color":color
  218. });
  219. }
  220. this.set("name","active");
  221. this.setStyles({
  222. "width":"18px",
  223. "height":"18px",
  224. "background-color": bColor,
  225. "border":"3px solid " + vColor
  226. });
  227. }
  228. });
  229. },
  230. createPriorityItem:function(data){
  231. var _self = this;
  232. var id = data ? data.id : "";
  233. var priorityItemContainer = new Element("div.priorityItemContainer",{styles:this.css.priorityItemContainer,index:data ? data.order:""}).inject(this.priorityItemContent);
  234. //var priorityItemMove = new Element("div.priorityItemMove",{styles:this.css.priorityItemMove}).inject(priorityItemContainer);
  235. var priorityValueContainer = new Element("div.priorityValueContainer",{styles:this.css.priorityValueContainer}).inject(priorityItemContainer);
  236. var priorityValue = new Element("input",{styles:this.css.priorityValue,type:"input",value:data?data.priority:""}).inject(priorityValueContainer);
  237. priorityValue.addEvents({
  238. blur:function(){
  239. if(this.get("value").trim()=="") this.setStyles({"border":"1px solid #ff0000"});
  240. else this.setStyles({"border":"1px solid #cccccc"});
  241. },
  242. focus:function(){
  243. this.setStyles({"border":"1px solid #1296db"})
  244. },
  245. keyup:function(){
  246. var v = this.get("value").trim();
  247. if(v=="") this.setStyles({"border":"1px solid #ff0000"})
  248. else this.setStyles({"border":"1px solid #1296db"})
  249. }
  250. });
  251. var priorityColorContainer = new Element("div.priorityColorContainer",{styles:this.css.priorityColorContainer}).inject(priorityItemContainer);
  252. // red
  253. this.createPriorityColorItem(priorityColorContainer, data,"#FFCCCC", "#E62412");
  254. // orange
  255. this.createPriorityColorItem(priorityColorContainer, data,"#FFD591", "#FA8C15");
  256. // green
  257. this.createPriorityColorItem(priorityColorContainer, data,"#CAFAC8", "#15AD31");
  258. // blue
  259. this.createPriorityColorItem(priorityColorContainer, data,"#CCECFF", "#1B9AEE");
  260. // grey
  261. this.createPriorityColorItem(priorityColorContainer, data,"#E5E5E5", "#8C8C8C");
  262. //actions
  263. var priorityActionContainer = new Element("div.priorityActionContainer",{styles:this.css.priorityActionContainer}).inject(priorityItemContainer);
  264. var priorityActionOK = new Element("div.priorityActionOK",{styles:this.css.priorityActionOK}).inject(priorityActionContainer);
  265. priorityActionOK.addEvents({
  266. mouseover:function(){
  267. this.setStyles({"background-image":"url(/x_component_TeamWork/$Bam/default/icon/icon_ok_click.png)"})
  268. },
  269. mouseout:function(){
  270. this.setStyles({"background-image":"url(/x_component_TeamWork/$Bam/default/icon/icon_ok.png)"})
  271. },
  272. click:function(){
  273. var colorObj = priorityColorContainer.getElements("div[name='active']");
  274. if(priorityValue.get("value").trim()==""){
  275. priorityValue.setStyles({"border":"1px solid #ff0000"});
  276. window.setTimeout(function(){
  277. priorityValue.setStyles({"border":"1px solid #cccccc"});
  278. window.setTimeout(function(){
  279. priorityValue.setStyles({"border":"1px solid #ff0000"});
  280. },200)
  281. },200);
  282. return;
  283. }
  284. if(colorObj.length == 0){
  285. //priorityColorContainer.setStyles({"border":"1px solid #ff0000"});
  286. var objs = priorityColorContainer.getElements(".priorityColorItem");
  287. objs.each(function(obj,i){
  288. var time = (i + 1) * 50;
  289. window.setTimeout(function(){
  290. //obj.setStyles({"width":"18px","height":"18px"});
  291. obj.setStyles({"background-color":"#ff0000"});
  292. window.setTimeout(function(){
  293. //obj.setStyles({"width":"14px","height":"14px"});
  294. obj.setStyles({"background-color":""});
  295. },50);
  296. },time)
  297. })
  298. return;
  299. }
  300. var data = {
  301. id:id,
  302. priority:priorityValue.get("value").trim(),
  303. priorityColor:colorObj[0].getStyle("background-color"),
  304. order:priorityItemContainer.get("index")
  305. };
  306. this.rootActions.GlobalAction.prioritySave(data,function(json){
  307. id = json.data.id
  308. this.app.notice(this.lp.priority.success,"success")
  309. }.bind(this))
  310. }.bind(this)
  311. });
  312. var priorityActionRemove = new Element("div.priorityActionRemove",{styles:this.css.priorityActionRemove}).inject(priorityActionContainer);
  313. priorityActionRemove.addEvents({
  314. mouseover:function(){
  315. this.setStyles({"background-image":"url(/x_component_TeamWork/$Bam/default/icon/icon_close_click.png)"})
  316. },
  317. mouseout:function(){
  318. this.setStyles({"background-image":"url(/x_component_TeamWork/$Bam/default/icon/icon_close.png)"})
  319. },
  320. click:function(e){
  321. if(id==""){
  322. var fx = new Fx.Tween(priorityItemContainer,{duration:200});
  323. fx.start(["height"] ,"60px", "0px").chain(function(){
  324. priorityItemContainer.destroy();
  325. }.bind(this));
  326. //priorityItemContainer.destroy();
  327. }else{
  328. _self.app.confirm("warn",e,_self.app.lp.common.confirm.removeTitle,_self.app.lp.common.confirm.removeContent,300,120,function(){
  329. _self.rootActions.GlobalAction.priorityDelete(id,function(){
  330. var fx = new Fx.Tween(priorityItemContainer,{duration:200});
  331. fx.start(["height"] ,"60px", "0px").chain(function(){
  332. priorityItemContainer.destroy();
  333. this.close();
  334. }.bind(this));
  335. //priorityItemContainer.destroy();
  336. //this.close();
  337. }.bind(this))
  338. },function(){
  339. this.close();
  340. });
  341. }
  342. }
  343. });
  344. return;
  345. //
  346. //
  347. //
  348. //
  349. // this.priorityColorRedItem = new Element("div.priorityColorRedItem",{styles:this.css.priorityColorItemContainer}).inject(priorityColorContainer);
  350. // var priorityColorRed = new Element("div.priorityColorRed",{styles:this.css.priorityColorRed}).inject(this.priorityColorRedItem);
  351. // if(data.priorityColor == "#FFCCCC"){
  352. // priorityColorRed.setStyles({
  353. // "width":"18px",
  354. // "height":"18px",
  355. // "background-color":"#E62412",
  356. // "border":"3px solid #FFCCCC"
  357. // });
  358. // priorityColorRed.set("name","active");
  359. // }else{
  360. // priorityColorRed.addEvents({
  361. // mouseover:function(){
  362. // if(this.get("name")=="active") return;
  363. // this.setStyles({"background-color":"#E62412","width":"18px","height":"18px"});
  364. // },
  365. // mouseout:function(){
  366. // if(this.get("name")=="active") return;
  367. // this.setStyles({"background-color":"#FFCCCC","width":"14px","height":"14px"});
  368. // },
  369. // click:function(){
  370. // if(this.get("name")=="active") return;
  371. // var actName = priorityColorContainer.getElements("div[name='active']");
  372. // if(actName.length>0){
  373. // actName[0].removeProperty("name");
  374. // var color = actName[0].getStyle("border-left-color");
  375. // actName[0].setStyles({
  376. // "border":"0px",
  377. // "width":"14px",
  378. // "height":"14px",
  379. // "background-color":color
  380. // });
  381. // }
  382. //
  383. // this.set("name","active");
  384. // this.setStyles({
  385. // "width":"18px",
  386. // "height":"18px",
  387. // "background-color":"#E62412",
  388. // "border":"3px solid #FFCCCC"
  389. // });
  390. //
  391. // }
  392. // });
  393. //
  394. // }
  395. //
  396. //
  397. //
  398. // this.priorityColorOrangeItem = new Element("div.priorityColorOrangeItem",{styles:this.css.priorityColorItemContainer}).inject(priorityColorContainer);
  399. // var priorityColorOrange = new Element("div.priorityColorOrange",{styles:this.css.priorityColorOrange}).inject(this.priorityColorOrangeItem);
  400. // if(data.priorityColor == "#FFD591"){
  401. // priorityColorOrange.setStyles({
  402. // "width":"18px",
  403. // "height":"18px",
  404. // "background-color":"#FA8C15",
  405. // "border":"3px solid #FFD591"
  406. // });
  407. // priorityColorOrange.set("name","active");
  408. // }else{
  409. // priorityColorOrange.addEvents({
  410. // mouseover:function(){
  411. // if(this.get("name")=="active") return;
  412. // this.setStyles({"background-color":"#FA8C15","width":"18px","height":"18px"});
  413. // },
  414. // mouseout:function(){
  415. // if(this.get("name")=="active") return;
  416. // this.setStyles({"background-color":"#FFD591","width":"14px","height":"14px"});
  417. // },
  418. // click:function(){
  419. // if(this.get("name")=="active") return;
  420. // var actName = priorityColorContainer.getElements("div[name='active']");
  421. // if(actName.length>0){
  422. // actName[0].removeProperty("name");
  423. // var color = actName[0].getStyle("border-left-color");
  424. // actName[0].setStyles({
  425. // "border":"0px",
  426. // "width":"14px",
  427. // "height":"14px",
  428. // "background-color":color
  429. // });
  430. // }
  431. //
  432. // this.set("name","active");
  433. // this.setStyles({
  434. // "width":"18px",
  435. // "height":"18px",
  436. // "background-color":"#FA8C15",
  437. // "border":"3px solid #FFD591"
  438. // });
  439. //
  440. // }
  441. // });
  442. // }
  443. //
  444. //
  445. //
  446. // this.priorityColorGreenItem = new Element("div.priorityColorGreenItem",{styles:this.css.priorityColorItemContainer}).inject(priorityColorContainer);
  447. // var priorityColorGreen = new Element("div.priorityColorGreen",{styles:this.css.priorityColorGreen}).inject(this.priorityColorGreenItem);
  448. // if(data.priorityColor == "#CAFAC8"){
  449. // priorityColorGreen.setStyles({
  450. // "width":"18px",
  451. // "height":"18px",
  452. // "background-color":"#15AD31",
  453. // "border":"3px solid #CAFAC8"
  454. // });
  455. // priorityColorGreen.set("name","active");
  456. // }else{
  457. // priorityColorGreen.addEvents({
  458. // mouseover:function(){
  459. // this.setStyles({"background-color":"#15AD31","width":"18px","height":"18px"});
  460. // },
  461. // mouseout:function(){
  462. // this.setStyles({"background-color":"#CAFAC8","width":"14px","height":"14px"});
  463. // }
  464. // });
  465. // }
  466. //
  467. //
  468. // this.priorityColorBlueItem = new Element("div.priorityColorBlueItem",{styles:this.css.priorityColorItemContainer}).inject(priorityColorContainer);
  469. // var priorityColorBlue = new Element("div.priorityColorBlue",{styles:this.css.priorityColorBlue}).inject(this.priorityColorBlueItem);
  470. // if(data.priorityColor == "#CCECFF"){
  471. // priorityColorBlue.setStyles({
  472. // "width":"18px",
  473. // "height":"18px",
  474. // "background-color":"#1B9AEE",
  475. // "border":"3px solid #CCECFF"
  476. // });
  477. // priorityColorBlue.set("name","active");
  478. // }else{
  479. // priorityColorBlue.addEvents({
  480. // mouseover:function(){
  481. // this.setStyles({"background-color":"#1B9AEE","width":"18px","height":"18px"});
  482. // },
  483. // mouseout:function(){
  484. // this.setStyles({"background-color":"#CCECFF","width":"14px","height":"14px"});
  485. // }
  486. // });
  487. // }
  488. //
  489. //
  490. // this.priorityColorGreyItem = new Element("div.priorityColorGreyItem",{styles:this.css.priorityColorItemContainer}).inject(priorityColorContainer);
  491. // var priorityColorGrey = new Element("div.priorityColorGrey",{styles:this.css.priorityColorGrey}).inject(this.priorityColorGreyItem);
  492. // if(data.priorityColor == "#E5E5E5"){
  493. // priorityColorGrey.setStyles({
  494. // "width":"18px",
  495. // "height":"18px",
  496. // "background-color":"#8C8C8C",
  497. // "border":"3px solid #E5E5E5"
  498. // });
  499. // priorityColorGrey.set("name","active");
  500. // }else{
  501. // priorityColorGrey.addEvents({
  502. // mouseover:function(){
  503. // this.setStyles({"background-color":"#8C8C8C","width":"18px","height":"18px"});
  504. // },
  505. // mouseout:function(){
  506. // this.setStyles({"background-color":"#E5E5E5","width":"14px","height":"14px"});
  507. // }
  508. // });
  509. // }
  510. },
  511. createTemplateLayout:function(){
  512. var _self = this;
  513. this.contentLayout.empty();
  514. var templateTop = new Element("div.templateTop",{styles:this.css.templateTop}).inject(this.contentLayout);
  515. var templateTopContent = new Element("div.templateTopContent",{styles:this.css.templateTopContent}).inject(templateTop);
  516. var templateTopTitle = new Element("div.templateTopTitle",{styles:this.css.templateTopTitle,text:this.lp.template.title}).inject(templateTopContent);
  517. var templateTopDes = new Element("div.templateTopDes",{styles:this.css.templateTopDes,text:this.lp.template.tips}).inject(templateTopContent);
  518. var templateTopAddContent = new Element("div.templateTopAddContent",{styles:this.css.templateTopAddContent}).inject(templateTop);
  519. var templateTopAdd = new Element("div.templateTopAdd",{styles:this.css.templateTopAdd,text:this.lp.template.add}).inject(templateTopAddContent);
  520. templateTopAdd.addEvents({
  521. mouseover:function(){
  522. this.setStyles({"color":"#0171c2"})
  523. },
  524. mouseout:function(){
  525. this.setStyles({"color":"#1b9aee"})
  526. },
  527. click:function(){
  528. _self.openTemplate();
  529. }
  530. });
  531. this.templateContainer = new Element("div.templateContainer",{styles:this.css.templateContainer}).inject(this.contentLayout);
  532. this.app.setLoading(this.templateContainer);
  533. this.rootActions.ProjectTemplateAction.listNextWithFilter("(0)",100,{},function(json){
  534. this.templateContainer.empty();
  535. json.data.each(function(data){
  536. this.createTemplateItem(data);
  537. }.bind(this))
  538. }.bind(this))
  539. },
  540. createTemplateItem:function(data){
  541. var _self = this;
  542. var templateItemContainer = new Element("div.templateItemContainer",{ styles:this.css.templateItemContainer }).inject(this.templateContainer);
  543. templateItemContainer.addEvents({
  544. mouseenter:function(){
  545. templateItemContainer.setStyles({"background-color":"rgb(242,245,247)"});
  546. }.bind(this),
  547. mouseleave:function(){
  548. templateItemContainer.setStyles({"background-color":""});
  549. }.bind(this),
  550. click:function(){
  551. // this.openTemplate(data.id)
  552. }.bind(this)
  553. });
  554. var templateItemContent = new Element("div.templateItemContent",{styles:this.css.templateItemContent}).inject(templateItemContainer);
  555. var templateItemTitle = new Element("div.templateItemTitle",{styles:this.css.templateItemTitle,text:data.title}).inject(templateItemContent);
  556. var templateItemDes = new Element("div.templateItemDes",{styles:this.css.templateItemDes,text:data.description==""?"无":data.description}).inject(templateItemContent);
  557. var templateItemLane = new Element("div.templateItemLane",{styles:this.css.templateItemLane}).inject(templateItemContainer);
  558. var templateItemLaneTxt = new Element("div.templateItemLaneTxt",{styles:this.css.templateItemLaneTxt,text:data.taskList.join(",")}).inject(templateItemLane);
  559. var templateItemOwner = new Element("div.templateItemOwner",{styles:this.css.templateItemOwner,text:data.owner.split("@")[0]}).inject(templateItemContainer);
  560. var templateItemDate = new Element("div.templateItemDate",{styles:this.css.templateItemDate,text:data.updateTime.split(" ")[0]}).inject(templateItemContainer);
  561. var templateItemActionContainer = new Element("div.templateItemActionContainer",{styles:this.css.templateItemActionContainer}).inject(templateItemContainer);
  562. var templateItemEdit = new Element("div.templateItemEdit",{ styles:this.css.templateItemEdit,text:this.lp.template.edit }).inject(templateItemActionContainer);
  563. templateItemEdit.addEvents({
  564. click:function(){
  565. this.openTemplate(data.id)
  566. }.bind(this)
  567. });
  568. var templateItemRemove = new Element("div.templateItemRemove",{ styles:this.css.templateItemRemove,text:this.lp.template.remove }).inject(templateItemActionContainer);
  569. templateItemRemove.addEvents({
  570. click:function(e){
  571. _self.app.confirm("warn",e,_self.app.lp.common.confirm.removeTitle,_self.app.lp.common.confirm.removeContent,300,120,function(){
  572. _self.rootActions.ProjectTemplateAction.delete(data.id,function(){
  573. _self.createTemplateLayout();
  574. this.close();
  575. }.bind(this))
  576. },function(){
  577. this.close();
  578. });
  579. }
  580. });
  581. },
  582. openTemplate:function(id){
  583. var data = {
  584. id:id || ""
  585. }
  586. MWF.xDesktop.requireApp("TeamWork", "ProjectTemplate", function(){
  587. this.np = new MWF.xApplication.TeamWork.ProjectTemplate(this,data,
  588. {"width": 500,"height": 400,
  589. onPostOpen:function(){
  590. this.np.formAreaNode.setStyles({"top":"10px"});
  591. var fx = new Fx.Tween(this.np.formAreaNode,{duration:200});
  592. fx.start(["top"] ,"10px", "100px");
  593. }.bind(this),
  594. onPostClose:function(json){
  595. if(json){
  596. this.createTemplateLayout();
  597. }
  598. }.bind(this)
  599. }
  600. );
  601. this.np.open();
  602. }.bind(this));
  603. }
  604. });