@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -115
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import moment from 'moment';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./date-display.pipe";
|
|
5
|
-
import * as i2 from "./time-display.pipe";
|
|
6
|
-
import * as i3 from "@ngx-translate/core";
|
|
7
|
-
export class RelativeDatePipe {
|
|
8
|
-
constructor(dateDisplayPipe, timeDisplayPipe, translateService) {
|
|
9
|
-
this.dateDisplayPipe = dateDisplayPipe;
|
|
10
|
-
this.timeDisplayPipe = timeDisplayPipe;
|
|
11
|
-
this.translateService = translateService;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* If dateOnly is true, returns timeSelected formatted according to the user's date preference.
|
|
15
|
-
* If dateOnly is true and showTimeForToday is false and timeSelected is today, returns 'today' or todayLabel
|
|
16
|
-
* If dateOnly and showTimeForToday is true and timeSelected is today, returns timeSelected formatted according to the user's time preference.
|
|
17
|
-
* If dateOnly is false, returns timeSelected formatted according to the user's time preference.
|
|
18
|
-
* If dateOnly is false and timeSelected is not today/yesterday, returns timeSelected formatted according to the user's date plus time preference.
|
|
19
|
-
* If any of todayLabel, yesterdayLabel is supplied, use the supplied label.
|
|
20
|
-
*/
|
|
21
|
-
transform(timeSelected, options) {
|
|
22
|
-
const selected = moment(timeSelected);
|
|
23
|
-
const today = moment();
|
|
24
|
-
const yesterday = moment().subtract(1, 'day');
|
|
25
|
-
const timeDisplay = options?.dateOnly ? `` : ` ${this.timeDisplayPipe.transform(timeSelected)}`;
|
|
26
|
-
let displayValue = null;
|
|
27
|
-
let prefixValue = '';
|
|
28
|
-
if (selected.isSame(today, 'day') && !options?.showTimeForToday) {
|
|
29
|
-
displayValue = this.translateService.instant(options?.todayLabel ? options?.todayLabel : 'today');
|
|
30
|
-
prefixValue = options?.todayPrefix ?? '';
|
|
31
|
-
}
|
|
32
|
-
else if (selected.isSame(today, 'day') && options?.showTimeForToday && !timeDisplay) {
|
|
33
|
-
displayValue = this.timeDisplayPipe.transform(timeSelected);
|
|
34
|
-
prefixValue = options?.todayTimePrefix ?? '';
|
|
35
|
-
}
|
|
36
|
-
else if (selected.isSame(yesterday, 'day')) {
|
|
37
|
-
displayValue = this.translateService.instant(options?.yesterdayLabel ? options?.yesterdayLabel : 'yesterday');
|
|
38
|
-
prefixValue = options?.yesterdayPrefix ?? '';
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
displayValue = this.dateDisplayPipe.transform(timeSelected);
|
|
42
|
-
}
|
|
43
|
-
// If we have a default prefix and no specific ones were set earlier apply the default prefix
|
|
44
|
-
if (options?.defaultPrefix && prefixValue === '') {
|
|
45
|
-
prefixValue = options.defaultPrefix;
|
|
46
|
-
}
|
|
47
|
-
// Add a space after our prefix if defined
|
|
48
|
-
if (prefixValue !== '') {
|
|
49
|
-
prefixValue = `${prefixValue} `;
|
|
50
|
-
}
|
|
51
|
-
return `${prefixValue}${displayValue}${timeDisplay}`;
|
|
52
|
-
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelativeDatePipe, deps: [{ token: i1.DateDisplayPipe }, { token: i2.TimeDisplayPipe }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
54
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RelativeDatePipe, name: "relativeDate" }); }
|
|
55
|
-
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelativeDatePipe, decorators: [{
|
|
57
|
-
type: Pipe,
|
|
58
|
-
args: [{
|
|
59
|
-
name: 'relativeDate'
|
|
60
|
-
}]
|
|
61
|
-
}], ctorParameters: () => [{ type: i1.DateDisplayPipe }, { type: i2.TimeDisplayPipe }, { type: i3.TranslateService }] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmUtZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9kaXNwbGF5L3BpcGVzL3JlbGF0aXZlLWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7O0FBMEI1QixNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQ1UsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsZ0JBQWtDO1FBRmxDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN4QyxDQUFDO0lBRUw7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FDUCxZQUFvQixFQUNwQixPQUE2QjtRQUU3QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUVoRyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRyxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDM0MsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLGdCQUFnQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEYsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVELFdBQVcsR0FBRyxPQUFPLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQTtRQUM5QyxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlHLFdBQVcsR0FBRyxPQUFPLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsNkZBQTZGO1FBQzdGLElBQUksT0FBTyxFQUFFLGFBQWEsSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakQsV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDdEMsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixXQUFXLEdBQUcsR0FBRyxXQUFXLEdBQUcsQ0FBQztRQUNsQyxDQUFDO1FBRUQsT0FBTyxHQUFHLFdBQVcsR0FBRyxZQUFZLEdBQUcsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQzsrR0FwRFUsZ0JBQWdCOzZHQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBSDVCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGNBQWM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRGF0ZURpc3BsYXlQaXBlIH0gZnJvbSAnLi9kYXRlLWRpc3BsYXkucGlwZSc7XG5pbXBvcnQgeyBUaW1lRGlzcGxheVBpcGUgfSBmcm9tICcuL3RpbWUtZGlzcGxheS5waXBlJztcblxuZXhwb3J0IHR5cGUgUmVsYXRpdmVEYXRlT3B0aW9ucyA9IHtcbiAgZGF0ZU9ubHk/OiBib29sZWFuLCBcbiAgc2hvd1RpbWVGb3JUb2RheT8gOiBib29sZWFuLFxuICB0b2RheUxhYmVsPzogc3RyaW5nLCBcbiAgeWVzdGVyZGF5TGFiZWw/OiBzdHJpbmcsIFxuXG4gIC8qKiBQcmVmaXggZm9yIHdoZW4gc2hvd2luZyB0b2RheSBhcyB0aW1lIGZvciB0aGUgdmFsdWUgKi9cbiAgdG9kYXlUaW1lUHJlZml4Pzogc3RyaW5nLFxuXG4gIC8qKiBQcmVmaXggZm9yIHdoZW4gZGlzcGxheWluZyBcInRvZGF5XCIgYXMgdGhlIHZhbHVlICovXG4gIHRvZGF5UHJlZml4Pzogc3RyaW5nLFxuXG4gIC8qKiBQcmVmaXggZm9yIHdoZW4gZGlzcGxheWluZyBcInllc3RlcmRheVwiIGFzIHRoZSB2YWx1ZSAqL1xuICB5ZXN0ZXJkYXlQcmVmaXg/OiBzdHJpbmcsXG5cbiAgLyoqIERlZmF1bHQgcHJlZml4LiBXaWxsIGJlIGFwcGxpZWQgdG8gYWxsIGRpc3BsYXkgb3B0aW9ucyBpZiBkZWZpbmVkIGFuZCBvdGhlcnMgYXJlIG5vdCAqL1xuICBkZWZhdWx0UHJlZml4Pzogc3RyaW5nXG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3JlbGF0aXZlRGF0ZSdcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZURpc3BsYXlQaXBlOiBEYXRlRGlzcGxheVBpcGUsIFxuICAgIHByaXZhdGUgdGltZURpc3BsYXlQaXBlOiBUaW1lRGlzcGxheVBpcGUsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIElmIGRhdGVPbmx5IGlzIHRydWUsIHJldHVybnMgdGltZVNlbGVjdGVkIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyBkYXRlIHByZWZlcmVuY2UuXG4gICAqIElmIGRhdGVPbmx5IGlzIHRydWUgYW5kIHNob3dUaW1lRm9yVG9kYXkgaXMgZmFsc2UgYW5kIHRpbWVTZWxlY3RlZCBpcyB0b2RheSwgcmV0dXJucyAndG9kYXknIG9yIHRvZGF5TGFiZWxcbiAgICogSWYgZGF0ZU9ubHkgYW5kIHNob3dUaW1lRm9yVG9kYXkgaXMgdHJ1ZSBhbmQgdGltZVNlbGVjdGVkIGlzIHRvZGF5LCByZXR1cm5zIHRpbWVTZWxlY3RlZCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3MgdGltZSBwcmVmZXJlbmNlLlxuICAgKiBJZiBkYXRlT25seSBpcyBmYWxzZSwgcmV0dXJucyB0aW1lU2VsZWN0ZWQgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgdXNlcidzIHRpbWUgcHJlZmVyZW5jZS5cbiAgICogSWYgZGF0ZU9ubHkgaXMgZmFsc2UgYW5kIHRpbWVTZWxlY3RlZCBpcyBub3QgdG9kYXkveWVzdGVyZGF5LCByZXR1cm5zIHRpbWVTZWxlY3RlZCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3MgZGF0ZSBwbHVzIHRpbWUgcHJlZmVyZW5jZS5cbiAgICogSWYgYW55IG9mIHRvZGF5TGFiZWwsIHllc3RlcmRheUxhYmVsIGlzIHN1cHBsaWVkLCB1c2UgdGhlIHN1cHBsaWVkIGxhYmVsLlxuICAgKi9cbiAgdHJhbnNmb3JtKFxuICAgIHRpbWVTZWxlY3RlZDogc3RyaW5nLCBcbiAgICBvcHRpb25zPzogUmVsYXRpdmVEYXRlT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gbW9tZW50KHRpbWVTZWxlY3RlZCk7XG4gICAgY29uc3QgdG9kYXkgPSBtb21lbnQoKTtcbiAgICBjb25zdCB5ZXN0ZXJkYXkgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5Jyk7XG4gICAgY29uc3QgdGltZURpc3BsYXkgPSBvcHRpb25zPy5kYXRlT25seSA/IGBgIDogYCAke3RoaXMudGltZURpc3BsYXlQaXBlLnRyYW5zZm9ybSh0aW1lU2VsZWN0ZWQpfWA7XG5cbiAgICBsZXQgZGlzcGxheVZhbHVlID0gbnVsbDtcbiAgICBsZXQgcHJlZml4VmFsdWUgPSAnJztcblxuICAgIGlmIChzZWxlY3RlZC5pc1NhbWUodG9kYXksICdkYXknKSAmJiAhb3B0aW9ucz8uc2hvd1RpbWVGb3JUb2RheSkge1xuICAgICAgZGlzcGxheVZhbHVlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQob3B0aW9ucz8udG9kYXlMYWJlbCA/IG9wdGlvbnM/LnRvZGF5TGFiZWwgOiAndG9kYXknKTtcbiAgICAgIHByZWZpeFZhbHVlID0gb3B0aW9ucz8udG9kYXlQcmVmaXggPz8gJyc7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZC5pc1NhbWUodG9kYXksICdkYXknKSAmJiBvcHRpb25zPy5zaG93VGltZUZvclRvZGF5ICYmICF0aW1lRGlzcGxheSkge1xuICAgICAgZGlzcGxheVZhbHVlID0gdGhpcy50aW1lRGlzcGxheVBpcGUudHJhbnNmb3JtKHRpbWVTZWxlY3RlZCk7XG4gICAgICBwcmVmaXhWYWx1ZSA9IG9wdGlvbnM/LnRvZGF5VGltZVByZWZpeCA/PyAnJ1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQuaXNTYW1lKHllc3RlcmRheSwgJ2RheScpKSB7XG4gICAgICBkaXNwbGF5VmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChvcHRpb25zPy55ZXN0ZXJkYXlMYWJlbCA/IG9wdGlvbnM/Lnllc3RlcmRheUxhYmVsIDogJ3llc3RlcmRheScpO1xuICAgICAgcHJlZml4VmFsdWUgPSBvcHRpb25zPy55ZXN0ZXJkYXlQcmVmaXggPz8gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlWYWx1ZSA9IHRoaXMuZGF0ZURpc3BsYXlQaXBlLnRyYW5zZm9ybSh0aW1lU2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8vIElmIHdlIGhhdmUgYSBkZWZhdWx0IHByZWZpeCBhbmQgbm8gc3BlY2lmaWMgb25lcyB3ZXJlIHNldCBlYXJsaWVyIGFwcGx5IHRoZSBkZWZhdWx0IHByZWZpeFxuICAgIGlmIChvcHRpb25zPy5kZWZhdWx0UHJlZml4ICYmIHByZWZpeFZhbHVlID09PSAnJykge1xuICAgICAgcHJlZml4VmFsdWUgPSBvcHRpb25zLmRlZmF1bHRQcmVmaXg7XG4gICAgfVxuXG4gICAgLy8gQWRkIGEgc3BhY2UgYWZ0ZXIgb3VyIHByZWZpeCBpZiBkZWZpbmVkXG4gICAgaWYgKHByZWZpeFZhbHVlICE9PSAnJykge1xuICAgICAgcHJlZml4VmFsdWUgPSBgJHtwcmVmaXhWYWx1ZX0gYDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGAke3ByZWZpeFZhbHVlfSR7ZGlzcGxheVZhbHVlfSR7dGltZURpc3BsYXl9YDtcbiAgfVxufVxuIl19
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@ngx-translate/core";
|
|
4
|
-
export class RowCountPipe {
|
|
5
|
-
constructor(translateService) {
|
|
6
|
-
this.translateService = translateService;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Get the formatted row count for the results.
|
|
10
|
-
*
|
|
11
|
-
* Provide maxItemCount if the normal row count is needed.
|
|
12
|
-
* Provide pagingInfo if the paged row count is needed.
|
|
13
|
-
*/
|
|
14
|
-
//Note that totalPagedItemCount is not necessarily equal to pagingInfo.pageSize since the last page could have less than pageSize rows.
|
|
15
|
-
transform(results, objectType, maxItemCount, pagingInfo) {
|
|
16
|
-
let translated = this.translateService.instant(objectType || 'results');
|
|
17
|
-
if (maxItemCount !== undefined) {
|
|
18
|
-
return this.getResultsCount(results, translated, maxItemCount);
|
|
19
|
-
}
|
|
20
|
-
else if (pagingInfo) {
|
|
21
|
-
return this.getPagedResultsCount(results, translated, pagingInfo);
|
|
22
|
-
}
|
|
23
|
-
return '';
|
|
24
|
-
}
|
|
25
|
-
getResultsCount(results, objectType, maxItemCount) {
|
|
26
|
-
// If the filtered results count of rows is greater than the maximum number
|
|
27
|
-
// of results we want to show, we have already pared the results down,
|
|
28
|
-
// so tell user we are displaying the first `maxItemCount` results out of the total
|
|
29
|
-
// count of filtered results.
|
|
30
|
-
if (results.totalItems > maxItemCount) {
|
|
31
|
-
return `${maxItemCount} ${this.translateService.instant('of')} ${results.totalItems}`;
|
|
32
|
-
}
|
|
33
|
-
return `${results.totalItems} ${objectType}`;
|
|
34
|
-
}
|
|
35
|
-
getPagedResultsCount(results, objectType, pagingInfo) {
|
|
36
|
-
let prefix = `${pagingInfo.skip + 1}` + (results.totalItems > 1 ? `-${pagingInfo.skip + results.totalItems} ` : ' ');
|
|
37
|
-
return prefix + `${this.translateService.instant('of')} ${results.totalItemsBeforePaging} ${objectType}`;
|
|
38
|
-
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowCountPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
40
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RowCountPipe, name: "rowCount" }); }
|
|
41
|
-
}
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowCountPipe, decorators: [{
|
|
43
|
-
type: Pipe,
|
|
44
|
-
args: [{
|
|
45
|
-
name: 'rowCount'
|
|
46
|
-
}]
|
|
47
|
-
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvcm93LWNvdW50LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVlwRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQ7Ozs7O09BS0c7SUFDSCx1SUFBdUk7SUFDdkksU0FBUyxDQUFDLE9BQXFCLEVBQUUsVUFBa0IsRUFBRSxZQUFxQixFQUFFLFVBQXVCO1FBQ2pHLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLElBQUcsWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7YUFBTSxJQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUdPLGVBQWUsQ0FBQyxPQUFxQixFQUFFLFVBQWtCLEVBQUUsWUFBb0I7UUFDckYsMkVBQTJFO1FBQzNFLHNFQUFzRTtRQUN0RSxtRkFBbUY7UUFDbkYsNkJBQTZCO1FBQzdCLElBQUksT0FBTyxDQUFDLFVBQVUsR0FBRyxZQUFZLEVBQUUsQ0FBQztZQUN0QyxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hGLENBQUM7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBcUIsRUFBRSxVQUFrQixFQUFFLFVBQXNCO1FBQzVGLElBQUksTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNySCxPQUFPLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLHNCQUFzQixJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQzNHLENBQUM7K0dBcENVLFlBQVk7NkdBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFIeEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQYWdpbmdJbmZvIH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS90YWJsZS90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIFJvd0NvdW50SW5mbyA9IHsgXG4gIHRvdGFsSXRlbXM6IG51bWJlcixcbiAgdG90YWxJdGVtc0JlZm9yZVBhZ2luZz86IG51bWJlcixcbn1cblxuQFBpcGUoe1xuICBuYW1lOiAncm93Q291bnQnXG59KVxuZXhwb3J0IGNsYXNzIFJvd0NvdW50UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICAvKipcbiAgICogR2V0IHRoZSBmb3JtYXR0ZWQgcm93IGNvdW50IGZvciB0aGUgcmVzdWx0cy5cbiAgICogXG4gICAqIFByb3ZpZGUgbWF4SXRlbUNvdW50IGlmIHRoZSBub3JtYWwgcm93IGNvdW50IGlzIG5lZWRlZC5cbiAgICogUHJvdmlkZSBwYWdpbmdJbmZvIGlmIHRoZSBwYWdlZCByb3cgY291bnQgaXMgbmVlZGVkLlxuICAgKi9cbiAgLy9Ob3RlIHRoYXQgdG90YWxQYWdlZEl0ZW1Db3VudCBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gcGFnaW5nSW5mby5wYWdlU2l6ZSBzaW5jZSB0aGUgbGFzdCBwYWdlIGNvdWxkIGhhdmUgbGVzcyB0aGFuIHBhZ2VTaXplIHJvd3MuXG4gIHRyYW5zZm9ybShyZXN1bHRzOiBSb3dDb3VudEluZm8sIG9iamVjdFR5cGU6IHN0cmluZywgbWF4SXRlbUNvdW50PzogbnVtYmVyLCBwYWdpbmdJbmZvPzogUGFnaW5nSW5mbyk6IHN0cmluZyB7XG4gICAgbGV0IHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChvYmplY3RUeXBlIHx8ICdyZXN1bHRzJyk7XG4gICAgaWYobWF4SXRlbUNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFJlc3VsdHNDb3VudChyZXN1bHRzLCB0cmFuc2xhdGVkLCBtYXhJdGVtQ291bnQpO1xuICAgIH0gZWxzZSBpZihwYWdpbmdJbmZvKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRQYWdlZFJlc3VsdHNDb3VudChyZXN1bHRzLCB0cmFuc2xhdGVkLCBwYWdpbmdJbmZvKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cblxuICBwcml2YXRlIGdldFJlc3VsdHNDb3VudChyZXN1bHRzOiBSb3dDb3VudEluZm8sIG9iamVjdFR5cGU6IHN0cmluZywgbWF4SXRlbUNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIC8vIElmIHRoZSBmaWx0ZXJlZCByZXN1bHRzIGNvdW50IG9mIHJvd3MgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIG51bWJlclxuICAgIC8vIG9mIHJlc3VsdHMgd2Ugd2FudCB0byBzaG93LCB3ZSBoYXZlIGFscmVhZHkgcGFyZWQgdGhlIHJlc3VsdHMgZG93bixcbiAgICAvLyBzbyB0ZWxsIHVzZXIgd2UgYXJlIGRpc3BsYXlpbmcgdGhlIGZpcnN0IGBtYXhJdGVtQ291bnRgIHJlc3VsdHMgb3V0IG9mIHRoZSB0b3RhbFxuICAgIC8vIGNvdW50IG9mIGZpbHRlcmVkIHJlc3VsdHMuXG4gICAgaWYgKHJlc3VsdHMudG90YWxJdGVtcyA+IG1heEl0ZW1Db3VudCkge1xuICAgICAgcmV0dXJuIGAke21heEl0ZW1Db3VudH0gJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnb2YnKX0gJHtyZXN1bHRzLnRvdGFsSXRlbXN9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3Jlc3VsdHMudG90YWxJdGVtc30gJHtvYmplY3RUeXBlfWA7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VkUmVzdWx0c0NvdW50KHJlc3VsdHM6IFJvd0NvdW50SW5mbywgb2JqZWN0VHlwZTogc3RyaW5nLCBwYWdpbmdJbmZvOiBQYWdpbmdJbmZvKTogc3RyaW5nIHtcbiAgICBsZXQgcHJlZml4ID0gYCR7cGFnaW5nSW5mby5za2lwICsgMX1gICsgKHJlc3VsdHMudG90YWxJdGVtcyA+IDEgPyBgLSR7cGFnaW5nSW5mby5za2lwICsgcmVzdWx0cy50b3RhbEl0ZW1zfSBgIDogJyAnKTtcbiAgICByZXR1cm4gcHJlZml4ICsgYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ29mJyl9ICR7cmVzdWx0cy50b3RhbEl0ZW1zQmVmb3JlUGFnaW5nfSAke29iamVjdFR5cGV9YDtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import moment from 'moment';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../user-preference.service";
|
|
5
|
-
/**
|
|
6
|
-
* Format a time to the user's preference for display
|
|
7
|
-
*/
|
|
8
|
-
export class TimeDisplayPipe {
|
|
9
|
-
constructor(userPreferenceService) {
|
|
10
|
-
this.userPreferenceService = userPreferenceService;
|
|
11
|
-
this.lastFormatString = 'HH:mm:ss';
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Format a time for display, accounting for user's display preferences.
|
|
15
|
-
*/
|
|
16
|
-
transform(time, showSeconds) {
|
|
17
|
-
let display = '';
|
|
18
|
-
let formatString = '';
|
|
19
|
-
// use user-preferred formats
|
|
20
|
-
this.userPreferenceService.getPreferences().subscribe(result => {
|
|
21
|
-
//if preferences exist then format time to users preference
|
|
22
|
-
//otherwise use the last user preference
|
|
23
|
-
if (result.preference) {
|
|
24
|
-
formatString = result.preference.timeFormat;
|
|
25
|
-
if (!showSeconds) {
|
|
26
|
-
formatString = formatString.replace(':ss', '');
|
|
27
|
-
}
|
|
28
|
-
this.lastFormatString = formatString;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
display = moment(time).format(this.lastFormatString);
|
|
32
|
-
return display;
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeDisplayPipe, deps: [{ token: i1.UserPreferenceService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
35
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TimeDisplayPipe, name: "timeDisplay" }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeDisplayPipe, decorators: [{
|
|
38
|
-
type: Pipe,
|
|
39
|
-
args: [{ name: 'timeDisplay' }]
|
|
40
|
-
}], ctorParameters: () => [{ type: i1.UserPreferenceService }] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kaXNwbGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvdGltZS1kaXNwbGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFHNUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUV4RCxxQkFBZ0IsR0FBVyxVQUFVLENBQUM7SUFGc0IsQ0FBQztJQUlyRTs7T0FFRztJQUNILFNBQVMsQ0FBQyxJQUFrQixFQUFFLFdBQXFCO1FBQ2pELElBQUksT0FBTyxHQUFXLEVBQUUsQ0FBQztRQUN6QixJQUFJLFlBQVksR0FBVyxFQUFFLENBQUM7UUFFOUIsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0QsNERBQTREO1lBQzVELHdDQUF3QztZQUN4QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFXLENBQUMsVUFBVyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2pCLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDakQsQ0FBQztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7K0dBM0JVLGVBQWU7NkdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsSUFBSTttQkFBQyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLXByZWZlcmVuY2Uuc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlRGlzcGxheSB9IGZyb20gJy4vZGF0ZS1kaXNwbGF5LnBpcGUnO1xuXG4vKipcbiAqIEZvcm1hdCBhIHRpbWUgdG8gdGhlIHVzZXIncyBwcmVmZXJlbmNlIGZvciBkaXNwbGF5XG4gKi9cbkBQaXBlKHtuYW1lOiAndGltZURpc3BsYXknfSlcbmV4cG9ydCBjbGFzcyBUaW1lRGlzcGxheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVzZXJQcmVmZXJlbmNlU2VydmljZTogVXNlclByZWZlcmVuY2VTZXJ2aWNlKSB7IH1cblxuICBwcml2YXRlIGxhc3RGb3JtYXRTdHJpbmc6IHN0cmluZyA9ICdISDptbTpzcyc7XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhIHRpbWUgZm9yIGRpc3BsYXksIGFjY291bnRpbmcgZm9yIHVzZXIncyBkaXNwbGF5IHByZWZlcmVuY2VzLlxuICAgKi9cbiAgdHJhbnNmb3JtKHRpbWU/OiBEYXRlRGlzcGxheSwgc2hvd1NlY29uZHM/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBsZXQgZGlzcGxheTogc3RyaW5nID0gJyc7XG4gICAgbGV0IGZvcm1hdFN0cmluZzogc3RyaW5nID0gJyc7XG4gICAgXG4gICAgLy8gdXNlIHVzZXItcHJlZmVycmVkIGZvcm1hdHNcbiAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5nZXRQcmVmZXJlbmNlcygpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgLy9pZiBwcmVmZXJlbmNlcyBleGlzdCB0aGVuIGZvcm1hdCB0aW1lIHRvIHVzZXJzIHByZWZlcmVuY2UgXG4gICAgICAvL290aGVyd2lzZSB1c2UgdGhlIGxhc3QgdXNlciBwcmVmZXJlbmNlXG4gICAgICBpZiAocmVzdWx0LnByZWZlcmVuY2UpIHtcbiAgICAgICAgZm9ybWF0U3RyaW5nID0gcmVzdWx0LnByZWZlcmVuY2UhLnRpbWVGb3JtYXQhO1xuICAgICAgICBpZiAoIXNob3dTZWNvbmRzKSB7XG4gICAgICAgICAgZm9ybWF0U3RyaW5nID0gZm9ybWF0U3RyaW5nLnJlcGxhY2UoJzpzcycsICcnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhc3RGb3JtYXRTdHJpbmcgPSBmb3JtYXRTdHJpbmc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGlzcGxheSA9IG1vbWVudCh0aW1lKS5mb3JtYXQodGhpcy5sYXN0Rm9ybWF0U3RyaW5nKTtcbiAgICByZXR1cm4gZGlzcGxheTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/** Common unicode strings */
|
|
2
|
-
export class UnicodeStrings {
|
|
3
|
-
/** Equivalent of – */
|
|
4
|
-
static { this.ndash = '\u2013'; }
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvZGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLGNBQWM7SUFFdkIsNEJBQTRCO2FBQ2QsVUFBSyxHQUFXLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbSc7XG5cblxuLyoqXG4gKiBUaGUgc3RhdHVzIG9mIGFueSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBjb250ZW50XG4gKi9cbmV4cG9ydCB0eXBlIFZpZXdTdGF0dXMgPSAncGVuZGluZycgfCAnaGFzRGF0YScgfCAnbm9EYXRhJyB8ICdlcnJvcic7XG5cbi8qKiBDb21tb24gdW5pY29kZSBzdHJpbmdzICovXG5leHBvcnQgY2xhc3MgVW5pY29kZVN0cmluZ3Mge1xuXG4gICAgLyoqIEVxdWl2YWxlbnQgb2YgJm5kYXNoOyAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbmRhc2g6IHN0cmluZyA9ICdcXHUyMDEzJztcbn1cblxuXG4vKipcbiAqIFRoZSBEaXNwbGF5IGludGVyZmFjZSBkZWZpbmVzIGNvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbnkgY29tcG9uZW50IHRoYXQgd291bGRcbiAqIGRpc3BsYXkgY29udGVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlTdGF0dXMge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHN0YXR1cyBvZiB0aGUgZGlzcGxheVxuICAgICAqL1xuICAgIHN0YXR1czogVmlld1N0YXR1cztcblxuXG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gc3RhdHVzIGlzIG5vdCAnaGFzRGF0YSdcbiAgICAgKi9cbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcHJvcGVydGllcyBvZiBhbiBhY3Rpb24gYnV0dG9uIHRoYXQgY2FuIGJlIHNob3duIHdoZW4gc3RhdHVzIGlzIG5vdCAnaGFzRGF0YSdcbiAgICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIGR1ZSB0byBub0RhdGFUZW1wbGF0ZSBiZWluZyBwcmVmZXJlZFxuICAgICAqL1xuICAgIGFjdGlvbj86IE5hdkl0ZW07XG5cbiAgICAvKipcbiAgICAgKiBUZW1wbGF0ZSB0byBzaG93IHdoZW4gdGhlIHN0YXR1cyBpcyBub0RhdGFcbiAgICAgKi9cbiAgICBub0RhdGFUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBNYXNrIChub3QgcmVtb3ZlKSB0aGUgdHJhbnNjbHVkZWQgY29udGVudCBmcm9tIHRoZSBkb20gd2hpbGUgbm90IGhhc0RhdGEgc3RhdHVzLlxuICAgICAqL1xuICAgIGRpc3BsYXlBc01hc2s/OiBib29sZWFuO1xuXG4gICAgLyoqIFxuICAgICAqIEFkZGl0aW9uYWwgY3NzIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGhlIC5vdmVybGF5IGVsZW1lbnQgXG4gICAgICovXG4gICAgb3ZlcmxheUNsYXNzTGlzdD86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Validators } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Helper for Form Groups
|
|
6
|
-
*/
|
|
7
|
-
export class FormGroupHelper {
|
|
8
|
-
/**
|
|
9
|
-
* Call patchValue on the formGroup with only the properties
|
|
10
|
-
* that actually have values in updates. This method will ignore
|
|
11
|
-
* any value that is either null or undefined
|
|
12
|
-
*/
|
|
13
|
-
patchValueSafely(formGroup, updates) {
|
|
14
|
-
let safeUpdates = {};
|
|
15
|
-
Object.keys(updates).forEach(function (propName) {
|
|
16
|
-
let rawValue = updates[propName];
|
|
17
|
-
if (rawValue !== null && rawValue !== undefined) {
|
|
18
|
-
safeUpdates[propName] = rawValue;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
formGroup.patchValue(safeUpdates);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get an id for the form controls input
|
|
25
|
-
*/
|
|
26
|
-
getInputId(id) {
|
|
27
|
-
return id + '_input';
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Takes in a control and returns a function that sets the control's required validator based on
|
|
31
|
-
* whether the value provided is empty or not. Adds the required validator if the value provided is
|
|
32
|
-
* not empty, otherwise removes the required validator. Useful for dynamically setting the requiredness
|
|
33
|
-
* of a control based on whether another control has a value or not.
|
|
34
|
-
*
|
|
35
|
-
* @param control
|
|
36
|
-
* @param keepValidators - Array of Validators to leave configured on the control. Any existing
|
|
37
|
-
* validators on the control will be lost if this is left empty.
|
|
38
|
-
* @param isZeroEmpty - If true, a numeric zero will be considered an empty value. Default is false.
|
|
39
|
-
*/
|
|
40
|
-
setRequiredFn(control, keepValidators = [], isZeroEmpty = false) {
|
|
41
|
-
return (value) => {
|
|
42
|
-
let validators = [...keepValidators];
|
|
43
|
-
// If the value is not empty, add the required validator.
|
|
44
|
-
if (value || (!isZeroEmpty ? value === 0 : false)) {
|
|
45
|
-
validators.push(Validators.required);
|
|
46
|
-
}
|
|
47
|
-
if (validators.length > 0) {
|
|
48
|
-
control.setValidators(validators);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
control.clearValidators();
|
|
52
|
-
}
|
|
53
|
-
// Recalculating the value is required when changing the validators, otherwise
|
|
54
|
-
// the validator won't take effect until the value is changed in the control.
|
|
55
|
-
control.updateValueAndValidity({ emitEvent: false });
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormGroupHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
59
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormGroupHelper, providedIn: 'root' }); }
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormGroupHelper, decorators: [{
|
|
62
|
-
type: Injectable,
|
|
63
|
-
args: [{
|
|
64
|
-
providedIn: 'root'
|
|
65
|
-
}]
|
|
66
|
-
}] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFrRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFNUY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQUV4Qjs7OztPQUlHO0lBQ0ksZ0JBQWdCLENBQUMsU0FBMkIsRUFBRSxPQUFZO1FBQzdELElBQUksV0FBVyxHQUF5QixFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxRQUFRO1lBQzNDLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVqQyxJQUFHLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBQyxDQUFDO2dCQUM1QyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLEVBQVU7UUFDeEIsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksYUFBYSxDQUFDLE9BQXdCLEVBQUUsaUJBQWdDLEVBQUUsRUFBRSxjQUF1QixLQUFLO1FBQzNHLE9BQU8sQ0FBQyxLQUE4QixFQUFFLEVBQUU7WUFDdEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO1lBRXJDLHlEQUF5RDtZQUN6RCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDOUIsQ0FBQztZQUNELDhFQUE4RTtZQUM5RSw2RUFBNkU7WUFDN0UsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFBO0lBQ0wsQ0FBQzsrR0F2RFEsZUFBZTttSEFBZixlQUFlLGNBRlosTUFBTTs7NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIEhlbHBlciBmb3IgRm9ybSBHcm91cHNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtR3JvdXBIZWxwZXIge1xuXG4gICAgLyoqXG4gICAgICogQ2FsbCBwYXRjaFZhbHVlIG9uIHRoZSBmb3JtR3JvdXAgd2l0aCBvbmx5IHRoZSBwcm9wZXJ0aWVzXG4gICAgICogdGhhdCBhY3R1YWxseSBoYXZlIHZhbHVlcyBpbiB1cGRhdGVzLiBUaGlzIG1ldGhvZCB3aWxsIGlnbm9yZVxuICAgICAqIGFueSB2YWx1ZSB0aGF0IGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHB1YmxpYyBwYXRjaFZhbHVlU2FmZWx5KGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCwgdXBkYXRlczogYW55KXtcbiAgICAgICAgbGV0IHNhZmVVcGRhdGVzOiB7IFtrOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICAgICAgICAgICAgbGV0IHJhd1ZhbHVlID0gdXBkYXRlc1twcm9wTmFtZV07XG5cbiAgICAgICAgICAgIGlmKHJhd1ZhbHVlICE9PSBudWxsICYmIHJhd1ZhbHVlICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHNhZmVVcGRhdGVzW3Byb3BOYW1lXSA9IHJhd1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZm9ybUdyb3VwLnBhdGNoVmFsdWUoc2FmZVVwZGF0ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbiBpZCBmb3IgdGhlIGZvcm0gY29udHJvbHMgaW5wdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SW5wdXRJZChpZDogc3RyaW5nKTpzdHJpbmcge1xuICAgICAgICByZXR1cm4gaWQgKyAnX2lucHV0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBpbiBhIGNvbnRyb2wgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHNldHMgdGhlIGNvbnRyb2wncyByZXF1aXJlZCB2YWxpZGF0b3IgYmFzZWQgb25cbiAgICAgKiB3aGV0aGVyIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBlbXB0eSBvciBub3QuIEFkZHMgdGhlIHJlcXVpcmVkIHZhbGlkYXRvciBpZiB0aGUgdmFsdWUgcHJvdmlkZWQgaXNcbiAgICAgKiBub3QgZW1wdHksIG90aGVyd2lzZSByZW1vdmVzIHRoZSByZXF1aXJlZCB2YWxpZGF0b3IuIFVzZWZ1bCBmb3IgZHluYW1pY2FsbHkgc2V0dGluZyB0aGUgcmVxdWlyZWRuZXNzXG4gICAgICogb2YgYSBjb250cm9sIGJhc2VkIG9uIHdoZXRoZXIgYW5vdGhlciBjb250cm9sIGhhcyBhIHZhbHVlIG9yIG5vdC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29udHJvbFxuICAgICAqIEBwYXJhbSBrZWVwVmFsaWRhdG9ycyAtIEFycmF5IG9mIFZhbGlkYXRvcnMgdG8gbGVhdmUgY29uZmlndXJlZCBvbiB0aGUgY29udHJvbC4gQW55IGV4aXN0aW5nXG4gICAgICogdmFsaWRhdG9ycyBvbiB0aGUgY29udHJvbCB3aWxsIGJlIGxvc3QgaWYgdGhpcyBpcyBsZWZ0IGVtcHR5LlxuICAgICAqIEBwYXJhbSBpc1plcm9FbXB0eSAtIElmIHRydWUsIGEgbnVtZXJpYyB6ZXJvIHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlbXB0eSB2YWx1ZS4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UmVxdWlyZWRGbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGtlZXBWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW10sIGlzWmVyb0VtcHR5OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgICAgIGxldCB2YWxpZGF0b3JzID0gWy4uLmtlZXBWYWxpZGF0b3JzXTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBlbXB0eSwgYWRkIHRoZSByZXF1aXJlZCB2YWxpZGF0b3IuXG4gICAgICAgICAgICBpZiAodmFsdWUgfHwgKCFpc1plcm9FbXB0eSA/IHZhbHVlID09PSAwIDogZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVjYWxjdWxhdGluZyB0aGUgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBjaGFuZ2luZyB0aGUgdmFsaWRhdG9ycywgb3RoZXJ3aXNlXG4gICAgICAgICAgICAvLyB0aGUgdmFsaWRhdG9yIHdvbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkIGluIHRoZSBjb250cm9sLlxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class JsonHelper {
|
|
2
|
-
/**
|
|
3
|
-
* Parse given JSON text into an object.
|
|
4
|
-
* Returns undefined if text cannot be parsed as JSON.
|
|
5
|
-
*/
|
|
6
|
-
static tryParseJSON(text) {
|
|
7
|
-
if (!text) {
|
|
8
|
-
return undefined;
|
|
9
|
-
}
|
|
10
|
-
try {
|
|
11
|
-
const result = JSON.parse(text);
|
|
12
|
-
return result;
|
|
13
|
-
}
|
|
14
|
-
catch (err) {
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2pzb24taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBRXJCOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBK0I7UUFDeEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEpzb25IZWxwZXIge1xuXG4gIC8qKlxuICAgKiBQYXJzZSBnaXZlbiBKU09OIHRleHQgaW50byBhbiBvYmplY3QuXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRleHQgY2Fubm90IGJlIHBhcnNlZCBhcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0cnlQYXJzZUpTT04odGV4dDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHVua25vd24gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufSJdfQ==
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { get, orderBy, sortBy } from "lodash";
|
|
2
|
-
/** A wrapper around the lodash sortBy that supports treating upper case and lower case text as the same.
|
|
3
|
-
* If the underlying property value is not a string (or is null or undefined) this function will behave just like lodash's original
|
|
4
|
-
* The original array is not modified, and the result is a newly created array to avoid any side effects (just like the lodash implementation)
|
|
5
|
-
* String properties are normalized by case for comparisons to prevent sorting AbC as ACb
|
|
6
|
-
* @param items - the set of items to sort. Expected to be a set of complex objects to sort by the given properties
|
|
7
|
-
* @param properties - a list of values, each of which can be number, date, string, etc property types.
|
|
8
|
-
* Can be the name or path to the property to look at, passed to the lodash get function so "address.line1" works if item is
|
|
9
|
-
* a meter object like {meterName: 'name', addres: { line1: '100 Factory Street' } }
|
|
10
|
-
* @see https://lodash.com/docs/4.17.10#get
|
|
11
|
-
*/
|
|
12
|
-
export function sortByIgnoreCase(items, properties) {
|
|
13
|
-
let iteratees = [];
|
|
14
|
-
iteratees = properties.map(prop => {
|
|
15
|
-
return (item) => safeToLower(item, prop);
|
|
16
|
-
});
|
|
17
|
-
return sortBy(items, iteratees);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* A wrapper around the lodash orderBy that supports treating upper case and lower case text as the same.
|
|
21
|
-
* @param items - the set of items to sort. Expected to be a set of complex objects to sort by the given properties
|
|
22
|
-
* @param properties - a list of values, each of which can be number, date, string, etc property types.
|
|
23
|
-
* @param direction - the direction in which to sort, the pass in an array of directions to match an array of properties
|
|
24
|
-
*/
|
|
25
|
-
export function orderByIgnoreCase(items, properties, direction) {
|
|
26
|
-
let iteratees = [];
|
|
27
|
-
iteratees = properties.map(prop => {
|
|
28
|
-
// Treat nulls as empty string to sort them at the bottom when decending, helpful when looking at dates
|
|
29
|
-
return (item) => safeToLower(item, prop) || '';
|
|
30
|
-
});
|
|
31
|
-
return orderBy(items, iteratees, direction);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Convert the provided item's property to the lowercase version of it if that property
|
|
35
|
-
* has a value and the value is a string. Non-string or null/undefined values are kept exactly as they were
|
|
36
|
-
* @param item - the object on which the value will be read and interpreted
|
|
37
|
-
* @param prop - the name or path to the property to look at, passed to the lodash get function so "address.line1" works if item is
|
|
38
|
-
* a meter object like {meterName: 'name', address: { line1: '100 Factory Street' } }
|
|
39
|
-
* @see https://lodash.com/docs/4.17.10#get
|
|
40
|
-
*/
|
|
41
|
-
function safeToLower(item, prop) {
|
|
42
|
-
let value = get(item, prop);
|
|
43
|
-
if (item && typeof value === 'string') {
|
|
44
|
-
return value.toLowerCase();
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
// @ts-ignore
|
|
48
|
-
return item[prop];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvbG9kYXNoLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUM7Ozs7Ozs7OztFQVNFO0FBQ0YsTUFBTSxVQUFVLGdCQUFnQixDQUFJLEtBQVUsRUFBRSxVQUFvQjtJQUNsRSxJQUFJLFNBQVMsR0FBZ0UsRUFBRSxDQUFDO0lBRWhGLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFbEMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFJLEtBQVUsRUFBRSxVQUFvQixFQUFFLFNBQStCO0lBQ3BHLElBQUksU0FBUyxHQUFnRSxFQUFFLENBQUM7SUFFaEYsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDaEMsdUdBQXVHO1FBQ3ZHLE9BQU8sQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsV0FBVyxDQUFJLElBQU8sRUFBRSxJQUFZO0lBQzNDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUIsSUFBRyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFDLENBQUM7UUFDcEMsT0FBZ0IsS0FBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxDQUFDO1FBQ04sYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCwgb3JkZXJCeSwgc29ydEJ5IH0gZnJvbSBcImxvZGFzaFwiO1xuXG4vKiogQSB3cmFwcGVyIGFyb3VuZCB0aGUgbG9kYXNoIHNvcnRCeSB0aGF0IHN1cHBvcnRzIHRyZWF0aW5nIHVwcGVyIGNhc2UgYW5kIGxvd2VyIGNhc2UgdGV4dCBhcyB0aGUgc2FtZS4gIFxuICogSWYgdGhlIHVuZGVybHlpbmcgcHJvcGVydHkgdmFsdWUgaXMgbm90IGEgc3RyaW5nIChvciBpcyBudWxsIG9yIHVuZGVmaW5lZCkgdGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgbG9kYXNoJ3Mgb3JpZ2luYWxcbiAqIFRoZSBvcmlnaW5hbCBhcnJheSBpcyBub3QgbW9kaWZpZWQsIGFuZCB0aGUgcmVzdWx0IGlzIGEgbmV3bHkgY3JlYXRlZCBhcnJheSB0byBhdm9pZCBhbnkgc2lkZSBlZmZlY3RzIChqdXN0IGxpa2UgdGhlIGxvZGFzaCBpbXBsZW1lbnRhdGlvbilcbiAqIFN0cmluZyBwcm9wZXJ0aWVzIGFyZSBub3JtYWxpemVkIGJ5IGNhc2UgZm9yIGNvbXBhcmlzb25zIHRvIHByZXZlbnQgc29ydGluZyBBYkMgYXMgQUNiXG4gKiBAcGFyYW0gaXRlbXMgLSB0aGUgc2V0IG9mIGl0ZW1zIHRvIHNvcnQuIEV4cGVjdGVkIHRvIGJlIGEgc2V0IG9mIGNvbXBsZXggb2JqZWN0cyB0byBzb3J0IGJ5IHRoZSBnaXZlbiBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0gcHJvcGVydGllcyAtIGEgbGlzdCBvZiB2YWx1ZXMsIGVhY2ggb2Ygd2hpY2ggY2FuIGJlIG51bWJlciwgZGF0ZSwgc3RyaW5nLCBldGMgcHJvcGVydHkgdHlwZXMuIFxuICogICAgICAgIENhbiBiZSB0aGUgbmFtZSBvciBwYXRoIHRvIHRoZSBwcm9wZXJ0eSB0byBsb29rIGF0LCBwYXNzZWQgdG8gdGhlIGxvZGFzaCBnZXQgZnVuY3Rpb24gc28gXCJhZGRyZXNzLmxpbmUxXCIgd29ya3MgaWYgaXRlbSBpc1xuICogICAgICAgIGEgbWV0ZXIgb2JqZWN0IGxpa2Uge21ldGVyTmFtZTogJ25hbWUnLCBhZGRyZXM6IHsgbGluZTE6ICcxMDAgRmFjdG9yeSBTdHJlZXQnIH0gfVxuICogQHNlZSBodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjEwI2dldFxuKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlJZ25vcmVDYXNlPFQ+KGl0ZW1zOiBUW10sIHByb3BlcnRpZXM6IHN0cmluZ1tdKSA6IFRbXSB7XG4gIGxldCBpdGVyYXRlZXM6ICgodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGNvbGxlY3Rpb246IEFycmF5TGlrZTxUPik9PiBUKVtdID0gW107XG5cbiAgaXRlcmF0ZWVzID0gcHJvcGVydGllcy5tYXAocHJvcD0+e1xuICAgIHJldHVybiAoaXRlbTogVCkgPT4gc2FmZVRvTG93ZXIoaXRlbSwgcHJvcCk7XG4gIH0pO1xuXG4gIHJldHVybiBzb3J0QnkoaXRlbXMsIGl0ZXJhdGVlcyk7XG4gIFxufVxuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgdGhlIGxvZGFzaCBvcmRlckJ5IHRoYXQgc3VwcG9ydHMgdHJlYXRpbmcgdXBwZXIgY2FzZSBhbmQgbG93ZXIgY2FzZSB0ZXh0IGFzIHRoZSBzYW1lLlxuICogQHBhcmFtIGl0ZW1zIC0gdGhlIHNldCBvZiBpdGVtcyB0byBzb3J0LiBFeHBlY3RlZCB0byBiZSBhIHNldCBvZiBjb21wbGV4IG9iamVjdHMgdG8gc29ydCBieSB0aGUgZ2l2ZW4gcHJvcGVydGllc1xuICogQHBhcmFtIHByb3BlcnRpZXMgLSBhIGxpc3Qgb2YgdmFsdWVzLCBlYWNoIG9mIHdoaWNoIGNhbiBiZSBudW1iZXIsIGRhdGUsIHN0cmluZywgZXRjIHByb3BlcnR5IHR5cGVzLiBcbiAqIEBwYXJhbSBkaXJlY3Rpb24gLSB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIHRvIHNvcnQsIHRoZSBwYXNzIGluIGFuIGFycmF5IG9mIGRpcmVjdGlvbnMgdG8gbWF0Y2ggYW4gYXJyYXkgb2YgcHJvcGVydGllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJCeUlnbm9yZUNhc2U8VD4oaXRlbXM6IFRbXSwgcHJvcGVydGllczogc3RyaW5nW10sIGRpcmVjdGlvbj86IEFycmF5PFwiYXNjXCJ8XCJkZXNjXCI+KTogVFtdIHtcbiAgbGV0IGl0ZXJhdGVlczogKCh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgY29sbGVjdGlvbjogQXJyYXlMaWtlPFQ+KT0+IFQpW10gPSBbXTtcblxuICBpdGVyYXRlZXMgPSBwcm9wZXJ0aWVzLm1hcChwcm9wID0+IHtcbiAgICAvLyBUcmVhdCBudWxscyBhcyBlbXB0eSBzdHJpbmcgdG8gc29ydCB0aGVtIGF0IHRoZSBib3R0b20gd2hlbiBkZWNlbmRpbmcsIGhlbHBmdWwgd2hlbiBsb29raW5nIGF0IGRhdGVzXG4gICAgcmV0dXJuIChpdGVtOiBUKSA9PiBzYWZlVG9Mb3dlcihpdGVtLCBwcm9wKSB8fCAnJztcbiAgfSk7XG5cbiAgcmV0dXJuIG9yZGVyQnkoaXRlbXMsIGl0ZXJhdGVlcywgZGlyZWN0aW9uKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBwcm92aWRlZCBpdGVtJ3MgcHJvcGVydHkgdG8gdGhlIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIGl0IGlmIHRoYXQgcHJvcGVydHlcbiAqIGhhcyBhIHZhbHVlIGFuZCB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuIE5vbi1zdHJpbmcgb3IgbnVsbC91bmRlZmluZWQgdmFsdWVzIGFyZSBrZXB0IGV4YWN0bHkgYXMgdGhleSB3ZXJlXG4gKiBAcGFyYW0gaXRlbSAtIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHZhbHVlIHdpbGwgIGJlIHJlYWQgYW5kIGludGVycHJldGVkXG4gKiBAcGFyYW0gcHJvcCAtIHRoZSBuYW1lIG9yIHBhdGggdG8gdGhlIHByb3BlcnR5IHRvIGxvb2sgYXQsIHBhc3NlZCB0byB0aGUgbG9kYXNoIGdldCBmdW5jdGlvbiBzbyBcImFkZHJlc3MubGluZTFcIiB3b3JrcyBpZiBpdGVtIGlzXG4gKiBhIG1ldGVyIG9iamVjdCBsaWtlIHttZXRlck5hbWU6ICduYW1lJywgYWRkcmVzczogeyBsaW5lMTogJzEwMCBGYWN0b3J5IFN0cmVldCcgfSB9XG4gKiBAc2VlIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuMTAjZ2V0XG4gKi9cbmZ1bmN0aW9uIHNhZmVUb0xvd2VyPFQ+KGl0ZW06IFQsIHByb3A6IHN0cmluZyl7XG4gIGxldCB2YWx1ZSA9IGdldChpdGVtLCBwcm9wKTtcbiAgaWYoaXRlbSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXtcbiAgICByZXR1cm4gKDxzdHJpbmc+dmFsdWUpLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBpdGVtW3Byb3BdO1xuICB9XG59OyJdfQ==
|