From 89553b7fa0a6c29292260cedaab663349e7cf786 Mon Sep 17 00:00:00 2001 From: Bernd Bestel Date: Sat, 27 Oct 2018 17:56:53 +0200 Subject: [PATCH] Workaround for datepicker problem (fixes #100) --- public/viewjs/components/datetimepicker.js | 99 +++++++++++++--------- public/viewjs/inventory.js | 2 +- public/viewjs/purchase.js | 2 +- 3 files changed, 62 insertions(+), 41 deletions(-) diff --git a/public/viewjs/components/datetimepicker.js b/public/viewjs/components/datetimepicker.js index 99fd4fef..f4cd5def 100644 --- a/public/viewjs/components/datetimepicker.js +++ b/public/viewjs/components/datetimepicker.js @@ -24,6 +24,23 @@ Grocy.Components.DateTimePicker.SetValue = function(value) } } +Grocy.Components.DateTimePicker.Clear = function() +{ + $(".datetimepicker").datetimepicker("destroy"); + Grocy.Components.DateTimePicker.Init(); + + Grocy.Components.DateTimePicker.GetInputElement().val(""); + + // "Click" the shortcut checkbox when the desired value is + // not the shortcut value and it is currently set + value = ""; + var shortcutValue = $("#datetimepicker-shortcut").data("datetimepicker-shortcut-value"); + if (value != shortcutValue && $("#datetimepicker-shortcut").is(":checked")) + { + $("#datetimepicker-shortcut").click(); + } +} + var startDate = null; if (Grocy.Components.DateTimePicker.GetInputElement().data('init-with-now') === true) { @@ -40,46 +57,50 @@ if (Grocy.Components.DateTimePicker.GetInputElement().data('limit-end-to-now') = limitDate = moment(); } -$('.datetimepicker').datetimepicker( +Grocy.Components.DateTimePicker.Init = function() { - format: Grocy.Components.DateTimePicker.GetInputElement().data('format'), - buttons: { - showToday: true, - showClose: true - }, - calendarWeeks: true, - maxDate: limitDate, - locale: moment.locale(), - defaultDate: startDate, - useCurrent: false, - icons: { - time: 'far fa-clock', - date: 'far fa-calendar', - up: 'fas fa-arrow-up', - down: 'fas fa-arrow-down', - previous: 'fas fa-chevron-left', - next: 'fas fa-chevron-right', - today: 'fas fa-calendar-check', - clear: 'far fa-trash-alt', - close: 'far fa-times-circle' - }, - sideBySide: true, - keyBinds: { - up: function(widget) { }, - down: function(widget) { }, - 'control up': function(widget) { }, - 'control down': function(widget) { }, - left: function(widget) { }, - right: function(widget) { }, - pageUp: function(widget) { }, - pageDown: function(widget) { }, - enter: function(widget) { }, - escape: function(widget) { }, - 'control space': function(widget) { }, - t: function(widget) { }, - 'delete': function(widget) { } - } -}); + $('.datetimepicker').datetimepicker( + { + format: Grocy.Components.DateTimePicker.GetInputElement().data('format'), + buttons: { + showToday: true, + showClose: true + }, + calendarWeeks: true, + maxDate: limitDate, + locale: moment.locale(), + defaultDate: startDate, + useCurrent: false, + icons: { + time: 'far fa-clock', + date: 'far fa-calendar', + up: 'fas fa-arrow-up', + down: 'fas fa-arrow-down', + previous: 'fas fa-chevron-left', + next: 'fas fa-chevron-right', + today: 'fas fa-calendar-check', + clear: 'far fa-trash-alt', + close: 'far fa-times-circle' + }, + sideBySide: true, + keyBinds: { + up: function(widget) { }, + down: function(widget) { }, + 'control up': function(widget) { }, + 'control down': function(widget) { }, + left: function(widget) { }, + right: function(widget) { }, + pageUp: function(widget) { }, + pageDown: function(widget) { }, + enter: function(widget) { }, + escape: function(widget) { }, + 'control space': function(widget) { }, + t: function(widget) { }, + 'delete': function(widget) { } + } + }); +} +Grocy.Components.DateTimePicker.Init(); Grocy.Components.DateTimePicker.GetInputElement().on('keyup', function(e) { diff --git a/public/viewjs/inventory.js b/public/viewjs/inventory.js index fbeb0893..32cddae7 100644 --- a/public/viewjs/inventory.js +++ b/public/viewjs/inventory.js @@ -42,7 +42,7 @@ { $('#inventory-change-info').addClass('d-none'); $('#new_amount').val(''); - Grocy.Components.DateTimePicker.SetValue(''); + Grocy.Components.DateTimePicker.Clear(); Grocy.Components.ProductPicker.SetValue(''); Grocy.Components.ProductPicker.GetInputElement().focus(); Grocy.FrontendHelpers.ValidateForm('inventory-form'); diff --git a/public/viewjs/purchase.js b/public/viewjs/purchase.js index 506d2a72..4b101c41 100644 --- a/public/viewjs/purchase.js +++ b/public/viewjs/purchase.js @@ -50,7 +50,7 @@ { $('#amount').val(0); $('#price').val(''); - Grocy.Components.DateTimePicker.SetValue(''); + Grocy.Components.DateTimePicker.Clear(); Grocy.Components.ProductPicker.SetValue(''); Grocy.Components.ProductPicker.GetInputElement().focus(); Grocy.FrontendHelpers.ValidateForm('purchase-form');