12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448 |
- 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.xDesktop.requireApp("Attendance", "widget.Calendar", null, false);
- MWF.xApplication.Attendance.MyIndex = new Class({
- Extends: MWF.widget.Common,
- Implements: [Options, Events],
- options: {
- "style": "default"
- },
- statusColor : {
- "normal" : "#4A90E2", //蓝色,正常
- "levelAsked":"#2BC497", //绿色,请假
- "late":"#F5A623", //黄色,迟到
- //"leaveEarly":"#fe8d03", //橙色,早退
- "noSign":"#FF8080", //粉红色,未签到
- "appealSuccess" : "#4FB2E3", //黄绿色,申诉通过
- //"lackOfTime" : "#dec674",//工时不足人次
- "abNormalDuty" : "#8B572A"//异常打卡人次
- },
- initialize: function(node, app, actions, options){
- this.setOptions(options);
- this.app = app;
- this.lp = app.lp;
- this.path = "../x_component_Attendance/$MyIndex/";
- this.cssPath = "../x_component_Attendance/$MyIndex/"+this.options.style+"/css.wcss";
- this._loadCss();
- this.actions = actions;
- this.node = $(node);
- this.holidayData = {};
- this.today = new Date();
- //this.preMonthDate = new Date();
- //this.preMonthDate.decrement("month", 1);
- this.setDate();
- this.todayDate = this.today.format( this.lp.dateFormatDay );
- this.todayHloidayName = "";
- this.todayIsWorkDay = false; //是否调修工作日
- this.userName = layout.desktop.session.user.distinguishedName;
- },
- setDate : function( date ){
- this.date = date || new Date(); //this.preMonthDate
- this.year = this.date.getFullYear().toString();
- var month = this.date.getMonth()+1;
- this.month = month.toString().length == 2 ? month : "0"+month;
- this.getCycleDate();
- },
- destroy: function(){
- this.node.empty();
- },
- reload: function(){
- this.node.empty();
- this.load();
- },
- load: function(){
- this.loadTitleNode();
- this.loadContent();
- },
- loadTitleNode : function(){
- var text = this.date.format(this.app.lp.dateFormatMonth);
- this.titleNode = new Element("div.titleNode",{
- "styles" : this.css.titleNode
- }).inject(this.node);
- this.titleRightNode = new Element("div.titleRightNode",{
- "styles" : this.css.titleRightNode
- }).inject(this.titleNode);
- //this.titleLeftArrowNode = new Element("div",{
- // "styles" : this.css.titleLeftArrowNode
- //}).inject(this.titleRightNode);
- this.titleTextNode = new Element("div",{
- "styles" : this.css.titleTextNode,
- "text" : text
- }).inject(this.titleRightNode);
- this.titleTextNode.setStyles( {
- "cursor" : "default"
- } );
- //this.titleRightArrowNode = new Element("div",{
- // "styles" : this.css.titleRightArrowNode
- //}).inject(this.titleRightNode);
- var cycleText = this.app.lp.cyclText.
- replace("{start}",this.cycleStartDate.format(this.app.lp.dateFormatMonthDayLocal)).
- replace("{end}",this.cycleEndDate.format(this.app.lp.dateFormatMonthDayLocal));
- this.titleCycleTextNode = new Element("div",{
- "styles" : this.css.titleCycleTextNode,
- "text" : cycleText
- }).inject(this.titleRightNode);
- this.titleScheduleIconNode = new Element("div",{
- "styles" : this.css.titleScheduleIconNode,
- "title" : this.lp.seeSchedule
- }).inject(this.titleRightNode);
- //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.titleScheduleIconNode.addEvents({
- "mouseover": function(){this.titleScheduleIconNode.setStyles(this.css.titleScheduleIconNode_over);}.bind(this),
- "mouseout": function(){this.titleScheduleIconNode.setStyles(this.css.titleScheduleIconNode);}.bind(this),
- "mousedown": function(){this.titleScheduleIconNode.setStyles(this.css.titleScheduleIconNode_down);}.bind(this),
- "mouseup": function(){this.titleScheduleIconNode.setStyles(this.css.titleScheduleIconNode_over);}.bind(this),
- "click": function(){this.showSchedule();}.bind(this)
- });
- },
- changeMonthPrev: function(){
- this.date.decrement("month", 1);
- this.setDate( this.date );
- var text = this.date.format(this.app.lp.dateFormatMonth);
- this.titleTextNode.set("text", text);
- this.reloadContent();
- },
- changeMonthNext: function(){
- this.date.increment("month", 1);
- this.setDate( this.date );
- var text = this.date.format(this.app.lp.dateFormatMonth);
- this.titleTextNode.set("text", text);
- 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(d){
- this.setDate( d );
- var text = this.date.format(this.app.lp.dateFormatMonth);
- this.titleTextNode.set("text", text);
- this.reloadContent();
- },
- getCycleDate : function(){
- this.actions.getCyclePerson( this.year, this.month, function( json ){
- json.data = json.data || [];
- this.cycleStartDateString = json.data.cycleStartDateString;
- this.cycleEndDateString = json.data.cycleEndDateString;
- this.cycleStartDate = new Date( this.cycleStartDateString );
- this.cycleEndDate = new Date( this.cycleEndDateString );
- this.cycleYearMonth = [];
- var start = new Date(this.cycleStartDate.getFullYear(), this.cycleStartDate.getMonth(), 1);
- while( start < this.cycleEndDate ){
- var year = start.getFullYear().toString();
- var month = start.getMonth()+1;
- month = month.toString().length === 2 ? month : "0"+month;
- start.increment("month", 1);
- this.cycleYearMonth.push( { year: year, month: month} )
- }
- this.isCrossMonth = (this.cycleStartDate.getMonth() != this.cycleEndDate.getMonth());
- }.bind(this), null, false )
- },
- getScheduleData : function( callback ){
- var data = {"personList": this.app.getNameFlag(this.userName)};
- this.app.orgActions.listUnitSupNestedWithPerson( data, function( json ){
- var unitList = json.data;
- var sortF = function( a, b ){
- return b.level - a.level;
- };
- unitList.sort( sortF );
- var flag = true;
- for( var i = 0; i<unitList.length; i++ ){
- var unit = unitList[i];
- if( unit.level == 1 ){
- this.actions.listScheduleByTopUnit( unit.distinguishedName, function( json ){
- if( json.data ){
- if(callback)callback(json.data);
- flag = false;
- }
- }.bind(this), null, false)
- }else{
- this.actions.listScheduleByUnit( unit.distinguishedName, function( json ){
- if( json.data && json.data.length > 0 ){
- if(callback)callback(json.data);
- flag = false;
- }
- }.bind(this), null, false)
- }
- if( !flag )break;
- }
- }.bind(this), null, false );
- //this.actions.listUnitWithPerson( function( json ){
- // debugger;
- // var unitList = json.data;
- // if( unitList.length > 0 ){
- // this.actions.listScheduleByUnit( unitList[0].distinguishedName, function( json ){
- // debugger;
- // if( json.data && json.data.length > 0 ){
- // if(callback)callback(json.data);
- // }else{
- // this.actions.listScheduleByTopUnit( json.data[0].topUnit, function( json ){
- // debugger;
- // if(callback)callback(json.data);
- // }.bind(this))
- // }
- // }.bind(this))
- // }else{
- // if(callback)callback();
- // }
- //}.bind(this), null, data, false)
- },
- showSchedule: function( ){
- if( this.scheduleNode ){
- this.scheduleNode.setStyle("display","block");
- this.scheduleNode.position({
- relativeTo: this.titleScheduleIconNode,
- position: 'bottomLeft',
- edge: 'upperCenter',
- offset:{
- x : -60,
- y : 0
- }
- });
- }else{
- this.getScheduleData(function( data ){
- if( !data || data.length == 0 ){
- this.app.notice( this.lp.unfindSchedule,"error");
- }else{
- this.scheduleNode = new Element("div", {"styles": this.css.scheduleNode}).inject(this.node);
- this.scheduleNode.position({
- relativeTo: this.titleScheduleIconNode,
- position: 'bottomLeft',
- edge: 'upperCenter',
- offset:{
- x : -60,
- y : 0
- }
- });
- this.scheduleNode.addEvent("mousedown", function(e){e.stopPropagation();});
- document.body.addEvent("mousedown", function(){ this.scheduleNode.setStyle("display","none")}.bind(this));
- var d = data[0];
- var table = new Element("table", {
- "width" : "100%", "border" : "0", "cellpadding" : "5", "cellspacing" : "0", "class" : "filterTable"
- }).inject( this.scheduleNode );
- var tr = new Element("tr").inject(table);
- new Element("td",{ "text" : this.lp.scheduleTable , "styles" : this.css.scheduleTdHead, "colspan" : "2" }).inject(tr);
- var table = new Element("table", {
- "width" : "100%", "border" : "0", "cellpadding" : "5", "cellspacing" : "0", "class" : "filterTable"
- }).inject( this.scheduleNode );
- var tr = new Element("tr").inject(table);
- new Element("td",{ "text" : this.lp.schedule.workTime + ":" , "styles" : this.css.scheduleTdTitle }).inject(tr);
- new Element("td",{ "text" : d.onDutyTime || "" , "styles" : this.css.scheduleTdValue }).inject(tr);
- var tr = new Element("tr").inject(table);
- new Element("td",{ "text" : this.lp.schedule.offTime +":" , "styles" : this.css.scheduleTdTitle }).inject(tr);
- new Element("td",{ "text" : d.offDutyTime || "" , "styles" : this.css.scheduleTdValue }).inject(tr);
- var tr = new Element("tr").inject(table);
- new Element("td",{ "text" : this.lp.schedule.lateTime + ":" , "styles" : this.css.scheduleTdTitle }).inject(tr);
- new Element("td",{ "text" : d.lateStartTime || "" , "styles" : this.css.scheduleTdValue }).inject(tr);
- var tr = new Element("tr").inject(table);
- new Element("td",{ "text" : this.lp.schedule.leaveEarlyTime + ":" , "styles" : this.css.scheduleTdTitle }).inject(tr);
- new Element("td",{ "text" : d.leaveEarlyStartTime || "" , "styles" : this.css.scheduleTdValue }).inject(tr);
- var tr = new Element("tr").inject(table);
- new Element("td",{ "text" : this.lp.schedule.absenteeismTime+":" , "styles" : this.css.scheduleTdTitle }).inject(tr);
- new Element("td",{ "text" : d.absenceStartTime || "" , "styles" : this.css.scheduleTdValue }).inject(tr);
- }
- }.bind(this))
- }
- },
- reloadContent : function(){
- this.calendarArea.empty();
- this.statusColorArea.empty();
- this.pieChartArea.empty();
- this.lineChartArea.empty();
- this.loadData();
- },
- loadContent : function(){
- this.loadContentNode();
- this.loadData();
- // this.setNodeScroll();
- this.setContentSize();
- },
- reloadChart : function(){
- this.pieChartArea.empty();
- this.lineChartArea.empty();
- this.loadPieChart();
- this.loadLineChart();
- },
- 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.calendarArea = new Element("div.calendarArea",{
- "styles" : this.css.calendarArea
- }).inject(this.topContentArea);
- this.middleContentArea = new Element("div.middleContentArea",{
- "styles" : this.css.middleContentArea
- }).inject(this.elementContentListNode);
- this.middleLeftArea = new Element("div.middleLeftArea",{
- "styles" : this.css.middleLeftArea
- }).inject(this.middleContentArea);
- this.middleLeftTitleArea = new Element("div.middleLeftTitleArea",{
- "styles" : this.css.middleLeftTitleArea,
- "text": this.lp.attendanceSummary
- }).inject(this.middleLeftArea);
- this.middleLeftContentArea = new Element("div.middleLeftContentArea",{
- "styles" : this.css.middleLeftContentArea
- }).inject(this.middleLeftArea);
- this.statusColorArea = new Element("div.statusColorArea",{
- "styles" : this.css.statusColorArea
- }).inject(this.middleLeftContentArea);
- this.pieChartArea = new Element("div.pieChartArea",{
- "styles" : this.css.pieChartArea
- }).inject(this.middleLeftContentArea);
- this.middleRightArea = new Element("div.middleRightArea",{
- "styles" : this.css.middleRightArea
- }).inject(this.middleContentArea);
- this.middleRightTitleArea = new Element("div.middleRightTitleArea",{
- "styles" : this.css.middleRightTitleArea,
- "text": this.lp.attendanceTrendChart
- }).inject(this.middleRightArea);
- this.middleRightContentArea = new Element("div.middleRightContentArea",{
- "styles" : this.css.middleRightContentArea
- }).inject(this.middleRightArea);
- this.lineChartArea = new Element("div.lineChartArea",{
- "styles" : this.css.lineChartArea
- }).inject(this.middleRightContentArea)
- },
- loadData : function(){
- // this.listDetailFilterUser( function( data ){
- this.listCycleDetailFileterUser( function(data){
- this.detailData = data || {};
- this.anaylyseDetail();
- this.loadStatusColorNode();
- this.loadPieChart();
- this.loadLineChart();
- this.loadHolidayData(function(){
- this.loadCalendarContent();
- //if(!this.titleInforNode)this.loadTitleInforNode();
- }.bind(this));
- }.bind(this), this.userName, this.year, this.month )
- },
- loadHolidayData : function( callback ){
- if( this.holidayData && this.holidayData[ this.year ] ) {
- //this.loadCalendarContent();
- if(callback)callback();
- }else{
- this.listHolidayFilter( function(data){
- var dates = {
- workdays : [],
- holidays : [],
- names : []
- };
- data.each( function(d){
- if( this.dateMap[d.configDate] ){
- var m = this.dateMap[d.configDate];
- if( d.configType === "Holiday" ){
- m.isHoliday = true;
- m.holidayName = d.configName;
- }else if(d.configType === "Workday"){
- m.isWorkday = true;
- m.holidayName = d.configName;
- }
- }
- if( !dates.names.contains(d.configName) ){
- dates.names.push( d.configName )
- }
- if( !dates[d.configName] ){
- dates[d.configName] = {};
- dates[d.configName].holidays = [];
- dates[d.configName].workdays = [];
- }
- if( d.configType == "Holiday" ){
- if( d.configDate == this.todayDate ){
- this.todayHloidayName = d.configName;
- }
- dates.holidays.push( d.configDate );
- dates[d.configName].holidays.push( d.configDate )
- }else{
- if( d.configDate == this.todayDate ){
- this.todayIsWorkDay = true;
- }
- dates.workdays.push( d.configDate );
- dates[d.configName].workdays.push( d.configDate )
- }
- }.bind(this));
- this.holidayData[this.year] = dates;
- if(callback)callback();
- }.bind(this), null, this.year)
- }
- },
- loadCalendarContent : function(){
- // this.calendarTitle = new Element("div.calendarTitle",{
- // "styles" : this.css.calendarTitle
- // }).inject(this.calendarArea)
- this.canlendarToolbar = new Element("div.canlendarToolbar",{
- "styles" : this.css.canlendarToolbar
- }).inject(this.calendarArea);
- this.canlendarToolbarText = new Element("div",{
- "styles" : this.css.canlendarToolbarText,
- "text" : this.lp.index.attendanceCalendar
- }).inject(this.canlendarToolbar);
- this.calendarDate = this.date.clone();
- if( this.isCrossMonth ){
- this.calendarMonthNode = new Element("div",{
- "styles" : this.css.calendarMonthNode
- }).inject(this.canlendarToolbar);
- this.calendarRightArrowNode = new Element("div",{
- "styles" : this.css.calendarRightArrowNode
- }).inject(this.calendarMonthNode);
- this.calendarCurrentMonthNode = new Element("div",{
- "styles" : this.css.calendarCurrentMonthNode,
- "text" : (this.calendarDate.getMonth()+1)+this.app.lp.month
- }).inject(this.calendarMonthNode);
- this.calendarLeftArrowNode = new Element("div",{
- "styles" : this.css.calendarLeftArrowNode
- }).inject(this.calendarMonthNode);
- this.calendarLeftArrowNode.addEvents({
- //"mouseover": function(){this.calendarLeftArrowNode.setStyles(this.css.calendarLeftArrowNode_over);}.bind(this),
- // "mouseout": function(){this.calendarLeftArrowNode.setStyles(this.css.calendarLeftArrowNode);}.bind(this),
- //"mousedown": function(){this.calendarLeftArrowNode.setStyles(this.css.calendarLeftArrowNode_down);}.bind(this),
- //"mouseup": function(){this.calendarLeftArrowNode.setStyles(this.css.calendarLeftArrowNode_over);}.bind(this),
- "click": function(){this.changeCalendarMonthPrev();}.bind(this)
- });
- this.calendarRightArrowNode.addEvents({
- //"mouseover": function(){this.calendarRightArrowNode.setStyles(this.css.calendarRightArrowNode_over);}.bind(this),
- //"mouseout": function(){this.calendarRightArrowNode.setStyles(this.css.calendarRightArrowNode);}.bind(this),
- //"mousedown": function(){this.calendarRightArrowNode.setStyles(this.css.calendarRightArrowNode_down);}.bind(this),
- //"mouseup": function(){this.calendarRightArrowNode.setStyles(this.css.calendarRightArrowNode_over);}.bind(this),
- "click": function(){this.changeCalendarMonthNext();}.bind(this)
- });
- this.switchCalendarArrow( this.calendarDate );
- }
- //this.loadHolidayNode();
- this.calendarNode = new Element("div.calendarNode",{
- "styles" : this.css.calendarNode
- }).inject(this.calendarArea);
- this.calendar = new MWF.xApplication.Attendance.MyIndex.Calendar(this.calendarNode, this,
- {
- "holiday" :this.holidayData[this.year],
- "detail" :this.detailData,
- "eventData" : this.eventData,
- "dateMap": this.dateMap
- },
- {
- date : this.date,
- cycleStart : this.cycleStartDate,
- cycleEnd : this.cycleEndDate
- }
- );
- this.calendar.load();
- // this.calendar = new MWF.xApplication.Attendance.Calendar(this.calendarNode, this,
- // {
- // "holiday" :this.holidayData[this.year],
- // "detail" :this.detailData,
- // "eventData" : this.eventData
- // },
- // {
- // date : this.date,
- // cycleStart : this.cycleStartDate,
- // cycleEnd : this.cycleEndDate
- // }
- // );
- // this.calendar.load();
- },
- switchCalendarArrow : function( date ){
- var firstDate = new Date( date.getFullYear() , date.getMonth() , 1, 0, 0, 0 );
- if( firstDate <= this.cycleStartDate ){
- this.calendarLeftArrowNode.setStyles( this.css.calendarLeftArrowNode_disable );
- this.calendarLeftDisable = true;
- }else{
- this.calendarLeftArrowNode.setStyles( this.css.calendarLeftArrowNode );
- this.calendarLeftDisable = false;
- }
- //alert( "firstDate="+firstDate.format("db") + " " +"cycleStartDate="+ this.cycleStartDate.format("db"))
- var lastDate = new Date( date.getFullYear(),date.getMonth()+1, 0, 23, 59, 59);
- if( lastDate >= this.cycleEndDate ){
- this.calendarRightArrowNode.setStyles( this.css.calendarRightArrowNode_disable );
- this.calendarRightDisable = true;
- }else{
- this.calendarRightArrowNode.setStyles( this.css.calendarRightArrowNode );
- this.calendarRightDisable = false;
- }
- },
- changeCalendarMonthPrev: function(){
- if( this.calendarLeftDisable )return ;
- // jQuery(this.calendarNode).fullCalendar( 'prev' );
- this.calendarDate.decrement("month", 1);
- this.calendarCurrentMonthNode.set("text",(this.calendarDate.getMonth()+1)+ this.app.lp.month );
- this.switchCalendarArrow( this.calendarDate );
- this.calendar.date = this.calendarDate;
- this.calendar.reLoadCalendar();
- },
- changeCalendarMonthNext: function(){
- if( this.calendarRightDisable )return ;
- // jQuery(this.calendarNode).fullCalendar( 'next' );
- this.calendarDate.increment("month", 1);
- this.calendarCurrentMonthNode.set("text",(this.calendarDate.getMonth()+1)+this.app.lp.month);
- this.switchCalendarArrow( this.calendarDate );
- this.calendar.date = this.calendarDate;
- this.calendar.reLoadCalendar();
- //this.date.increment("month", 1);
- //this.setDate( this.date );
- //var text = this.date.format(this.app.lp.dateFormatMonth);
- //this.titleTextNode.set("text", text);
- //this.reloadContent();
- },
- listHolidayFilter : function( callback, name,year,month ){
- /*{'q_Year':'2016','q_Name':'五一劳动节','q_Month':'03'}*/
- var filter = {};
- if( name )filter.q_Name = name;
- if( year )filter.q_Year = year;
- if( month ){
- filter.q_Month = month.toString().length == 2 ? month : "0"+month;
- }else{
- filter.q_Month = "(0)"
- }
- this.actions.listHolidayFilter( filter, function(json){
- if( callback )callback(json.data);
- }.bind(this))
- },
- loadHolidayNode : function() {
- this.holidayAreaNode = new Element("div.holidayAreaNode",{
- "styles" : this.css.holidayAreaNode
- }).inject(this.canlendarToolbar);
- this.holidayActionNode = new Element("div",{
- "styles" : this.css.holidayActionNode
- }).inject(this.holidayAreaNode);
- this.holidayActionTextNode = new Element("div",{
- "styles" : this.css.holidayActionTextNode,
- "text" : this.lp.holiday.holidaySchedule
- }).inject(this.holidayActionNode);
- this.holidayActionIconNode = new Element("div",{
- "styles" : this.css.holidayActionIconNode
- }).inject(this.holidayActionNode);
- this.holidayActionNode.addEvents({
- "mouseover": function(){this.holidayActionIconNode.setStyles(this.css.holidayActionIconNode_over);}.bind(this),
- "mouseout": function(){this.holidayActionIconNode.setStyles(this.css.holidayActionIconNode);}.bind(this),
- "click" : function( ev ){
- this.switchHoliday( ev.target );
- ev.stopPropagation();
- }.bind(this)
- })
- },
- switchHoliday: function( el ){
- var _self = this;
- var flag = false;
- if(this.holidayListNode ){
- if(this.holidayListNode.retrieve("year") == this.year){
- flag = true;
- }else{
- this.holidayListNode.destroy();
- }
- }
- if(flag){
- var parentNode = el.getParent();
- this.holidayListNode.inject(parentNode);
- if( this.holidayListNode.getStyle("display") == "block" ){
- this.holidayListNode.setStyle("display","none");
- }else{
- this.holidayListNode.setStyle("display","block");
- }
- }else{
- var holidays = this.holidayData[this.year];
- var holidayListNode = this.holidayListNode = new Element("div",{
- "styles" : this.css.holidayListNode
- });
- this.holidayListNode.store("year",this.year);
- this.app.content.addEvent("click",function(){
- _self.holidayListNode.setStyle("display","none");
- });
- holidays.names.each(function( n ){
- var holidayNode = new Element("div",{
- "text" : n,
- "styles" : this.css.holidayNode
- }).inject(holidayListNode);
- holidayNode.store("holidays", holidays[n].holidays );
- holidayNode.store("workdays", holidays[n].workdays );
- holidayNode.addEvents({
- "mouseover" : function(){
- this.setStyles(_self.css.holidayNode_over);
- },
- "mouseout" : function(){
- this.setStyles(_self.css.holidayNode);
- },
- "click" : function(e){
- _self.holidayListNode.setStyle("display","none");
- var holidays = this.retrieve("holidays");
- var workdays = this.retrieve("workdays");
- this.setStyles(_self.css.holidayNode);
- _self.changeMonthTo( new Date((holidays || workdays )[0]) );
- //jQuery(_self.calendarNode).fullCalendar( 'gotoDate', (holidays || workdays )[0] );
- e.stopPropagation();
- }
- })
- }.bind(this));
- var parentNode = el.getParent();
- this.holidayListNode.inject(parentNode);
- }
- },
- loadStatusColorNode : function(){
- this.statusColorTable = new Element("table",{
- "styles" : this.css.statusColorTable
- }).inject(this.statusColorArea);
- for(var status in this.statusColor){
- var tr = new Element("tr",{
- "styles" : this.css.statusColorTr,
- "title": this.lp[status]
- }).inject(this.statusColorTable);
- var td = new Element("td").inject(tr);
- new Element("div",{
- "styles" : {
- "margin-top": "8px",
- "width": "14px",
- "height": "14px",
- "border-radius": "14px",
- "background-color": this.statusColor[status]
- }
- }).inject(td);
- var td = new Element("td").inject(tr);
- new Element("div",{
- "styles" : {
- "margin-top": "8px",
- "min-width": "30px",
- "padding-left": "4px",
- "font-size": "14px",
- "color": "#666"
- },
- "text": this.lp.statusText[status]
- }).inject(td);
- var td = new Element("td").inject(tr);
- new Element("div",{
- "styles" : {
- "margin-top": "8px",
- "min-width": "60px",
- "padding-left": "4px",
- "font-size": "12px",
- "color": "#999"
- },
- "text": "("+this.totalData[status] + ""+ this.app.lp.day+")"
- }).inject(td);
- }
- // this.statusColorTable = new Element("table",{
- // "styles" : this.css.statusColorTable
- // }).inject(this.statusColorArea);
- //
- // for(var status in this.statusColor){
- //
- // var tr = new Element("tr",{
- // "styles" : this.css.statusColorTr
- // }).inject(this.statusColorTable);
- // var td = new Element("td",{
- // "styles" : this.css.statusColorTd
- // }).inject(tr);
- // td.setStyle("background-color",this.statusColor[status]);
- //
- // var tr = new Element("tr",{
- // "styles" : this.css.statusTextTr
- // }).inject(this.statusColorTable);
- // var td = new Element("td",{
- // "styles" : this.css.statusTextTd,
- // "text" : this.lp[status] +":"+this.totalData[status] + " "+ this.app.lp.day + ( this.rateData[status] ? "("+this.rateData[status]+")" : "" )
- // }).inject(tr)
- // }
- },
- loadPieChart : function(){
- //this.pieChartTitle = new Element("div.pieChartTitle",{
- // "styles" : this.css.pieChartTitle,
- // "text" : this.lp.index.pieChart
- //}).inject(this.pieChartArea)
- this.pieChartNode = new Element("div.pieChartNode",{
- "styles" : this.css.pieChartNode
- }).inject(this.pieChartArea);
- this.pieChart = new MWF.xApplication.Attendance.Echarts(this.pieChartNode, this, this.totalData, this.css);
- this.pieChart.load();
- },
- loadLineChart : function(){
- //this.lineChartTitle = new Element("div.lineChartTitle",{
- // "styles" : this.css.lineChartTitle,
- // "text" : this.lp.index.lineChart
- //}).inject(this.lineChartArea)
- this.lineChartNode = new Element("div.lineChartNode",{
- "styles" : this.css.lineChartNode
- }).inject(this.lineChartArea);
- //this.lineChart = new MWF.xApplication.Attendance.Echarts(this.lineChartNode, this.app, this.actions, this.css, {"type":"line"});
- //this.lineChart.load();
- this.lineChart = new MWF.xApplication.Attendance.Echarts(this.lineChartNode, this, this.detailData, {
- "type":"line",
- "date":this.date,
- "cycleStart" : new Date( this.cycleStartDate.getFullYear(), this.cycleStartDate.getMonth(), this.cycleStartDate.getDate() ),
- "cycleEnd" : new Date( this.cycleEndDate.getFullYear(), this.cycleEndDate.getMonth(), this.cycleEndDate.getDate() )
- });
- this.lineChart.load();
- },
- listCycleDetailFileterUser: function(callback, name){
- debugger;
- var data = [];
- var loadCount = 0;
- var startTime = Date.parse( this.cycleStartDate.format("%Y-%m-%d") ).getTime();
- var endTime = Date.parse( this.cycleEndDate.format("%Y-%m-%d") ).getTime();
- this.cycleYearMonth.each(function(cycle){
- var filter = {};
- if( name )filter.q_empName = name;
- filter.cycleYear = cycle.year;
- filter.cycleMonth = cycle.month;
- this.actions.listDetailFilterUser( filter, function(json){
- data = data.concat( json.data || [] );
- loadCount++;
- if( loadCount >= this.cycleYearMonth.length ){
- data = data.filter( function (d) {
- var time = Date.parse(d.recordDateString).getTime();
- return (time >= startTime) && (time <= endTime);
- }.bind(this));
- data.sort( function( a, b ){
- return parseInt( a.recordDateString.replace(/-/g,"") ) - parseInt( b.recordDateString.replace(/-/g,"") );
- });
- if( callback )callback(data);
- }
- }.bind(this))
- }.bind(this))
- },
- listDetailFilterUser :function( callback, name, year, month ){
- //{'q_empName':'林玲','q_year':'2016','q_month':'03'}
- var filter = {};
- if( name )filter.q_empName = name;
- if( year )filter.cycleYear = year;
- if( month )filter.cycleMonth = month.toString().length == 2 ? month : "0"+month;
- this.actions.listDetailFilterUser( filter, function(json){
- var data = json.data || [];
- data.sort( function( a, b ){
- return parseInt( a.recordDateString.replace(/-/g,"") ) - parseInt( b.recordDateString.replace(/-/g,"") );
- //return a.recordDateString - b.recordDateString
- });
- if( callback )callback(data);
- }.bind(this))
- },
- setContentSize: function(){
- var toolbarSize = this.toolbarNode ? this.toolbarNode.getSize() : {"x":0,"y":0};
- var titlebarSize = this.titleNode ? this.titleNode.getSize() : {"x":0,"y":0};
- var nodeSize = this.node.getSize();
- var pt = this.elementContentNode.getStyle("padding-top").toFloat();
- var pb = this.elementContentNode.getStyle("padding-bottom").toFloat();
- //var filterSize = this.filterNode.getSize();
- var filterConditionSize = this.filterConditionNode ? this.filterConditionNode.getSize() : {"x":0,"y":0};
- var height = nodeSize.y-toolbarSize.y-pt-pb-filterConditionSize.y-titlebarSize.y-10;
- this.elementContentNode.setStyle("height", ""+height+"px");
- },
- // setNodeScroll: function(){
- // var _self = 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(y){
- // }
- // });
- // }.bind(this));
- // },
- anaylyseDetail : function(){
- var events = [];
- var dateMap = {};
- this.dateMap = dateMap;
- var totals = {
- levelAsked : 0,
- noSign : 0,
- late : 0,
- appealSuccess : 0,
- //leaveEarly : 0,
- //lackOfTime : 0,
- abNormalDuty : 0,
- normal : 0
- };
- var setDateMap = function (d, type) {
- var map = dateMap[d.recordDateString] = {
- "on": d.onDutyTime,
- "off": d.offDutyTime,
- "detailId": d.id
- };
- if( type === "normal"){
- map.text = this.lp.statusText[type];
- }else if(type){
- map.text = this.lp.statusText[type];
- map.color = this.statusColor[type];
- }
- map.isWorkday = d.isWorkday;
- map.isHoliday = d.isHoliday;
- }.bind(this);
- this.detailData.each( function( d ){
- if( this.isAskForLevel(d,"am") || this.isAskForLevel(d,"pm") ){
- setDateMap( d, "levelAsked" );
- }else if( this.isAppealSuccess(d,"am") || this.isAppealSuccess(d,"pm")){
- setDateMap( d, "appealSuccess" );
- }else if( this.isAbsent(d,"am") || this.isAbsent(d,"pm")){
- setDateMap( d, "noSign" );
- }else if( this.isLate(d,"am") || this.isLate(d,"pm")) {
- setDateMap( d, "late" );
- }else if( this.isLackOfTime(d,"am") || this.isLackOfTime(d,"pm")){
- setDateMap( d, "lackOfTime" );
- }else if( this.isAbnormalDuty(d,"am") || this.isAbnormalDuty(d,"pm")){
- setDateMap( d, "abNormalDuty" );
- }else if( this.isHoliday(d, "am") || this.isHoliday(d, "pm")){
- setDateMap( d );
- }else if( this.isWeekend(d, "am") || this.isWeekend(d, "pm") ){
- setDateMap( d );
- }else{
- setDateMap( d, "normal" );
- }
- if( this.isAskForLevel(d,"am") ){
- events.push( { text:this.lp.levelAsked, start: d.recordDateString, backgroundColor :this.statusColor.levelAsked } );
- totals.levelAsked = totals.levelAsked + 0.5
- }else if( this.isAppealSuccess(d,"am")){
- events.push( { text: this.lp.appealSuccess, start: d.recordDateString, backgroundColor :this.statusColor.appealSuccess } );
- totals.appealSuccess = totals.appealSuccess + 0.5
- }else if( this.isAbsent(d,"am")){
- events.push( { text: this.lp.noSign, start: d.recordDateString, backgroundColor :this.statusColor.noSign } );
- totals.noSign = totals.noSign + 0.5
- }else if( this.isLate(d,"am")) {
- events.push({
- text: this.lp.late + ',' + this.lp.signTime + ':' + d.onDutyTime, //+ "迟到时长" + d.lateTimeDuration,
- start: d.recordDateString,
- backgroundColor: this.statusColor.late
- });
- totals.late = totals.late + 0.5
- }else if( this.isLackOfTime(d,"am")){
- events.push( { text: this.lp.lackOfTime + ',' + this.lp.signTime + ':' + d.onDutyTime, start: d.recordDateString, backgroundColor :this.statusColor.lackOfTime } );
- totals.lackOfTime = totals.lackOfTime + 0.5
- }else if( this.isAbnormalDuty(d,"am")){
- events.push( { text: this.lp.abNormalDuty + ',' + this.lp.signTime + ':' + d.onDutyTime, start: d.recordDateString, backgroundColor :this.statusColor.abNormalDuty } );
- totals.abNormalDuty = totals.abNormalDuty + 0.5
- }else if( this.isHoliday(d, "am") ){
- return;
- }else if( this.isWeekend(d, "am") ){
- return;
- }else{
- totals.normal = totals.normal + 0.5;
- events.push( { text: this.lp.normal + ','+this.lp.signTime +':' + d.onDutyTime, start: d.recordDateString, backgroundColor :this.statusColor.normal } )
- }
- if( this.isAskForLevel(d,"pm") ){
- totals.levelAsked = totals.levelAsked + 0.5;
- events.push( { text: this.lp.index.levelAsked, start: d.recordDateString, backgroundColor :this.statusColor.levelAsked } )
- }else if( this.isAppealSuccess(d,"pm")){
- events.push( { text: this.lp.appealSuccess, start: d.recordDateString, backgroundColor :this.statusColor.appealSuccess } );
- totals.appealSuccess = totals.appealSuccess + 0.5;
- //}else if( this.isLeaveEarlier(d,"pm")) {
- // events.push({
- // text: '早退,打卡时间:' + d.offDutyTime, // + "早退时长" + d.leaveEarlierTimeDuration,
- // start: d.recordDateString,
- // backgroundColor: this.statusColor.leaveEarly
- // })
- // totals.leaveEarly = totals.leaveEarly + 0.5
- }else if( this.isAbsent(d,"pm")){
- totals.noSign = totals.noSign + 0.5;
- events.push( { text: this.lp.index.absent, start: d.recordDateString, backgroundColor :this.statusColor.noSign } )
- /* }else if( this.isLackOfTime(d,"pm")){
- events.push( { text: this.lp.lackOfTime + ',' + this.lp.signTime + ':' + d.offDutyTime, start: d.recordDateString, backgroundColor :this.statusColor.lackOfTime } );
- totals.lackOfTime = totals.lackOfTime + 0.5*/
- }else if( this.isAbnormalDuty(d,"pm")){
- events.push( { text: this.lp.abNormalDuty + ',' + this.lp.signTime + ':' + d.offDutyTime, start: d.recordDateString, backgroundColor :this.statusColor.abNormalDuty } );
- totals.abNormalDuty = totals.abNormalDuty + 0.5
- }else if( this.isHoliday(d, "pm") ){
- return;
- }else if( this.isWeekend(d, "pm") ){
- return;
- }else{
- if(!!d.offDutyTime){
- totals.normal = totals.normal + 0.5;
- events.push( { text: this.lp.index.offDutyTime+ d.offDutyTime, start: d.recordDateString, backgroundColor :this.statusColor.normal } )
- }
- }
- }.bind(this) );
- this.totalData = totals;
- var total = 0;
- for( var n in totals ){
- total += totals[n];
- }
- this.rateData = {
- levelAsked : (!totals.levelAsked || !total) ? 0 : ((totals.levelAsked/total * 100).toFixed(2) + "%"),
- noSign : (!totals.noSign || !total) ? 0 : ((totals.noSign/total * 100).toFixed(2) + "%"),
- late : (!totals.late || !total) ? 0 : ((totals.late/total * 100).toFixed(2) + "%"),
- //leaveEarly : (!totals.leaveEarly || !total) ? 0 : ((totals.leaveEarly/total* 100).toFixed(2) + "%"),
- //lackOfTime : (!totals.lackOfTime || !total) ? 0 : ((totals.lackOfTime/total * 100).toFixed(2) + "%"),
- abNormalDuty : (!totals.abNormalDuty || !total) ? 0 : ((totals.abNormalDuty/total* 100).toFixed(2) + "%"),
- normal : (!totals.normal || !total) ? 0 : ((totals.normal/total* 100).toFixed(2) + "%"),
- appealSuccess : (!totals.appealSuccess || !total) ? 0 : ((totals.appealSuccess/total * 100).toFixed(2) + "%")
- };
- this.eventData = events;
- },
- isAppealSuccess : function( d, ap ){
- return d.appealStatus == 9
- },
- isAskForLevel : function( d , ap ){
- if( ap == "am" ){
- //d.selfHolidayDayTime == "全天" || d.selfHolidayDayTime == "上午"
- return d.isGetSelfHolidays && ( ["全天","上午",this.app.lp.wholeDay, this.app.lp.am ].contains(d.selfHolidayDayTime) )
- }else{
- // return d.isGetSelfHolidays && ( d.selfHolidayDayTime == "全天" || d.selfHolidayDayTime == "下午" )
- return d.isGetSelfHolidays && ( ["全天","下午",this.app.lp.wholeDay, this.app.lp.pm ].contains(d.selfHolidayDayTime ) )
- }
- },
- isAbsent : function(d , ap ){
- if( ap == "am" ){
- // return d.isAbsent && ( d.absentDayTime == "全天" || d.absentDayTime == "上午" )
- return d.isAbsent && ["全天","上午",this.app.lp.wholeDay, this.app.lp.am ].contains(d.absentDayTime);
- }else{
- // return d.isAbsent && ( d.absentDayTime == "全天" || d.absentDayTime == "下午" )
- return d.isAbsent && ["全天","下午",this.app.lp.wholeDay, this.app.lp.pm ].contains(d.absentDayTime);
- }
- },
- isLate : function(d, ap ){
- return d.isLate
- },
- //isLeaveEarlier : function( d ){
- // return d.isLeaveEarlier
- //},
- isWorkOvertime : function( d, ap){
- return d.isWorkOvertime
- },
- isLackOfTime : function( d, ap){
- return d.isLackOfTime
- },
- isAbnormalDuty : function(d , ap ){
- if( ap == "am" ){
- // return d.isAbnormalDuty && ( d.abnormalDutyDayTime == "全天" || d.abnormalDutyDayTime == "上午" )
- return d.isAbnormalDuty && ["全天","上午",this.app.lp.wholeDay, this.app.lp.am ].contains(d.abnormalDutyDayTime)
- }else{
- return d.isAbnormalDuty && ["全天","下午",this.app.lp.wholeDay, this.app.lp.pm ].contains(d.abnormalDutyDayTime);
- }
- },
- isHoliday : function( d, ap ){
- if( ap == "am" ){
- return d.isHoliday && (!d.onDutyTime || d.onDutyTime == "")
- }else{
- return d.isHoliday && (!d.offDutyTime || d.offDutyTime == "")
- }
- },
- isWeekend : function( d, ap ){
- if(d.isWorkday )return false;
- if( ap == "am" ){
- return d.isWeekend && (!d.onDutyTime || d.onDutyTime == "")
- }else{
- return d.isWeekend && (!d.offDutyTime || d.offDutyTime == "")
- }
- },
- toFixed: function (num, d) {
- var s=num+"";
- if(!d)d=0;
- if(s.indexOf(".")==-1)s+=".";
- s+=new Array(d+1).join("0");
- if(new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+(d+1)+"})?)\\d*$").test(s)){
- var s="0"+RegExp.$2,pm=RegExp.$1,a=RegExp.$3.length,b=true;
- if(a==d+2){
- a=s.match(/\d/g);
- if(parseInt(a[a.length-1])>4){
- for(var i=a.length-2;i>=0;i--){
- a[i]=parseInt(a[i])+1;
- if(a[i]==10){
- a[i]=0;
- b=i!=1;
- }else break;
- }
- }
- s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");
- }if(b)s=s.substr(1);
- return (pm+s).replace(/\.$/,"");
- }return this+"";
- }
- });
- MWF.xApplication.Attendance.MyIndex.Calendar = new Class({
- Implements: [Options, Events],
- options: {
- date : "",
- cycleStart : "",
- cycleEnd : ""
- },
- initialize: function(container, view, data, options){
- // {
- // "holiday" :this.holidayData[this.year],
- // "detail" :this.detailData,
- // "eventData" : this.eventData
- // }
- this.setOptions(options);
- this.view = view;
- this.css = this.view.css;
- this.container = container;
- this.app = this.view.app;
- this.data = data;
- this.date = this.options.date;
- this.today = new Date();
- this.days = {};
- this.weekBegin = 1;
- },
- load: function(){
- debugger;
- // this.titleNode = new Element("div", {"styles": this.css.calendarTitleNode}).inject(this.container);
- // this.scrollNode = new Element("div", {
- // "styles": this.app.inContainer ? this.css.scrollNode_inContainer : this.css.scrollNode
- // }).inject(this.container);
- this.contentWarpNode = new Element("div", {
- "styles": this.css.contentWarpNode
- }).inject(this.container);
- this.contentContainerNode = new Element("div",{
- "styles" : this.css.contentContainerNode
- }).inject(this.contentWarpNode);
- this.bodyNode = new Element("div", {
- "styles": this.css.contentNode
- }).inject(this.contentContainerNode);
- // this.setTitleNode();
- this.setBodyNode();
- this.resetBodySize();
- this.app.addEvent("resize", this.resetBodySize.bind(this));
- },
- resetBodySize: function(){
- var size = this.container.getSize();
- var titleSize = this.titleNode ? this.titleNode.getSize() : {x:0, y:0};
- var y = size.y-titleSize.y;
- if(this.scrollNode)this.scrollNode.setStyle("height", ""+y+"px");
- if (this.contentWarpNode){
- this.contentWarpNode.setStyles({
- "width": (size.x - 30) +"px"
- });
- }
- },
- // setTitleNode: function(){
- // this.prevMonthNode = new Element("div", {"styles": this.css.calendarPrevMonthNode}).inject(this.titleNode);
- //
- // var text = this.date.format(this.app.lp.dateFormatMonth);
- // this.titleTextNode = new Element("div", {"styles": this.css.calendarTitleTextNode, "text": text}).inject(this.titleNode);
- //
- // this.nextMonthNode = new Element("div", {"styles": this.css.calendarNextMonthNode}).inject(this.titleNode);
- //
- // this.prevMonthNode.addEvents({
- // "mouseover": function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode_over);}.bind(this),
- // "mouseout": function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode);}.bind(this),
- // "mousedown": function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode_down);}.bind(this),
- // "mouseup": function(){this.prevMonthNode.setStyles(this.css.calendarPrevMonthNode_over);}.bind(this),
- // "click": function(){this.changeMonthPrev();}.bind(this)
- // });
- // this.nextMonthNode.addEvents({
- // "mouseover": function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode_over);}.bind(this),
- // "mouseout": function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode);}.bind(this),
- // "mousedown": function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode_down);}.bind(this),
- // "mouseup": function(){this.nextMonthNode.setStyles(this.css.calendarNextMonthNode_over);}.bind(this),
- // "click": function(){this.changeMonthNext();}.bind(this)
- // });
- // this.titleTextNode.addEvents({
- // "mouseover": function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode_over);}.bind(this),
- // "mouseout": function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode);}.bind(this),
- // "mousedown": function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode_down);}.bind(this),
- // "mouseup": function(){this.titleTextNode.setStyles(this.css.calendarTitleTextNode_over);}.bind(this),
- // "click": function(){this.changeMonthSelect();}.bind(this)
- // });
- // },
- // changeMonthPrev: function(){
- // this.date.decrement("month", 1);
- // var text = this.date.format(this.app.lp.dateFormatMonth);
- // this.titleTextNode.set("text", text);
- // this.reLoadCalendar();
- // },
- // changeMonthNext: function(){
- // this.date.increment("month", 1);
- // var text = this.date.format(this.app.lp.dateFormatMonth);
- // this.titleTextNode.set("text", text);
- // this.reLoadCalendar();
- // },
- // changeMonthSelect: function(){
- // if (!this.monthSelector) this.createMonthSelector();
- // this.monthSelector.show();
- // },
- // createMonthSelector: function(){
- // this.monthSelector = new MWF.xApplication.Meeting.MonthView.Calendar.MonthSelector(this.date, this);
- // },
- // changeMonthTo: function(d){
- // this.date = d;
- // var text = this.date.format(this.app.lp.dateFormatMonth);
- // this.titleTextNode.set("text", text);
- // this.reLoadCalendar();
- // },
- setBodyNode: function(){
- if( this.weekBegin == "1" ){
- var html = "<tr><th>"+this.app.lp.weeks.Mon+"</th><th>"+this.app.lp.weeks.Tues+"</th><th>"+this.app.lp.weeks.Wed+"</th>" +
- "<th>"+this.app.lp.weeks.Thur+"</th><th>"+this.app.lp.weeks.Fri+"</th><th>"+this.app.lp.weeks.Sat+"</th><th>"+this.app.lp.weeks.Sun+"</th></tr>";
- }else{
- var html = "<tr><th>"+this.app.lp.weeks.Sun+"</th><th>"+this.app.lp.weeks.Mon+"</th><th>"+this.app.lp.weeks.Tues+"</th><th>"+this.app.lp.weeks.Wed+"</th>" +
- "<th>"+this.app.lp.weeks.Thur+"</th><th>"+this.app.lp.weeks.Fri+"</th><th>"+this.app.lp.weeks.Sat+"</th></tr>";
- }
- html += "<tr><td valign='top'></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
- html += "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
- html += "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
- html += "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
- html += "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
- html += "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
- this.calendarTable = new Element("table", {
- "styles": this.css.calendarTable,
- "height": "100%",
- "border": "0",
- "cellPadding": "0",
- "cellSpacing": "0",
- "html": html
- }).inject(this.bodyNode);
- this.calendarTableTitleTr = this.calendarTable.getElement("tr");
- this.calendarTableTitleTr.setStyles(this.css.calendarTableTitleTr);
- var ths = this.calendarTableTitleTr.getElements("th");
- ths.setStyles(this.css.calendarTableTh);
- //var tds = this.calendarTable.getElements("td");
- //tds.setStyles(this.css.calendarTableCell);
- this.loadCalendar();
- },
- reLoadCalendar: function(){
- Object.each(this.days, function(day){
- day.destroy();
- }.bind(this));
- this.loadCalendar();
- },
- loadCalendar: function(){
- var date = this.date.clone();
- date.set("date", 1);
- var week = date.getDay();
- if( this.weekBegin == "1" ){
- var decrementDay = ((week-1)<0) ? 6 : week-1;
- }else{
- var decrementDay = week;
- }
- date.decrement("day", decrementDay);
- var tds = this.calendarTable.getElements("td");
- tds.each(function(td){
- this.loadDay(td, date);
- date.increment();
- }.bind(this));
- },
- loadDay: function(td, date){
- var type = "thisMonth";
- var m = date.get("month");
- var y = date.get("year");
- var d = date.get("date");
- var mm = this.date.get("month");
- var yy = this.date.get("year");
- var mmm = this.today.get("month");
- var yyy = this.today.get("year");
- var ddd = this.today.get("date");
- if ((m==mmm) && (y==yyy) && (d==ddd)){
- type = "today";
- }else if ((m==mm) && (y==yy)){
- type = "thisMonth";
- }else{
- type = "otherMonth";
- }
- debugger;
- var key = date.format(this.app.lp.dateFormat);
- var data = this.data.dateMap[date.format("%Y-%m-%d")] || {};
- this.days[key] = new MWF.xApplication.Attendance.MyIndex.Calendar.Day(td, date, this, type, data);
- },
- reload : function(){
- this.view.reload();
- },
- destroy: function(){
- Object.each(this.days, function(day){
- day.destroy();
- }.bind(this));
- this.container.empty();
- }
- });
- MWF.xApplication.Attendance.MyIndex.Calendar.Day = new Class({
- Implements: [Events],
- initialize: function(td, date, calendar, type, data){
- this.container = td;
- this.calendar = calendar;
- this.view = this.calendar.view;
- this.css = this.calendar.css;
- this.app = this.calendar.app;
- this.date = date.clone();
- this.key = this.date.format(this.app.lp.dateFormat);
- this.data = data;
- this.type = type; //today, otherMonth, thisMonth
- this.load();
- },
- load: function(){
- this.color = "#666";
- if( this.type == "thisMonth" ){
- }else if( this.type == "otherMonth" ){
- this.color = "#ccc";
- }
- this.day = this.date.getDate();
- this.month = this.date.getMonth();
- this.year = this.date.getYear();
- this.node = new Element("div", {
- "styles" : this.css["calendarTableCell_"+this.type]
- }).inject( this.container );
- if( this.type === "today" && (this.calendar.date.format("%Y-%m-%d") !== this.date.format("%Y-%m-%d")) ){
- this.node.setStyle("opacity", "0.5");
- }
- if( this.data.color ){
- this.node.setStyle("border-left", "6px solid "+ this.data.color);
- }
- this.titleNode = new Element("div", {"styles": this.css["dayTitle_"+this.type]}).inject(this.node);
- if( !this.data.color ){
- this.titleNode.setStyle("border-left","5px solid #fff");
- }
- this.titleDayNode = new Element("div", {"styles": this.css["dayTitleDay_"+this.type], "text": this.day}).inject(this.titleNode);
- if(this.type === "today"){
- this.titleDayNode.addClass("mainColor_bg");
- }
- if ((new Date()).diff(this.date)>=0){
- this.titleNode.set("title", this.app.lp.titleNode);
- // this.titleNode.addEvent("click", function(){
- // this.app.addMeeting(this.date);
- // }.bind(this));
- }
- // this.loadMeetings();
- if( this.data.isHoliday ){
- new Element("div", {
- "styles": {
- "margin-top": "5px",
- "margin-left": "10px",
- "color": "#fff",
- "font-weight": "bold",
- "border-radius": "20px",
- "height": "20px",
- "width": "20px",
- // "background-color": "#F23030",
- "background-color": "#f49999",
- "float": "left",
- "line-height": "20px",
- "text-align": "center",
- "font-size" : "12px"
- },
- "text": this.app.lp.offDutyAbbrev,
- "title": this.data.holidayName || ""
- }).inject(this.titleNode)
- }else if( this.data.isWorkday ){
- new Element("div", {
- "styles": {
- "margin-top": "5px",
- "margin-left": "10px",
- "color": "#fff",
- "font-weight": "bold",
- "border-radius": "20px",
- "height": "20px",
- "width": "20px",
- "background-color": "#ccc",
- "float": "left",
- "line-height": "20px",
- "text-align": "center",
- "font-size" : "12px"
- },
- "text": this.app.lp.onDutyAbbrev,
- "title": this.data.holidayName || ""
- }).inject(this.titleNode)
- }
- if( this.data.text ){
- new Element("div", {
- "styles": {
- "margin-right": "10px",
- "color": "#999",
- "float": "right",
- "font-size" : "14px"
- },
- "text": this.data.text
- }).inject(this.titleNode)
- }
- this.contentNode = new Element("div", {"styles": this.css.dayContentNode}).inject(this.node);
- if( !this.data.color ){
- this.contentNode.setStyle("border-left","5px solid #fff");
- }
- if( this.data.on || this.data.off ){
- new Element("div", {
- "styles": {
- "margin-left": "10px",
- "margin-top": "10px",
- "color": "#333",
- "font-weight": "500",
- "font-size" : "14px"
- },
- "text": this.getMintue(this.data.on) + "-" + this.getMintue(this.data.off)
- }).inject(this.contentNode)
- }
- },
- getMintue: function(str){
- var arr = (str || "").split(":");
- if( arr[1] ){
- return arr[0] + ":" + arr[1];
- }else{
- return arr[0]
- }
- },
- destroy: function(){
- this.node.destroy();
- this.titleNode = null;
- this.titleDayNode = null;
- this.contentNode = null;
- delete this.calendar.days[this.key];
- this.container.empty();
- MWF.release(this);
- },
- reload: function(){
- this.view.reload();
- }
- });
|