| 1 |
- MWF.xApplication.Attendance=MWF.xApplication.Attendance||{};MWF.xDesktop.requireApp("Attendance","lp."+MWF.language,null,false);MWF.xApplication.Attendance.Calendar=new Class({Implements:[Options,Events],options:{date:null},initialize:function(t,e,i,n){this.setOptions(n);this.app=e.app;this.explorer=e;this.actions=this.app.actions;this.node=t;this.css=e.css;this.holiday=i.holiday;this.eventData=i.eventData;this.detail=i.detail;this.statusColor=e.statusColor},reload:function(){this.node.empty();this.load()},load:function(){this.loadResource(function(){this.loadCalendar()}.bind(this))},loadResource:function(t){var e=["/x_component_Attendance/$Common/fullcalendar/lib/moment.js","/x_component_Attendance/$Common/fullcalendar/lib/jquery.js"];var i="/x_component_Attendance/$Common/fullcalendar/fullcalendar.js";var n="/x_component_Attendance/$Common/fullcalendar/lang/zh-cn.js";COMMON.AjaxModule.loadCss("/x_component_Attendance/$Common/fullcalendar/fullcalendar.css",function(){COMMON.AjaxModule.load(e,function(){jQuery.noConflict();COMMON.AjaxModule.load(i,function(){COMMON.AjaxModule.load(n,function(){if(t)t()}.bind(this))}.bind(this))}.bind(this))}.bind(this))},loadCalendar:function(){var t=this;jQuery(this.node).fullCalendar({header:{left:"",center:"",right:""},contentHeight:350,defaultDate:this.options.date.format(this.app.lp.dateFormatDay),eventColor:"#fff",eventTextColor:"#fff",rendingNumberCellFun:function(t,e,i){if(this.holiday&&this.holiday.holidays&&this.holiday.holidays.contains(e)){return"<span style='float:right;padding-right:5px;color:red'>休</span>"}if(this.holiday&&this.holiday.workdays&&this.holiday.workdays.contains(e)){return"<span style='float:right;padding-right:5px;'>班</span>"}}.bind(this),eventMouseover:function(t,e,i){e.target.title=t.text},events:this.eventData})}});MWF.xApplication.Attendance.Echarts=new Class({Implements:[Options,Events],options:{type:"pie",date:null},initialize:function(t,e,i,n){this.setOptions(n);this.app=e.app;this.lp=this.app.lp;this.actions=this.app.actions;this.node=t;this.css=e.css;this.data=i;this.statusColor=e.statusColor},load:function(){if(!this.options.date)this.options.date=new Date;this.year=this.options.date.getFullYear();var t=this.options.date.getMonth()+1;this.month=t.toString().length==2?t:"0"+t;this.loadResource(function(){if(this.options.type=="pie"){this.loadPieChart()}else{this.loadLineChart()}}.bind(this))},loadResource:function(t){var e=["/x_component_Attendance/$Common/echarts/echarts.common.js"];var i="/x_component_Attendance/$Common/echarts/theme/shine.js";COMMON.AjaxModule.load(e,function(){COMMON.AjaxModule.load(i,function(){if(t)t()}.bind(this))}.bind(this))},loadPieChart:function(){this.chart=echarts.init(this.node,"shine");this.chart.setOption({title:{text:"考勤汇总"},tooltip:{trigger:"item",formatter:"{a} <br/>{b}: {c} ({d}%)"},series:[{name:"考勤状态",type:"pie",radius:["55%","70%"],avoidLabelOverlap:false,label:{normal:{show:false,position:"center"},emphasis:{show:true,textStyle:{fontSize:"30",fontWeight:"bold"}}},labelLine:{normal:{show:false}},data:this.getPieData()}]})},loadLineChart:function(){var o=this;var s=this.options.cycleStart.getMonth()!=this.options.cycleEnd.getMonth();var t=this.getDateByMonth();var e=this.analyseLineData();var i={title:{text:"上下班走势图"},grid:{left:50,right:40},tooltip:{trigger:"axis",formatter:function(t){var e,i,n,a;if(!t[0].value||t[0].value=="-"){i=""}else{e=t[0].value.toString().split(".");if(e.length==1){a=e[0]+":00"}else{a=e[1].length==1?e[0]+":"+e[1]+"0":e.join(":")}i=t[0].seriesName+" "+a}if(!t[1].value||t[1].value=="-"){n=""}else{e=t[1].value.toString().split(".");if(e.length==1){a=e[0]+":00"}else{a=e[1].length==1?e[0]+":"+e[1]+"0":e.join(":")}n=t[1].seriesName+" "+a}if(s){return t[0].name+"<br />"+i+"<br />"+n}else{return o.year+"-"+o.month+"-"+t[0].name+"<br />"+i+"<br />"+n}}},legend:{data:["上班时间","下班时间"]}};i.yAxis={type:"value",min:e.yOffTime.length==0&&e.yOnTime.length==0?"5.00":"dataMin",max:e.yOffTime.length==0&&e.yOnTime.length==0?"23.00":"dataMax",axisLabel:{formatter:function(t){vs=t.toString().split(".");if(vs.length==1){return vs[0]+":00"}else{return vs[1].length==1?vs[0]+":"+vs[1]+"0":vs.join(":")}}}};i.xAxis=[{type:"category",boundaryGap:false,data:t,axisLabel:{}}];i.series=[{name:"上班时间",type:"line",data:e.yOnTime.map(function(t){return!t||isNaN(parseFloat(t.replace(":",".")))?"-":parseFloat(t.replace(":","."))})},{name:"下班时间",type:"line",data:e.yOffTime.map(function(t){return!t||isNaN(parseFloat(t.replace(":",".")))?"-":parseFloat(t.replace(":","."))})}];this.chart=echarts.init(this.node,"shine");this.chart.setOption(i)},getPieData:function(){var t=[];for(var e in this.data){t.push({value:this.data[e],name:this.lp[e],itemStyle:{normal:{color:this.statusColor[e]}}})}return t},getDateByMonth:function(){var t=[];if(this.options.cycleStart.getMonth()==this.options.cycleEnd.getMonth()){var e=this.year||(new Date).getFullYear();var i=this.options.date.getMonth()||(new Date).getMonth();var n=new Date(e,i,1);while(n.getMonth()===i){t.push(n.getDate());n.setDate(n.getDate()+1)}}else{var a=this.options.cycleStart.clone();var o=this.options.cycleEnd.clone();while(a<=o){t.push(a.format("%Y-%m-%d"));a.setDate(a.getDate()+1)}}this.allDates=t;return t},analyseLineData:function(){var t=this.getDateByMonth();var a={};this.data.each(function(t,e){a[t.recordDateString]=t});var o=[];var s=[];if(this.options.cycleStart.getMonth()==this.options.cycleEnd.getMonth()){var h=this.year||(new Date).getFullYear().toString();var l=this.options.date.format("%m");t.each(function(t,e){var i=h+"-"+l+"-"+(t>9?t:"0"+t);var n=a[i];if(n){o.push(n.onDutyTime!=""?n.onDutyTime:"-");s.push(n.offDutyTime!=""?n.offDutyTime:"-")}else{o.push("-");s.push("-")}})}else{t.each(function(t,e){var i=t;var n=a[i];if(n){o.push(n.onDutyTime!=""?n.onDutyTime:"-");s.push(n.offDutyTime!=""?n.offDutyTime:"-")}else{o.push("-");s.push("-")}})}return{yOnTime:o,yOffTime:s}},loadUnitPieChart:function(){this.loadResource(function(){this._loadUnitPieChart()}.bind(this))},_loadUnitPieChart:function(){var t=this.getUnitPieData();this.chart=echarts.init(this.node,"shine");this.chart.setOption({title:{text:"考勤汇总"},tooltip:{trigger:"item",formatter:"{a} <br/>{b}: {c} ({d}%)"},series:[{name:"考勤状态",type:"pie",radius:["55%","70%"],avoidLabelOverlap:false,label:{normal:{show:false,position:"center"},emphasis:{show:true,textStyle:{fontSize:"30",fontWeight:"bold"}}},labelLine:{normal:{show:false}},data:t.data}]})},getUnitPieData:function(){var t={name:[],data:[]};for(var e in this.data){t.name.push(this.lp[e]);t.data.push({value:this.data[e],name:this.lp[e],itemStyle:{normal:{color:this.statusColor[e]}}})}return t},loadUnitBarChart:function(){this.loadResource(function(){this._loadUnitBarChart()}.bind(this))},_loadUnitBarChart:function(){var t=this.getUnitBarData();var e={title:{text:"考勤趋势"},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:true},xAxis:[{type:"category",data:t.name}],yAxis:[{type:"value"}],series:t.data};this.chart=echarts.init(this.node,"shine");this.chart.setOption(e)},getUnitBarData:function(){var i={};this.data.each(function(t){for(var e in t.data){if(!i[e]){i[e]={month:[],name:this.lp[e],type:"bar",itemStyle:{normal:{color:this.statusColor[e]}},data:[]}}i[e].data.push(t.data[e]);i[e].month.push(t.year+"年"+t.month+"月")}}.bind(this));var t={data:[]};for(var e in i){if(!t.name)t.name=i[e].month;t.data.push(i[e])}return t}});MWF.xApplication.Attendance.MonthSelector=new Class({Implements:[Events],initialize:function(t,e){this.explorer=e;this.css=this.explorer.css;this.app=this.explorer.app;this.date=t;this.year=this.date.get("year");this.load()},load:function(){this.monthSelectNode=new Element("div",{styles:this.css.calendarMonthSelectNode}).inject(this.explorer.node);this.monthSelectNode.position({relativeTo:this.explorer.titleTextNode,position:"bottomCenter",edge:"upperCenter"});this.monthSelectNode.addEvent("mousedown",function(t){t.stopPropagation()});this.monthSelectTitleNode=new Element("div",{styles:this.css.calendarMonthSelectTitleNode}).inject(this.monthSelectNode);this.monthSelectPrevYearNode=new Element("div",{styles:this.css.calendarMonthSelectTitlePrevYearNode}).inject(this.monthSelectTitleNode);this.monthSelectNextYearNode=new Element("div",{styles:this.css.calendarMonthSelectTitleNextYearNode}).inject(this.monthSelectTitleNode);this.monthSelectTextNode=new Element("div",{styles:this.css.calendarMonthSelectTitleTextNode}).inject(this.monthSelectTitleNode);this.monthSelectTextNode.set("text",this.year);var t="<tr><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td></tr>";this.monthSelectTable=new Element("table",{styles:{"margin-top":"10px"},height:"200px",width:"90%",align:"center",border:"0",cellPadding:"0",cellSpacing:"5",html:t}).inject(this.monthSelectNode);this.monthSelectBottomNode=new Element("div",{styles:this.css.calendarMonthSelectBottomNode,text:this.app.lp.today}).inject(this.monthSelectNode);this.setEvent()},loadMonth:function(){this.monthSelectTextNode.set("text",this.year);var t=new Date;var n=t.get("year");var a=t.get("month");var o=this.date.get("year");var s=this.date.get("month");var h=this;var e=this.monthSelectTable.getElements("td");e.each(function(t,e){t.empty();t.removeEvents("mouseover");t.removeEvents("mouseout");t.removeEvents("mousedown");t.removeEvents("mouseup");t.removeEvents("click");var i=e+1;t.store("month",i);t.setStyles(this.css.calendarMonthSelectTdNode);t.set("text",""+i+this.app.lp.month);t.setStyle("background-color","#FFF");if(this.year==o&&e==s){t.setStyle("background-color","#EEE")}if(this.year==n&&e==a){t.setStyle("background-color","#CCC")}t.addEvents({mouseover:function(){this.setStyles(h.css.calendarMonthSelectTdNode_over)},mouseout:function(){this.setStyles(h.css.calendarMonthSelectTdNode)},mousedown:function(){this.setStyles(h.css.calendarMonthSelectTdNode_down)},mouseup:function(){this.setStyles(h.css.calendarMonthSelectTdNode_over)},click:function(){h.selectedMonth(this)}})}.bind(this))},setEvent:function(){this.monthSelectPrevYearNode.addEvent("click",function(){this.prevYear()}.bind(this));this.monthSelectNextYearNode.addEvent("click",function(){this.nextYear()}.bind(this));this.monthSelectBottomNode.addEvent("click",function(){this.todayMonth()}.bind(this))},prevYear:function(){this.year--;if(this.year<1900)this.year=1900;this.monthSelectTextNode.set("text",this.year);this.loadMonth()},nextYear:function(){this.year++;this.monthSelectTextNode.set("text",this.year);this.loadMonth()},todayMonth:function(){var t=new Date;this.explorer.changeMonthTo(t);this.hide()},selectedMonth:function(t){var e=t.retrieve("month");var i=Date.parse(this.year+"/"+e+"/1");this.explorer.changeMonthTo(i);this.hide()},show:function(){this.date=this.explorer.date;this.year=this.date.get("year");this.loadMonth();this.monthSelectNode.setStyle("display","block");this.hideFun=this.hide.bind(this);document.body.addEvent("mousedown",this.hideFun)},hide:function(){this.monthSelectNode.setStyle("display","none");document.body.removeEvent("mousedown",this.hideFun)},destroy:function(){}});
|