Main.js 57 KB

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