mirror of
				https://github.com/grocy/grocy.git
				synced 2025-10-31 10:46:36 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| $(function()
 | |
| {
 | |
| 	$('.datepicker').datepicker(
 | |
| 	{
 | |
| 		format: 'yyyy-mm-dd',
 | |
| 		startDate: '+0d',
 | |
| 		todayHighlight: true,
 | |
| 		autoclose: true,
 | |
| 		calendarWeeks: true,
 | |
| 		orientation: 'bottom auto',
 | |
| 		weekStart: 1,
 | |
| 		showOnFocus: false,
 | |
| 		language: L('bootstrap_datepicker_locale')
 | |
| 	});
 | |
| 	$('.datepicker').trigger('change');
 | |
| 
 | |
| 	EmptyElementWhenMatches('#datepicker-timeago', L('timeago_nan'));
 | |
| });
 | |
| 
 | |
| $('.datepicker').on('keydown', function(e)
 | |
| {
 | |
| 	if (e.keyCode === 13) //Enter
 | |
| 	{
 | |
| 		$('.datepicker').trigger('change');
 | |
| 	}
 | |
| });
 | |
| 
 | |
| $('.datepicker').on('keypress', function(e)
 | |
| {
 | |
| 	var element = $(e.target);
 | |
| 	var value = element.val();
 | |
| 	var dateObj = moment(element.val(), 'YYYY-MM-DD', true);
 | |
| 
 | |
| 	$('.datepicker').datepicker('hide');
 | |
| 
 | |
| 	//If input is empty and any arrow key is pressed, set date to today
 | |
| 	if (value.length === 0 && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 37 || e.keyCode === 39))
 | |
| 	{
 | |
| 		dateObj = moment(new Date(), 'YYYY-MM-DD', true);
 | |
| 	}
 | |
| 
 | |
| 	if (dateObj.isValid())
 | |
| 	{
 | |
| 		if (e.keyCode === 38) //Up
 | |
| 		{
 | |
| 			element.val(dateObj.add(-1, 'days').format('YYYY-MM-DD'));
 | |
| 		}
 | |
| 		else if (e.keyCode === 40) //Down
 | |
| 		{
 | |
| 			element.val(dateObj.add(1, 'days').format('YYYY-MM-DD'));
 | |
| 		}
 | |
| 		else if (e.keyCode === 37) //Left
 | |
| 		{
 | |
| 			element.val(dateObj.add(-1, 'weeks').format('YYYY-MM-DD'));
 | |
| 		}
 | |
| 		else if (e.keyCode === 39) //Right
 | |
| 		{
 | |
| 			element.val(dateObj.add(1, 'weeks').format('YYYY-MM-DD'));
 | |
| 		}
 | |
| 	}
 | |
| });
 | |
| 
 | |
| $('.datepicker').on('change', function(e)
 | |
| {
 | |
| 	var value = $('.datepicker').val();
 | |
| 	var now = new Date();
 | |
| 	var centuryStart = Number.parseInt(now.getFullYear().toString().substring(0, 2) + '00');
 | |
| 	var centuryEnd = Number.parseInt(now.getFullYear().toString().substring(0, 2) + '99');
 | |
| 
 | |
| 	if (value === 'x' || value === 'X') {
 | |
| 		value = '29991231';
 | |
| 	}
 | |
| 
 | |
| 	if (value.length === 4 && !(Number.parseInt(value) > centuryStart && Number.parseInt(value) < centuryEnd))
 | |
| 	{
 | |
| 		value = (new Date()).getFullYear().toString() + value;
 | |
| 	}
 | |
| 
 | |
| 	if (value.length === 8 && $.isNumeric(value))
 | |
| 	{
 | |
| 		value = value.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3');
 | |
| 		$('.datepicker').val(value);
 | |
| 	}
 | |
| 
 | |
| 	$('#datepicker-timeago').text($.timeago($('.datepicker').val()));
 | |
| 	EmptyElementWhenMatches('#datepicker-timeago', L('timeago_nan'));
 | |
| });
 | |
| 
 | |
| $('#datepicker-button').on('click', function(e)
 | |
| {
 | |
| 	$('.datepicker').datepicker('show');
 | |
| });
 |