Skip to content

Commit

Permalink
Updating changelog for #163
Browse files Browse the repository at this point in the history
  • Loading branch information
Twipped committed Jan 16, 2016
1 parent fcd3dd9 commit 4764c99
Show file tree
Hide file tree
Showing 5 changed files with 192 additions and 150 deletions.
96 changes: 94 additions & 2 deletions build/kalendae.js
Expand Up @@ -130,10 +130,31 @@ var Kalendae = function (targetElement, options) {
$caption = util.make('span', {'class':classes.caption}, $title); //title caption

//column headers
$header = util.make('div', {'class':classes.header}, $cal);
$header = util.make('div', {'class':classes.header + ' ' + (opts.dayHeaderClickable == true ? classes.dayActive : '')}, $cal);
i = 0;
do {
$span = util.make('span', {}, $header);
$span = util.make('span', {'data-day':i}, $header);

if (opts.dayHeaderClickable == true && opts.mode == 'multiple') {
$span.addEventListener("mouseover", function(e){
var daysContainer = e.target.parentNode.nextSibling;
daysToHover = daysContainer.getElementsByClassName('k-day-week-' + e.target.getAttribute('data-day'));
if (daysToHover.length > 0) {
for (var i = 0; i < daysToHover.length; i++) {
if (util.hasClassName(daysToHover[i], classes.dayActive)) util.addClassName(daysToHover[i], 'k-day-hover-active');
}
}
});
$span.addEventListener("mouseleave", function(e){
var daysContainer = e.target.parentNode.nextSibling;
daysToHover = daysContainer.getElementsByClassName('k-day-week-' + e.target.getAttribute('data-day'));
if (daysToHover.length > 0) {
for (var i = 0; i < daysToHover.length; i++) {
if (util.hasClassName(daysToHover[i], classes.dayActive)) util.removeClassName(daysToHover[i], 'k-day-hover-active');
}
}
});
}
$span.innerHTML = columnHeaders[i];
} while (++i < 7);

Expand All @@ -155,6 +176,7 @@ var Kalendae = function (targetElement, options) {

//store each calendar view for easy redrawing
calendars.push({
header:$header,
caption:$caption,
days:dayNodes
});
Expand Down Expand Up @@ -232,6 +254,20 @@ var Kalendae = function (targetElement, options) {
}
}
return false;

} else if (util.hasClassName(target.parentNode, classes.header)) {
if (opts.mode == 'multiple' && opts.dayHeaderClickable == true) {
var parentSelected = util.hasClassName(target, classes.daySelected),
month = target.parentNode.parentNode.getAttribute('data-datestart'),
dayToSelect = target.getAttribute('data-day');

if (parentSelected == true) {
self.monthDaySelected(month, dayToSelect, true);
} else {
self.monthDaySelected(month, dayToSelect, false);
}
}
return false;
}

return false;
Expand All @@ -256,6 +292,7 @@ Kalendae.prototype = {
selected :null, /* dates already selected. can be string, date, or array of strings or dates. */
mode :'single', /* single, multiple, range */
dayOutOfMonthClickable:false,
dayHeaderClickable :false,
format :null, /* string used for parsing dates. */
subscribe :null, /* object containing events to subscribe to */

Expand Down Expand Up @@ -453,6 +490,23 @@ Kalendae.prototype = {
this.draw();
},

monthDaySelected: function(month, daynumber, unselected) {
var days = moment(month).startOf('month').weekday(daynumber),
endMonth = moment(month).endOf('month');
selected = [];

while(days <= endMonth) {
if (days >= moment(month).startOf('month') && !this.direction(days)) {
if (unselected) {
this.removeSelected(moment(days).hours(12));
} else {
this.addSelected(moment(days).hours(12));
}
}
days.add(7, 'd');
}
},

makeSelectedDateVisible: function (date) {
outOfViewMonth = moment(date).date('1').diff(this.viewStartDate,'months');

Expand Down Expand Up @@ -488,8 +542,10 @@ Kalendae.prototype = {
klass,
i=0, c,
j=0, k,
t=0, z,
w,
s,
headers,
dateString,
opts = this.settings,
diff;
Expand All @@ -502,9 +558,19 @@ Kalendae.prototype = {
//if the first day of the month is less than our week start, back up a week

cal = this.calendars[i];

cal.header.parentNode.setAttribute('data-datestart', month.format(this.settings.dayAttributeFormat));

cal.caption.innerHTML = month.format(this.settings.titleFormat);
j = 0;
w = 0;
t = 0;
headers = [];
for (var z = 0; z < 7; z++) {
util.removeClassName(cal.header.children[z], classes.daySelected);
headers[z] = 0;
}

do {
if (opts.mode == 'week') {
if (((j % 7) === 0) && (j !== 0)) {
Expand All @@ -521,6 +587,13 @@ Kalendae.prototype = {

if (s) klass.push(({'-1':classes.dayInRange,'1':classes.daySelected, 'true':classes.daySelected})[s]);

if (opts.dayHeaderClickable == true && opts.mode == 'multiple') {
klass.push('k-day-week-' + day.weekday());
if ((s == true || s == 1) && !this.direction(day) && month.format('M') == day.format('M')) {
headers[day.weekday()] = headers[day.weekday()] + 1;
}
}

if (day.month() != month.month()) klass.push(classes.dayOutOfMonth);
else klass.push(classes.dayInMonth);

Expand All @@ -538,6 +611,25 @@ Kalendae.prototype = {

day.add(1, 'days');
} while (++j < 42);
z = 0;
if (headers.length > 0) {
do {
if (headers[z] > 0) {
var firstDay = Kalendae.moment(month).startOf('month').weekday(z),
startMonth = Kalendae.moment(month).startOf('month');
endMonth = Kalendae.moment(month).endOf('month');
t = 0;
do {
if (firstDay >= startMonth && !this.direction(firstDay)) t++;
firstDay.add(7, 'd');
} while(firstDay <= endMonth)

if (t == headers[z]) util.addClassName(cal.header.children[z], classes.daySelected);
else util.removeClassName(cal.header.children[z], classes.daySelected);
}
} while(++z < headers.length)
}

month.add(1, 'months');
} while (++i < c);

Expand Down

0 comments on commit 4764c99

Please sign in to comment.