diff --git a/README.md b/README.md index d07e574c..97edec82 100644 --- a/README.md +++ b/README.md @@ -65,8 +65,10 @@ The following shorthands are available: - `YYYYMMe` or `YYYYMM+` gets expanded to the end of the given month in the given year in proper notation - Example: `201807e` will be converted to `2018-07-31` - `x` gets expanded to `2999-12-31` (which I use for products which never expire) -- Down/up arrow keys will increase/decrease the date by one day +- Down/up arrow keys will increase/decrease the date by 1 day - Right/left arrow keys will increase/decrease the date by 1 week +- Shift + down/up arrow keys will increase/decrease the date by 1 month +- Shift + right/left arrow keys will increase/decrease the date by 1 year ### Keyboard shorthands for buttons Wherever a button contains a bold highlighted letter, this is a shortcut key. diff --git a/changelog/54_UNRELEASED_2019-xx-xx.md b/changelog/54_UNRELEASED_2019-xx-xx.md index 1c8d09f2..4a0474d7 100644 --- a/changelog/54_UNRELEASED_2019-xx-xx.md +++ b/changelog/54_UNRELEASED_2019-xx-xx.md @@ -3,3 +3,6 @@ ### Recipe fixes - Fixed that recipes were displayed without ingredients if the total recipe count was > 100 + +### General & other improvements +- New Input shorthands for date fields to increase/decrease the date by 1 month/year (shift + arrow keys, see the full list [here](https://github.com/grocy/grocy#input-shorthands-for-date-fields)) diff --git a/public/viewjs/components/datetimepicker.js b/public/viewjs/components/datetimepicker.js index 2aac53be..d673a942 100644 --- a/public/viewjs/components/datetimepicker.js +++ b/public/viewjs/components/datetimepicker.js @@ -170,21 +170,47 @@ Grocy.Components.DateTimePicker.GetInputElement().on('keyup', function(e) var dateObj = moment(value, format, true); if (dateObj.isValid()) { - if (e.keyCode === 38) //Up + if (e.shiftKey) { - Grocy.Components.DateTimePicker.SetValue(dateObj.add(-1, 'days').format(format)); + // WITH shift modifier key + + if (e.keyCode === 38) // Up + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(-1, 'months').format(format)); + } + else if (e.keyCode === 40) // Down + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(1, 'months').format(format)); + } + else if (e.keyCode === 37) // Left + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(-1, 'years').format(format)); + } + else if (e.keyCode === 39) // Right + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(1, 'years').format(format)); + } } - else if (e.keyCode === 40) //Down + else { - Grocy.Components.DateTimePicker.SetValue(dateObj.add(1, 'days').format(format)); - } - else if (e.keyCode === 37) //Left - { - Grocy.Components.DateTimePicker.SetValue(dateObj.add(-1, 'weeks').format(format)); - } - else if (e.keyCode === 39) //Right - { - Grocy.Components.DateTimePicker.SetValue(dateObj.add(1, 'weeks').format(format)); + // WITHOUT shift modifier key + + if (e.keyCode === 38) // Up + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(-1, 'days').format(format)); + } + else if (e.keyCode === 40) // Down + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(1, 'days').format(format)); + } + else if (e.keyCode === 37) // Left + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(-1, 'weeks').format(format)); + } + else if (e.keyCode === 39) // Right + { + Grocy.Components.DateTimePicker.SetValue(dateObj.add(1, 'weeks').format(format)); + } } } }