SimpleColumnView.js
32.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//>>built
require({cache:{"url:dojox/calendar/templates/ColumnView.html":'\x3cdiv data-dojo-attach-events\x3d"keydown:_onKeyDown"\x3e\r\n\t\r\n\t\x3cdiv data-dojo-attach-point\x3d"header" class\x3d"dojoxCalendarHeader"\x3e\r\n\t\t\x3cdiv class\x3d"dojoxCalendarYearColumnHeader" data-dojo-attach-point\x3d"yearColumnHeader"\x3e\r\n\t\t\t\x3ctable cellspacing\x3d"0" cellpadding\x3d"0"\x3e\x3ctr\x3e\x3ctd\x3e\x3cspan data-dojo-attach-point\x3d"yearColumnHeaderContent"\x3e\x3c/span\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\t\t\r\n\t\t\x3c/div\x3e\r\n\t\t\x3cdiv data-dojo-attach-point\x3d"columnHeader" class\x3d"dojoxCalendarColumnHeader"\x3e\r\n\t\t\t\x3ctable data-dojo-attach-point\x3d"columnHeaderTable" class\x3d"dojoxCalendarColumnHeaderTable" cellpadding\x3d"0" cellspacing\x3d"0"\x3e\x3c/table\x3e\r\n\t\t\x3c/div\x3e\r\n\t\x3c/div\x3e\r\n\t\r\n\t\x3cdiv data-dojo-attach-point\x3d"secondarySheetNode"\x3e\x3c/div\x3e\r\n\t\r\n\t\x3cdiv data-dojo-attach-point\x3d"subHeader" class\x3d"dojoxCalendarSubHeader"\x3e\r\n\t\t\x3cdiv class\x3d"dojoxCalendarSubRowHeader"\x3e\r\n\t\t\t\x3ctable cellspacing\x3d"0" cellpadding\x3d"0"\x3e\x3ctr\x3e\x3ctd\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\t\t\r\n\t\t\x3c/div\x3e\r\n\t\t\x3cdiv data-dojo-attach-point\x3d"subColumnHeader" class\x3d"dojoxCalendarSubColumnHeader"\x3e\r\n\t\t\t\x3ctable data-dojo-attach-point\x3d"subColumnHeaderTable" class\x3d"dojoxCalendarSubColumnHeaderTable" cellpadding\x3d"0" cellspacing\x3d"0"\x3e\x3c/table\x3e\r\n\t\t\x3c/div\x3e\r\n\t\x3c/div\x3e\r\n\t\r\n\t\x3cdiv data-dojo-attach-point\x3d"scrollContainer" class\x3d"dojoxCalendarScrollContainer"\x3e\r\n\t\t\x3cdiv data-dojo-attach-point\x3d"sheetContainer" style\x3d"position:relative;left:0;right:0;margin:0;padding:0"\x3e\r\n\t\t\t\x3cdiv data-dojo-attach-point\x3d"rowHeader" class\x3d"dojoxCalendarRowHeader"\x3e\r\n\t\t\t\t\x3ctable data-dojo-attach-point\x3d"rowHeaderTable" class\x3d"dojoxCalendarRowHeaderTable" cellpadding\x3d"0" cellspacing\x3d"0"\x3e\x3c/table\x3e\r\n\t\t\t\x3c/div\x3e\r\n\t\t\t\x3cdiv data-dojo-attach-point\x3d"grid" class\x3d"dojoxCalendarGrid"\x3e\r\n\t\t\t\t\x3ctable data-dojo-attach-point\x3d"gridTable" class\x3d"dojoxCalendarGridTable" cellpadding\x3d"0" cellspacing\x3d"0" style\x3d"width:100%"\x3e\x3c/table\x3e\r\n\t\t\t\x3c/div\x3e\r\n\t\t\t\x3cdiv data-dojo-attach-point\x3d"itemContainer" class\x3d"dojoxCalendarContainer" data-dojo-attach-event\x3d"mousedown:_onGridMouseDown,mouseup:_onGridMouseUp,ondblclick:_onGridDoubleClick,touchstart:_onGridTouchStart,touchmove:_onGridTouchMove,touchend:_onGridTouchEnd"\x3e\r\n\t\t\t\t\x3ctable data-dojo-attach-point\x3d"itemContainerTable" class\x3d"dojoxCalendarContainerTable" cellpadding\x3d"0" cellspacing\x3d"0" style\x3d"width:100%"\x3e\x3c/table\x3e\r\n\t\t\t\x3c/div\x3e\r\n\t\t\x3c/div\x3e \r\n\t\x3c/div\x3e\r\n\t\r\n\t\x3cdiv data-dojo-attach-point\x3d"vScrollBar" class\x3d"dojoxCalendarVScrollBar"\x3e\r\n\t\t\x3cdiv data-dojo-attach-point\x3d"vScrollBarContent" style\x3d"visibility:hidden;position:relative;width:1px;height:1px;" \x3e\x3c/div\x3e\r\n\t\x3c/div\x3e\r\n\t\r\n\t\x3cdiv data-dojo-attach-point\x3d"hScrollBar" class\x3d"dojoxCalendarHScrollBar"\x3e\r\n\t\t\x3cdiv data-dojo-attach-point\x3d"hScrollBarContent" style\x3d"visibility:hidden;position:relative;width:1px;height:1px;" \x3e\x3c/div\x3e\r\n\t\x3c/div\x3e\r\n\t\r\n\x3c/div\x3e\r\n'}});
define("./ViewBase dijit/_TemplatedMixin ./_ScrollBarBase dojo/text!./templates/ColumnView.html dojo/_base/declare dojo/_base/event dojo/_base/lang dojo/_base/array dojo/_base/sniff dojo/_base/fx dojo/_base/html dojo/on dojo/dom dojo/dom-class dojo/dom-style dojo/dom-geometry dojo/dom-construct dojo/mouse dojo/query dojox/html/metrics".split(" "),function(B,C,y,D,E,t,q,w,x,F,z,u,I,k,l,v,n,G,m,H){return E("dojox.calendar.SimpleColumnView",[B,C],{baseClass:"dojoxCalendarColumnView",templateString:D,
viewKind:"columns",_setTabIndexAttr:"domNode",renderData:null,startDate:null,columnCount:7,subColumns:null,minHours:8,maxHours:18,hourSize:100,timeSlotDuration:15,rowHeaderGridSlotDuration:60,rowHeaderLabelSlotDuration:60,rowHeaderLabelOffset:2,rowHeaderFirstLabelOffset:2,verticalRenderer:null,verticalDecorationRenderer:null,minColumnWidth:-1,percentOverlap:70,horizontalGap:4,_showSecondarySheet:!1,_columnHeaderHandlers:null,constructor:function(){this.invalidatingProperties="columnCount startDate minHours maxHours hourSize verticalRenderer verticalDecorationRenderer rowHeaderTimePattern columnHeaderDatePattern timeSlotDuration rowHeaderGridSlotDuration rowHeaderLabelSlotDuration rowHeaderLabelOffset rowHeaderFirstLabelOffset percentOverlap horizontalGap scrollBarRTLPosition itemToRendererKindFunc layoutPriorityFunction formatItemTimeFunc textDir items subColumns minColumnWidth".split(" ");
this._columnHeaderHandlers=[]},destroy:function(a){this._cleanupColumnHeader();this.scrollBar&&this.scrollBar.destroy(a);this.inherited(arguments)},_scrollBar_onScroll:function(a){this._setScrollPosition(a)},_hscrollBar_onScroll:function(a){this._setHScrollPosition(a)},buildRendering:function(){this.inherited(arguments);this.vScrollBar&&(this.scrollBar=new y({content:this.vScrollBarContent},this.vScrollBar),this.scrollBar.on("scroll",q.hitch(this,this._scrollBar_onScroll)));this.hScrollBar&&(this.hScrollBarW=
new y({content:this.hScrollBarContent,direction:"horizontal",value:0},this.hScrollBar),this.hScrollBarW.on("scroll",q.hitch(this,this._hscrollBar_onScroll)),this._hScrollNodes=[this.columnHeaderTable,this.subColumnHeaderTable,this.gridTable,this.itemContainerTable]);this._viewHandles.push(u(this.scrollContainer,G.wheel,dojo.hitch(this,this._mouseWheelScrollHander)))},postscript:function(){this.inherited(arguments);this._initialized=!0;this.invalidRendering||this.refreshRendering()},_setVerticalRendererAttr:function(a){this._destroyRenderersByKind("vertical");
this._set("verticalRenderer",a)},_createRenderData:function(){var a={};a.minHours=this.get("minHours");a.maxHours=this.get("maxHours");a.hourSize=this.get("hourSize");a.hourCount=a.maxHours-a.minHours;a.slotDuration=this.get("timeSlotDuration");a.rowHeaderGridSlotDuration=this.get("rowHeaderGridSlotDuration");a.slotSize=Math.ceil(a.hourSize/(60/a.slotDuration));a.hourSize=60/a.slotDuration*a.slotSize;a.sheetHeight=a.hourSize*a.hourCount;this._rowHeaderWidth||(this._rowHeaderWidth=v.getMarginBox(this.rowHeader).w);
a.rowHeaderWidth=this._rowHeaderWidth;var b=H.getScrollbar();a.scrollbarWidth=b.w+1;a.scrollbarHeight=b.h+1;a.dateLocaleModule=this.dateLocaleModule;a.dateClassObj=this.dateClassObj;a.dateModule=this.dateModule;a.dates=[];a.columnCount=this.get("columnCount");a.subColumns=this.get("subColumns");a.subColumnCount=a.subColumns?a.subColumns.length:1;a.hScrollPaneWidth=v.getMarginBox(this.grid).w;a.minSheetWidth=0>this.minColumnWidth?-1:this.minColumnWidth*a.subColumnCount*a.columnCount;a.hScrollBarEnabled=
0<this.minColumnWidth&&a.hScrollPaneWidth<a.minSheetWidth;b=this.get("startDate");null==b&&(b=new a.dateClassObj);this.startDate=b=this.floorToDay(b,!1,a);for(var c=0;c<a.columnCount;c++)a.dates.push(b),b=this.addAndFloor(b,"day",1);a.startTime=new a.dateClassObj(a.dates[0]);a.startTime.setHours(a.minHours);a.endTime=new a.dateClassObj(a.dates[a.columnCount-1]);a.endTime.setHours(a.maxHours);this.displayedItemsInvalidated&&!this._isEditing?a.items=this.storeManager._computeVisibleItems(a):this.renderData&&
(a.items=this.renderData.items);this.displayedDecorationItemsInvalidated?a.decorationItems=this.decorationStoreManager._computeVisibleItems(a):this.renderData&&(a.decorationItems=this.renderData.decorationItems);return a},_validateProperties:function(){this.inherited(arguments);var a=this.minHours;if(0>a||23<a||isNaN(a))this.minHours=0;a=this.maxHours;if(1>a||36<a||isNaN(a))this.minHours=36;this.minHours>this.maxHours&&(a=this.maxHours,this.maxHours=this.minHours,this.minHours=a);1>this.maxHours-
this.minHours&&(this.minHours=0,this.maxHours=24);if(1>this.columnCount||isNaN(this.columnCount))this.columnCount=1;a=this.percentOverlap;if(0>a||100<a||isNaN(a))this.percentOverlap=70;if(5>this.hourSize||isNaN(this.hourSize))this.hourSize=10;a=this.timeSlotDuration;if(1>a||60<a||isNaN(a))this.timeSlotDuration=15},_setStartDateAttr:function(a){this.displayedItemsInvalidated=!0;this._set("startDate",a)},_setColumnCountAttr:function(a){this.displayedItemsInvalidated=!0;this._set("columnCount",a)},__fixEvt:function(a){a.sheet=
"primary";a.source=this;return a},rowHeaderTimePattern:null,_formatRowHeaderLabel:function(a){return this.renderData.dateLocaleModule.format(a,{selector:"time",timePattern:this.rowHeaderTimePattern})},columnHeaderDatePattern:null,_formatColumnHeaderLabel:function(a){return this.renderData.dateLocaleModule.format(a,{selector:"date",datePattern:this.columnHeaderDatePattern,formatLength:"medium"})},scrollBarRTLPosition:"left",_getStartTimeOfDay:function(){var a=(this.get("maxHours")-this.get("minHours"))*
this._getScrollPosition()/this.renderData.sheetHeight;return{hours:this.renderData.minHours+Math.floor(a),minutes:60*(a-Math.floor(a))}},_getEndTimeOfDay:function(){var a=(this.get("maxHours")-this.get("minHours"))*(this._getScrollPosition()+this.scrollContainer.offsetHeight)/this.renderData.sheetHeight;return{hours:this.renderData.minHours+Math.floor(a),minutes:60*(a-Math.floor(a))}},startTimeOfDay:0,_setStartTimeOfDayAttr:function(a){this.renderData?this._setStartTimeOfDay(a.hours,a.minutes,a.duration,
a.easing):this._startTimeOfDayInvalidated=!0;this._set("startTimeOfDay",a)},_getStartTimeOfDayAttr:function(){return this.renderData?this._getStartTimeOfDay():this._get("startTimeOfDay")},_setStartTimeOfDay:function(a,b,c,d){var e=this.renderData;a=a||e.minHours;b=b||0;0>b?b=0:59<b&&(b=59);0>a?a=0:a>e.maxHours&&(a=e.maxHours);a=60*a+b;b=60*e.minHours;var f=60*e.maxHours;a<b?a=b:a>f&&(a=f);a=(a-b)*e.sheetHeight/(f-b);a=Math.min(e.sheetHeight-this.scrollContainer.offsetHeight,a);this._scrollToPosition(a,
c||0,d)},_scrollToPosition:function(a,b,c){if(b){this._scrollAnimation&&this._scrollAnimation.stop();var d=this._getScrollPosition();this._scrollAnimation=new F.Animation({curve:[d,a],duration:Math.abs((a-d)*b/this.renderData.sheetHeight),easing:c,onAnimate:q.hitch(this,function(a){this._setScrollImpl(a)})});this._scrollAnimation.play()}else this._setScrollImpl(a)},_setScrollImpl:function(a){this._setScrollPosition(a);this.scrollBar&&this.scrollBar.set("value",a)},ensureVisibility:function(a,b,c,
d,e){d=void 0==d?this.renderData.slotDuration:d;if(this.scrollable&&this.autoScroll){a=60*a.getHours()+a.getMinutes()-d;b=60*b.getHours()+b.getMinutes()+d;d=this._getStartTimeOfDay();var f=this._getEndTimeOfDay();d=60*d.hours+d.minutes;var f=60*f.hours+f.minutes,g=!1,h=null;switch(c){case "start":g=a>=d&&a<=f;h=a;break;case "end":g=b>=d&&b<=f;h=b-(f-d);break;case "both":g=a>=d&&b<=f,h=a}g||this._setStartTimeOfDay(Math.floor(h/60),h%60,e)}},scrollView:function(a){var b=this._getStartTimeOfDay(),b=
60*b.hours+b.minutes+a*this.timeSlotDuration;this._setStartTimeOfDay(Math.floor(b/60),b%60)},scrollViewHorizontal:function(a){this._setHScrollPosition(this._getHScrollPosition()+a*this.minColumnWidth);this.hScrollBarW&&this.hScrollBarW.set("value",this._getHScrollPosition())},_hScrollNodes:null,_setHScrollPositionImpl:function(a,b,c){var d=b?null:"translateX(-"+a+"px)";w.forEach([this.columnHeaderTable,this.subColumnHeaderTable,this.gridTable,this.itemContainerTable],function(e){b?(e.scrollLeft=a,
l.set(e,"left",-a+"px")):l.set(e,c,d)},this)},_mouseWheelScrollHander:function(a){this.renderData.hScrollBarEnabled&&a.altKey?this.scrollViewHorizontal(0<a.wheelDelta?-1:1):this.scrollView(0<a.wheelDelta?-1:1);t.stop(a)},refreshRendering:function(){if(this._initialized){this._validateProperties();var a=this.renderData,b=this._createRenderData();this.renderData=b;this._createRendering(b,a);this._layoutDecorationRenderers(b);this._layoutRenderers(b)}},_createRendering:function(a,b){l.set(this.sheetContainer,
"height",a.sheetHeight+"px");this._configureVisibleParts(a);this._configureScrollBar(a);this._buildColumnHeader(a,b);this._buildSubColumnHeader(a,b);this._buildRowHeader(a,b);this._buildGrid(a,b);this._buildItemContainer(a,b);this._layoutTimeIndicator(a);this._commitProperties(a)},_configureVisibleParts:function(a){this.secondarySheetNode&&l.set(this.secondarySheetNode,"display",this._showSecondarySheet?"block":"none");k[null==this.subColumns?"remove":"add"](this.domNode,"subColumns");k[this._showSecondarySheet?
"add":"remove"](this.domNode,"secondarySheet")},_commitProperties:function(a){this._startTimeOfDayInvalidated&&(this._startTimeOfDayInvalidated=!1,a=this.startTimeOfDay,null!=a&&this._setStartTimeOfDay(a.hours,void 0==a.minutes?0:a.minutes))},_configureScrollBar:function(a){x("ie")&&this.scrollBar&&l.set(this.vScrollBar,"width",a.scrollbarWidth+1+"px");var b=this.isLeftToRight()?!0:"right"==this.scrollBarRTLPosition,c=b?"right":"left",d=b?"left":"right";this.scrollBar&&(this.scrollBar.set("maximum",
a.sheetHeight),l.set(this.vScrollBar,c,0),l.set(this.vScrollBar,b?"left":"right","auto"),l.set(this.vScrollBar,"bottom",a.hScrollBarEnabled?a.scrollbarHeight+"px":"0"));l.set(this.scrollContainer,c,a.scrollbarWidth+"px");l.set(this.scrollContainer,d,"0");l.set(this.header,c,a.scrollbarWidth+"px");l.set(this.header,d,"0");l.set(this.subHeader,c,a.scrollbarWidth+"px");l.set(this.subHeader,d,"0");this.buttonContainer&&null!=this.owner&&this.owner.currentView==this&&(l.set(this.buttonContainer,c,a.scrollbarWidth+
"px"),l.set(this.buttonContainer,d,"0"));this.hScrollBar&&(w.forEach(this._hScrollNodes,function(b){k[a.hScrollBarEnabled?"add":"remove"](b.parentNode,"dojoxCalendarHorizontalScroll")},this),a.hScrollBarEnabled||(this._setHScrollPosition(0),this.hScrollBarW.set("value",0)),l.set(this.hScrollBar,{display:a.hScrollBarEnabled?"block":"none",height:a.scrollbarHeight+"px",left:(b?a.rowHeaderWidth:a.scrollbarWidth)+"px",right:(b?a.scrollbarWidth:a.rowHeaderWidth)+"px"}),l.set(this.scrollContainer,"bottom",
a.hScrollBarEnabled?a.scrollbarHeight+1+"px":"0"),this._configureHScrollDomNodes(a.hScrollBarEnabled?a.minSheetWidth+"px":"100%"),this.hScrollBarW.set("maximum",a.minSheetWidth),this.hScrollBarW.set("containerSize",a.hScrollPaneWidth))},_configureHScrollDomNodes:function(a){w.forEach(this._hScrollNodes,function(b){l.set(b,"width",a)},this)},resize:function(a){this._resizeHandler(a)},_resizeHandler:function(a,b){var c=this.renderData;null!=c&&(b?(b=v.getMarginBox(this.grid).w,c.hScrollPaneWidth!=b&&
(c.hScrollPaneWidth=b,c.minSheetWidth=0>this.minColumnWidth?-1:this.minColumnWidth*c.subColumnCount*c.columnCount,c.hScrollBarEnabled=0<this.minColumnWidth&&v.getMarginBox(this.grid).w<c.minSheetWidth),this._configureScrollBar(c)):(void 0!=this._resizeTimer&&clearTimeout(this._resizeTimer),this._resizeTimer=setTimeout(q.hitch(this,function(){this._resizeHandler(a,!0)}),100)))},_columnHeaderClick:function(a){t.stop(a);var b=m("td",this.columnHeaderTable).indexOf(a.currentTarget);this._onColumnHeaderClick({index:b,
date:this.renderData.dates[b],triggerEvent:a})},_buildColumnHeader:function(a,b){var c=this.columnHeaderTable;if(c){b=a.columnCount-(b?b.columnCount:0);8==x("ie")&&(null==this._colTableSave?this._colTableSave=q.clone(c):0>b&&(this._cleanupColumnHeader(),this.columnHeader.removeChild(c),n.destroy(c),this.columnHeaderTable=c=q.clone(this._colTableSave),this.columnHeader.appendChild(c),b=a.columnCount));var d=m("tbody",c),e=m("tr",c),f,d=1==d.length?d[0]:z.create("tbody",null,c),e=1==e.length?e[0]:n.create("tr",
null,d);if(0<b)for(d=0;d<b;d++){f=n.create("td",null,e);var g=[];g.push(u(f,"click",q.hitch(this,this._columnHeaderClick)));x("touch-events")?(g.push(u(f,"touchstart",function(a){t.stop(a);k.add(a.currentTarget,"Active")})),g.push(u(f,"touchend",function(a){t.stop(a);k.remove(a.currentTarget,"Active")}))):(g.push(u(f,"mousedown",function(a){t.stop(a);k.add(a.currentTarget,"Active")})),g.push(u(f,"mouseup",function(a){t.stop(a);k.remove(a.currentTarget,"Active")})),g.push(u(f,"mouseover",function(a){t.stop(a);
k.add(a.currentTarget,"Hover")})),g.push(u(f,"mouseout",function(a){t.stop(a);k.remove(a.currentTarget,"Hover")})));this._columnHeaderHandlers.push(g)}else for(b=-b,d=0;d<b;d++)for(f=e.lastChild,e.removeChild(f),n.destroy(f),f=this._columnHeaderHandlers.pop();0<f.length;)f.pop().remove();m("td",c).forEach(function(b,c){b.className="";0==c?k.add(b,"first-child"):c==this.renderData.columnCount-1&&k.add(b,"last-child");c=a.dates[c];this._setText(b,this._formatColumnHeaderLabel(c));this.styleColumnHeaderCell(b,
c,a)},this);this.yearColumnHeaderContent&&this._setText(this.yearColumnHeaderContent,a.dateLocaleModule.format(a.dates[0],{selector:"date",datePattern:"yyyy"}))}},_cleanupColumnHeader:function(){for(;0<this._columnHeaderHandlers.length;)for(var a=this._columnHeaderHandlers.pop();0<a.length;)a.pop().remove()},styleColumnHeaderCell:function(a,b,c){k.add(a,this._cssDays[b.getDay()]);this.isToday(b)?k.add(a,"dojoxCalendarToday"):this.isWeekEnd(b)&&k.add(a,"dojoxCalendarWeekend")},_buildSubColumnHeader:function(a,
b){if((b=this.subColumnHeaderTable)&&null!=this.subColumns){var c=a.columnCount-m("td",b).length;8==x("ie")&&(null==this._colSubTableSave?this._colSubTableSave=q.clone(b):0>c&&(this.subColumnHeader.removeChild(b),n.destroy(b),this.subColumnHeaderTable=b=q.clone(this._colSubTableSave),this.subColumnHeader.appendChild(b),c=a.columnCount));var d=m("\x3etbody",b),e,d=1==d.length?d[0]:z.create("tbody",null,b);e=m("\x3etr",d);var d=1==e.length?e[0]:n.create("tr",null,d),f=a.subColumnCount;if(0<c)for(var g=
0;g<c;g++)e=n.create("td",null,d),n.create("div",{className:"dojoxCalendarSubHeaderContainer"},e);else for(c=-c,g=0;g<c;g++)e=d.lastChild,d.removeChild(e),n.destroy(e);m("td",b).forEach(function(b,c){b.className="";0==c?k.add(b,"first-child"):c==this.renderData.columnCount-1&&k.add(b,"last-child");m(".dojoxCalendarSubHeaderContainer",b).forEach(function(a,b){if(0!=m(".dojoxCalendarSubHeaderContainer",a).length-f){var c=a.childNodes.length;for(b=0;b<c;b++)a.removeChild(a.lastChild);for(b=0;b<f;b++)n.create("div",
{className:"dojoxCalendarSubHeaderCell dojoxCalendarSubHeaderLabel"},a)}var d=100/f+"%";m(".dojoxCalendarSubHeaderCell",a).forEach(function(a,b){a.className="dojoxCalendarSubHeaderCell dojoxCalendarSubHeaderLabel";var c=1==f?b:Math.floor(b/f);subColIdx=1==f?0:b-c*f;l.set(a,{width:d,left:100*subColIdx/f+"%"});k[subColIdx<f-1&&1!==f?"add":"remove"](a,"subColumn");k.add(a,this.subColumns[subColIdx]);this._setText(a,this.subColumnLabelFunc(this.subColumns[subColIdx]))},this)},this);this.styleSubColumnHeaderCell(b,
a.dates[c],a)},this)}},subColumnLabelFunc:function(a){return a},styleSubColumnHeaderCell:function(a,b,c){k.add(a,this._cssDays[b.getDay()]);this.isToday(b)?k.add(a,"dojoxCalendarToday"):this.isWeekEnd(b)&&k.add(a,"dojoxCalendarWeekend")},_addMinutesClasses:function(a,b){switch(b){case 0:k.add(a,"hour");break;case 30:k.add(a,"halfhour");break;case 15:case 45:k.add(a,"quarterhour")}},_buildRowHeader:function(a,b){var c=this.rowHeaderTable;if(c){null==this._rowHeaderLabelContainer&&(this._rowHeaderLabelContainer=
n.create("div",{"class":"dojoxCalendarRowHeaderLabelContainer"},this.rowHeader));l.set(c,"height",a.sheetHeight+"px");var d=m("tbody",c),e,f;e=1==d.length?d[0]:n.create("tbody",null,c);b=Math.floor(60/a.rowHeaderGridSlotDuration)*a.hourCount-(b?Math.floor(60/b.rowHeaderGridSlotDuration)*b.hourCount:0);if(0<b)for(d=0;d<b;d++)f=n.create("tr",null,e),n.create("td",null,f);else for(b=-b,d=0;d<b;d++)e.removeChild(e.lastChild);var g=this.renderData,h=Math.ceil(a.hourSize/(60/a.rowHeaderGridSlotDuration)),
p=new Date(2E3,0,1,0,0,0);m("tr",c).forEach(function(b,c){var d=m("td",b)[0];d.className="";l.set(b,"height",7==x("ie")?h-60/a.rowHeaderGridSlotDuration*2:h+"px");b=c*this.renderData.rowHeaderGridSlotDuration%60;this.styleRowHeaderCell(d,a.minHours+c*this.renderData.rowHeaderGridSlotDuration/60,b,g);this._addMinutesClasses(d,b)},this);c=this._rowHeaderLabelContainer;b=Math.floor(60/this.rowHeaderLabelSlotDuration)*a.hourCount-c.childNodes.length;if(0<b)for(d=0;d<b;d++)e=n.create("span",null,c),k.add(e,
"dojoxCalendarRowHeaderLabel");else for(b=-b,d=0;d<b;d++)c.removeChild(c.lastChild);h=Math.ceil(a.hourSize/(60/this.rowHeaderLabelSlotDuration));m("\x3espan",c).forEach(function(b,c){p.setHours(0);p.setMinutes(60*a.minHours+c*this.rowHeaderLabelSlotDuration);this._configureRowHeaderLabel(b,p,c,h*c,g)},this)}},_configureRowHeaderLabel:function(a,b,c,d,e){this._setText(a,this._formatRowHeaderLabel(b));l.set(a,"top",d+(0==c?this.rowHeaderFirstLabelOffset:this.rowHeaderLabelOffset)+"px");b=e.minHours+
c*this.rowHeaderLabelSlotDuration/60;c=c*this.rowHeaderLabelSlotDuration%60;k.remove(a,["hour","halfhour","quarterhour"]);this._addMinutesClasses(a,c);this.styleRowHeaderCell(a,b,c,e)},styleRowHeaderCell:function(a,b,c,d){},_buildGrid:function(a,b){var c=this.gridTable;if(c){l.set(c,"height",a.sheetHeight+"px");var d=Math.floor(60/a.slotDuration)*a.hourCount,e=d-(b?Math.floor(60/b.slotDuration)*b.hourCount:0),f=0<e,g=a.columnCount-(b?b.columnCount:0);8==x("ie")&&(null==this._gridTableSave?this._gridTableSave=
q.clone(c):0>g&&(this.grid.removeChild(c),n.destroy(c),this.gridTable=c=q.clone(this._gridTableSave),this.grid.appendChild(c),g=a.columnCount,e=d,f=!0));b=m("tbody",c);b=1==b.length?b[0]:n.create("tbody",null,c);if(f)for(var h=0;h<e;h++)n.create("tr",null,b);else for(e=-e,h=0;h<e;h++)b.removeChild(b.lastChild);var p=Math.floor(60/a.slotDuration)*a.hourCount-e,A=f||0<g,g=A?g:-g;m("tr",c).forEach(function(b,c){if(A){var d=c>=p?a.columnCount:g;for(c=0;c<d;c++)n.create("td",null,b)}else for(c=0;c<g;c++)b.removeChild(b.lastChild)});
m("tr",c).forEach(function(b,c){l.set(b,"height",a.slotSize+"px");0==c?k.add(b,"first-child"):c==d-1&&k.add(b,"last-child");var e=c*this.renderData.slotDuration%60,f=this.minHours+Math.floor(c*this.renderData.slotDuration/60);m("td",b).forEach(function(b,c){b.className="";0==c?k.add(b,"first-child"):c==this.renderData.columnCount-1&&k.add(b,"last-child");this.styleGridCell(b,a.dates[c],f,e,a);this._addMinutesClasses(b,e)},this)},this)}},styleGridCellFunc:null,defaultStyleGridCell:function(a,b,c,d,
e){k.add(a,[this._cssDays[b.getDay()],"H"+c,"M"+d]);if(this.isToday(b))return k.add(a,"dojoxCalendarToday");if(this.isWeekEnd(b))return k.add(a,"dojoxCalendarWeekend")},styleGridCell:function(a,b,c,d,e){this.styleGridCellFunc?this.styleGridCellFunc(a,b,c,d,e):this.defaultStyleGridCell(a,b,c,d,e)},_buildItemContainer:function(a,b){var c=this.itemContainerTable;if(c){var d=[],e=[];l.set(c,"height",a.sheetHeight+"px");b=a.columnCount-(b?b.columnCount:0);8==x("ie")&&(null==this._itemTableSave?this._itemTableSave=
q.clone(c):0>b&&(this.itemContainer.removeChild(c),this._recycleItemRenderers(!0),n.destroy(c),this.itemContainerTable=c=q.clone(this._itemTableSave),this.itemContainer.appendChild(c),b=a.columnCount));var f=m("tbody",c),g=m("tr",c),f=1==f.length?f[0]:n.create("tbody",null,c),g=1==g.length?g[0]:n.create("tr",null,f),h=a.subColumnCount;if(0<b)for(var p=0;p<b;p++)f=n.create("td",null,g),n.create("div",{className:"dojoxCalendarContainerColumn"},f);else for(b=-b,p=0;p<b;p++)g.removeChild(g.lastChild);
m("td",c).forEach(function(b,c){m(".dojoxCalendarContainerColumn",b).forEach(function(c,d){l.set(c,"height",a.sheetHeight+"px");if(0!=m(".dojoxCalendarSubContainerColumn",b).length-h){var e=c.childNodes.length;for(d=0;d<e;d++)c.removeChild(c.lastChild);for(d=0;d<h;d++)e=n.create("div",{className:"dojoxCalendarSubContainerColumn"},c),n.create("div",{className:"dojoxCalendarDecorationContainerColumn"},e),n.create("div",{className:"dojoxCalendarEventContainerColumn"},e)}},this);var f=100/h+"%";m(".dojoxCalendarSubContainerColumn",
b).forEach(function(a,b){var c=1==h?b:Math.floor(b/h);subColIdx=1==h?0:b-c*h;l.set(a,{width:f,left:100*subColIdx/h+"%"});k[subColIdx<h-1&&1!==h?"add":"remove"](a,"subColumn");m(".dojoxCalendarEventContainerColumn",a).forEach(function(a,b){d.push(a)},this);m(".dojoxCalendarDecorationContainerColumn",a).forEach(function(a,b){e.push(a)},this)},this)},this);a.cells=d;a.decorationCells=e}},showTimeIndicator:!0,timeIndicatorRefreshInterval:6E4,_setShowTimeIndicatorAttr:function(a){this._set("showTimeIndicator",
a);this._layoutTimeIndicator(this.renderData)},_layoutTimeIndicator:function(a){if(a){if(this.showTimeIndicator){var b=new a.dateClassObj;if(this.isOverlapping(a,a.startTime,a.endTime,b,b)&&b.getHours()>=this.get("minHours")&&60*b.getHours()+b.getMinutes()<60*this.get("maxHours")){this._timeIndicator||(this._timeIndicator=n.create("div",{className:"dojoxCalendarTimeIndicator"}));for(var c=this._timeIndicator,d=0;d<this.renderData.columnCount&&!this.isSameDay(b,this.renderData.dates[d]);d++);b=this.computeProjectionOnDate(a,
this.floorToDay(b),b,a.sheetHeight);if(b!=a.sheetHeight){l.set(c,{top:b+"px",display:"block"});a=a.cells[d*a.subColumnCount].parentNode.parentNode;a!=c.parentNode&&(null!=c.parentNode&&c.parentNode.removeChild(c),a.appendChild(c));null==this._timeIndicatorTimer&&(this._timeIndicatorTimer=setInterval(q.hitch(this,function(){this._layoutTimeIndicator(this.renderData)}),this.timeIndicatorRefreshInterval));return}}}this._timeIndicatorTimer&&(clearInterval(this._timeIndicatorTimer),this._timeIndicatorTimer=
null);this._timeIndicator&&l.set(this._timeIndicator,"display","none")}},beforeDeactivate:function(){this._timeIndicatorTimer&&(clearInterval(this._timeIndicatorTimer),this._timeIndicatorTimer=null)},_overlapLayoutPass2:function(a){var b,c,d,e;d=a[a.length-1];for(c=0;c<d.length;c++)d[c].extent=1;for(b=0;b<a.length-1;b++)for(d=a[b],c=0;c<d.length;c++)if(e=d[c],-1==e.extent){e.extent=1;for(var f=0,g=!1,h=b+1;h<a.length&&!g;h++){for(var k=a[h],l=0;l<k.length&&!g;l++){var n=k[l];e.start<n.end&&n.start<
e.end&&(g=!0)}g||f++}e.extent+=f}},_defaultItemToRendererKindFunc:function(a){return"vertical"},_layoutInterval:function(a,b,c,d,e,f){var g=[];a.colW=this.itemContainer.offsetWidth/a.columnCount;if("dataItems"===f){for(var h=0;h<e.length;h++){var k=e[h];"vertical"===this._itemToRendererKind(k)&&g.push(k)}this._layoutRendererWithSubColumns(a,"vertical",!0,b,c,d,g,f)}else this._layoutRendererWithSubColumns(a,"decoration",!1,b,c,d,e,f)},_layoutRendererWithSubColumns:function(a,b,c,d,e,f,g,h){if(0<g.length)if(1<
a.subColumnCount){var k={},l=this.subColumns;w.forEach(l,function(a){k[a]=[]});w.forEach(g,function(a){"decorationItems"===h?a.subColumn?k[a.subColumn]&&k[a.subColumn].push(a):w.forEach(l,function(b){var c=q.mixin({},a);c.subColumn=b;k[b].push(c)}):a.subColumn&&k[a.subColumn]&&k[a.subColumn].push(a)});var n=0;w.forEach(this.subColumns,function(g){this._layoutVerticalItems(a,b,c,d,n++,e,f,k[g],h)},this)}else this._layoutVerticalItems(a,b,c,d,0,e,f,g,h)},_getColumn:function(a,b,c,d){return("dataItems"===
d?a.cells:a.decorationCells)[b*a.subColumnCount+c]},_layoutVerticalItems:function(a,b,c,d,e,f,g,h,k){if(!("dataItems"===k&&null==this.verticalRenderer||"decorationItems"===k&&null==this.verticalDecorationRenderer)){b=this._getColumn(a,d,e,k);c=[];for(d=0;d<h.length;d++){e=h[d];var m=this.computeRangeOverlap(a,e.startTime,e.endTime,f,g),r=this.computeProjectionOnDate(a,f,m[0],a.sheetHeight),p=this.computeProjectionOnDate(a,f,m[1],a.sheetHeight);p>r&&(e=q.mixin({start:r,end:p,range:m,item:e},e),c.push(e))}f=
"dataItems"===k?this.computeOverlapping(c,this._overlapLayoutPass2).numLanes:1;g=this.percentOverlap/100;for(d=0;d<c.length;d++){e=c[d];if("dataItems"===k){m=e.lane;r=e.extent;0==g?(h=1==f?a.colW:(a.colW-(f-1)*this.horizontalGap)/f,m*=h+this.horizontalGap,h=1==r?h:h*r+(r-1)*this.horizontalGap,h=100*h/a.colW,m=100*m/a.colW):(h=1==f?100:100/(f-(f-1)*g),m*=h-g*h,h=1==r?h:h*(r-(r-1)*g));var r=this._createRenderer(e,"vertical",this.verticalRenderer,"dojoxCalendarVertical"),t=this.isItemBeingEdited(e),
u=this.isItemSelected(e),v=this.isItemHovered(e),w=this.isItemFocused(e),p=r.renderer;p.set("hovered",v);p.set("selected",u);p.set("edited",t);p.set("focused",this.showFocus?w:!1);p.set("storeState",this.getItemStoreState(e));p.set("moveEnabled",this.isItemMoveEnabled(e._item,"vertical"));p.set("resizeEnabled",this.isItemResizeEnabled(e._item,"vertical"));this.applyRendererZIndex(e,r,v,u,t,w)}else h=100,m=0,r=this.decorationRendererManager.createRenderer(e,"vertical",this.verticalDecorationRenderer,
"dojoxCalendarDecoration"),p=r.renderer;l.set(r.container,{top:e.start+"px",left:m+"%",width:h+"%",height:e.end-e.start+1+"px"});p.updateRendering&&p.updateRendering(h,e.end-e.start+1);n.place(r.container,b);l.set(r.container,"display","block")}}},_sortItemsFunction:function(a,b){var c=this.dateModule.compare(a.startTime,b.startTime);0==c&&(c=-1*this.dateModule.compare(a.endTime,b.endTime));return this.isLeftToRight()?c:-c},_getNormalizedCoords:function(a,b,c,d){null!=a&&(c=v.position(this.itemContainer,
!0),a.touches?(d=void 0==d?0:d,b=a.touches[d].pageX-c.x,c=a.touches[d].pageY-c.y):(b=a.pageX-c.x,c=a.pageY-c.y));a=v.getContentBox(this.itemContainer);this.isLeftToRight()||(b=a.w-b);0>b?b=0:b>a.w&&(b=a.w-1);0>c?c=0:c>a.h&&(c=a.h-1);return{x:b,y:c}},getTime:function(a,b,c,d){b=this._getNormalizedCoords(a,b,c,d);a=this.getTimeOfDay(b.y,this.renderData);c=v.getMarginBox(this.itemContainer).w/this.renderData.columnCount;b=Math.floor(b.x/c);c=null;b<this.renderData.dates.length&&(c=this.newDate(this.renderData.dates[b]),
c=this.floorToDay(c,!0),c.setHours(a.hours),c.setMinutes(a.minutes));return c},getSubColumn:function(a,b,c,d){if(null==this.subColumns||1==this.subColumns.length)return null;a=this._getNormalizedCoords(a,b,c,d);b=this.renderData;c=v.getMarginBox(this.itemContainer).w/this.renderData.columnCount;return this.subColumns[Math.floor((a.x-Math.floor(a.x/c)*c)/(c/b.subColumnCount))]},_onGridMouseUp:function(a){this.inherited(arguments);this._gridMouseDown&&(this._gridMouseDown=!1,this._onGridClick({date:this.getTime(a),
triggerEvent:a}))},_onGridTouchStart:function(a){this.inherited(arguments);var b=this._gridProps;b.moved=!1;b.start=a.touches[0].screenY;b.scrollTop=this._getScrollPosition()},_onGridTouchMove:function(a){this.inherited(arguments);if(1<a.touches.length&&!this._isEditing)t.stop(a);else if(this._gridProps&&!this._isEditing){var b=a.touches[0].screenX,c=a.touches[0].screenY,d=this._edProps;if(!d||d&&(25<Math.abs(b-d.start.x)||25<Math.abs(c-d.start.y)))this._gridProps.moved=!0,b=this._gridProps.scrollTop-
(a.touches[0].screenY-this._gridProps.start),c=this.itemContainer.offsetHeight-this.scrollContainer.offsetHeight,0>b?(this._gridProps.start=a.touches[0].screenY,this._setScrollImpl(0),this._gridProps.scrollTop=0):b>c?(this._gridProps.start=a.touches[0].screenY,this._setScrollImpl(c),this._gridProps.scrollTop=c):this._setScrollImpl(b)}},_onGridTouchEnd:function(a){this.inherited(arguments);var b=this._gridProps;b&&(this._isEditing||b.moved||(b.fromItem||b.editingOnStart||this.selectFromEvent(a,null,
null,!0),b.fromItem||(this._pendingDoubleTap&&this._pendingDoubleTap.grid?(this._onGridDoubleClick({date:this.getTime(this._gridProps.event),triggerEvent:this._gridProps.event}),clearTimeout(this._pendingDoubleTap.timer),delete this._pendingDoubleTap):(this._onGridClick({date:this.getTime(this._gridProps.event),triggerEvent:this._gridProps.event}),this._pendingDoubleTap={grid:!0,timer:setTimeout(q.hitch(this,function(){delete this._pendingDoubleTap}),this.doubleTapDelay)}))),this._gridProps=null)},
_onColumnHeaderClick:function(a){this._dispatchCalendarEvt(a,"onColumnHeaderClick")},onColumnHeaderClick:function(a){},getTimeOfDay:function(a,b){var c=60*b.minHours;a=c+a*(60*b.maxHours-c)/b.sheetHeight;return{hours:Math.floor(a/60),minutes:Math.floor(a%60)}},_isItemInView:function(a){var b=this.inherited(arguments);if(b){var c=this.renderData;if(c.dateModule.difference(a.startTime,a.endTime,"millisecond")>36E5*(24-c.maxHours+c.minHours))return!0;var d=60*a.startTime.getHours()+a.startTime.getMinutes(),
e=60*a.endTime.getHours()+a.endTime.getMinutes(),f=60*c.minHours,c=60*c.maxHours;if(0<d&&d<f||d>c&&1440>=d||0<e&&e<f||e>c&&1440>=e)return!1}return b},_ensureItemInView:function(a){var b,c=a.startTime,d=a.endTime,e=this.renderData,f=e.dateModule,g=Math.abs(f.difference(a.startTime,a.endTime,"millisecond"));if(g>36E5*(24-e.maxHours+e.minHours))return!1;var c=60*c.getHours()+c.getMinutes(),d=60*d.getHours()+d.getMinutes(),h=60*e.minHours,k=60*e.maxHours;0<c&&c<h?(this.floorToDay(a.startTime,!0,e),a.startTime.setHours(e.minHours),
a.endTime=f.add(a.startTime,"millisecond",g),b=!0):c>k&&1440>=c&&(this.floorToDay(a.startTime,!0,e),a.startTime=f.add(a.startTime,"day",1),a.startTime.setHours(e.minHours),a.endTime=f.add(a.startTime,"millisecond",g),b=!0);0<d&&d<h?(this.floorToDay(a.endTime,!0,e),a.endTime=f.add(a.endTime,"day",-1),a.endTime.setHours(e.maxHours),a.startTime=f.add(a.endTime,"millisecond",-g),b=!0):d>k&&1440>=d&&(this.floorToDay(a.endTime,!0,e),a.endTime.setHours(e.maxHours),a.startTime=f.add(a.endTime,"millisecond",
-g),b=!0);return b=b||this.inherited(arguments)},_onScrollTimer_tick:function(){this._scrollToPosition(this._getScrollPosition()+this._scrollProps.scrollStep)},snapUnit:"minute",snapSteps:15,minDurationUnit:"minute",minDurationSteps:15,liveLayout:!1,stayInView:!0,allowStartEndSwap:!0,allowResizeLessThan24H:!0})});