diff --git a/README.md b/README.md index 62d7965f..900e9f76 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ The following shorthands are available: - Example: `0517` will be converted to `2018-05-17` - `YYYYMMDD` gets expanded to the proper ISO-8601 notation - Example: `20190417` will be converted to `2019-04-17` +- `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 - Right/left arrow keys will increase/decrease the date by 1 week diff --git a/public/viewjs/components/datetimepicker.js b/public/viewjs/components/datetimepicker.js index e0aac5a2..f15a14f7 100644 --- a/public/viewjs/components/datetimepicker.js +++ b/public/viewjs/components/datetimepicker.js @@ -79,7 +79,7 @@ Grocy.Components.DateTimePicker.GetInputElement().on('keyup', function(e) var centuryEnd = Number.parseInt(now.getFullYear().toString().substring(0, 2) + '99'); var format = Grocy.Components.DateTimePicker.GetInputElement().data('format'); var nextInputElement = $(Grocy.Components.DateTimePicker.GetInputElement().data('next-input-selector')); - + //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)) { @@ -101,6 +101,12 @@ Grocy.Components.DateTimePicker.GetInputElement().on('keyup', function(e) Grocy.Components.DateTimePicker.SetValue(value.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3')); nextInputElement.focus(); } + else if (value.length === 7 && $.isNumeric(value.substring(0, 6)) && (value.substring(6, 7).toLowerCase() === "e" || value.substring(6, 7).toLowerCase() === "+")) + { + var date = moment(value.substring(0, 4) + "-" + value.substring(4, 6) + "-01").endOf("month"); + Grocy.Components.DateTimePicker.SetValue(date.format(format)); + nextInputElement.focus(); + } else { var dateObj = moment(value, format, true);