Main.js 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178
  1. MWF.xApplication.Execution = MWF.xApplication.Execution || {};
  2. MWF.require("MWF.widget.Identity", null,false);
  3. MWF.xDesktop.requireApp("Execution", "Actions.RestActions", null, false);
  4. MWF.xDesktop.requireApp("Template", "Explorer", null, false);
  5. MWF.xApplication.Execution.options = {
  6. multitask: false,
  7. executable: true
  8. }
  9. MWF.xApplication.Execution.Main = new Class({
  10. Extends: MWF.xApplication.Common.Main,
  11. Implements: [Options, Events],
  12. options: {
  13. "style": "default",
  14. "name": "Execution",
  15. "icon": "icon.png",
  16. "width": "1270",
  17. "height": "700",
  18. "isResize": false,
  19. "isMax": true,
  20. "title": MWF.xApplication.Execution.LP.title
  21. },
  22. onQueryClose:function(){
  23. this.logout();
  24. },
  25. onQueryLoad: function(){
  26. this.lp = MWF.xApplication.Execution.LP;
  27. },
  28. loadApplication: function(callback){
  29. this.user = layout.desktop.session.user.name;
  30. this.loginUser = layout.desktop.session.user.name;
  31. this.userGender = layout.desktop.session.user.genderType;
  32. this.department="";
  33. this.trueUserName = this.user
  34. this.restActions = new MWF.xApplication.Execution.Actions.RestActions();
  35. this.okrSystemAdmin = false;
  36. if(!this.workTabSwitch){
  37. var switchData = {};
  38. switchData.configCode = "INDEX_WORK_STATUSLIST";
  39. this.restActions.getProfileByCode(switchData,function(json){
  40. if(json.type == "success"){
  41. if(json.data && json.data.configValue){
  42. this.workTabSwitch = json.data.configValue;
  43. }
  44. }
  45. //this.reportAuditLeader
  46. }.bind(this),null,false);
  47. }
  48. if(!this.statSwitch){
  49. var switchData = {};
  50. switchData.configCode = "INDEX_STATISTIC_TYPE";
  51. this.restActions.getProfileByCode(switchData,function(json){
  52. if(json.type == "success"){
  53. if(json.data && json.data.configValue){
  54. this.statSwitch = json.data.configValue;
  55. }
  56. }
  57. //this.reportAuditLeader
  58. }.bind(this),null,false);
  59. }
  60. if(!this.companyAdmin){
  61. var switchData = {};
  62. switchData.configCode = "COMPANY_WORK_ADMIN";
  63. this.restActions.getProfileByCode(switchData,function(json){
  64. if(json.type == "success"){
  65. if(json.data && json.data.configValue){
  66. this.companyAdmin = json.data.configValue;
  67. }
  68. }
  69. //this.reportAuditLeader
  70. }.bind(this),null,false);
  71. }
  72. this.identites = this.getIdentityies();
  73. if( this.status && this.status.identity ){
  74. this.restActions.login( { "loginIdentity" : this.status.identity },function(json){
  75. if(json.data && json.data.okrSystemAdmin) this.okrSystemAdmin = json.data.okrSystemAdmin
  76. this._loadApplication( null, this.status.identity );
  77. }.bind(this), null, false);
  78. }else{
  79. if( this.identites.length > 1 ){
  80. var selector = new MWF.xApplication.Execution.IdenitySelector(this, this.restActions, this.identites, this.css, {
  81. closeText : this.lp.close,
  82. onPostSelectorClose : function(){ this.close() }.bind(this),
  83. onPostSelectorOk : function( identity ){
  84. this._loadApplication( null, identity);
  85. }.bind(this)
  86. });
  87. selector.load();
  88. }else if( this.identites.length = 1 ){
  89. this.restActions.login( { "loginIdentity" : this.identites[0] },function(json){
  90. if(json.data) this.okrSystemAdmin = json.data.okrSystemAdmin
  91. this._loadApplication( null, this.identites[0] );
  92. }.bind(this), null, false);
  93. }else{
  94. this.notice(this.app.lp.noIdentityNotice, "error");
  95. this.close();
  96. }
  97. }
  98. },
  99. _loadApplication: function(callback, identity ){
  100. this.identity = identity;
  101. this.getOrgAction(function(){
  102. this.orgAction.getDepartmentByIdentity(function(json){
  103. if(json.data && json.data.name){
  104. this.department = json.data.name
  105. }
  106. }.bind(this),null,this.identity,false)
  107. this.orgAction.getPersonByIdentity(function(json){
  108. if(json.data && json.data.name){
  109. this.trueUserName = json.data.name;
  110. this.user = json.data.name;
  111. }
  112. }.bind(this),null,this.identity,false)
  113. }.bind(this))
  114. this.createContainer();
  115. this.createTopBarVersion();
  116. this.createMiddleContent();
  117. if( this.status && this.status.navi1 == "work") {
  118. if (this.status.navi2 == "task") {
  119. this.openTask( this.status.navi3 , this.status.navi4 )
  120. } else if ( this.status.navi2 == "report") {
  121. this.openWorkReport( this.status.navi3 )
  122. } else {
  123. this.createLayout();
  124. }
  125. }else if( this.status && this.status.navi1 == "xmind") {
  126. this.openContent("xmind")
  127. }else if( this.status && this.status.navi1 == "setting"){
  128. this.openContent("setting")
  129. }else{
  130. this.createLayout();
  131. }
  132. this.addEvent("resize", function(){
  133. var size = this.middleContent.getSize();
  134. var y = size.y-300;
  135. var x = size.x-450;
  136. if(this.todoList)this.todoList.setStyles({"height":y+"px"});
  137. if(this.workConditionContentDiv)this.workConditionContentDiv.setStyles({"height":y+"px"});
  138. if(this.leftContent)this.leftContent.setStyles({"width":x+"px"});
  139. }.bind(this));
  140. },
  141. //=======================================================================================================================================================================
  142. //*************************************************************************common-function BEGIN******************************************************************************
  143. logout: function(callback){
  144. var logoutData = {};
  145. this.restActions.logout( logoutData,function(json){
  146. }.bind(this), function(xhr,text,error){
  147. }.bind(this), false);
  148. },
  149. getIdentityies : function(){
  150. var identites = [];
  151. this.getOrgAction(function(){
  152. this.orgAction.listIdentityByPerson(function(json){
  153. json.data.each(function(d){
  154. identites.push( d.name );
  155. })
  156. }.bind(this), null, this.user,false)
  157. }.bind(this))
  158. this.restActions.listMyRelief(function(json){
  159. if( json.data ){
  160. json.data.each(function(d){
  161. identites.push( d.leaderIdentity );
  162. })
  163. }
  164. }.bind(this),null, false)
  165. return identites;
  166. },
  167. resizeContent : function(){
  168. var size = this.middleContent.getSize();
  169. var y = size.y-300;
  170. var x = size.x-450;
  171. if(this.todoList)this.todoList.setStyles({"height":y+"px"});
  172. if(this.workConditionContentDiv)this.workConditionContentDiv.setStyles({"height":y+"px"});
  173. if(this.leftContent)this.leftContent.setStyles({"width":x+"px"});
  174. },
  175. getOrgAction: function(callback){
  176. if (!this.orgAction){
  177. MWF.require("MWF.xAction.org.express.RestActions", function(){
  178. this.orgAction = new MWF.xAction.org.express.RestActions();
  179. if (callback) callback();
  180. }.bind(this),false);
  181. }else{
  182. if (callback) callback();
  183. }
  184. },
  185. changeIdentity: function(){
  186. this.identitySelector = new MWF.xApplication.Execution.IdenitySelector(this, this.restActions, this.identites, this.css, {
  187. closeText : this.lp.cancel,
  188. needLogout : true,
  189. onPostSelectorClose : function(){ this.identitySelector.close() }.bind(this),
  190. onPostSelectorOk : function( identity ){
  191. this.status = null;
  192. this._loadApplication( null, identity);
  193. }.bind(this)
  194. });
  195. this.identitySelector.load();
  196. },
  197. recordStatus: function(){
  198. var status = {
  199. identity : this.identity,
  200. navi1 : this.currentTopBarTab, //顶部的导航条
  201. navi2 : this.navi2 //当前打开的是任务还是汇报
  202. };
  203. if( status.navi1 == "work" ){
  204. if( status.navi2 == "task" ){
  205. status.navi3 = this.workTask?this.workTask.workNavi1:"";
  206. status.navi4 = this.workTask?this.workTask.workNavi2:"";
  207. }else if( status.navi2 == "report" ){
  208. status.navi3 = this.workReportList.workNavi1;
  209. status.navi4 = "";
  210. }else{
  211. status.navi3 = "";
  212. status.navi4 = "";
  213. }
  214. }
  215. return status;
  216. },
  217. openContent : function( str ){
  218. if( str == "xmind" ){
  219. this.currentTopBarTab = "xmind";
  220. this.loadTopBarTab(this.currentTopBarTab)
  221. this.middleContent.empty();
  222. MWF.xDesktop.requireApp("Execution", "MinderExplorer", null, false);
  223. var explorer = new MWF.xApplication.Execution.MinderExplorer(this.middleContent, this, this.restActions, {});
  224. explorer.load();
  225. }else if( str == "setting" ){
  226. this.currentTopBarTab = "setting";
  227. this.loadTopBarTab(this.currentTopBarTab)
  228. this.middleContent.empty();
  229. MWF.xDesktop.requireApp("Execution", "SettingExplorer", function(){
  230. var explorer = new MWF.xApplication.Execution.SettingExplorer(this.middleContent, this, this.restActions, {});
  231. explorer.load();
  232. }.bind(this), false);
  233. }else{
  234. this.currentTopBarTab = "work";
  235. this.loadTopBarTab(this.currentTopBarTab)
  236. this.middleContent.empty();
  237. this.createLayout();
  238. }
  239. },
  240. openTask: function(workNavi1, workNavi2){
  241. this.navi2 = "task";
  242. this.middleContent.empty();
  243. //MWF.xDesktop.requireApp("Execution", "WorkTask", function(){
  244. // this.workTask = new MWF.xApplication.Execution.WorkTask(this.middleContent,this,this.restActions,{
  245. // "workNavi1" : workNavi1 || "",
  246. // "workNavi2" : workNavi2 || ""
  247. // })
  248. // this.workTask.load();
  249. //}.bind(this))
  250. MWF.xDesktop.requireApp("Execution", "WorkList", function(){
  251. this.workList = new MWF.xApplication.Execution.WorkList(this.middleContent,this,this.restActions,{
  252. "workNavi1" : workNavi1 || "",
  253. "workNavi2" : workNavi2 || ""
  254. })
  255. this.workList.load();
  256. }.bind(this))
  257. },
  258. openWorkReport: function(workNavi1){
  259. this.navi2 = "report";
  260. this.middleContent.empty();
  261. MWF.xDesktop.requireApp("Execution", "WorkReportList", function(){
  262. this.workReportList = new MWF.xApplication.Execution.WorkReportList(this.middleContent,this,this.restActions,{
  263. "workNavi1" : workNavi1 || ""
  264. })
  265. this.workReportList.load();
  266. }.bind(this))
  267. },
  268. openStat: function(){
  269. this.navi2 = "stat"
  270. this.middleContent.empty();
  271. MWF.xDesktop.requireApp("Execution", "WorkStat", function(){
  272. this.workStat = new MWF.xApplication.Execution.WorkStat(this.middleContent,this,this.restActions,{
  273. })
  274. this.workStat.load();
  275. }.bind(this))
  276. },
  277. //**********************************************************common-function END******************************************************************************
  278. //**********************************************************section-layout BEGIN******************************************************************************
  279. createContainer: function(){
  280. if( !this.container ){
  281. this.content.setStyle("overflow", "hidden");
  282. this.container = new Element("div", {
  283. "styles": this.css.container
  284. }).inject(this.content);
  285. }
  286. },
  287. createMiddleContent: function(){
  288. if( !this.middleContent ){
  289. this.middleContent = new Element("div.middleContent",{
  290. "styles": this.css.middleContent
  291. }).inject(this.container)
  292. }
  293. },
  294. createLayout: function(){
  295. this.navi2 = "main";
  296. if( this.middleContent )this.middleContent.empty();
  297. this.leftContent = new Element("div.leftContent", {"styles":this.css.leftContent}).inject(this.middleContent);
  298. this.leftTopContent = new Element("div",{"styles":this.css.leftTopContent}).inject(this.leftContent);
  299. this.clearDiv = new Element("div",{"styles":this.css.clearDiv}).inject(this.leftContent);
  300. //左上
  301. this.createCategoryIconsVersion();
  302. this.leftBottomContent = new Element("div",{"styles":this.css.leftBottomContent}).inject(this.leftContent);
  303. //左下
  304. this.createTodoContentVersion();
  305. this.rightContent = new Element("div.rightContent", {"styles": this.css.rightContent}).inject(this.middleContent);
  306. //右上
  307. //this.createContentDivVersion();
  308. this.createMyStatVersion();
  309. this.rightBottomContent = new Element("div.rightBottomContent",{"styles":this.css.rightBottomContent}).inject(this.rightContent);
  310. this.rightBottomContent.setStyle("display",""); //工作动态开关
  311. //右下
  312. this.createRightBottomVersion();
  313. this.resizeContent();
  314. },
  315. //*****************************top-layout BEGIN*************************************
  316. createTopBarVersion: function(){
  317. this.createTopBar();
  318. },
  319. createTopBar: function(){
  320. this.currentTopBarTab = "work";
  321. if( this.topBar ){
  322. this.topBar.empty();
  323. }else{
  324. this.topBar = new Element("div.topBar", {
  325. "styles": this.css.topBar
  326. }).inject(this.container);
  327. }
  328. this.topBarContent = new Element("div", {"styles": this.css.topBarContent}).inject(this.topBar);
  329. this.topBarTitleLi = new Element("li", {"styles": this.css.topBarTitleLi}).inject(this.topBarContent);
  330. this.topBarLog = new Element("img",{"styles": this.css.topBarLog,"src": this.path+"default/icon/okr.png"}).inject(this.topBarTitleLi);
  331. this.topBarTitleSpan = new Element("span",{ "styles": this.css.topBarTitleSpan,"text":MWF.xApplication.Execution.LP.topBar.title}).inject(this.topBarTitleLi);
  332. //top我的工作台
  333. this.topBarWorkLi = new Element("li.topBarWorkLi",{"styles": this.css.topBarCurrentLi}).inject(this.topBarContent)
  334. this.topBarWorkLi.addEvents({
  335. "mouseover":function(){
  336. if(this.currentTopBarTab!="work")this.topBarWorkLi.setStyles({"background-color":"#124c93"})
  337. }.bind(this),
  338. "mouseout":function(){
  339. if(this.currentTopBarTab!="work")this.topBarWorkLi.setStyles({"background-color":"#5c97e1"})
  340. }.bind(this),
  341. "click" : function(){
  342. this.openContent( "work" );
  343. }.bind(this)
  344. })
  345. this.topBarWorkImg = new Element("img",{"styles": this.css.topBarWorkImg,"src": this.path+"default/icon/Outline-104.png"}).inject(this.topBarWorkLi);
  346. this.topBarWorkSpan = new Element("span",{"styles": this.css.topBarWorkSpan,"text":MWF.xApplication.Execution.LP.topBar.work}).inject(this.topBarWorkLi);
  347. //top脑图展示
  348. this.topBarXmindLi = new Element("li.topBarXmindLi",{"styles": this.css.topBarLi}).inject(this.topBarContent);
  349. this.topBarXmindImg = new Element("img",{"styles": this.css.topBarXmindImg,"src": this.path+"default/icon/MindMapFilled-100.png"}).inject(this.topBarXmindLi);
  350. this.topBarXmindSpan = new Element("span",{"styles": this.css.topBarXmindSpan,"text":MWF.xApplication.Execution.LP.topBar.xmind}).inject(this.topBarXmindLi);
  351. this.topBarXmindLi.addEvents({
  352. "mouseover":function(){
  353. if(this.currentTopBarTab!="xmind")this.topBarXmindLi.setStyles({"background-color":"#124c93"})
  354. }.bind(this),
  355. "mouseout":function(){
  356. if(this.currentTopBarTab!="xmind")this.topBarXmindLi.setStyles({"background-color":"#5c97e1"})
  357. }.bind(this),
  358. "click" : function(){
  359. this.openContent( "xmind" );
  360. }.bind(this)
  361. });
  362. //top系统配置
  363. this.topBarSettingLi = new Element("li.topBarSettingLi",{"styles": this.css.topBarLi}).inject(this.topBarContent);
  364. this.topBarSettingImg = new Element("img",{"styles": this.css.topBarXmindImg,"src": this.path+"default/icon/Maintenance-96.png"}).inject(this.topBarSettingLi);
  365. this.topBarSettingSpan = new Element("span",{"styles": this.css.topBarXmindSpan,"text":MWF.xApplication.Execution.LP.topBar.setting}).inject(this.topBarSettingLi);
  366. this.topBarSettingLi.addEvents({
  367. "mouseover":function(){
  368. if(this.currentTopBarTab!="setting")this.topBarSettingLi.setStyles({"background-color":"#124c93"})
  369. }.bind(this),
  370. "mouseout":function(){
  371. if(this.currentTopBarTab!="setting")this.topBarSettingLi.setStyles({"background-color":"#5c97e1"})
  372. }.bind(this),
  373. "click" : function(){
  374. this.openContent( "setting" );
  375. }.bind(this)
  376. });
  377. if(!this.okrSystemAdmin) this.topBarSettingLi.setStyle("display","none")
  378. //top-right
  379. this.topBarRight = new Element("div.toBarRight",{"styles":this.css.topBarRight}).inject(this.topBar);
  380. //部门
  381. this.topBarRightDeptLi = new Element("li",{"styles":this.css.topBarRightDeptLi}).inject(this.topBarRight);
  382. this.topBarRightDeptImg = new Element("img",{"styles":this.css.topBarRightDeptImg,"src":this.path+"default/icon/Home-96.png"}).inject(this.topBarRightDeptLi);
  383. this.topBarRightDeptSpan = new Element("span",{"styles":this.css.topBarRightDeptSpan,"text":this.department}).inject(this.topBarRightDeptLi);
  384. //用户
  385. if(this.userGender=="f") this.userFace = this.path+"default/icon/UserFemale-104.png"
  386. else this.userFace = this.path+"default/icon/UserMale-104.png"
  387. this.topBarRightPersonLi = new Element("li",{"styles":this.css.topBarRightPersonLi}).inject(this.topBarRight);
  388. this.topBarRightPersonImg = new Element("img",{"styles":this.css.topBarRightPersonImg,"src":this.userFace}).inject(this.topBarRightPersonLi);
  389. this.topBarRightPersonSpan = new Element("span",{"styles":this.css.topBarRightPersonSpan,"text":this.trueUserName}).inject(this.topBarRightPersonLi);
  390. //***************change user**********************
  391. if( this.identites.length > 1 ){
  392. this.topBarRightChangeUserLi = new Element("li",{
  393. "styles":this.css.topBarRightOutLi
  394. }).inject(this.topBarRight).addEvents({
  395. "click":function(){
  396. this.changeIdentity();
  397. }.bind(this)
  398. });
  399. this.topBarRightChangeUserImg = new Element("img",{
  400. "styles":this.css.topBarRightOutImg,
  401. "src":this.path+"default/icon/ChangeUser.png"
  402. }).inject(this.topBarRightChangeUserLi);
  403. this.topBarRightChangeUserSpan = new Element("span",{
  404. "styles":this.css.topBarRightOutSpan,
  405. "text":MWF.xApplication.Execution.LP.changeUser
  406. }).inject(this.topBarRightChangeUserLi);
  407. }
  408. //***************change user**********************
  409. this.topBarRightLastLi = new Element("li",{"styles":this.css.topBarRightLastLi}).inject(this.topBarRight);
  410. this.topBarRightLastImg = new Element("img",{"styles":this.css.topBarRightLastImg,"src":this.path+"default/icon/BulletedListFilled-100.png"}).inject(this.topBarRightLastLi);
  411. },
  412. //*****************************top-layout END*************************************
  413. //*****************************left-top-layout BEGIN*************************************
  414. createCategoryIconsVersion: function(){
  415. this.createCategoryIcons();
  416. },
  417. createCategoryIcons: function(){
  418. this.categoryIconsUl = new Element("ul",{"styles": this.css.categoryIconsUl}).inject(this.leftTopContent);
  419. this.createCategoryNode(this.path+"default/icon/Checklist-100.png",MWF.xApplication.Execution.LP.categoryIcon.span1,"categoryIconsLi");
  420. this.createCategoryNode(this.path+"default/icon/ConferenceCall-104.png",MWF.xApplication.Execution.LP.categoryIcon.span2,"categoryIconsLi");
  421. //this.createCategoryNode(this.path+"default/icon/QuestionMark-104.png",MWF.xApplication.Execution.LP.categoryIcon.span3,"categoryIconsLi");
  422. //this.createCategoryNode(this.path+"default/icon/Collaboration-104.png",MWF.xApplication.Execution.LP.categoryIcon.span4,"categoryIconsLi");
  423. if(this.okrSystemAdmin || this.companyAdmin.indexOf(this.identity)>-1){
  424. this.createCategoryNode(this.path+"default/icon/AreaChart Filled-100.png",MWF.xApplication.Execution.LP.categoryIcon.span5,"categoryIconsLiRight");
  425. }
  426. },
  427. //*****************************left-top layout*************************************
  428. //*****************************left-bottom layout BEGIN*************************************
  429. createTodoContentVersion: function(){
  430. this.createTodoContent2()
  431. },
  432. createTodoContent2: function(){
  433. this.todoMenuDiv = new Element("div",{"styles": this.css.todoMenuDiv}).inject(this.leftBottomContent);
  434. this.todoMenuLeftDiv = new Element("div",{"styles":this.css.todoMenuLeftDiv}).inject(this.todoMenuDiv);
  435. this.todoMenuLeftImg = new Element("img",{"styles": this.css.todoMenuLeftImg,"src": this.path+"default/icon/Outline-104.png"}).inject(this.todoMenuLeftDiv);
  436. this.todoMenuLeftSpan = new Element("span",{"styles": this.css.todoMenuLeftSpan,"text":MWF.xApplication.Execution.LP.todoMenu.title}).inject(this.todoMenuLeftDiv);
  437. this.todoMenuRightDiv = new Element("div.todoMenuRightDiv",{"styles":this.css.todoMenuRightDiv}).inject(this.todoMenuDiv);
  438. //right category
  439. //this.todoMenuRightDiv.setStyle("display","none");
  440. //this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightCurrentLi,"text":MWF.xApplication.Execution.LP.todoMenu.all}).inject(this.todoMenuRightDiv);
  441. //this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightLi,"text":MWF.xApplication.Execution.LP.todoMenu.workTask}).inject(this.todoMenuRightDiv);
  442. //this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightLi,"text":MWF.xApplication.Execution.LP.todoMenu.workReport}).inject(this.todoMenuRightDiv);
  443. //this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightLiLast,"text":MWF.xApplication.Execution.LP.todoMenu.workProblem}).inject(this.todoMenuRightDiv);
  444. this.todoMenuDo = new Element("li.todoMenuDo",{"styles":this.css.todoMenuDo,"text":this.lp.main.todoMenuDo}).inject(this.todoMenuRightDiv);
  445. this.todoMenuDoCount = new Element("span.todoMenuDoCount",{"styles":this.css.todoMenuDoCount}).inject(this.todoMenuDo);
  446. if(this.workTabSwitch && this.workTabSwitch=="OPEN"){
  447. this.todoMenuWork = new Element("li.todoMenuWork",{"styles":this.css.todoMenuWork,"text":this.lp.main.todoMenuWork}).inject(this.todoMenuRightDiv);
  448. this.todoMenuWorkCount = new Element("span.todoMenuWorkCount",{"styles":this.css.todoMenuWorkCount}).inject(this.todoMenuWork);
  449. }
  450. this.todoList = new Element("div.todoList",{"styles": this.css.todoList}).inject(this.leftBottomContent);
  451. this.todoListDiv = new Element("div.todoListDiv",{"styles": this.css.todoListDiv}).inject(this.todoList);
  452. MWF.require("MWF.widget.ScrollBar", function () {
  453. new MWF.widget.ScrollBar(this.todoListDiv, {
  454. "indent": false,
  455. "style": "xApp_TaskList",
  456. "where": "before",
  457. "distance": 30,
  458. "friction": 4,
  459. "axis": {"x": false, "y": true},
  460. "onScroll": function (y) {
  461. var scrollSize = this.todoListDiv.getScrollSize();
  462. var clientSize = this.todoListDiv.getSize();
  463. var scrollHeight = scrollSize.y - clientSize.y;
  464. var view = this.todoView || this.workView;
  465. if (y + 200 > scrollHeight && view && view.loadElementList) {
  466. if (! view.isItemsLoaded) view.loadElementList();
  467. }
  468. }.bind(this)
  469. });
  470. }.bind(this));
  471. _selfToDo = this
  472. this.todoMenuRightDiv.getElements("li").addEvents({
  473. "click":function(e){
  474. _selfToDo.changeTodoTab(this)
  475. }
  476. })
  477. this.getTodoCount();
  478. this.createTodoList();
  479. },
  480. createTodoContent: function(){
  481. this.todoMenuDiv = new Element("div",{"styles": this.css.todoMenuDiv}).inject(this.leftBottomContent);
  482. this.todoMenuLeftDiv = new Element("div",{"styles":this.css.todoMenuLeftDiv}).inject(this.todoMenuDiv);
  483. this.todoMenuLeftImg = new Element("img",{"styles": this.css.todoMenuLeftImg,"src": this.path+"default/icon/Outline-104.png"}).inject(this.todoMenuLeftDiv);
  484. this.todoMenuLeftSpan = new Element("span",{"styles": this.css.todoMenuLeftSpan,"text":MWF.xApplication.Execution.LP.todoMenu.title}).inject(this.todoMenuLeftDiv);
  485. this.todoMenuRightDiv = new Element("div.todoMenuRightDiv",{"styles":this.css.todoMenuRightDiv}).inject(this.todoMenuDiv);
  486. //right category
  487. this.todoMenuRightDiv.setStyle("display","none");
  488. this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightCurrentLi,"text":MWF.xApplication.Execution.LP.todoMenu.all}).inject(this.todoMenuRightDiv);
  489. this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightLi,"text":MWF.xApplication.Execution.LP.todoMenu.workTask}).inject(this.todoMenuRightDiv);
  490. this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightLi,"text":MWF.xApplication.Execution.LP.todoMenu.workReport}).inject(this.todoMenuRightDiv);
  491. this.todoMenuRightLi = new Element("li",{"styles":this.css.todoMenuRightLiLast,"text":MWF.xApplication.Execution.LP.todoMenu.workProblem}).inject(this.todoMenuRightDiv);
  492. this.todoList = new Element("div.todoList",{"styles": this.css.todoList}).inject(this.leftBottomContent);
  493. this.todoListDiv = new Element("div.todoListDiv",{"styles": this.css.todoListDiv}).inject(this.todoList);
  494. MWF.require("MWF.widget.ScrollBar", function () {
  495. new MWF.widget.ScrollBar(this.todoListDiv, {
  496. "indent": false,
  497. "style": "xApp_TaskList",
  498. "where": "before",
  499. "distance": 30,
  500. "friction": 4,
  501. "axis": {"x": false, "y": true},
  502. "onScroll": function (y) {
  503. var scrollSize = this.todoListDiv.getScrollSize();
  504. var clientSize = this.todoListDiv.getSize();
  505. var scrollHeight = scrollSize.y - clientSize.y;
  506. //var view = this.todoView;
  507. var view = this.todoView;
  508. if (y + 200 > scrollHeight && view && view.loadElementList) {
  509. if (! view.isItemsLoaded) view.loadElementList();
  510. }
  511. }.bind(this)
  512. });
  513. }.bind(this));
  514. this.createTodoList();
  515. },
  516. //*****************************left-bottom-layout END*************************************
  517. //****************************right-top BEGIN******************************
  518. createMyStatVersion: function(){
  519. this.rightTopContent = new Element("div.rightTopContent",{"styles":this.css.rightTopContent}).inject(this.rightContent);
  520. if(this.statSwitch && this.statSwitch == "PROMPTNESSRATE"){
  521. this.createMyStat();
  522. }
  523. //this.createContentDiv();
  524. },
  525. createMyStat: function(){
  526. var processCount = 0;
  527. var overtimeCount = 0;
  528. var completedCount = 0;
  529. var percentNum = "100%"
  530. this.restActions.getMyStat(function(json){
  531. if(json.data && json.data.responProcessingWorkCount) processCount = json.data.responProcessingWorkCount
  532. if(json.data && json.data.overtimeResponWorkCount) overtimeCount = json.data.overtimeResponWorkCount
  533. if(json.data && json.data.responCompletedWorkCount) completedCount = json.data.responCompletedWorkCount
  534. if(json.data && json.data.percent) percentNum = (parseInt(json.data.percent)*100)
  535. }.bind(this),null,false)
  536. this.rightTopTable = new Element("table.rightTopTable",{"styles":this.css.rightTopTable,"border":"0"}).inject(this.rightTopContent);
  537. var tr = new Element("tr").inject(this.rightTopTable);
  538. var td = new Element("td",{"colspan":"4"}).inject(tr);
  539. this.rightTopTdImg = new Element("img",{"styles":this.css.rightTopTdImg,"src":this.path+"default/icon/PieChart-104.png"}).inject(td);
  540. this.rightTopTdSpan = new Element("span",{"styles":this.css.rightTopTdSpan,"text":MWF.xApplication.Execution.LP.rightTop.title}).inject(td);
  541. tr = new Element("tr").inject(this.rightTopTable);
  542. rightTopNumTd = new Element("td",{"styles":this.css.rightTopNumTd}).inject(tr);
  543. this.rightTopFlowSpan = new Element("span",{"styles":this.css.rightTopFlowSpan,"text":processCount}).inject(rightTopNumTd);
  544. rightTopNumTd = new Element("td",{"styles":this.css.rightTopNumTd}).inject(tr);
  545. this.rightTopCompletedSpan = new Element("span",{"styles":this.css.rightTopCompletedSpan,"text":overtimeCount}).inject(rightTopNumTd);
  546. rightTopNumTd = new Element("td",{"styles":this.css.rightTopNumTd}).inject(tr);
  547. this.rightTopOverTimeSpan = new Element("span",{"styles":this.css.rightTopOverTimeSpan,"text":completedCount}).inject(rightTopNumTd);
  548. this.rightTopRateTd = new Element("td",{"width":"80","align":"right"}).inject(tr);
  549. this.rightTopRateSpan = new Element("span",{"styles":this.css.rightTopRateSpan,"text":percentNum}).inject(this.rightTopRateTd);
  550. tr = new Element("tr").inject(this.rightTopTable);
  551. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"center","text":MWF.xApplication.Execution.LP.rightTop.flow}).inject(tr);
  552. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"center","text":MWF.xApplication.Execution.LP.rightTop.overTime}).inject(tr);
  553. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"center","text":MWF.xApplication.Execution.LP.rightTop.completed}).inject(tr);
  554. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"right","text":MWF.xApplication.Execution.LP.rightTop.rate}).inject(tr);
  555. },
  556. createContentDiv: function(){
  557. //this.rightTopContent = new Element("div.createContentDiv",{"styles":this.css.rightTopContent}).inject(this.rightContent);
  558. this.rightTopTable = new Element("table.rightTopTable",{"styles":this.css.rightTopTable,"border":"0"}).inject(this.rightTopContent);
  559. //临时
  560. this.rightTopTable.setStyle("display","none");
  561. var tr = new Element("tr").inject(this.rightTopTable);
  562. var td = new Element("td",{"colspan":"4"}).inject(tr);
  563. this.rightTopTdImg = new Element("img",{"styles":this.css.rightTopTdImg,"src":this.path+"default/icon/PieChart-104.png"}).inject(td);
  564. this.rightTopTdSpan = new Element("span",{"styles":this.css.rightTopTdSpan,"text":MWF.xApplication.Execution.LP.rightTop.title}).inject(td);
  565. tr = new Element("tr").inject(this.rightTopTable);
  566. rightTopNumTd = new Element("td",{"styles":this.css.rightTopNumTd}).inject(tr);
  567. this.rightTopFlowSpan = new Element("span",{"styles":this.css.rightTopFlowSpan,"text":"11"}).inject(rightTopNumTd);
  568. rightTopNumTd = new Element("td",{"styles":this.css.rightTopNumTd}).inject(tr);
  569. this.rightTopCompletedSpan = new Element("span",{"styles":this.css.rightTopCompletedSpan,"text":"9"}).inject(rightTopNumTd);
  570. rightTopNumTd = new Element("td",{"styles":this.css.rightTopNumTd}).inject(tr);
  571. this.rightTopOverTimeSpan = new Element("span",{"styles":this.css.rightTopOverTimeSpan,"text":"16"}).inject(rightTopNumTd);
  572. this.rightTopRateTd = new Element("td",{"width":"80","align":"right"}).inject(tr);
  573. this.rightTopRateSpan = new Element("span",{"styles":this.css.rightTopRateSpan,"text":"71.75"}).inject(this.rightTopRateTd);
  574. tr = new Element("tr").inject(this.rightTopTable);
  575. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"center","text":MWF.xApplication.Execution.LP.rightTop.flow}).inject(tr);
  576. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"center","text":MWF.xApplication.Execution.LP.rightTop.overTime}).inject(tr);
  577. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"center","text":MWF.xApplication.Execution.LP.rightTop.completed}).inject(tr);
  578. rightTopTextTd = new Element("td",{"styles":this.css.rightTopTextTd,"width":"80","align":"right","text":MWF.xApplication.Execution.LP.rightTop.rate}).inject(tr);
  579. },
  580. //****************************right-top END******************************
  581. //****************************right-bottom BEGIN******************************
  582. createRightBottomVersion: function(){
  583. this.workConditionMenuDiv = new Element("div.createRightBottom",{"styles": this.css.workConditionMenuDiv}).inject(this.rightBottomContent);
  584. this.createRightBottom();
  585. },
  586. createRightBottom: function(){
  587. this.workConditionMenuTitleDiv = new Element("div.workConditionMenuTitleDiv",{"styles":this.css.workConditionMenuTitleDiv}).inject(this.workConditionMenuDiv);
  588. this.workConditionMenuTitleImg = new Element("img",{"styles":this.css.workConditionMenuTitleImg,"src":this.path+"default/icon/AppointmentReminders-96.png"}).inject(this.workConditionMenuTitleDiv);
  589. this.workConditionMenuTitleSpan = new Element("span",{"styles":this.css.workConditionMenuTitleSpan,"text": MWF.xApplication.Execution.LP.workConditionMenuTitle}).inject(this.workConditionMenuTitleDiv);
  590. this.workConditionMenuMoreDiv = new Element("div",{"styles":this.css.workConditionMenuMoreDiv}).inject(this.workConditionMenuDiv);
  591. this.workConditionMenuMoreLi = new Element("li",{"styles":this.css.workConditionMenuMoreLi}).inject(this.workConditionMenuMoreDiv);
  592. this.createWorkConditionContentDiv();
  593. },
  594. //****************************right-bottom END******************************
  595. //*************************************************************************section-layout END*******************************************************************************
  596. //=======================================================================================================================================================================
  597. //*************************************************************************section-function BEGIN*******************************************************************************
  598. //*****************************top-function BEGIN*************************************
  599. loadTopBarTab: function(str){
  600. if(str=="work"){
  601. this.topBarWorkLi.setStyles({"background-color":"#124c93"});
  602. this.topBarXmindLi.setStyles({"background-color":"#5c97e1"});
  603. this.topBarSettingLi.setStyles({"background-color":"#5c97e1"});
  604. }else if(str == "xmind"){
  605. this.topBarWorkLi.setStyles({"background-color":"#5c97e1"});
  606. this.topBarXmindLi.setStyles({"background-color":"#124c93"});
  607. this.topBarSettingLi.setStyles({"background-color":"#5c97e1"});
  608. }else if(str == "setting"){
  609. this.topBarWorkLi.setStyles({"background-color":"#5c97e1"});
  610. this.topBarXmindLi.setStyles({"background-color":"#5c97e1"});
  611. this.topBarSettingLi.setStyles({"background-color":"#124c93"});
  612. }
  613. },
  614. //*****************************top-function END*************************************
  615. //*****************************left-top function BEGIN*************************************
  616. createCategoryNode: function(img,name,cla){
  617. var categoryIcons = new Element("li.categoryIcons",{
  618. "styles": this.css[cla]
  619. }).inject(this.categoryIconsUl);
  620. categoryIcons.addEvents({
  621. "mouseover":function(){
  622. this.setStyles({"background-color":"#124c93"})
  623. },
  624. "mouseout":function(){
  625. this.setStyles({"background-color":"#407ac1"})
  626. },
  627. "click":function(){
  628. if(name == MWF.xApplication.Execution.LP.categoryIcon.span1){
  629. this.openTask();
  630. }else if(name == MWF.xApplication.Execution.LP.categoryIcon.span2){
  631. this.openWorkReport();
  632. }else if(name == MWF.xApplication.Execution.LP.categoryIcon.span3){
  633. }else if(name == MWF.xApplication.Execution.LP.categoryIcon.span4){
  634. }else if(name == MWF.xApplication.Execution.LP.categoryIcon.span5){
  635. this.openStat();
  636. }
  637. }.bind(this)
  638. })
  639. var categoryIconsImg = new Element("img.categoryIconsImg",{
  640. "styles": this.css.categoryIconsImg,
  641. "src":img
  642. }).inject(categoryIcons);
  643. var categoryIconsSpan = new Element("span.categoryIconsSpan",{
  644. "styles": this.css.categoryIconsSpan,
  645. "text":name
  646. }).inject(categoryIcons);
  647. },
  648. //*****************************left-top function END*************************************
  649. //****************************left-bottom function BEGIN***********************
  650. getTodoCount:function(){
  651. this.restActions.getBaseWorkListMyDoNext("(0)", 10, null, function (json) {
  652. if(this.todoMenuWorkCount && json.count) this.todoMenuWorkCount.set("text","("+json.count+")")
  653. }.bind(this))
  654. },
  655. changeTodoTab: function(obj){
  656. if(obj.className == "todoMenuDo"){
  657. obj.setStyles({"background-color":"#0f72c2"});
  658. if(this.todoMenuWork)this.todoMenuWork.setStyles({"background-color":""});
  659. this.createTodoList();
  660. }
  661. if(obj.className == "todoMenuWork"){
  662. obj.setStyles({"background-color":"#0f72c2"});
  663. if(this.todoMenuDo)this.todoMenuDo.setStyles({"background-color":""});
  664. this.createWorkList();
  665. }
  666. },
  667. createTodoList: function(category){
  668. if( this.workView )delete this.workView;
  669. if( this.todoListDiv ){
  670. this.todoListDiv.empty();
  671. var filter = {}
  672. this.todoView = new MWF.xApplication.Execution.TodoView(this.todoListDiv, this, this, { templateUrl : this.path+"todoList.json",category:category,filterData:filter } )
  673. this.todoView.load();
  674. }
  675. },
  676. createWorkList : function(category){
  677. if( this.todoView )delete this.todoView;
  678. if(this.todoListDiv){
  679. this.todoListDiv.empty();
  680. var filter = {};
  681. this.workView = new MWF.xApplication.Execution.WorkView(this.todoListDiv, this, this, { templateUrl : this.path+"workList.json",category:category,filterData:filter } )
  682. this.workView.load();
  683. }
  684. },
  685. //****************************left-bottom function END***********************
  686. //****************************right-top function BEGIN***********************
  687. //****************************right-top function END***********************
  688. //****************************right-bottom function BEGIN***********************
  689. createWorkConditionContentDiv: function(){
  690. if(this.workConditionContentDiv) this.workConditionContentDiv.destroy();
  691. this.workConditionContentDiv = new Element("div",{"styles": this.css.workConditionContentDiv}).inject(this.rightBottomContent);
  692. this.workConditionListDiv = new Element("div.workConditionListDiv",{"styles":this.css.workConditionListDiv}).inject(this.workConditionContentDiv);
  693. MWF.require("MWF.widget.ScrollBar", function () {
  694. new MWF.widget.ScrollBar(this.workConditionListDiv, {
  695. "indent": false,
  696. "style": "xApp_TaskList",
  697. "where": "before",
  698. "distance": 30,
  699. "friction": 4,
  700. "axis": {"x": false, "y": true},
  701. "onScroll": function (y) {
  702. var scrollSize = this.workConditionListDiv.getScrollSize();
  703. var clientSize = this.workConditionListDiv.getSize();
  704. var scrollHeight = scrollSize.y - clientSize.y;
  705. var view = this.workConditionView;
  706. if (y + 200 > scrollHeight && view && view.loadElementList) {
  707. if (! view.isItemsLoaded) {view.loadElementList();}
  708. }
  709. }.bind(this)
  710. });
  711. }.bind(this));
  712. if(this.workConditionListDiv)this.workConditionListDiv.empty();
  713. this.workConditionView = new MWF.xApplication.Execution.WorkConditionView(this.workConditionListDiv, this, this, { templateUrl : this.path+"workConditionList.json" } )
  714. this.workConditionView.load();
  715. }
  716. //****************************right-bottom function END***********************
  717. //*************************************************************************section function END*******************************************************************************
  718. });
  719. //=======================================================================================================================================================================
  720. //***********************************************************************Class****************************************************************************************
  721. MWF.xApplication.Execution.IdenitySelector = new Class({
  722. Extends: MWF.xApplication.Template.Explorer.PopupForm,
  723. Implements: [Options, Events],
  724. options: {
  725. "style": "default",
  726. "width": "500",
  727. "height": "300",
  728. "hasTop": true,
  729. "hasIcon": false,
  730. "hasBottom": true,
  731. "title": "",
  732. "draggable": false,
  733. "closeAction": false,
  734. "closeText" : "",
  735. "needLogout" : false,
  736. "isNew": true
  737. },
  738. initialize: function (app, actions, identities, css, options) {
  739. this.setOptions(options);
  740. this.app = app;
  741. this.actions = this.app.restActions;
  742. this.css = css;
  743. this.options.title = this.app.lp.idenitySelectTitle;
  744. this.identities = identities;
  745. this.actions = actions;
  746. },
  747. load: function () {
  748. this.create();
  749. },
  750. createTopNode: function () {
  751. if (!this.formTopNode) {
  752. this.formTopNode = new Element("div.formTopNode", {
  753. "styles": this.css.formTopNode
  754. }).inject(this.formNode);
  755. this.formTopIconNode = new Element("div", {
  756. "styles": this.css.formTopIconNode
  757. }).inject(this.formTopNode)
  758. this.formTopTextNode = new Element("div", {
  759. "styles": this.css.formTopTextNode,
  760. "text": this.options.title
  761. }).inject(this.formTopNode)
  762. if (this.options.closeAction) {
  763. this.formTopCloseActionNode = new Element("div", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
  764. this.formTopCloseActionNode.addEvent("click", function () {
  765. this.close()
  766. }.bind(this))
  767. }
  768. this.formTopContentNode = new Element("div", {
  769. "styles": this.css.formTopContentNode
  770. }).inject(this.formTopNode)
  771. this._createTopContent();
  772. }
  773. },
  774. _createTableContent: function () {
  775. var table = new Element("table",{"width":"100%",border:"0",cellpadding:"5",cellspacing:"0"}).inject(this.formTableArea);
  776. var tr = new Element("tr").inject(table);
  777. var td = new Element("td",{valign:"middle"}).inject(tr);
  778. this.identities.each(function(id){
  779. var node = new Element("div", {"styles": this.css.identitySelNode, "text":id}).inject(td);
  780. node.store("id",id);
  781. node.addEvents({
  782. "mouseover": function(ev){
  783. if ( this.selectedNode != ev.target ) ev.target.setStyles(this.css.identitySelNode_over);
  784. }.bind(this),
  785. "mouseout": function(ev){
  786. if ( this.selectedNode != ev.target ) ev.target.setStyles(this.css.identitySelNode_out);
  787. }.bind(this),
  788. "click": function(ev){
  789. this.selected( ev.target );
  790. }.bind(this),
  791. "dblclick": function(ev){
  792. this.selectedNode = ev.target;
  793. this.ok();
  794. }.bind(this)
  795. });
  796. }.bind(this))
  797. },
  798. selected: function( node ){
  799. if( this.selectedNode )this.selectedNode.setStyles( this.css.identitySelNode );
  800. this.selectedNode = node;
  801. node.setStyles(this.css.identitySelNode_selected)
  802. },
  803. _createBottomContent: function () {
  804. this.cancelActionNode = new Element("div.formCancelActionNode", {
  805. "styles": this.css.formCancelActionNode,
  806. "text": this.options.closeText
  807. }).inject(this.formBottomNode);
  808. this.cancelActionNode.addEvent("click", function (e) {
  809. this.cancel(e);
  810. }.bind(this));
  811. this.okActionNode = new Element("div.formOkActionNode", {
  812. "styles": this.css.formOkActionNode,
  813. "text": this.app.lp.comfirm
  814. }).inject(this.formBottomNode);
  815. this.okActionNode.addEvent("click", function (e) {
  816. this.ok(e);
  817. }.bind(this));
  818. },
  819. cancel: function(){
  820. //this.app.close();
  821. this.fireEvent("postSelectorClose");
  822. },
  823. ok: function (data, callback) {
  824. if( !this.selectedNode ){
  825. this.app.notice(this.app.lp.idenitySelecNotice,"error");
  826. }else{
  827. var loginData = {};
  828. loginData.loginIdentity = this.selectedNode.retrieve("id");
  829. if( this.options.needLogout ){
  830. this.actions.logout( {},function(json){
  831. if(json.type && json.type =="success"){
  832. this.actions.login( loginData,function(js){
  833. if(js.data && js.data.okrSystemAdmin){ this.app.okrSystemAdmin = js.data.okrSystemAdmin}
  834. this.fireEvent("postSelectorOk", loginData.loginIdentity );
  835. this.close();
  836. }.bind(this), function(xhr,text,error){
  837. }.bind(this), false);
  838. }
  839. }.bind(this), null, false);
  840. }else{
  841. this.actions.login( loginData,function(json){
  842. if(json.data && json.data.okrSystemAdmin){ this.app.okrSystemAdmin = json.data.okrSystemAdmin}
  843. //this.app._loadApplication( null, loginData.loginIdentity );
  844. this.fireEvent("postSelectorOk", loginData.loginIdentity );
  845. this.close();
  846. }.bind(this), null, false);
  847. }
  848. }
  849. }
  850. });
  851. MWF.xApplication.Execution.TodoView = new Class({
  852. Extends: MWF.xApplication.Template.Explorer.ComplexView,
  853. _createDocument: function(data){
  854. return new MWF.xApplication.Execution.TodoDocument(this.viewNode, data, this.explorer, this);
  855. },
  856. _getCurrentPageData: function(callback, count){
  857. var category = this.options.category;
  858. if (!count)count = 20;
  859. var id = (this.items.length) ? this.items[this.items.length - 1].data.id : "(0)";
  860. var filter = this.options.filterData || {};
  861. this.actions.getTaskListNext(id, count, filter, function (json) {
  862. if(this.explorer.todoMenuDoCount && json.count) this.explorer.todoMenuDoCount.set("text","("+json.count+")")
  863. if (callback)callback(json);
  864. }.bind(this),function(xhr,error,text){}.bind(this))
  865. },
  866. _openDocument: function( documentData ){
  867. if(documentData.dynamicObjectType && documentData.dynamicObjectType == this.lp.todo.todoCategory.report){
  868. MWF.xDesktop.requireApp("Execution", "WorkReport", function(){
  869. var data = {
  870. workReportId : documentData.dynamicObjectId,
  871. workId : documentData.workId
  872. }
  873. this.workReport = new MWF.xApplication.Execution.WorkReport(this, this.actions,data,{
  874. "isEdited":false,
  875. onReloadView : function( data ){
  876. this.explorer.createTodoList();
  877. this.explorer.createWorkConditionContentDiv();
  878. this.explorer.getTodoCount();
  879. this.explorer.resizeContent();
  880. }.bind(this)
  881. } );
  882. this.workReport.load();
  883. }.bind(this));
  884. }else if(documentData.dynamicObjectType && documentData.dynamicObjectType == this.lp.todo.todoCategory.deploy){
  885. MWF.xDesktop.requireApp("Execution", "WorkDeploy", function(){
  886. //var isEditedBool = (this.tabLocation == "centerDrafter" || this.tabLocation == "baseDrafter") ? true : false
  887. this.workDeploy = new MWF.xApplication.Execution.WorkDeploy(this, this.actions,{"id":documentData.dynamicObjectId},{
  888. "isEdited":false,"centerWorkId":documentData.dynamicObjectId,
  889. onReloadView : function( data ){
  890. this.explorer.createTodoList();
  891. this.explorer.createWorkConditionContentDiv();
  892. this.explorer.getTodoCount();
  893. this.explorer.resizeContent();
  894. }.bind(this)
  895. } );
  896. this.workDeploy.load();
  897. }.bind(this))
  898. }else if(documentData.dynamicObjectType && documentData.dynamicObjectType == this.lp.todo.todoCategory.gather){
  899. MWF.xDesktop.requireApp("Execution", "WorkGather", function(){
  900. var data = {
  901. gatherId: documentData.id,
  902. title: documentData.dynamicObjectTitle
  903. }
  904. this.workGather = new MWF.xApplication.Execution.WorkGather(this, this.actions,data,{
  905. onReloadView : function( data ){
  906. this.explorer.createTodoList();
  907. this.explorer.createWorkConditionContentDiv();
  908. this.explorer.getTodoCount();
  909. this.explorer.resizeContent();
  910. }.bind(this)
  911. } );
  912. this.workGather.load();
  913. }.bind(this))
  914. }else if(documentData.dynamicObjectType && documentData.dynamicObjectType == this.lp.todo.todoCategory.readReport){
  915. MWF.xDesktop.requireApp("Execution", "WorkReport", function(){
  916. var data = {
  917. todoId : documentData.id,
  918. workReportId : documentData.dynamicObjectId,
  919. workId : documentData.workId
  920. }
  921. this.workReport = new MWF.xApplication.Execution.WorkReport(this, this.actions,data,{
  922. "isEdited":false,
  923. "isRead" : true,
  924. onReloadView : function( data ){
  925. this.explorer.createTodoList();
  926. this.explorer.createWorkConditionContentDiv();
  927. this.explorer.getTodoCount();
  928. this.explorer.resizeContent();
  929. }.bind(this)
  930. } );
  931. this.workReport.load();
  932. }.bind(this));
  933. }else if(documentData.dynamicObjectType && documentData.dynamicObjectType == this.lp.todo.todoCategory.reportDrafter){
  934. MWF.xDesktop.requireApp("Execution", "WorkReport", function(){
  935. var data = {
  936. todoId : documentData.id,
  937. workReportId : documentData.dynamicObjectId,
  938. workId : documentData.workId
  939. }
  940. this.workReport = new MWF.xApplication.Execution.WorkReport(this, this.actions,data,{
  941. "isEdited":false,
  942. onReloadView : function( data ){
  943. this.explorer.createTodoList();
  944. this.explorer.createWorkConditionContentDiv();
  945. this.explorer.getTodoCount();
  946. this.explorer.resizeContent();
  947. }.bind(this)
  948. } );
  949. this.workReport.load();
  950. }.bind(this));
  951. }
  952. }
  953. })
  954. MWF.xApplication.Execution.TodoDocument = new Class({
  955. Extends: MWF.xApplication.Template.Explorer.ComplexDocument
  956. })
  957. MWF.xApplication.Execution.WorkView = new Class({
  958. Extends: MWF.xApplication.Template.Explorer.ComplexView,
  959. _createDocument: function(data){
  960. return new MWF.xApplication.Execution.WorkDocument(this.viewNode, data, this.explorer, this);
  961. },
  962. _getCurrentPageData: function(callback, count){
  963. var category = this.options.category;
  964. if (!count)count = 20;
  965. var id = (this.items.length) ? this.items[this.items.length - 1].data.id : "(0)";
  966. var filter = this.options.filterData || {};
  967. this.actions.getBaseWorkListMyDoNext(id, count, filter, function (json) {
  968. if(this.explorer.todoMenuWorkCount && json.count) this.explorer.todoMenuWorkCount.set("text","("+json.count+")")
  969. if (callback)callback(json);
  970. }.bind(this))
  971. },
  972. _openDocument: function( documentData ){
  973. MWF.xDesktop.requireApp("Execution", "WorkDetail", function(){
  974. var workform = new MWF.xApplication.Execution.WorkDetail(this, this.app.restActions,documentData,{
  975. "isNew": false,
  976. "isEdited": false
  977. });
  978. workform.load();
  979. }.bind(this));
  980. }
  981. })
  982. MWF.xApplication.Execution.WorkDocument = new Class({
  983. Extends: MWF.xApplication.Template.Explorer.ComplexDocument,
  984. _postCreateDocumentNode: function( itemNode, itemData ){
  985. var obj = itemNode.getElement("div[class='barPercentDiv']");
  986. if(obj){
  987. if(itemData.overallProgress){
  988. var _width = parseFloat(itemData.overallProgress)*100;
  989. _width = _width.toFixed(2);
  990. var bgcolor = "#0099ff";
  991. if(itemData.isOverTime) bgcolor = "#f00";
  992. obj.setStyles({"width":_width+"%","background-color":bgcolor})
  993. itemNode.set("title",_width+"%")
  994. }
  995. }
  996. }
  997. })
  998. MWF.xApplication.Execution.WorkConditionView = new Class({
  999. Extends: MWF.xApplication.Template.Explorer.ComplexView,
  1000. _createDocument: function(data){
  1001. return new MWF.xApplication.Execution.WorkConditionDocument(this.viewNode, data, this.explorer, this);
  1002. },
  1003. loadElementList: function (count) {
  1004. if (!this.isItemsLoaded) {
  1005. if (!this.isItemLoadding) {
  1006. this.isItemLoadding = true;
  1007. this._getCurrentPageData(function (json) {
  1008. var length = json.count;
  1009. if (length <= this.items.length) {
  1010. this.isItemsLoaded = true;
  1011. }
  1012. json.data.each(function (data) {
  1013. if (!this.documents[data.id]) {
  1014. var item = this._createDocument(data);
  1015. this.items.push(item);
  1016. this.documents[data.id] = item;
  1017. }
  1018. }.bind(this));
  1019. this.isItemLoadding = false;
  1020. if (this.loadItemQueue > 0) {
  1021. this.loadItemQueue--;
  1022. this.loadElementList();
  1023. }
  1024. }.bind(this), count);
  1025. } else {
  1026. this.loadItemQueue++;
  1027. }
  1028. }
  1029. },
  1030. parseEmotion: function( d ){
  1031. d.content = d.content.replace(/\[emotion=(.*?)\]/g, function( a,b ){
  1032. var emotionPath = MWF.defaultPath+"/widget/$SimpleEditor/default/img/emotion/";
  1033. return "<img imagename='"+b+"' style='cursor:pointer;border:0;padding:2px;' " +" class='MWF_editor_emotion' src='"+ emotionPath + b + ".gif" +"'>";
  1034. }.bind(this));
  1035. },
  1036. _getCurrentPageData: function(callback, count){
  1037. var category = this.options.category;
  1038. if (!count)count = 15;
  1039. var id = (this.items.length) ? this.items[this.items.length - 1].data.id : "(0)";
  1040. var filter = this.options.filterData || {};
  1041. this.actions.getWorkConditionListNext(id, count, filter, function (json) { //alert(JSON.stringify(json))
  1042. json.data.each(function( d ){
  1043. this.parseEmotion( d );
  1044. }.bind(this))
  1045. if (callback)callback(json);
  1046. }.bind(this))
  1047. }
  1048. })
  1049. MWF.xApplication.Execution.WorkConditionDocument = new Class({
  1050. Extends: MWF.xApplication.Template.Explorer.ComplexDocument
  1051. })
  1052. //**************************Class*******************************************