MonthView.min.js 20 KB

1
  1. MWF.xApplication.Report.MonthView=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",date:""},initialize:function(t,e,s){this.setOptions(s);this.path="/x_component_Report/$MonthView/";this.cssPath="/x_component_Report/$MonthView/"+this.options.style+"/css.wcss";this._loadCss();this.app=e;this.container=$(t);this.load()},load:function(){this.node=new Element("div.node",{styles:this.css.node}).inject(this.container);this.resetNodeSize();this.app.addEvent("resize",this.resetNodeSize.bind(this));this.loadCalendar()},resetNodeSize:function(){var t=this.container.getSize();var e=t.y-60;if(this.app.inContainer){this.node.setStyle("height","100%")}else{this.node.setStyle("height",""+e+"px")}this.node.setStyle("margin-top","60px");var s=this.app.sideBar?this.app.sideBar.getSize():{x:0,y:0};this.node.setStyle("width",""+(t.x-s.x)+"px");this.node.setStyle("margin-right",""+s.x+"px")},loadCalendar:function(){var t="";if(this.options.date){t=Date.parse(this.options.date)}this.calendar=new MWF.xApplication.Report.MonthView.Calendar(this,t)},hide:function(){var t=new Fx.Morph(this.node,{duration:"300",transition:Fx.Transitions.Expo.easeOut});t.start({opacity:0}).chain(function(){this.node.setStyle("display","none")}.bind(this))},show:function(){this.node.setStyles(this.css.node);var t=new Fx.Morph(this.node,{duration:"800",transition:Fx.Transitions.Expo.easeOut});this.app.fireAppEvent("resize");t.start({opacity:1,left:"0px"}).chain(function(){this.node.setStyles({position:"static",width:"auto"})}.bind(this))},reload:function(){if(this.calendar)this.calendar.reLoadCalendar()},recordStatus:function(){var t="";if(this.calendar)t=this.calendar.date;return{date:t.toString()}},destroy:function(){if(this.calendar){this.calendar.destroy()}this.node.destroy()}});MWF.xApplication.Report.MonthView.Calendar=new Class({Implements:[Events],initialize:function(t,e){this.view=t;this.css=this.view.css;this.container=this.view.node;this.app=this.view.app;this.date=e||new Date;this.today=new Date;this.days={};this.load()},load:function(){this.titleNode=new Element("div",{styles:this.css.calendarTitleNode}).inject(this.container);this.scrollNode=new Element("div.scrollNode",{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.scrollNode);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 t=this.container.getSize();var e=this.app.inContainer?1060:t.y;var s=this.titleNode.getSize();var i=e-s.y;if(this.app.inContainer){this.contentWarpNode.setStyle("height",""+i+"px")}else{this.scrollNode.setStyle("height",""+i+"px")}if(this.contentWarpNode){this.contentWarpNode.setStyles({width:t.x-40+"px"})}},setTitleNode:function(){this.prevMonthNode=new Element("div",{styles:this.css.calendarPrevMonthNode}).inject(this.titleNode);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode=new Element("div",{styles:this.css.calendarTitleTextNode,text:t}).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)});this.filterNode=new Element("div",{styles:this.css.filterNode}).inject(this.titleNode);this.loadStatusArea()},loadStatusArea:function(){var t=this.app.lp.config;var e=new Element("div",{styles:this.css.statusArea}).inject(this.titleNode);var s="<div class = 'statusStyle'>"+" <div class='statusIconStyle' style='background-color:"+t.waitColor+"'></div>"+" <div class = 'statusTextStyle'>"+t.wait+"</div></div>"+"</div>"+"<div class = 'statusStyle'>"+" <div class='statusIconStyle' style='background-color:"+t.auditColor+"'></div>"+" <div class = 'statusTextStyle'>"+t.audit+"</div></div>"+"</div>"+"<div class = 'statusStyle'>"+" <div class='statusIconStyle' style='background-color:"+t.progressColor+"'></div>"+" <div class = 'statusTextStyle'>"+t.progress+"</div></div>"+"</div>"+"<div class = 'statusStyle'>"+" <div class='statusIconStyle' style='background-color:"+t.completedColor+"'></div>"+" <div class = 'statusTextStyle'>"+t.completed+"</div></div>"+"</div>";e.set("html",s);e.getElements("div.statusStyle").setStyles(this.css.statusStyle);e.getElements("div.statusIconStyle").setStyles(this.css.statusIconStyle);e.getElements("div.statusIconStyle2").setStyles(this.css.statusIconStyle2);e.getElements("div.statusTextStyle").setStyles(this.css.statusTextStyle)},loadFilter:function(){this.filterData={};if(this.filter){this.filter.destroy()}this.filter=new MWF.xApplication.Report.ReportFileter(this.filterNode,this.app,{items:["reportType","title","targetList","activityList","currentPersonList","reportStatus","reportObjType"],defaultResult:{},onSearch:function(t){this.filterData=t;this.reLoadCalendar()}.bind(this)})},changeMonthPrev:function(){this.date.decrement("month",1);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reLoadCalendar()},changeMonthNext:function(){this.date.increment("month",1);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reLoadCalendar()},changeMonthSelect:function(){if(!this.monthSelector)this.createMonthSelector();this.monthSelector.show()},createMonthSelector:function(){this.monthSelector=new MWF.xApplication.Report.MonthView.Calendar.MonthSelector(this.date,this)},changeMonthTo:function(t){this.date=t;var e=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",e);this.reLoadCalendar()},setBodyNode:function(){var t="<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>";t+="<tr><td valign='top'></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";t+="<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:t}).inject(this.bodyNode);this.calendarTableTitleTr=this.calendarTable.getElement("tr");this.calendarTableTitleTr.setStyles(this.css.calendarTableTitleTr);var e=this.calendarTableTitleTr.getElements("th");e.setStyles(this.css.calendarTableTh);this.loadCalendar()},reLoadCalendar:function(){Object.each(this.days,function(t){t.destroy()}.bind(this));this.loadCalendar()},loadCalendar:function(){var e=this.date.clone();e.set("date",1);var t=e.getDay();var s=t-1<0?6:t-1;e.decrement("day",s);this.loadData(e,function(){var t=this.calendarTable.getElements("td");t.each(function(t){this.loadDay(t,e,this.data[e.format("%Y-%m-%d")]);e.increment()}.bind(this))}.bind(this))},loadDay:function(t,e,s){var i="thisMonth";var o=e.get("month");var n=e.get("year");var a=e.get("date");var d=this.date.get("month");var h=this.date.get("year");var l=this.today.get("month");var r=this.today.get("year");var c=this.today.get("date");if(o==l&&n==r&&a==c){i="today"}else if(o==d&&n==h){i="thisMonth"}else{i="otherMonth"}var p=e.format(this.app.lp.dateFormat);this.days[p]=new MWF.xApplication.Report.MonthView.Calendar.Day(t,e,this,i,s)},loadData:function(t,e){var s=t.clone();this.data={};var i=0;for(var o=0;o<3;o++){var n=this.app.common.addZero((s.get("month")+1).toString(),2);var a=s.get("year");this.app.restActions.listDayByYearMonth(a,n,function(t){i++;t.data.each(function(t){this.data[t.date]=t.reports}.bind(this));if(e&&i==3)e()}.bind(this),null,false);s.increment("month",1)}},reload:function(){this.view.reload()},destroy:function(){Object.each(this.days,function(t){t.destroy()}.bind(this));this.container.empty()}});MWF.xApplication.Report.MonthView.Calendar.Day=new Class({Implements:[Events],initialize:function(t,e,s,i,o){this.container=t;this.calendar=s;this.view=this.calendar.view;this.css=this.calendar.css;this.app=this.calendar.app;this.date=e.clone();this.data=o||[];this.key=this.date.format(this.app.lp.dateFormat);this.type=i;this.reports=[];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);this.titleNode=new Element("div",{styles:this.css["dayTitle_"+this.type]}).inject(this.node);this.titleDayNode=new Element("div",{styles:this.css["dayTitleDay_"+this.type],text:this.day}).inject(this.titleNode);this.contentNode=new Element("div",{styles:this.css.dayContentNode}).inject(this.node);this.loadReports()},loadReports:function(){var t=this.date.getFullYear();var e=this.date.getMonth()+1;var s=this.date.getDate();var i=0;this.firstStatus="";this.lastStatus="";var o=this.app.lp.config;var n=this.data.length;this.data.each(function(t,e){i++;if(i==3){}if(i==1){if(t.reportStatus=="审核中"&&this.app.userName==t.currentPersonName){this.firstStatus="需要我审核"}else{this.firstStatus=t.reportStatus}}if(i==n){if(t.reportStatus=="审核中"&&this.app.userName==t.currentPersonName){this.lastStatus="需要我审核"}else{this.lastStatus=t.reportStatus}}this.reports.push(new MWF.xApplication.Report.MonthView.Calendar.Day.Report(this,t,i))}.bind(this));if(i==0){var a=new Element("div",{styles:{"line-height":"40px","font-size":"14px","text-align":"center",color:this.color,padding:"0px 10px"}}).inject(this.contentNode);a.set("text",this.app.lp.noReport)}else{this.titleNode.setStyle("cursor","pointer");this.titleInforNode=new Element("div",{styles:this.css["dayTitleInfor_"+this.type]}).inject(this.titleNode);this.titleInforNode.addEvent("click",function(t){this.app.toDay(this.date);t.stopPropagation()}.bind(this));this.titleInforNode.set("text",""+i+this.app.lp.countReports+"");if(i>3){this.node.addEvents({mouseenter:function(){this.expend()}.bind(this),mouseleave:function(){this.collapseReady=true;this.collapse()}.bind(this)})}else{this.titleInforNode.setStyle("color",this.type=="otherMonth"?"#ccc":"#999")}}if(this.firstStatus){switch(this.firstStatus){case"汇报者填写":this.titleNode.setStyles({"border-left":"6px solid "+o.waitColor});break;case"审核中":this.titleNode.setStyles({"border-left":"6px solid "+o.progressColor});break;case"需要我审核":this.titleNode.setStyles({"border-left":"6px solid "+o.auditColor});break;case"已完成":this.titleNode.setStyles({"border-left":"6px solid "+o.completedColor});break}}if(this.lastStatus){var d=0;if(i>=3){d=10}else{d=100-i*30}var h=new Element("div",{styles:{height:""+d+"px"}}).inject(this.node);switch(this.lastStatus){case"汇报者填写":h.setStyles({"border-left":"6px solid "+o.waitColor});break;case"审核中":h.setStyles({"border-left":"6px solid "+o.progressColor});break;case"需要我审核":h.setStyles({"border-left":"6px solid "+o.auditColor});break;case"已完成":h.setStyles({"border-left":"6px solid "+o.completedColor});break}}},expend:function(){this.oSize=this.node.getSize();this.container.setStyles({position:"relative"});this.tempNode=new Element("div",{styles:{width:this.node.getSize().x+"px",height:"1px",margin:"7px"}}).inject(this.container);this.node.setStyles({height:this.node.getScrollSize().y+"px",width:this.node.getSize().x+"px",position:"absolute",top:"0px",left:"0px","box-shadow":"0 0 8px 0 rgba(0,0,0,0.25)"});var t=this.node.getCoordinates();var e=this.calendar.contentWarpNode;var s=e.getCoordinates();if(t.bottom>s.bottom){this.contentHeight=s.height;e.setStyle("height",t.bottom-s.top+"px")}this.isCollapse=false},collapse:function(){if(!this.collapseDisable&&this.collapseReady){this.container.setStyles({position:"static"});if(this.tempNode)this.tempNode.destroy();this.node.setStyles({height:"140px",width:"auto",position:"static","box-shadow":"none"});if(this.contentHeight){var t=this.calendar.contentWarpNode;t.setStyle("height",this.contentHeight+"px");this.contentHeight=null}this.isCollapse=true}},destroy:function(){this.reports.each(function(t){t.destroy()}.bind(this));this.reports=[];this.titleNode.destroy();this.titleNode=null;this.titleDayNode=null;this.titleInforNode=null;delete this.calendar.days[this.key];this.container.empty();MWF.release(this)},reload:function(){this.view.reload()}});MWF.xApplication.Report.MonthView.Calendar.Day.Report=new Class({initialize:function(t,e,s){this.day=t;this.css=this.day.css;this.view=this.day.view;this.app=this.day.app;this.container=this.day.contentNode;this.data=e;this.index=s;this.load()},load:function(){var t=this.data;this.nodeStyles=this.day.type=="today"?this.css.reportNode_today:this.css.reportNode;this.node=new Element("div",{styles:this.nodeStyles}).inject(this.container);this.textNode=new Element("div",{styles:this.css.reportTextNode}).inject(this.node);var e=t[t.reportObjType=="UNIT"?"targetUnit":"targetPerson"].split("@")[0]+"("+this.app.lp[t.reportObjType]+this.app.lp[t.reportType]+")";this.textNode.set("text",e);var s=this.app.lp.config;var i;if(t.reportStatus=="审核中"&&this.app.userName==t.currentPersonName){i="需要我审核"}else{i=t.reportStatus}switch(i){case"汇报者填写":this.node.setStyles({"border-left":"6px solid "+s.waitColor});break;case"审核中":this.node.setStyles({"border-left":"6px solid "+s.progressColor});break;case"需要我审核":this.node.setStyles({"border-left":"6px solid "+s.auditColor});break;case"已完成":this.node.setStyles({"border-left":"6px solid "+s.completedColor});break}this.node.addEvents({mouseenter:function(){this.day.collapseReady=false;this.node.setStyles(this.css.reportNode_over)}.bind(this),mouseleave:function(){this.node.setStyles(this.nodeStyles)}.bind(this),click:function(){this.openReport()}.bind(this)});this.loadTooltip()},loadTooltip:function(){this.tooltip=new MWF.xApplication.Report.ReportTooltip(this.app.content,this.node,this.app,this.data,{axis:"x",hiddenDelay:300,displayDelay:300,onShow:function(){this.day.collapseDisable=true}.bind(this),onQueryCreate:function(){this.day.collapseDisable=true}.bind(this),onHide:function(){this.day.collapseDisable=false;this.day.collapse()}.bind(this)})},openReport:function(){this.app.common.openReport(this.data,this)},destroy:function(){if(this.tooltip)this.tooltip.destroy();this.node.destroy();MWF.release(this)},reload:function(){this.view.reload()}});MWF.xApplication.Report.MonthView.Calendar.MonthSelector=new Class({Implements:[Events],initialize:function(t,e){this.calendar=e;this.css=this.calendar.css;this.app=this.calendar.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.calendar.container);this.monthSelectNode.position({relativeTo:this.calendar.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:"0",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 i=t.get("year");var o=t.get("month");var n=this.date.get("year");var a=this.date.get("month");var d=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 s=e+1;t.store("month",s);t.setStyles(this.css.calendarMonthSelectTdNode);t.setStyle("background-color","#FFF");if(this.year==i&&e==o){new Element("div",{styles:d.css.calendarMonthSelectTodayNode,text:""+s+this.app.lp.month}).inject(t)}else if(this.year==n&&e==a){new Element("div",{styles:d.css.calendarMonthSelectCurrentNode,text:""+s+this.app.lp.month}).inject(t)}else{t.set("text",""+s+this.app.lp.month)}t.addEvents({mouseover:function(){this.setStyles(d.css.calendarMonthSelectTdNode_over)},mouseout:function(){this.setStyles(d.css.calendarMonthSelectTdNode)},mousedown:function(){this.setStyles(d.css.calendarMonthSelectTdNode_down)},mouseup:function(){this.setStyles(d.css.calendarMonthSelectTdNode_over)},click:function(){d.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.addEvents({mouuseover:function(){this.monthSelectBottomNode.setStyles(this.css.calendarMonthSelectBottomNode_over)}.bind(this),mouuseout:function(){this.monthSelectBottomNode.setStyles(this.css.calendarMonthSelectBottomNode)}.bind(this),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.calendar.changeMonthTo(t);this.hide()},selectedMonth:function(t){var e=t.retrieve("month");var s=Date.parse(this.year+"/"+e+"/1");this.calendar.changeMonthTo(s);this.hide()},show:function(){this.date=this.calendar.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(){}});