Multiple-Dates-Picker-for-jQuery-UI
Multiple-Dates-Picker-for-jQuery-UI copied to clipboard
[custom] you can get days range without weekends
Hi all,
Just want to share code If you set options mode: 'daysRange' and beforeShowDay: $.datepicker.noWeekends, you can get days range without weekends
in jquery-ui.multidatespicker.js line 345 new code in comment // start new logic -> // end new logic
toggleDate : function( date, type ) {
if(!type) type = 'picked';
switch(this.multiDatesPicker.mode) {
case 'daysRange':
this.multiDatesPicker.dates[type] = []; // deletes all picked/disabled dates
var end = this.multiDatesPicker.autoselectRange[1];
var begin = this.multiDatesPicker.autoselectRange[0];
if(end < begin) { // switch
end = this.multiDatesPicker.autoselectRange[0];
begin = this.multiDatesPicker.autoselectRange[1];
}
// start new logic
var _j = 0, _checkWeekEnd = false;
if ( typeof(this.multiDatesPicker.originalBeforeShowDay) != "undefined" && this.multiDatesPicker.originalBeforeShowDay !== null && this.multiDatesPicker.originalBeforeShowDay.name == 'noWeekends' ) {
_checkWeekEnd = true;
}
// end new logic
for(var i = begin; i < end; i++)
// start new logic
if ( _checkWeekEnd ) {
var _origDateType = typeof date;
var _obj_date = dateConvert.call(this, date );
var __obj_date = _obj_date.setDate( _obj_date.getDate() + _j );
var _conv = dateConvert.call(this, __obj_date, _origDateType);
var _obj_date1 = dateConvert.call(this, _conv );
var _week = _obj_date1.getDay();
if ( _week == 6 ) {
_j += 2;
} else if ( _week == 0 ) {
_j += 1;
}
methods.addDates.call(this, methods.sumDays.call(this,date, _j ), type);
_j++;
} else {
methods.addDates.call(this, methods.sumDays.call(this,date, i), type);
}
// end new logic
break;
default:
if(methods.gotDate.call(this, date) === false) // adds dates
methods.addDates.call(this, date, type);
else // removes dates
methods.removeDates.call(this, date, type);
break;
}
},