UnitIndex.min.js 14 KB

1
  1. MWF.xApplication.Attendance=MWF.xApplication.Attendance||{};MWF.require("MWF.xAction.org.express.RestActions",null,false);MWF.xDesktop.requireApp("Attendance","lp."+MWF.language,null,false);MWF.xDesktop.requireApp("Attendance","Common",null,false);MWF.xApplication.Attendance.UnitIndex=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default"},statusColor:{normal:"#9acd32",levelAsked:"#4f94cd",late:"#fede03",noSign:"#ee807f",lackOfTime:"#dec674",abNormalDuty:"#fedcbd"},initialize:function(t,e,i,s){this.setOptions(s);this.app=e;this.lp=e.lp;this.path="/x_component_Attendance/$UnitIndex/";this.cssPath="/x_component_Attendance/$UnitIndex/"+this.options.style+"/css.wcss";this._loadCss();this.actions=i;this.node=$(t);this.setDate();this.today=new Date;this.userName=layout.desktop.session.user.distinguishedName;this.data={}},setDate:function(t){this.date=t||new Date;this.year=this.date.getFullYear().toString();var e=this.date.getMonth()+1;this.month=e.toString().length==2?e:"0"+e},reload:function(){this.node.empty();this.load()},load:function(){this.loadTitleNode();this.loadContent()},loadTitleNode:function(){var t=this.date.format(this.app.lp.dateFormatMonth);this.titleNode=new Element("div.titleNode",{styles:this.css.titleNode}).inject(this.node);this.titleLeftArrowNode=new Element("div",{styles:this.css.titleLeftArrowNode}).inject(this.titleNode);this.titleTextNode=new Element("div",{styles:this.css.titleTextNode,text:t}).inject(this.titleNode);this.titleRightArrowNode=new Element("div",{styles:this.css.titleRightArrowNode}).inject(this.titleNode);this.titleLeftArrowNode.addEvents({mouseover:function(){this.titleLeftArrowNode.setStyles(this.css.titleLeftArrowNode_over)}.bind(this),mouseout:function(){this.titleLeftArrowNode.setStyles(this.css.titleLeftArrowNode)}.bind(this),mousedown:function(){this.titleLeftArrowNode.setStyles(this.css.titleLeftArrowNode_down)}.bind(this),mouseup:function(){this.titleLeftArrowNode.setStyles(this.css.titleLeftArrowNode_over)}.bind(this),click:function(){this.changeMonthPrev()}.bind(this)});this.titleRightArrowNode.addEvents({mouseover:function(){this.titleRightArrowNode.setStyles(this.css.titleRightArrowNode_over)}.bind(this),mouseout:function(){this.titleRightArrowNode.setStyles(this.css.titleRightArrowNode)}.bind(this),mousedown:function(){this.titleRightArrowNode.setStyles(this.css.titleRightArrowNode_down)}.bind(this),mouseup:function(){this.titleRightArrowNode.setStyles(this.css.titleRightArrowNode_over)}.bind(this),click:function(){this.changeMonthNext()}.bind(this)});this.titleTextNode.addEvents({mouseover:function(){this.titleTextNode.setStyles(this.css.titleTextNode_over)}.bind(this),mouseout:function(){this.titleTextNode.setStyles(this.css.titleTextNode)}.bind(this),mousedown:function(){this.titleTextNode.setStyles(this.css.titleTextNode_down)}.bind(this),mouseup:function(){this.titleTextNode.setStyles(this.css.titleTextNode_over)}.bind(this),click:function(){this.changeMonthSelect()}.bind(this)});this.loadUnitNode()},changeMonthPrev:function(){this.date.decrement("month",1);this.setDate(this.date);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reloadContent()},changeMonthNext:function(){this.date.increment("month",1);this.setDate(this.date);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reloadContent()},changeMonthSelect:function(){if(!this.monthSelector)this.createMonthSelector();this.monthSelector.show()},createMonthSelector:function(){this.monthSelector=new MWF.xApplication.Attendance.MonthSelector(this.date,this)},changeMonthTo:function(t){this.setDate(t);var e=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",e);this.reloadContent()},changeUnitTo:function(t){this.unit=t;this.titleUnitActionTextNode.set("text",t.split("@")[0]);this.reloadContent()},loadUnitNode:function(){this.listUnitWithPerson(function(t){this.unit=t;this.units=[];var e=true;if(this.app.isTopUnitManager()){var i={unitList:this.app.getNameFlag(this.app.manageTopUnits)};this.app.orgActions.listUnitSubDirect(function(t){t.data.each(function(t){this.units.push(t.distinguishedName)}.bind(this))}.bind(this),null,i,false)}else if(this.app.isUnitManager()){this.units=this.app.manageUnits}this.unit=this.units[0]||this.unit;if(this.units.length>1){this.titleUnitAreaNode=new Element("div.titleUnitAreaNode",{styles:this.css.titleUnitAreaNode}).inject(this.titleNode);this.titleUnitActionNode=new Element("div",{styles:this.css.titleUnitActionNode}).inject(this.titleUnitAreaNode);this.titleUnitActionTextNode=new Element("div",{styles:this.css.titleUnitActionTextNode,text:this.unit.split("@")[0]}).inject(this.titleUnitActionNode);this.titleUnitActionIconNode=new Element("div",{styles:this.css.titleUnitActionIconNode}).inject(this.titleUnitActionNode);this.titleUnitActionNode.addEvents({mouseover:function(){this.titleUnitActionTextNode.setStyles(this.css.titleUnitActionTextNode_over);this.titleUnitActionIconNode.setStyles(this.css.titleUnitActionIconNode_over)}.bind(this),mouseout:function(){this.titleUnitActionTextNode.setStyles(this.css.titleUnitActionTextNode);this.titleUnitActionIconNode.setStyles(this.css.titleUnitActionIconNode)}.bind(this),click:function(t){this.switchUnit(t.target);t.stopPropagation()}.bind(this)})}else{this.titleUnitNode=new Element("div",{styles:this.css.titleUnitNode,text:this.unit.split("@")[0]}).inject(this.titleNode)}}.bind(this))},listUnitWithPerson:function(e){var t={personList:this.app.getNameFlag(this.userName)};this.app.orgActions.listUnitWithPerson(function(t){if(t.data.length>0){if(e)e(t.data[0].distinguishedName)}else{if(e)e()}}.bind(this),null,t,false)},switchUnit:function(t){var i=this;var s=this.titleUnitListNode;var e=t.getParent();if(s){if(s.getStyle("display")=="block"){s.setStyle("display","none")}else{s.setStyle("display","block");s.position({relativeTo:this.titleUnitActionNode,position:"bottomCenter",edge:"upperCenter"})}}else{s=this.titleUnitListNode=new Element("div",{styles:this.css.titleUnitListNode}).inject(this.node);this.app.content.addEvent("click",function(){i.titleUnitListNode.setStyle("display","none")});this.units.each(function(t){var e=new Element("div",{text:t.split("@")[0],styles:this.css.titleUnitSelectNode}).inject(s);e.store("unit",t);e.addEvents({mouseover:function(){this.setStyles(i.css.titleUnitSelectNode_over)},mouseout:function(){this.setStyles(i.css.titleUnitSelectNode)},click:function(t){i.titleUnitListNode.setStyle("display","none");this.setStyles(i.css.titleUnitSelectNode);i.changeUnitTo(this.retrieve("unit"));t.stopPropagation()}})}.bind(this));s.position({relativeTo:this.titleUnitActionNode,position:"bottomCenter",edge:"upperCenter"})}},reloadContent:function(){this.pieChartArea.empty();this.barChartArea.empty();this.lineChartArea.empty();this.loadData(function(){this.loadStatusColorNode();this.loadPieChart();this.loadBarChart()}.bind(this));this.loadDetail()},loadContent:function(){this.loadContentNode();this.loadData(function(){this.loadStatusColorNode();this.loadPieChart();this.loadBarChart()}.bind(this));this.loadDetail();this.setNodeScroll();this.setContentSize()},reloadChart:function(){this.pieChartArea.empty();this.barChartArea.empty();this.lineChartArea.empty();this.loadPieChart();this.loadBarChart()},loadContentNode:function(){this.elementContentNode=new Element("div.elementContentNode",{styles:this.css.elementContentNode}).inject(this.node);this.app.addEvent("resize",function(){this.setContentSize();this.reloadChart()}.bind(this));this.elementContentListNode=new Element("div.elementContentListNode",{styles:this.css.elementContentListNode}).inject(this.elementContentNode);this.topContentArea=new Element("div.topContentArea",{styles:this.css.topContentArea}).inject(this.elementContentListNode);this.pieChartArea=new Element("div.pieChartArea",{styles:this.css.pieChartArea}).inject(this.topContentArea);this.statusColorArea=new Element("div.statusColorArea",{styles:this.css.statusColorArea}).inject(this.topContentArea);this.barChartArea=new Element("div.barChartArea",{styles:this.css.barChartArea}).inject(this.topContentArea);this.middleContentArea=new Element("div.middleContentArea",{styles:this.css.middleContentArea}).inject(this.elementContentListNode);this.lineChartArea=new Element("div.lineChartArea",{styles:this.css.lineChartArea}).inject(this.middleContentArea);this.bottomContentArea=new Element("div.middleContentArea",{styles:this.css.bottomContentArea}).inject(this.elementContentListNode);this.detailArea=new Element("div.lineChartArea",{styles:this.css.detailArea}).inject(this.bottomContentArea)},loadData:function(a,l,h,d,t){if(!l)l=this.unit;if(!h)h=this.year;if(!d)d=this.month;if(this.data[l+h+d]){if(a)a()}else{this.actions.listStaticMonthUnitSum(l,h,d,function(t){var e=t.data||{};var i=this.data[l+h+d]={};var s=i.totalData={levelAsked:e.onSelfHolidayCount||0,noSign:e.absenceDayCount||0,lackOfTime:e.lackOfTimeCount||0,abNormalDuty:e.abNormalDutyCount||0,late:e.lateCount?e.lateCount:0,normal:e.onDutyEmployeeCount||0};var n=0;for(var o in s){n+=s[o]}i.rateData={levelAsked:!s.levelAsked||!n?0:(s.levelAsked/n*100).toFixed(2)+"%",noSign:!s.noSign||!n?0:(s.noSign/n*100).toFixed(2)+"%",lackOfTime:!s.lackOfTime||!n?0:(s.lackOfTime/n*100).toFixed(2)+"%",abNormalDuty:!s.abNormalDuty||!n?0:(s.abNormalDuty/n*100).toFixed(2)+"%",late:!s.late||!n?0:(s.late/n*100).toFixed(2)+"%",normal:!s.normal||!n?0:(s.normal/n*100).toFixed(2)+"%"};if(a)a()}.bind(this),null,t)}},loadStatusColorNode:function(){this.statusColorArea.empty();this.statusColorTable=new Element("table",{styles:this.css.statusColorTable}).inject(this.statusColorArea);var t=this.data[this.unit+this.year+this.month].totalData;var e=this.data[this.unit+this.year+this.month].rateData;for(var i in this.statusColor){var s=new Element("tr",{styles:this.css.statusColorTr}).inject(this.statusColorTable);var n=new Element("td",{styles:this.css.statusColorTd}).inject(s);n.setStyle("background-color",this.statusColor[i]);var s=new Element("tr",{styles:this.css.statusTextTr}).inject(this.statusColorTable);var n=new Element("td",{styles:this.css.statusTextTd,text:this.lp[i]+t[i]+this.lp.day+"("+e[i]+")"}).inject(s)}},loadPieChart:function(){this.pieChartNode=new Element("div.pieChartNode",{styles:this.css.pieChartNode}).inject(this.pieChartArea);var t=this.data[this.unit+this.year+this.month].totalData;this.pieChart=new MWF.xApplication.Attendance.Echarts(this.pieChartNode,this,t);this.pieChart.loadUnitPieChart()},loadBarChart:function(){this.barChartNode=new Element("div.barChartNode",{styles:this.css.barChartNode}).inject(this.barChartArea);var t=new Date(this.date.getFullYear(),this.date.getMonth(),this.date.getDate());t.decrement("month",1);var e=t.getFullYear().toString();var i=t.format(this.lp.dateFormatOnlyMonth);var s=this.data[this.unit+e+i];t.decrement("month",1);var n=t.getFullYear().toString();var o=t.format(this.lp.dateFormatOnlyMonth);var a=this.data[this.unit+n+o];if(!s){this.loadData(null,this.unit,e,i,false)}if(!a){this.loadData(null,this.unit,n,o,false)}var l=[{year:n,month:o,data:this.data[this.unit+n+o].totalData},{year:e,month:i,data:this.data[this.unit+e+i].totalData},{year:this.year,month:this.month,data:this.data[this.unit+this.year+this.month].totalData}];this.barChart=new MWF.xApplication.Attendance.Echarts(this.barChartNode,this,l);this.barChart.loadUnitBarChart()},loadDetail:function(){this.detailArea.empty();this.detailNode=new Element("div",{styles:this.css.detailNode}).inject(this.detailArea);this.detailTitleNode=new Element("div",{styles:this.css.detailTitleNode,text:this.lp.attendanceStatisic}).inject(this.detailNode);var s=new Element("table",{width:"100%",border:"0",cellpadding:"5",cellspacing:"0",styles:this.css.table,class:"editTable"}).inject(this.detailNode);var t=new Element("tr",{styles:this.css.listHeadNode}).inject(s);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.name}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.onDutyTimes}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.offDutyTimes}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.onDutyDayCount}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.onSelfHolidayCount}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.absenceDayCount}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.lateTimes}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.lackOfTimeCount}).inject(t);var e=new Element("td",{styles:this.css.tableTitle,text:this.lp.abNormalDutyCount}).inject(t);this.actions.listStaticMonthPersonByUnitNested(this.unit,this.year,this.month,function(t){var e=t.data||[];e.sort(function(t,e){return e.onDutyDayCount-t.onDutyDayCount});e.each(function(t){var e=new Element("tr").inject(s);var i=new Element("td",{styles:this.css.tableValue,text:t.employeeName.split("@")[0]}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.onDutyTimes}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.offDutyTimes}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.onDutyDayCount}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.onSelfHolidayCount}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.absenceDayCount}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.lateTimes}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.lackOfTimeCount}).inject(e);var i=new Element("td",{styles:this.css.tableValue,text:t.abNormalDutyCount}).inject(e)}.bind(this))}.bind(this))},listDetailFilterUser:function(e,t,i,s){var n={};if(t)n.q_empName=t;if(i)n.q_year=i;if(s)n.q_month=s.toString().length==2?s:"0"+s;this.actions.listDetailFilterUser(n,function(t){if(e)e(t.data)}.bind(this))},setContentSize:function(){var t=this.toolbarNode?this.toolbarNode.getSize():{x:0,y:0};var e=this.titleNode?this.titleNode.getSize():{x:0,y:0};var i=this.node.getSize();var s=this.elementContentNode.getStyle("padding-top").toFloat();var n=this.elementContentNode.getStyle("padding-bottom").toFloat();var o=this.filterConditionNode?this.filterConditionNode.getSize():{x:0,y:0};var a=i.y-t.y-s-n-o.y-e.y-10;this.elementContentNode.setStyle("height",""+a+"px")},setNodeScroll:function(){var t=this;MWF.require("MWF.widget.ScrollBar",function(){new MWF.widget.ScrollBar(this.elementContentNode,{indent:false,style:"xApp_TaskList",where:"before",distance:30,friction:4,axis:{x:false,y:true},onScroll:function(t){}})}.bind(this))}});