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

multiDatesPicker select date range without pickableRange

Open dinum opened this issue 8 years ago • 1 comments

Hi this is NOT the ISSUE i added new lines to multiDatesPicker options for select date range withoust range ( Limit ). steps 1.select first date normaly 2.press end Date with SHIFT key

here is the code


var shitfpressed = false;
var firstDate = '';
var lastselectedDate = '';
var datedif = '';
$("#dateSelector").multiDatesPicker({
	altField: '#altField',
	minDate: 0,
	onSelect: function (selectedDate) {
		$(this).keydown(function (e) {
	
			if((e.keyCode == 16)){

				shitfpressed = true;

			} 
		});

		

		if(shitfpressed == true){
			$('.divoverlay').show();
			console.log(lastselectedDate+'=>'+selectedDate);
			
			var parts1 =selectedDate.split('/');
			var date1 = new Date(parts1[2],parts1[0]-1,parts1[1]);

			var parts2 =lastselectedDate.split('/');
			var date2 = new Date(parts2[2],parts2[0]-1,parts2[1]);

		//console.log(date2.getTime()+" -- "+date1.getTime());
		 				
			
		if(date2.getTime() > date1.getTime()){

			var timeDiff = Math.abs(date2.getTime() - date1.getTime());
			datedif = Math.ceil(timeDiff / (1000 * 3600 * 24));
			console.log('different = '+datedif);

			var modifiedDate = '';
			
			for(var x=1; x <= datedif; x++){

				date1.setDate(date1.getDate() + 1);
				console.log(date1);
				modifiedDate = (date1.getMonth()+1)+'/'+date1.getDate()+'/'+date1.getFullYear();
				console.log(modifiedDate);			
				$(this).multiDatesPicker('addDates',modifiedDate);
			}
		} else if(date2.getTime() < date1.getTime()){

			var timeDiff = Math.abs(date1.getTime() - date2.getTime());
			datedif = Math.ceil(timeDiff / (1000 * 3600 * 24));
			console.log('different = '+datedif);
			
			var modifiedDate = '';
			
			for(var x=1; x <= datedif; x++){
				date2.setDate(date2.getDate() + 1);
				console.log(date2);
				modifiedDate = (date2.getMonth()+1)+'/'+date2.getDate()+'/'+date2.getFullYear();
				console.log(modifiedDate);			
				$(this).multiDatesPicker('addDates',modifiedDate);
			}
		}
		shitfpressed = false;
		$('.divoverlay').hide();
 	 	}

		lastselectedDate = selectedDate;	
	}  

});

Still Confuse !!!!!!!!!! contact me ;- [email protected]

dinum avatar Oct 23 '17 09:10 dinum

Hi, I have developped it in an other way: it works. However the method addDates of MDP takes 30ms. So if you want to add 1 month it takes 1seconds, too slow ! I think this addDates method should be optimised

		var shifted = false;
		
		$(document).on('keyup keydown', function(e){shifted = e.shiftKey} );

		$('#datepicker').multiDatesPicker({
			dateFormat: "yy-mm-dd",
			onSelect: function(selectedDate){
					
				var dates = $('#datepicker').multiDatesPicker('getDates')
				$("#valeurs").html(dates);
				
				var first_day;
				if(shifted && dates.length >=2){
					
					var last_day = new Date(selectedDate); 
					var start_i = 0;
					for (var i = 0; i < dates.length-1; i++) {
						var start_date = new Date(dates[i]);
						if( start_date < last_day ){
							var start_i = i;
						}
					}
					var first_day = new Date(dates[start_i]);
					
					var currentDate = first_day;
					currentDate.setDate(currentDate.getDate() + 1) 
					while (currentDate < last_day) {
						$('#datepicker').multiDatesPicker('addDates', currentDate.toISOString().slice(0,10) );
						currentDate.setDate(currentDate.getDate() + 1) 
					} 						
				}
				
			},
		});

Toto5931 avatar Apr 08 '18 09:04 Toto5931