| 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,n,i){this.setOptions(i);this.app=e.app;this.explorer=e;this.actions=this.app.actions;this.node=t;this.css=e.css;this.holiday=n.holiday;this.eventData=n.eventData;this.detail=n.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 n="/x_component_Attendance/$Common/fullcalendar/fullcalendar.js";var i="/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(n,function(){COMMON.AjaxModule.load(i,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,n){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,n){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,n,i){this.setOptions(i);this.app=e.app;this.lp=this.app.lp;this.actions=this.app.actions;this.node=t;this.css=e.css;this.data=n;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 n="/x_component_Attendance/$Common/echarts/theme/shine.js";COMMON.AjaxModule.load(e,function(){COMMON.AjaxModule.load(n,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 t=this;var e=this.options.cycleStart.getMonth()!=this.options.cycleEnd.getMonth();var n=this.getDateByMonth();var i=this.analyseLineData();var a={title:{text:"上下班走势图"},grid:{left:50,right:40},tooltip:{trigger:"axis",formatter:function(n){var i,a,o,s;if(!n[0].value||n[0].value=="-"){a=""}else{i=n[0].value.toString().split(".");if(i.length==1){s=i[0]+":00"}else{s=i[1].length==1?i[0]+":"+i[1]+"0":i.join(":")}a=n[0].seriesName+" "+s}if(!n[1].value||n[1].value=="-"){o=""}else{i=n[1].value.toString().split(".");if(i.length==1){s=i[0]+":00"}else{s=i[1].length==1?i[0]+":"+i[1]+"0":i.join(":")}o=n[1].seriesName+" "+s}if(e){return n[0].name+"<br />"+a+"<br />"+o}else{return t.year+"-"+t.month+"-"+n[0].name+"<br />"+a+"<br />"+o}}},legend:{data:["上班时间","下班时间"]}};a.yAxis={type:"value",min:i.yOffTime.length==0&&i.yOnTime.length==0?"5.00":"dataMin",max:i.yOffTime.length==0&&i.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(":")}}}};a.xAxis=[{type:"category",boundaryGap:false,data:n,axisLabel:{}}];a.series=[{name:"上班时间",type:"line",data:i.yOnTime.map(function(t){return!t||isNaN(parseFloat(t.replace(":",".")))?"-":parseFloat(t.replace(":","."))})},{name:"下班时间",type:"line",data:i.yOffTime.map(function(t){return!t||isNaN(parseFloat(t.replace(":",".")))?"-":parseFloat(t.replace(":","."))})}];this.chart=echarts.init(this.node,"shine");this.chart.setOption(a)},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 n=this.options.date.getMonth()||(new Date).getMonth();var i=new Date(e,n,1);while(i.getMonth()===n){t.push(i.getDate());i.setDate(i.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 e={};this.data.each(function(t,n){e[t.recordDateString]=t});var n=[];var i=[];if(this.options.cycleStart.getMonth()==this.options.cycleEnd.getMonth()){var a=this.year||(new Date).getFullYear().toString();var o=this.options.date.format("%m");t.each(function(t,s){var h=a+"-"+o+"-"+(t>9?t:"0"+t);var l=e[h];if(l){n.push(l.onDutyTime!=""?l.onDutyTime:"-");i.push(l.offDutyTime!=""?l.offDutyTime:"-")}else{n.push("-");i.push("-")}})}else{t.each(function(t,a){var o=t;var s=e[o];if(s){n.push(s.onDutyTime!=""?s.onDutyTime:"-");i.push(s.offDutyTime!=""?s.offDutyTime:"-")}else{n.push("-");i.push("-")}})}return{yOnTime:n,yOffTime:i}},loadDepartmentPieChart:function(){this.loadResource(function(){this._loadDepartmentPieChart()}.bind(this))},_loadDepartmentPieChart:function(){var t=this.getDepartmentPieData();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}]})},getDepartmentPieData: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},loadDepartmentBarChart:function(){this.loadResource(function(){this._loadDepartmentBarChart()}.bind(this))},_loadDepartmentBarChart:function(){var t=this.getDepartmentBarData();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)},getDepartmentBarData:function(){var t={};this.data.each(function(e){for(var n in e.data){if(!t[n]){t[n]={month:[],name:this.lp[n],type:"bar",itemStyle:{normal:{color:this.statusColor[n]}},data:[]}}t[n].data.push(e.data[n]);t[n].month.push(e.year+"年"+e.month+"月")}}.bind(this));var e={data:[]};for(var n in t){if(!e.name)e.name=t[n].month;e.data.push(t[n])}return e}});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 e=t.get("year");var n=t.get("month");var i=this.date.get("year");var a=this.date.get("month");var o=this;var s=this.monthSelectTable.getElements("td");s.each(function(t,s){t.empty();t.removeEvents("mouseover");t.removeEvents("mouseout");t.removeEvents("mousedown");t.removeEvents("mouseup");t.removeEvents("click");var h=s+1;t.store("month",h);t.setStyles(this.css.calendarMonthSelectTdNode);t.set("text",""+h+this.app.lp.month);t.setStyle("background-color","#FFF");if(this.year==i&&s==a){t.setStyle("background-color","#EEE")}if(this.year==e&&s==n){t.setStyle("background-color","#CCC")}t.addEvents({mouseover:function(){this.setStyles(o.css.calendarMonthSelectTdNode_over)},mouseout:function(){this.setStyles(o.css.calendarMonthSelectTdNode)},mousedown:function(){this.setStyles(o.css.calendarMonthSelectTdNode_down)},mouseup:function(){this.setStyles(o.css.calendarMonthSelectTdNode_over)},click:function(){o.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 n=Date.parse(this.year+"/"+e+"/1");this.explorer.changeMonthTo(n);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(){}});
|