[2.0] source file changes

This commit is contained in:
Adam Shaw
2014-01-24 22:51:24 -08:00
parent 7bd4e08bd0
commit d0d0a97c64
25 changed files with 1886 additions and 1154 deletions
+14 -19
View File
@@ -1,39 +1,34 @@
fcViews.basicDay = BasicDayView;
function BasicDayView(element, calendar) {
function BasicDayView(element, calendar) { // TODO: make a DayView mixin
var t = this;
// exports
t.incrementDate = incrementDate;
t.render = render;
// imports
BasicView.call(t, element, calendar, 'basicDay');
var opt = t.opt;
var renderBasic = t.renderBasic;
var skipHiddenDays = t.skipHiddenDays;
var formatDate = calendar.formatDate;
function render(date, delta) {
if (delta) {
addDays(date, delta);
}
skipHiddenDays(date, delta < 0 ? -1 : 1);
var start = cloneDate(date, true);
var end = addDays(cloneDate(start), 1);
function incrementDate(date, delta) {
var out = date.clone().stripTime().add('days', delta);
out = t.skipHiddenDays(out, delta < 0 ? -1 : 1);
return out;
}
t.title = formatDate(date, opt('titleFormat'));
t.start = t.visStart = start;
t.end = t.visEnd = end;
function render(date) {
renderBasic(1, 1, false);
t.start = t.intervalStart = date.clone().stripTime();
t.end = t.intervalEnd = t.start.clone().add('days', 1);
t.title = calendar.formatDate(t.start, t.opt('titleFormat'));
t.renderBasic(1, 1, false);
}
+32 -40
View File
@@ -19,7 +19,6 @@ function BasicView(element, calendar, viewName) {
t.reportDayClick = reportDayClick; // for selection (kinda hacky)
t.dragStart = dragStart;
t.dragStop = dragStop;
t.defaultEventEnd = defaultEventEnd;
t.getHoverListener = function() { return hoverListener };
t.colLeft = colLeft;
t.colRight = colRight;
@@ -46,7 +45,9 @@ function BasicView(element, calendar, viewName) {
var cellToDate = t.cellToDate;
var dateToCell = t.dateToCell;
var rangeToSegments = t.rangeToSegments;
var calendar = t.calendar;
var formatDate = calendar.formatDate;
var calculateWeekNumber = calendar.calculateWeekNumber;
// locals
@@ -77,8 +78,6 @@ function BasicView(element, calendar, viewName) {
var tm;
var colFormat;
var showWeekNumbers;
var weekNumberTitle;
var weekNumberFormat;
@@ -106,16 +105,7 @@ function BasicView(element, calendar, viewName) {
function updateOptions() {
tm = opt('theme') ? 'ui' : 'fc';
colFormat = opt('columnFormat');
// week # options. (TODO: bad, logic also in other views)
showWeekNumbers = opt('weekNumbers');
weekNumberTitle = opt('weekNumberTitle');
if (opt('weekNumberCalculation') != 'iso') {
weekNumberFormat = "w";
}
else {
weekNumberFormat = "W";
}
}
@@ -188,14 +178,14 @@ function BasicView(element, calendar, viewName) {
if (showWeekNumbers) {
html +=
"<th class='fc-week-number " + headerClass + "'>" +
htmlEscape(weekNumberTitle) +
htmlEscape(opt('weekNumberTitle')) +
"</th>";
}
for (col=0; col<colCnt; col++) {
date = cellToDate(0, col);
html +=
"<th class='fc-day-header fc-" + dayIDs[date.getDay()] + " " + headerClass + "'>" +
"<th class='fc-day-header fc-" + dayIDs[date.day()] + " " + headerClass + "'>" +
htmlEscape(formatDate(date, colFormat)) +
"</th>";
}
@@ -224,7 +214,7 @@ function BasicView(element, calendar, viewName) {
html +=
"<td class='fc-week-number " + contentClass + "'>" +
"<div>" +
htmlEscape(formatDate(date, weekNumberFormat)) +
htmlEscape(calculateWeekNumber(date)) +
"</div>" +
"</td>";
}
@@ -243,21 +233,21 @@ function BasicView(element, calendar, viewName) {
}
function buildCellHTML(date) {
var contentClass = tm + "-widget-content";
var month = t.start.getMonth();
var today = clearTime(new Date());
function buildCellHTML(date) { // date assumed to have stripped time
var month = t.intervalStart.month();
var today = calendar.getNow().stripTime();
var html = '';
var contentClass = tm + "-widget-content";
var classNames = [
'fc-day',
'fc-' + dayIDs[date.getDay()],
'fc-' + dayIDs[date.day()],
contentClass
];
if (date.getMonth() != month) {
if (date.month() != month) {
classNames.push('fc-other-month');
}
if (+date == +today) {
if (date.isSame(today, 'day')) {
classNames.push(
'fc-today',
tm + '-state-highlight'
@@ -273,12 +263,12 @@ function BasicView(element, calendar, viewName) {
html +=
"<td" +
" class='" + classNames.join(' ') + "'" +
" data-date='" + formatDate(date, 'yyyy-MM-dd') + "'" +
" data-date='" + date.format() + "'" +
">" +
"<div>";
if (showNumbers) {
html += "<div class='fc-day-number'>" + date.getDate() + "</div>";
html += "<div class='fc-day-number'>" + date.date() + "</div>";
}
html +=
@@ -353,8 +343,8 @@ function BasicView(element, calendar, viewName) {
function dayClick(ev) {
if (!opt('selectable')) { // if selectable, SelectionManager will worry about dayClick
var date = parseISO8601($(this).data('date'));
trigger('dayClick', this, date, true, ev);
var date = calendar.moment($(this).data('date'));
trigger('dayClick', this, date, ev);
}
}
@@ -398,13 +388,13 @@ function BasicView(element, calendar, viewName) {
-----------------------------------------------------------------------*/
function defaultSelectionEnd(startDate, allDay) {
return cloneDate(startDate);
function defaultSelectionEnd(start) {
return start.clone().stripTime().add('days', 1);
}
function renderSelection(startDate, endDate, allDay) {
renderDayOverlay(startDate, addDays(cloneDate(endDate), 1), true); // rebuild every time???
function renderSelection(start, end) { // end is exclusive
renderDayOverlay(start, end, true); // true = rebuild every time
}
@@ -413,10 +403,10 @@ function BasicView(element, calendar, viewName) {
}
function reportDayClick(date, allDay, ev) {
function reportDayClick(date, ev) {
var cell = dateToCell(date);
var _element = bodyCells[cell.row*colCnt + cell.col];
trigger('dayClick', _element, date, allDay, ev);
trigger('dayClick', _element, date, ev);
}
@@ -429,7 +419,9 @@ function BasicView(element, calendar, viewName) {
hoverListener.start(function(cell) {
clearOverlays();
if (cell) {
renderCellOverlay(cell.row, cell.col, cell.row, cell.col);
var d1 = cellToDate(cell);
var d2 = d1.clone().add(calendar.defaultAllDayEventDuration);
renderDayOverlay(d1, d2);
}
}, ev);
}
@@ -439,8 +431,13 @@ function BasicView(element, calendar, viewName) {
var cell = hoverListener.stop();
clearOverlays();
if (cell) {
var d = cellToDate(cell);
trigger('drop', _dragElement, d, true, ev, ui);
trigger(
'drop',
_dragElement,
cellToDate(cell),
ev,
ui
);
}
}
@@ -450,11 +447,6 @@ function BasicView(element, calendar, viewName) {
--------------------------------------------------------*/
function defaultEventEnd(event) {
return cloneDate(event.start);
}
coordinateGrid = new CoordinateGrid(function(rows, cols) {
var e, n, p;
headCells.each(function(i, _e) {
+16 -28
View File
@@ -1,52 +1,40 @@
fcViews.basicWeek = BasicWeekView;
function BasicWeekView(element, calendar) {
function BasicWeekView(element, calendar) { // TODO: do a WeekView mixin
var t = this;
// exports
t.incrementDate = incrementDate;
t.render = render;
// imports
BasicView.call(t, element, calendar, 'basicWeek');
var opt = t.opt;
var renderBasic = t.renderBasic;
var skipHiddenDays = t.skipHiddenDays;
var getCellsPerWeek = t.getCellsPerWeek;
var formatDates = calendar.formatDates;
function render(date, delta) {
if (delta) {
addDays(date, delta * 7);
}
var start = addDays(cloneDate(date), -((date.getDay() - opt('firstDay') + 7) % 7));
var end = addDays(cloneDate(start), 7);
function incrementDate(date, delta) {
return date.clone().stripTime().add('weeks', delta).startOf('week');
}
var visStart = cloneDate(start);
skipHiddenDays(visStart);
var visEnd = cloneDate(end);
skipHiddenDays(visEnd, -1, true);
function render(date) {
var colCnt = getCellsPerWeek();
t.intervalStart = date.clone().stripTime().startOf('week');
t.intervalEnd = t.intervalStart.clone().add('weeks', 1);
t.start = start;
t.end = end;
t.visStart = visStart;
t.visEnd = visEnd;
t.start = t.skipHiddenDays(t.intervalStart);
t.end = t.skipHiddenDays(t.intervalEnd, -1, true);
t.title = formatDates(
visStart,
addDays(cloneDate(visEnd), -1),
opt('titleFormat')
t.title = calendar.formatRange(
t.start,
t.end.clone().subtract(1), // make inclusive by subtracting 1 ms
t.opt('titleFormat'),
' \u2014 ' // emphasized dash
);
renderBasic(1, colCnt, false);
t.renderBasic(1, t.getCellsPerWeek(), false);
}
+18 -33
View File
@@ -6,56 +6,41 @@ function MonthView(element, calendar) {
// exports
t.incrementDate = incrementDate;
t.render = render;
// imports
BasicView.call(t, element, calendar, 'month');
var opt = t.opt;
var renderBasic = t.renderBasic;
var skipHiddenDays = t.skipHiddenDays;
var getCellsPerWeek = t.getCellsPerWeek;
var formatDate = calendar.formatDate;
function render(date, delta) {
if (delta) {
addMonths(date, delta);
date.setDate(1);
}
var firstDay = opt('firstDay');
function incrementDate(date, delta) {
return date.clone().stripTime().add('months', delta).startOf('month');
}
var start = cloneDate(date, true);
start.setDate(1);
var end = addMonths(cloneDate(start), 1);
function render(date) {
var visStart = cloneDate(start);
addDays(visStart, -((visStart.getDay() - firstDay + 7) % 7));
skipHiddenDays(visStart);
t.intervalStart = date.clone().stripTime().startOf('month');
t.intervalEnd = t.intervalStart.clone().add('months', 1);
var visEnd = cloneDate(end);
addDays(visEnd, (7 - visEnd.getDay() + firstDay) % 7);
skipHiddenDays(visEnd, -1, true);
t.start = t.intervalStart.clone().startOf('week');
t.start = t.skipHiddenDays(t.start);
var colCnt = getCellsPerWeek();
var rowCnt = Math.round(dayDiff(visEnd, visStart) / 7); // should be no need for Math.round
t.end = t.intervalEnd.clone().add('days', (7 - t.intervalEnd.weekday()) % 7);
t.end = t.skipHiddenDays(t.end, -1, true);
if (opt('weekMode') == 'fixed') {
addDays(visEnd, (6 - rowCnt) * 7); // add weeks to make up for it
var rowCnt = Math.ceil( // need to ceil in case there are hidden days
t.end.diff(t.start, 'weeks', true) // returnfloat=true
);
if (t.opt('weekMode') == 'fixed') {
t.end.add('weeks', 6 - rowCnt);
rowCnt = 6;
}
t.title = formatDate(start, opt('titleFormat'));
t.title = calendar.formatDate(t.intervalStart, t.opt('titleFormat'));
t.start = start;
t.end = end;
t.visStart = visStart;
t.visEnd = visEnd;
renderBasic(rowCnt, colCnt, true);
t.renderBasic(rowCnt, t.getCellsPerWeek(), true);
}