From 28eb3fdd80346d5bdf56929682b74b14f041e650 Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 3 Feb 2022 14:58:56 -0700 Subject: [PATCH] Add Et2DateTimeToday --- api/js/etemplate/Et2Date/Et2DateTimeToday.ts | 52 ++++++++++++++++++++ api/js/etemplate/etemplate2.ts | 1 + 2 files changed, 53 insertions(+) create mode 100644 api/js/etemplate/Et2Date/Et2DateTimeToday.ts diff --git a/api/js/etemplate/Et2Date/Et2DateTimeToday.ts b/api/js/etemplate/Et2Date/Et2DateTimeToday.ts new file mode 100644 index 0000000000..e7c6b3c514 --- /dev/null +++ b/api/js/etemplate/Et2Date/Et2DateTimeToday.ts @@ -0,0 +1,52 @@ +/** + * EGroupware eTemplate2 - Readonly date-time_today WebComponent + * + * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License + * @package api + * @link https://www.egroupware.org + * @author Nathan Gray + */ + +import {formatDate, formatDateTime, formatTime, parseDateTime} from "./Et2Date"; +import {Et2DateReadonly} from "./Et2DateReadonly"; + +/** + * Widget displays date/time with different formatting relative to today + * If the date is today, we show just the time. Otherwise, full date + time. + */ +export class Et2DateTimeToday extends Et2DateReadonly +{ + constructor() + { + super(); + this.parser = parseDateTime; + this.formatter = this.formatDateTime; + } + + /** + * Format date+time relative to "now" + * If the date is today, we show just the time. Otherwise, the date and time. + * + * @param {Date} date + * @param {import('@lion/localize/types/LocalizeMixinTypes').FormatDateOptions} [options] Intl options are available + * @returns {string} + */ + formatDateTime(date : Date, options = {dateFormat: "", timeFormat: ""}) : string + { + let display = ""; + // Today - just the time + if(formatDate(date, {dateFormat: 'Y-m-d'}) == formatDate(new Date(), {dateFormat: 'Y-m-d'})) + { + display = formatTime(date); + } + // Before today - date and time + else + { + display = formatDateTime(date); + } + return display; + } +} + +// @ts-ignore TypeScript is not recognizing that this is a LitElement +customElements.define("et2-date-time_today", Et2DateTimeToday); \ No newline at end of file diff --git a/api/js/etemplate/etemplate2.ts b/api/js/etemplate/etemplate2.ts index 8b157b0654..c6eb309336 100644 --- a/api/js/etemplate/etemplate2.ts +++ b/api/js/etemplate/etemplate2.ts @@ -32,6 +32,7 @@ import './Et2Date/Et2DateReadonly'; import './Et2Date/Et2DateSinceReadonly'; import './Et2Date/Et2DateTime'; import './Et2Date/Et2DateTimeReadonly'; +import './Et2Date/Et2DateTimeToday'; import './Et2Description/Et2Description'; import './Et2Select/Et2Select'; import './Et2Select/Et2SelectAccount';