Main.js 52 KB

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