Multiple-Dates-Picker-for-jQuery-UI icon indicating copy to clipboard operation
Multiple-Dates-Picker-for-jQuery-UI copied to clipboard

[custom] you can get days range without weekends

Open gzai opened this issue 8 years ago • 0 comments

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;
				}
			}, 

gzai avatar May 24 '17 11:05 gzai