You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
10 KiB
249 lines
10 KiB
/* |
|
Copyright (c) 2012-2018 Open Lab |
|
Written by Roberto Bicchierai and Silvia Chelazzi http://roberto.open-lab.com |
|
Permission is hereby granted, free of charge, to any person obtaining |
|
a copy of this software and associated documentation files (the |
|
"Software"), to deal in the Software without restriction, including |
|
without limitation the rights to use, copy, modify, merge, publish, |
|
distribute, sublicense, and/or sell copies of the Software, and to |
|
permit persons to whom the Software is furnished to do so, subject to |
|
the following conditions: |
|
|
|
The above copyright notice and this permission notice shall be |
|
included in all copies or substantial portions of the Software. |
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
|
|
*/ |
|
|
|
Ganttalendar.prototype.initZoomlevels = function () { |
|
//console.debug("Ganttalendar.prototype.initZoomlevels"); |
|
|
|
var self = this; |
|
|
|
// define the zoom level arrays |
|
this.zoomLevels = []; |
|
this.zoomDrawers = {}; |
|
|
|
|
|
function _addZoom(zoom,zoomDrawer){ |
|
self.zoomLevels.push(zoom); |
|
self.zoomDrawers[zoom] = zoomDrawer; |
|
|
|
//compute the scale |
|
self.zoomDrawers[zoom].computedScaleX=600/millisFromString(zoom); |
|
} |
|
|
|
|
|
//----------------------------- 3 DAYS 600px----------------------------- |
|
_addZoom("3d", { |
|
adjustDates: function (start, end) { |
|
start.setFirstDayOfThisWeek(); |
|
end.setFirstDayOfThisWeek(); |
|
end.setDate(end.getDate() + 6); |
|
}, |
|
row1: function (date, ctxHead) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(date.getDate() + 6); |
|
self.createHeadCell(1,this,ctxHead,start.format("MMMM d") + " - " + date.format("MMMM d yyyy")+ " ("+start.format("w")+")",7,"", start,date); |
|
date.setDate(date.getDate() + 1); |
|
}, |
|
row2: function (date, ctxHead, ctxBody) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(date.getDate() + 1); |
|
var holyClass = isHoliday(start) ? "holy" : ""; |
|
self.createHeadCell(2,this,ctxHead,start.format("EEE d"), 1, "headSmall "+holyClass, start,date); |
|
self.createBodyCell(this,ctxBody,1, start.getDay() % 7 == (self.master.firstDayOfWeek + 6) % 7, holyClass); |
|
} |
|
}); |
|
|
|
|
|
|
|
//----------------------------- 1 WEEK 600px ----------------------------- |
|
_addZoom("1w", { |
|
adjustDates: function (start, end) { |
|
//reset day of week |
|
start.setFirstDayOfThisWeek(); |
|
start.setDate(start.getDate() - 7); |
|
end.setFirstDayOfThisWeek(); |
|
end.setDate(end.getDate() + 13); |
|
}, |
|
row1: function (date, ctxHead) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(date.getDate() + 6); |
|
self.createHeadCell(1,this,ctxHead,start.format("MMM d") + " - " + date.format("MMM d 'yy")+" (" + GanttMaster.messages["GANTT_WEEK_SHORT"]+date.format("w")+")", 7,"",start,date); |
|
date.setDate(date.getDate() + 1); |
|
}, |
|
row2: function (date, ctxHead, ctxBody) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(date.getDate() + 1); |
|
var holyClass = isHoliday(start) ? "holy" : ""; |
|
self.createHeadCell(2,this,ctxHead,start.format("EEEE").substr(0, 1)+" ("+start.format("dd")+")", 1, "headSmall "+holyClass, start,date); |
|
self.createBodyCell(this,ctxBody,1, start.getDay() % 7 == (self.master.firstDayOfWeek + 6) % 7, holyClass); |
|
} |
|
}); |
|
|
|
|
|
//----------------------------- 2 WEEKS 600px ----------------------------- |
|
_addZoom( "2w",{ |
|
adjustDates: function (start, end) { |
|
start.setFirstDayOfThisWeek(); |
|
start.setDate(start.getDate() - 7); |
|
end.setFirstDayOfThisWeek(); |
|
end.setDate(end.getDate() + 20); |
|
}, |
|
row1: function (date, tr1) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(date.getDate() + 6); |
|
self.createHeadCell(1,this,tr1,start.format("MMM d") + " - " + date.format("MMM d 'yy")+" (" + GanttMaster.messages["GANTT_WEEK_SHORT"]+date.format("w")+")", 7,"",start,date); |
|
date.setDate(date.getDate() + 1); |
|
}, |
|
row2: function (date, tr2, trBody) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(date.getDate() + 1); |
|
var holyClass = isHoliday(start) ? "holy" : ""; |
|
self.createHeadCell(2,this,tr2,start.format("EEEE").substr(0, 1), 1, "headSmall "+holyClass, start,date); |
|
self.createBodyCell(this,trBody,1, start.getDay() % 7 == (self.master.firstDayOfWeek + 6) % 7, holyClass); |
|
} |
|
}); |
|
|
|
|
|
//----------------------------- 1 MONTH 600px ----------------------------- |
|
_addZoom( "1M",{ |
|
adjustDates: function (start, end) { |
|
start.setMonth(start.getMonth()-1); |
|
start.setDate(15); |
|
end.setDate(1); |
|
end.setMonth(end.getMonth() + 1); |
|
end.setDate(end.getDate() + 14); |
|
}, |
|
row1: function (date, tr1) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(1); |
|
date.setMonth(date.getMonth() + 1); |
|
date.setDate(date.getDate() - 1); |
|
var inc=date.getDate()-start.getDate()+1; |
|
date.setDate(date.getDate() + 1); |
|
self.createHeadCell(1,this,tr1,start.format("MMMM yyyy"), inc,"",start,date); //spans mumber of dayn in the month |
|
}, |
|
row2: function (date, tr2, trBody) { |
|
var start = new Date(date.getTime()); |
|
date.setDate(date.getDate() + 1); |
|
var holyClass = isHoliday(start) ? "holy" : ""; |
|
self.createHeadCell(2,this,tr2,start.format("d"), 1, "headSmall "+holyClass, start,date); |
|
var nd = new Date(start.getTime()); |
|
nd.setDate(start.getDate() + 1); |
|
self.createBodyCell(this,trBody,1, nd.getDate() == 1, holyClass); |
|
} |
|
}); |
|
|
|
|
|
|
|
//----------------------------- 1 QUARTERS ----------------------------- |
|
_addZoom( "1Q", { |
|
adjustDates: function (start, end) { |
|
start.setDate(1); |
|
start.setMonth(Math.floor(start.getMonth() / 3) * 3 -1 ); |
|
end.setDate(1); |
|
end.setMonth(Math.floor(end.getMonth() / 3) * 3 + 4); |
|
end.setDate(end.getDate() - 1); |
|
}, |
|
row1: function (date, tr1) { |
|
var start = new Date(date.getTime()); |
|
date.setMonth(Math.floor(date.getMonth() / 3) * 3 + 3); |
|
var inc=(date.getMonth()-start.getMonth()); |
|
inc=inc>0?inc:1; |
|
var q = (Math.floor(start.getMonth() / 3) + 1); |
|
self.createHeadCell(1,this,tr1,GanttMaster.messages["GANTT_QUARTER"]+" "+q+" "+start.format("yyyy"), inc,"",start,date); |
|
}, |
|
row2: function (date, tr2, trBody) { |
|
var start = new Date(date.getTime()); |
|
date.setMonth(date.getMonth() + 1); |
|
self.createHeadCell(2,this,tr2,start.format("MMMM"), 1, "headSmall", start,date); |
|
self.createBodyCell(this,trBody,1, start.getMonth() % 3 == 2); |
|
} |
|
}); |
|
|
|
|
|
//----------------------------- 2 QUARTERS ----------------------------- |
|
_addZoom( "2Q", { |
|
adjustDates: function (start, end) { |
|
start.setDate(1); |
|
start.setMonth(Math.floor(start.getMonth() / 3) * 3 -3); |
|
end.setDate(1); |
|
end.setMonth(Math.floor(end.getMonth() / 3) * 3 + 6); |
|
end.setDate(end.getDate() - 1); |
|
}, |
|
row1: function (date, tr1) { |
|
var start = new Date(date.getTime()); |
|
date.setMonth(date.getMonth() + 3); |
|
var q = (Math.floor(start.getMonth() / 3) + 1); |
|
self.createHeadCell(1,this,tr1,GanttMaster.messages["GANTT_QUARTER"]+" "+q+" "+start.format("yyyy"), 3,"",start,date); |
|
}, |
|
row2: function (date, tr2, trBody) { |
|
var start = new Date(date.getTime()); |
|
date.setMonth(date.getMonth() + 1); |
|
var lbl = start.format("MMMM"); |
|
self.createHeadCell(2,this,tr2,lbl, 1, "headSmall", start,date); |
|
self.createBodyCell(this,trBody,1, start.getMonth() % 3 == 2); |
|
} |
|
}); |
|
|
|
|
|
//----------------------------- 1 YEAR ----------------------------- |
|
_addZoom( "1y", { |
|
adjustDates: function (start, end) { |
|
start.setDate(1); |
|
start.setMonth(Math.floor(start.getMonth() / 6) * 6 -6); |
|
end.setDate(1); |
|
end.setMonth(Math.floor(end.getMonth() / 6) * 6 + 12); |
|
end.setDate(end.getDate() - 1); |
|
}, |
|
row1: function (date, tr1) { |
|
var start = new Date(date.getTime()); |
|
date.setMonth(date.getMonth() + 6); |
|
var sem = (Math.floor(start.getMonth() / 6) + 1); |
|
self.createHeadCell(1,this,tr1,GanttMaster.messages["GANTT_SEMESTER"]+" "+sem+"-"+start.format("yyyy") , 6,"",start,date); |
|
}, |
|
row2: function (date, tr2, trBody) { |
|
var start = new Date(date.getTime()); |
|
date.setMonth(date.getMonth() + 1); |
|
self.createHeadCell(2,this,tr2,start.format("MMM"), 1, "headSmall", start,date); |
|
self.createBodyCell(this,trBody,1, (start.getMonth() + 1) % 6 == 0); |
|
} |
|
}); |
|
|
|
|
|
//----------------------------- 2 YEAR ----------------------------- |
|
_addZoom( "2y", { |
|
adjustDates: function (start, end) { |
|
start.setDate(1); |
|
start.setMonth(-6); |
|
end.setDate(30); |
|
end.setMonth(17); |
|
}, |
|
row1: function (date, tr1) { |
|
var start = new Date(date.getTime()); |
|
var inc=12-start.getMonth(); |
|
date.setMonth(date.getMonth() + inc); |
|
self.createHeadCell(1,this,tr1,start.format("yyyy"), inc/6,"",start,date); |
|
}, |
|
row2: function (date, tr2, trBody) { |
|
var start = new Date(date.getTime()); |
|
date.setMonth(date.getMonth() + 6); |
|
var sem = (Math.floor(start.getMonth() / 6) + 1); |
|
self.createHeadCell(2,this,tr2,GanttMaster.messages["GANTT_SEMESTER"] +" "+ sem, 1, "headSmall", start,date); |
|
self.createBodyCell(this,trBody,1, sem == 2); |
|
} |
|
}); |
|
|
|
|
|
|
|
}; |
|
|
|
|