Bam.js 32 KB

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