| 1 |
- MWF.xApplication.Calendar.ListView=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",date:null,action:""},initialize:function(t,e,i){this.setOptions(i);this.path="/x_component_Calendar/$ListView/";this.cssPath="/x_component_Calendar/$ListView/"+this.options.style+"/css.wcss";this._loadCss();this.app=e;this.container=$(t);this.date=this.options.date||new Date;this.load()},load:function(){this.node=new Element("div",{styles:this.css.node}).inject(this.container);this.titleNode=new Element("div",{styles:this.css.calendarTitleNode}).inject(this.node);this.contentAreaNode=new Element("div.contentAreaNode",{styles:this.css.contentAreaNode}).inject(this.node);this.contentNode=new Element("div.contentNode",{styles:this.css.contentNode}).inject(this.contentAreaNode);this.resetNodeSizeFun=this.resetNodeSize.bind(this);this.setTitleNode();this.loadList();this.resetNodeSize()},resetNodeSize:function(){var t=this.container.getSize();var e=this.titleNode?this.titleNode.getSize():{x:0,y:0};var i=t.y-50;this.node.setStyle("height",""+i+"px");var s=this.app.sideBar?this.app.sideBar.getSize():{x:0,y:0};this.contentAreaNode.setStyle("height",i-e.y+"px");this.contentAreaNode.setStyle("margin-right",s.x+"px")},loadList:function(){this.app.currentDate=this.date.clone();this.monthStart=new Date(this.date.get("year"),this.date.get("month"),1,0,0,0);this.monthStartStr=this.monthStart.format("db");var t=this.monthStart.clone().increment("month",1).decrement("day",1);this.monthEnd=new Date(t.get("year"),t.get("month"),t.get("date"),23,59,59);this.monthEndStr=this.monthEnd.format("db");this.view=new MWF.xApplication.Calendar.ListView.View(this)},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}).chain(function(){}.bind(this))},reload:function(){this.reLoadView()},recordStatus:function(){},destroy:function(){if(this.currentView){this.currentView.destroy()}this.app.removeEvent("resize",this.resetNodeSizeFun);this.node.destroy()},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)})},changeMonthPrev:function(){this.date.decrement("month",1);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reLoadView()},changeMonthNext:function(){this.date.increment("month",1);var t=this.date.format(this.app.lp.dateFormatMonth);this.titleTextNode.set("text",t);this.reLoadView()},changeMonthSelect:function(){if(!this.monthSelector)this.createMonthSelector();this.monthSelector.show()},createMonthSelector:function(){MWF.xDesktop.requireApp("Calendar","MonthView",null,false);this.monthSelector=new MWFCalendarMonthView.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.reLoadView()},reLoadView:function(){if(this.view)this.view.destroy();this.loadList()},inCurrentMonth:function(t){if(t<this.monthStart)return false;if(t>this.monthEnd)return false;return true}});MWF.xApplication.Calendar.ListView.View=new Class({initialize:function(t){this.view=t;this.css=this.view.css;this.container=this.view.contentNode;this.app=this.view.app;this.items=[];this.load()},load:function(){this.loadList()},loadHead:function(){this.table=new Element("table",{styles:this.css.listViewTable,border:"0",cellPadding:"0",cellSpacing:"0"}).inject(this.container)},loadEmptyNode:function(){this.noEventNode=new Element("div",{styles:this.css.noEventNode,text:"该月无日程安排"}).inject(this.container)},loadList:function(){this.app.actions.listEventWithFilter({calendarIds:this.app.getSelectedCalendarId(),startTime:this.view.monthStartStr,endTime:this.view.monthEndStr},function(t){this.parseDate(t);if(this.wholeDayData.length==0&&this.inOneDayEvents.length==0){this.loadEmptyNode()}else{this.loadHead();this.loadDays()}}.bind(this))},parseDate:function(t){this.dataMap={};this.wholeDayData=t.data&&t.data.wholeDayEvents?t.data.wholeDayEvents:[];this.inOneDayEvents=[];(t.data&&t.data.inOneDayEvents?t.data.inOneDayEvents:[]).each(function(t){if(t.inOneDayEvents.length>0){this.inOneDayEvents.push(t)}}.bind(this));this.getEveryDayByWholeDayData();this.inOneDayEvents.each(function(t){var e=this.dataMap[t.eventDate];if(!e)e=this.dataMap[t.eventDate]={};if(!e.inoneday)e.inoneday=[];t.inOneDayEvents.each(function(t){e.inoneday.push({start:Date.parse(t.startTime).format("%H:%M"),end:Date.parse(t.endTime).format("%H:%M"),data:t})})}.bind(this))},getEveryDayByWholeDayData:function(){this.wholeDayData.each(function(t){var e=Date.parse(t.startTime);var i=Date.parse(t.endTime);var s,n;s=e<this.view.monthStart?this.view.monthStart.clone():e.clone();n=i>this.view.monthEnd?this.view.monthEnd.clone():i.clone();var a=s.format("%H:%M");var o=n.format("%H:%M");s.clearTime();n.clearTime();var h=0;while(s<=n){var d=s.format("%Y-%m-%d");var l=false;var r=this.dataMap[d];if(!r)r=this.dataMap[d]={};if(t.isAllDayEvent){l=true}else{var c=h==0?a:"00:00";var p=s==n?o:"23:59";if(c=="00:00"&&p=="23:59")l=true}if(l){if(!r.wholeday)r.wholeday=[];r.wholeday.push({data:t})}else{if(!r.inoneday)r.inoneday=[];r.inoneday.push({start:c,end:p,data:t})}s.increment("day",1);h++}}.bind(this))},loadDays:function(t){for(var e in this.dataMap){this.loadLine(e,this.dataMap[e])}if(this.mask){this.mask.hide(function(){this.mask=null}.bind(this))}},loadLine:function(t,e){this.items.push(new MWF.xApplication.Calendar.ListView.View.DayLine(this,t,e))},destroy:function(){this.items.each(function(t){t.destroy()});this.items=[];this.view.currentView=null;if(this.table)this.table.destroy();if(this.noEventNode)this.noEventNode.destroy()}});MWF.xApplication.Calendar.ListView.View.DayLine=new Class({initialize:function(t,e,i){this.table=t;this.view=this.table.view;this.css=this.view.css;this.container=this.table.table;this.dateStr=e;this.date=Date.parse(e);this.app=this.view.app;this.data=i;this.load()},load:function(){this.isToday=this.date.clone().clearTime().diff((new Date).clearTime(),"day")==0;var t=this.date.format(this.app.lp.dateFormatMonthDay2)+" "+this.app.lp.weeks.arr[this.date.getDay()];this.node=new Element("tr",{html:"<td colspan='4'>"+t+"</td>"}).inject(this.container);if(this.isToday){this.node.getElements("td").setStyles(this.css.listViewTableTd_ToDay)}else{this.node.getElements("td").setStyles(this.css.listViewTableTd_Day)}var e=this.data.wholeday||[];e.each(function(t){new MWF.xApplication.Calendar.ListView.View.Line(this,t,true)}.bind(this));var i=this.data.inoneday||[];i.each(function(t){new MWF.xApplication.Calendar.ListView.View.Line(this,t,false)}.bind(this))},destroy:function(){if(this.node)this.node.destroy()}});MWF.xApplication.Calendar.ListView.View.Line=new Class({initialize:function(t,e,i){this.day=t;this.table=t.table;this.view=this.table.view;this.css=this.view.css;this.container=this.table.table;this.app=this.view.app;this.data=e;this.isWholeday=i;this.load()},load:function(){if(this.isWholeday){this.node=new Element("tr",{html:"<td width='30'><div></div></td><td width='100'>全天</td><td>"+this.data.data.title+"</td><td>"+(this.data.data.locationName||"")+"</td>"}).inject(this.container)}else{var t=this.data.start;var e=this.data.end;this.node=new Element("tr",{html:"<td width='30'><div></div></td><td>"+t+" - "+e+"</td><td>"+this.data.data.title+"</td><td>"+(this.data.data.locationName||"")+"</td>"}).inject(this.container)}if(this.day.isToday){this.node.getElements("td").setStyles(this.css.listViewTableTd_today2)}else{this.node.getElements("td").setStyles(this.css.listViewTableTd)}var i=this.node.getElement("div");i.setStyles(this.css.colorTdNode);i.setStyle("background-color",this.data.data.color);this.node.addEvents({mouseover:function(){this.node.getElements("td").setStyles(this.css.listViewTableTd_over)}.bind(this),mouseout:function(){this.node.getElements("td").setStyles(this.day.isToday?this.css.listViewTableTd_today2:this.css.listViewTableTd)}.bind(this)});this.node.addEvent("click",function(t){this.openCalendar(t)}.bind(this))},openCalendar:function(t){this.form=new MWF.xApplication.Calendar.EventForm(this,this.data.data,{isFull:true},{app:this.app});this.form.view=this.view;this.form.edit()},destroy:function(){if(this.node)this.node.destroy()}});
|