@energycap/components 0.41.0 → 0.41.1-ECAP-27592-angular-17.20241220-1140
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/{esm2020 → esm2022}/energycap-components.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components.module.mjs +418 -418
- package/{esm2020 → esm2022}/lib/controls/banner/banner.component.mjs +109 -109
- package/{esm2020 → esm2022}/lib/controls/button/button.component.mjs +106 -106
- package/{esm2020 → esm2022}/lib/controls/button/copy-button-base.directive.mjs +67 -67
- package/{esm2020 → esm2022}/lib/controls/button/copy-button.directive.mjs +28 -28
- package/{esm2020 → esm2022}/lib/controls/button/copy-table-button.directive.mjs +43 -43
- package/{esm2020 → esm2022}/lib/controls/calendar/calendar-item.component.mjs +59 -59
- package/{esm2020 → esm2022}/lib/controls/calendar/calendar.component.mjs +200 -200
- package/{esm2020 → esm2022}/lib/controls/calendar/calendar.types.mjs +3 -3
- package/{esm2020 → esm2022}/lib/controls/checkbox/checkbox.component.mjs +140 -140
- package/{esm2020 → esm2022}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
- package/{esm2020 → esm2022}/lib/controls/combobox/combobox.component.mjs +879 -879
- package/{esm2020 → esm2022}/lib/controls/date-input/date-input.component.mjs +256 -256
- package/{esm2020 → esm2022}/lib/controls/dropdown/dropdown.component.mjs +243 -243
- package/{esm2020 → esm2022}/lib/controls/file-upload/file-upload.component.mjs +261 -261
- package/{esm2020 → esm2022}/lib/controls/form-control/form-control.component.mjs +104 -104
- package/{esm2020 → esm2022}/lib/controls/form-control-base.mjs +151 -151
- package/{esm2020 → esm2022}/lib/controls/form-control-label/form-control-label.component.mjs +136 -136
- package/{esm2020 → esm2022}/lib/controls/form-group/form-group.component.mjs +261 -261
- package/{esm2020 → esm2022}/lib/controls/help-popover/help-popover.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/controls/item-picker/item-picker.component.mjs +329 -329
- package/{esm2020 → esm2022}/lib/controls/link-button/link-button.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/controls/menu/menu.component.mjs +485 -485
- package/{esm2020 → esm2022}/lib/controls/navigation/link-item.mjs +1 -1
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-group.mjs +38 -38
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-item-active.directive.mjs +92 -92
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-item.mjs +1 -1
- package/{esm2020 → esm2022}/lib/controls/numericbox/numericbox.component.mjs +372 -372
- package/{esm2020 → esm2022}/lib/controls/popover/popover.component.mjs +117 -117
- package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button-option.mjs +2 -2
- package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button.component.mjs +82 -82
- package/{esm2020 → esm2022}/lib/controls/select/select.component.mjs +88 -88
- package/{esm2020 → esm2022}/lib/controls/tabs/tabs.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/controls/textbox/textbox.component.mjs +155 -155
- package/{esm2020 → esm2022}/lib/core/cache.service.mjs +105 -105
- package/esm2022/lib/core/custom-validators.mjs +29 -0
- package/esm2022/lib/core/date-time-helper.mjs +220 -0
- package/{esm2020 → esm2022}/lib/core/error.service.mjs +61 -61
- package/{esm2020 → esm2022}/lib/core/router-helper.service.mjs +111 -111
- package/{esm2020 → esm2022}/lib/core/scroll.service.mjs +89 -89
- package/{esm2020 → esm2022}/lib/core/telemetry-tracker.service.mjs +16 -16
- package/{esm2020 → esm2022}/lib/core/telemetry.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/core/validation-message.service.mjs +185 -185
- package/{esm2020 → esm2022}/lib/core/validation-patterns.mjs +30 -30
- package/{esm2020 → esm2022}/lib/core/window.service.mjs +186 -186
- package/{esm2020 → esm2022}/lib/display/app-bar/app-bar.component.mjs +46 -46
- package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
- package/{esm2020 → esm2022}/lib/display/avatar/avatar.service.mjs +64 -64
- package/{esm2020 → esm2022}/lib/display/confirm/confirm.component.mjs +168 -168
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-content.mjs +1 -1
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -63
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-types.mjs +76 -76
- package/{esm2020 → esm2022}/lib/display/dialog/dialog.component.mjs +281 -281
- package/{esm2020 → esm2022}/lib/display/dialog/dialog.service.mjs +71 -71
- package/{esm2020 → esm2022}/lib/display/help/help-types.mjs +1 -1
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-base.mjs +111 -111
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -61
- package/{esm2020 → esm2022}/lib/display/item-display/item-display.component.mjs +81 -81
- package/{esm2020 → esm2022}/lib/display/json-display/json-display.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/display/resizable/resizable-base.mjs +120 -120
- package/{esm2020 → esm2022}/lib/display/resizable/resizable.component.mjs +52 -52
- package/{esm2020 → esm2022}/lib/display/spinner/spinner.component.mjs +12 -12
- package/{esm2020 → esm2022}/lib/display/splash/splash.component.mjs +42 -42
- package/{esm2020 → esm2022}/lib/display/splash/splash.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/display/table/resizable-column.component.mjs +20 -20
- package/{esm2020 → esm2022}/lib/display/table/resizable-table.directive.mjs +227 -227
- package/{esm2020 → esm2022}/lib/display/table/searchable-table.component.mjs +342 -342
- package/{esm2020 → esm2022}/lib/display/table/table-detail-row.component.mjs +19 -19
- package/{esm2020 → esm2022}/lib/display/table/table-locked-column.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/display/table/table-master-header-row.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/display/table/table-master-row.component.mjs +163 -163
- package/{esm2020 → esm2022}/lib/display/table/table-pagination.component.mjs +155 -155
- package/{esm2020 → esm2022}/lib/display/table/table-selectable-row.component.mjs +235 -235
- package/{esm2020 → esm2022}/lib/display/table/table.component.mjs +249 -249
- package/{esm2020 → esm2022}/lib/display/tags/tag.mjs +17 -17
- package/{esm2020 → esm2022}/lib/display/tags/tags.component.mjs +77 -77
- package/{esm2020 → esm2022}/lib/display/toast/toast/toast.component.mjs +77 -77
- package/{esm2020 → esm2022}/lib/display/toast/toast-types.mjs +7 -7
- package/{esm2020 → esm2022}/lib/display/toast/toast.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/display/toast/toaster/toaster.component.mjs +114 -114
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.component.mjs +28 -28
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.service.mjs +78 -78
- package/{esm2020 → esm2022}/lib/display/tooltip-directive/tooltip.directive.mjs +173 -173
- package/{esm2020 → esm2022}/lib/display/tour/tour-types.mjs +33 -33
- package/{esm2020 → esm2022}/lib/display/tour/tour.component.mjs +398 -398
- package/{esm2020 → esm2022}/lib/display/tour/tour.service.mjs +75 -75
- package/{esm2020 → esm2022}/lib/display/tree/tree.component.mjs +135 -135
- package/{esm2020 → esm2022}/lib/display/view-overlay/view-overlay.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -32
- package/{esm2020 → esm2022}/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -111
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
- package/{esm2020 → esm2022}/lib/shared/display/pipes/date-display.pipe.mjs +50 -50
- package/{esm2020 → esm2022}/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -30
- package/{esm2020 → esm2022}/lib/shared/display/pipes/relative-date.pipe.mjs +62 -62
- package/{esm2020 → esm2022}/lib/shared/display/pipes/row-count.pipe.mjs +48 -48
- package/{esm2020 → esm2022}/lib/shared/display/pipes/time-display.pipe.mjs +41 -41
- package/esm2022/lib/shared/display.mjs +6 -0
- package/esm2022/lib/shared/form-group.helper.mjs +67 -0
- package/{esm2020 → esm2022}/lib/shared/json-helper.mjs +18 -18
- package/esm2022/lib/shared/lodash-helper.mjs +52 -0
- package/{esm2020 → esm2022}/lib/shared/page/page-base/page-base.component.mjs +387 -387
- package/{esm2020 → esm2022}/lib/shared/page/page-statuses.mjs +22 -22
- package/{esm2020 → esm2022}/lib/shared/page/page-title/page-title.component.mjs +23 -23
- package/{esm2020 → esm2022}/lib/shared/page/page-view/page-view.component.mjs +147 -147
- package/{esm2020 → esm2022}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
- package/{esm2020 → esm2022}/lib/shared/testing/public-mocks.spec.mjs +148 -148
- package/{esm2020 → esm2022}/lib/shared/testing/spy-factory.spec.mjs +39 -39
- package/{esm2020 → esm2022}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
- package/{esm2020 → esm2022}/lib/shared/user-preference.service.mjs +17 -17
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -246
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
- package/{esm2020 → esm2022}/public-api.mjs +114 -114
- package/{fesm2020 → fesm2022}/energycap-components.mjs +11797 -11793
- package/fesm2022/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components.module.d.ts +91 -91
- package/lib/controls/banner/banner.component.d.ts +50 -50
- package/lib/controls/button/button.component.d.ts +78 -78
- package/lib/controls/button/copy-button-base.directive.d.ts +20 -20
- package/lib/controls/button/copy-button.directive.d.ts +14 -14
- package/lib/controls/button/copy-table-button.directive.d.ts +19 -19
- package/lib/controls/calendar/calendar-item.component.d.ts +17 -17
- package/lib/controls/calendar/calendar.component.d.ts +54 -54
- package/lib/controls/calendar/calendar.types.d.ts +7 -7
- package/lib/controls/checkbox/checkbox.component.d.ts +65 -65
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -25
- package/lib/controls/combobox/combobox.component.d.ts +418 -418
- package/lib/controls/date-input/date-input.component.d.ts +80 -80
- package/lib/controls/dropdown/dropdown.component.d.ts +161 -161
- package/lib/controls/file-upload/file-upload.component.d.ts +124 -124
- package/lib/controls/form-control/form-control.component.d.ts +30 -30
- package/lib/controls/form-control-base.d.ts +110 -110
- package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -73
- package/lib/controls/form-group/form-group.component.d.ts +105 -105
- package/lib/controls/help-popover/help-popover.component.d.ts +11 -11
- package/lib/controls/item-picker/item-picker.component.d.ts +164 -164
- package/lib/controls/link-button/link-button.component.d.ts +5 -5
- package/lib/controls/menu/menu.component.d.ts +255 -255
- package/lib/controls/navigation/link-item.d.ts +32 -32
- package/lib/controls/navigation/nav-group.d.ts +18 -18
- package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -42
- package/lib/controls/navigation/nav-item.d.ts +31 -31
- package/lib/controls/numericbox/numericbox.component.d.ts +148 -148
- package/lib/controls/popover/popover.component.d.ts +51 -51
- package/lib/controls/radio-button/radio-button-option.d.ts +19 -19
- package/lib/controls/radio-button/radio-button.component.d.ts +53 -53
- package/lib/controls/select/select.component.d.ts +44 -44
- package/lib/controls/tabs/tabs.component.d.ts +30 -30
- package/lib/controls/textbox/textbox.component.d.ts +107 -107
- package/lib/core/cache.service.d.ts +33 -33
- package/lib/core/custom-validators.d.ts +20 -20
- package/lib/core/date-time-helper.d.ts +101 -101
- package/lib/core/error.service.d.ts +20 -20
- package/lib/core/router-helper.service.d.ts +48 -48
- package/lib/core/scroll.service.d.ts +36 -36
- package/lib/core/telemetry-tracker.service.d.ts +13 -13
- package/lib/core/telemetry.service.d.ts +31 -31
- package/lib/core/validation-message.service.d.ts +26 -26
- package/lib/core/validation-patterns.d.ts +22 -22
- package/lib/core/window.service.d.ts +116 -116
- package/lib/display/app-bar/app-bar.component.d.ts +20 -20
- package/lib/display/avatar/avatar.component.d.ts +35 -35
- package/lib/display/avatar/avatar.service.d.ts +24 -24
- package/lib/display/confirm/confirm.component.d.ts +123 -123
- package/lib/display/dialog/dialog-content.d.ts +19 -19
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -32
- package/lib/display/dialog/dialog-types.d.ts +130 -130
- package/lib/display/dialog/dialog.component.d.ts +120 -120
- package/lib/display/dialog/dialog.service.d.ts +48 -48
- package/lib/display/help/help-types.d.ts +33 -33
- package/lib/display/hierarchy/hierarchy-base.d.ts +97 -97
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -53
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -34
- package/lib/display/item-display/item-display.component.d.ts +43 -43
- package/lib/display/json-display/json-display.component.d.ts +16 -16
- package/lib/display/resizable/resizable-base.d.ts +67 -67
- package/lib/display/resizable/resizable.component.d.ts +31 -31
- package/lib/display/spinner/spinner.component.d.ts +5 -5
- package/lib/display/splash/splash.component.d.ts +16 -16
- package/lib/display/splash/splash.service.d.ts +22 -22
- package/lib/display/table/resizable-column.component.d.ts +10 -10
- package/lib/display/table/resizable-table.directive.d.ts +93 -93
- package/lib/display/table/searchable-table.component.d.ts +206 -206
- package/lib/display/table/table-detail-row.component.d.ts +8 -8
- package/lib/display/table/table-locked-column.component.d.ts +20 -20
- package/lib/display/table/table-master-header-row.component.d.ts +9 -9
- package/lib/display/table/table-master-row.component.d.ts +113 -113
- package/lib/display/table/table-pagination.component.d.ts +91 -91
- package/lib/display/table/table-selectable-row.component.d.ts +102 -102
- package/lib/display/table/table.component.d.ts +121 -121
- package/lib/display/tags/tag.d.ts +18 -18
- package/lib/display/tags/tags.component.d.ts +48 -48
- package/lib/display/toast/toast/toast.component.d.ts +23 -23
- package/lib/display/toast/toast-types.d.ts +24 -24
- package/lib/display/toast/toast.service.d.ts +20 -20
- package/lib/display/toast/toaster/toaster.component.d.ts +35 -35
- package/lib/display/tooltip/tooltip.component.d.ts +70 -70
- package/lib/display/tooltip/tooltip.service.d.ts +16 -16
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -44
- package/lib/display/tour/tour-types.d.ts +70 -70
- package/lib/display/tour/tour.component.d.ts +147 -147
- package/lib/display/tour/tour.service.d.ts +38 -38
- package/lib/display/tree/tree.component.d.ts +75 -75
- package/lib/display/view-overlay/view-overlay.component.d.ts +38 -38
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -14
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -60
- package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -101
- package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -21
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -9
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -36
- package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -23
- package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -18
- package/lib/shared/display.d.ts +42 -42
- package/lib/shared/form-group.helper.d.ts +31 -31
- package/lib/shared/json-helper.d.ts +7 -7
- package/lib/shared/lodash-helper.d.ts +18 -18
- package/lib/shared/page/page-base/page-base.component.d.ts +259 -259
- package/lib/shared/page/page-statuses.d.ts +13 -13
- package/lib/shared/page/page-title/page-title.component.d.ts +9 -9
- package/lib/shared/page/page-view/page-view.component.d.ts +102 -102
- package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -30
- package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -28
- package/lib/shared/testing/public-mocks.spec.d.ts +90 -90
- package/lib/shared/testing/spy-factory.spec.d.ts +27 -27
- package/lib/shared/testing/translation-mocks.spec.d.ts +30 -30
- package/lib/shared/user-preference.service.d.ts +13 -13
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -134
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -27
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -10
- package/package.json +12 -18
- package/public-api.d.ts +111 -111
- package/schematics/rxjs-7-upgrade/index.d.ts +3 -3
- package/schematics/rxjs-7-upgrade/index.js +67 -67
- package/schematics/rxjs-7-upgrade/schema.d.ts +4 -4
- package/schematics/rxjs-7-upgrade/schema.js +2 -2
- package/schematics/utilities/typescript.d.ts +7 -7
- package/schematics/utilities/typescript.js +41 -41
- package/schematics/utilities/workspace.d.ts +8 -8
- package/schematics/utilities/workspace.js +71 -71
- package/esm2020/lib/core/custom-validators.mjs +0 -29
- package/esm2020/lib/core/date-time-helper.mjs +0 -220
- package/esm2020/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +0 -163
- package/esm2020/lib/shared/display.mjs +0 -6
- package/esm2020/lib/shared/form-group.helper.mjs +0 -67
- package/esm2020/lib/shared/lodash-helper.mjs +0 -51
- package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/fesm2015/energycap-components.mjs +0 -12211
- package/fesm2015/energycap-components.mjs.map +0 -1
- package/fesm2020/energycap-components.mjs.map +0 -1
@@ -1,48 +1,48 @@
|
|
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
|
-
}
|
40
|
-
|
41
|
-
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
43
|
-
type: Pipe,
|
44
|
-
args: [{
|
45
|
-
name: 'rowCount'
|
46
|
-
}]
|
47
|
-
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
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: "16.2.12", ngImport: i0, type: RowCountPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
40
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RowCountPipe, name: "rowCount" }); }
|
41
|
+
}
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RowCountPipe, decorators: [{
|
43
|
+
type: Pipe,
|
44
|
+
args: [{
|
45
|
+
name: 'rowCount'
|
46
|
+
}]
|
47
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvcm93LWNvdW50LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVlwRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQ7Ozs7O09BS0c7SUFDSCx1SUFBdUk7SUFDdkksU0FBUyxDQUFDLE9BQXFCLEVBQUUsVUFBa0IsRUFBRSxZQUFxQixFQUFFLFVBQXVCO1FBQ2pHLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLElBQUcsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNoRTthQUFNLElBQUcsVUFBVSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDbkU7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFHTyxlQUFlLENBQUMsT0FBcUIsRUFBRSxVQUFrQixFQUFFLFlBQW9CO1FBQ3JGLDJFQUEyRTtRQUMzRSxzRUFBc0U7UUFDdEUsbUZBQW1GO1FBQ25GLDZCQUE2QjtRQUM3QixJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsWUFBWSxFQUFFO1lBQ3JDLE9BQU8sR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDdkY7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBcUIsRUFBRSxVQUFrQixFQUFFLFVBQXNCO1FBQzVGLElBQUksTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNySCxPQUFPLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLHNCQUFzQixJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQzNHLENBQUM7K0dBcENVLFlBQVk7NkdBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFIeEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgUGFnaW5nSW5mbyB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvdGFibGUvdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgUm93Q291bnRJbmZvID0geyBcclxuICB0b3RhbEl0ZW1zOiBudW1iZXIsXHJcbiAgdG90YWxJdGVtc0JlZm9yZVBhZ2luZz86IG51bWJlcixcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdyb3dDb3VudCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvd0NvdW50UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZm9ybWF0dGVkIHJvdyBjb3VudCBmb3IgdGhlIHJlc3VsdHMuXHJcbiAgICogXHJcbiAgICogUHJvdmlkZSBtYXhJdGVtQ291bnQgaWYgdGhlIG5vcm1hbCByb3cgY291bnQgaXMgbmVlZGVkLlxyXG4gICAqIFByb3ZpZGUgcGFnaW5nSW5mbyBpZiB0aGUgcGFnZWQgcm93IGNvdW50IGlzIG5lZWRlZC5cclxuICAgKi9cclxuICAvL05vdGUgdGhhdCB0b3RhbFBhZ2VkSXRlbUNvdW50IGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBwYWdpbmdJbmZvLnBhZ2VTaXplIHNpbmNlIHRoZSBsYXN0IHBhZ2UgY291bGQgaGF2ZSBsZXNzIHRoYW4gcGFnZVNpemUgcm93cy5cclxuICB0cmFuc2Zvcm0ocmVzdWx0czogUm93Q291bnRJbmZvLCBvYmplY3RUeXBlOiBzdHJpbmcsIG1heEl0ZW1Db3VudD86IG51bWJlciwgcGFnaW5nSW5mbz86IFBhZ2luZ0luZm8pOiBzdHJpbmcge1xyXG4gICAgbGV0IHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChvYmplY3RUeXBlIHx8ICdyZXN1bHRzJyk7XHJcbiAgICBpZihtYXhJdGVtQ291bnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXN1bHRzQ291bnQocmVzdWx0cywgdHJhbnNsYXRlZCwgbWF4SXRlbUNvdW50KTtcclxuICAgIH0gZWxzZSBpZihwYWdpbmdJbmZvKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFBhZ2VkUmVzdWx0c0NvdW50KHJlc3VsdHMsIHRyYW5zbGF0ZWQsIHBhZ2luZ0luZm8pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZ2V0UmVzdWx0c0NvdW50KHJlc3VsdHM6IFJvd0NvdW50SW5mbywgb2JqZWN0VHlwZTogc3RyaW5nLCBtYXhJdGVtQ291bnQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAvLyBJZiB0aGUgZmlsdGVyZWQgcmVzdWx0cyBjb3VudCBvZiByb3dzIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSBudW1iZXJcclxuICAgIC8vIG9mIHJlc3VsdHMgd2Ugd2FudCB0byBzaG93LCB3ZSBoYXZlIGFscmVhZHkgcGFyZWQgdGhlIHJlc3VsdHMgZG93bixcclxuICAgIC8vIHNvIHRlbGwgdXNlciB3ZSBhcmUgZGlzcGxheWluZyB0aGUgZmlyc3QgYG1heEl0ZW1Db3VudGAgcmVzdWx0cyBvdXQgb2YgdGhlIHRvdGFsXHJcbiAgICAvLyBjb3VudCBvZiBmaWx0ZXJlZCByZXN1bHRzLlxyXG4gICAgaWYgKHJlc3VsdHMudG90YWxJdGVtcyA+IG1heEl0ZW1Db3VudCkge1xyXG4gICAgICByZXR1cm4gYCR7bWF4SXRlbUNvdW50fSAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvZicpfSAke3Jlc3VsdHMudG90YWxJdGVtc31gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3Jlc3VsdHMudG90YWxJdGVtc30gJHtvYmplY3RUeXBlfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhZ2VkUmVzdWx0c0NvdW50KHJlc3VsdHM6IFJvd0NvdW50SW5mbywgb2JqZWN0VHlwZTogc3RyaW5nLCBwYWdpbmdJbmZvOiBQYWdpbmdJbmZvKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSBgJHtwYWdpbmdJbmZvLnNraXAgKyAxfWAgKyAocmVzdWx0cy50b3RhbEl0ZW1zID4gMSA/IGAtJHtwYWdpbmdJbmZvLnNraXAgKyByZXN1bHRzLnRvdGFsSXRlbXN9IGAgOiAnICcpO1xyXG4gICAgcmV0dXJuIHByZWZpeCArIGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvZicpfSAke3Jlc3VsdHMudG90YWxJdGVtc0JlZm9yZVBhZ2luZ30gJHtvYmplY3RUeXBlfWA7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
@@ -1,41 +1,41 @@
|
|
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
|
-
}
|
35
|
-
|
36
|
-
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
38
|
-
type: Pipe,
|
39
|
-
args: [{ name: 'timeDisplay' }]
|
40
|
-
}], ctorParameters: function () { return [{ type: i1.UserPreferenceService }]; } });
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
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: "16.2.12", ngImport: i0, type: TimeDisplayPipe, deps: [{ token: i1.UserPreferenceService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
35
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TimeDisplayPipe, name: "timeDisplay" }); }
|
36
|
+
}
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeDisplayPipe, decorators: [{
|
38
|
+
type: Pipe,
|
39
|
+
args: [{ name: 'timeDisplay' }]
|
40
|
+
}], ctorParameters: function () { return [{ type: i1.UserPreferenceService }]; } });
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kaXNwbGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvdGltZS1kaXNwbGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFHNUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUV4RCxxQkFBZ0IsR0FBVyxVQUFVLENBQUM7SUFGc0IsQ0FBQztJQUlyRTs7T0FFRztJQUNILFNBQVMsQ0FBQyxJQUFrQixFQUFFLFdBQXFCO1FBQ2pELElBQUksT0FBTyxHQUFXLEVBQUUsQ0FBQztRQUN6QixJQUFJLFlBQVksR0FBVyxFQUFFLENBQUM7UUFFOUIsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0QsNERBQTREO1lBQzVELHdDQUF3QztZQUN4QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JCLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVyxDQUFDLFVBQVcsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDaEIsWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNoRDtnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO2FBQ3RDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOytHQTNCVSxlQUFlOzZHQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRDNCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLXByZWZlcmVuY2Uuc2VydmljZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgRGF0ZURpc3BsYXkgfSBmcm9tICcuL2RhdGUtZGlzcGxheS5waXBlJztcclxuXHJcbi8qKlxyXG4gKiBGb3JtYXQgYSB0aW1lIHRvIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZSBmb3IgZGlzcGxheVxyXG4gKi9cclxuQFBpcGUoe25hbWU6ICd0aW1lRGlzcGxheSd9KVxyXG5leHBvcnQgY2xhc3MgVGltZURpc3BsYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXNlclByZWZlcmVuY2VTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZVNlcnZpY2UpIHsgfVxyXG5cclxuICBwcml2YXRlIGxhc3RGb3JtYXRTdHJpbmc6IHN0cmluZyA9ICdISDptbTpzcyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCBhIHRpbWUgZm9yIGRpc3BsYXksIGFjY291bnRpbmcgZm9yIHVzZXIncyBkaXNwbGF5IHByZWZlcmVuY2VzLlxyXG4gICAqL1xyXG4gIHRyYW5zZm9ybSh0aW1lPzogRGF0ZURpc3BsYXksIHNob3dTZWNvbmRzPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgZGlzcGxheTogc3RyaW5nID0gJyc7XHJcbiAgICBsZXQgZm9ybWF0U3RyaW5nOiBzdHJpbmcgPSAnJztcclxuICAgIFxyXG4gICAgLy8gdXNlIHVzZXItcHJlZmVycmVkIGZvcm1hdHNcclxuICAgIHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmdldFByZWZlcmVuY2VzKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIC8vaWYgcHJlZmVyZW5jZXMgZXhpc3QgdGhlbiBmb3JtYXQgdGltZSB0byB1c2VycyBwcmVmZXJlbmNlIFxyXG4gICAgICAvL290aGVyd2lzZSB1c2UgdGhlIGxhc3QgdXNlciBwcmVmZXJlbmNlXHJcbiAgICAgIGlmIChyZXN1bHQucHJlZmVyZW5jZSkge1xyXG4gICAgICAgIGZvcm1hdFN0cmluZyA9IHJlc3VsdC5wcmVmZXJlbmNlIS50aW1lRm9ybWF0ITtcclxuICAgICAgICBpZiAoIXNob3dTZWNvbmRzKSB7XHJcbiAgICAgICAgICBmb3JtYXRTdHJpbmcgPSBmb3JtYXRTdHJpbmcucmVwbGFjZSgnOnNzJywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RGb3JtYXRTdHJpbmcgPSBmb3JtYXRTdHJpbmc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgZGlzcGxheSA9IG1vbWVudCh0aW1lKS5mb3JtYXQodGhpcy5sYXN0Rm9ybWF0U3RyaW5nKTtcclxuICAgIHJldHVybiBkaXNwbGF5O1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
@@ -0,0 +1,6 @@
|
|
1
|
+
/** Common unicode strings */
|
2
|
+
export class UnicodeStrings {
|
3
|
+
/** Equivalent of – */
|
4
|
+
static { this.ndash = '\u2013'; }
|
5
|
+
}
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvZGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLGNBQWM7SUFFdkIsNEJBQTRCO2FBQ2QsVUFBSyxHQUFXLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1pdGVtJztcclxuXHJcblxyXG4vKipcclxuICogVGhlIHN0YXR1cyBvZiBhbnkgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgY29udGVudFxyXG4gKi9cclxuZXhwb3J0IHR5cGUgVmlld1N0YXR1cyA9ICdwZW5kaW5nJyB8ICdoYXNEYXRhJyB8ICdub0RhdGEnIHwgJ2Vycm9yJztcclxuXHJcbi8qKiBDb21tb24gdW5pY29kZSBzdHJpbmdzICovXHJcbmV4cG9ydCBjbGFzcyBVbmljb2RlU3RyaW5ncyB7XHJcblxyXG4gICAgLyoqIEVxdWl2YWxlbnQgb2YgJm5kYXNoOyAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBuZGFzaDogc3RyaW5nID0gJ1xcdTIwMTMnO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFRoZSBEaXNwbGF5IGludGVyZmFjZSBkZWZpbmVzIGNvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbnkgY29tcG9uZW50IHRoYXQgd291bGRcclxuICogZGlzcGxheSBjb250ZW50XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlTdGF0dXMge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHN0YXR1cyBvZiB0aGUgZGlzcGxheVxyXG4gICAgICovXHJcbiAgICBzdGF0dXM6IFZpZXdTdGF0dXM7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW4gb3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gc3RhdHVzIGlzIG5vdCAnaGFzRGF0YSdcclxuICAgICAqL1xyXG4gICAgbWVzc2FnZT86IHN0cmluZztcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcHJvcGVydGllcyBvZiBhbiBhY3Rpb24gYnV0dG9uIHRoYXQgY2FuIGJlIHNob3duIHdoZW4gc3RhdHVzIGlzIG5vdCAnaGFzRGF0YSdcclxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQgZHVlIHRvIG5vRGF0YVRlbXBsYXRlIGJlaW5nIHByZWZlcmVkXHJcbiAgICAgKi9cclxuICAgIGFjdGlvbj86IE5hdkl0ZW07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSB0byBzaG93IHdoZW4gdGhlIHN0YXR1cyBpcyBub0RhdGFcclxuICAgICAqL1xyXG4gICAgbm9EYXRhVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFzayAobm90IHJlbW92ZSkgdGhlIHRyYW5zY2x1ZGVkIGNvbnRlbnQgZnJvbSB0aGUgZG9tIHdoaWxlIG5vdCBoYXNEYXRhIHN0YXR1cy5cclxuICAgICAqL1xyXG4gICAgZGlzcGxheUFzTWFzaz86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqIFxyXG4gICAgICogQWRkaXRpb25hbCBjc3MgY2xhc3NlcyB0byBhcHBseSB0byB0aGUgLm92ZXJsYXkgZWxlbWVudCBcclxuICAgICAqL1xyXG4gICAgb3ZlcmxheUNsYXNzTGlzdD86IHN0cmluZztcclxufVxyXG4iXX0=
|
@@ -0,0 +1,67 @@
|
|
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: "16.2.12", ngImport: i0, type: FormGroupHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
59
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormGroupHelper, providedIn: 'root' }); }
|
60
|
+
}
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormGroupHelper, decorators: [{
|
62
|
+
type: Injectable,
|
63
|
+
args: [{
|
64
|
+
providedIn: 'root'
|
65
|
+
}]
|
66
|
+
}] });
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFrRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFNUY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQUV4Qjs7OztPQUlHO0lBQ0ksZ0JBQWdCLENBQUMsU0FBMkIsRUFBRSxPQUFZO1FBQzdELElBQUksV0FBVyxHQUF5QixFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxRQUFRO1lBQzNDLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVqQyxJQUFHLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBQztnQkFDM0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQzthQUNwQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsRUFBVTtRQUN4QixPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxhQUFhLENBQUMsT0FBd0IsRUFBRSxpQkFBZ0MsRUFBRSxFQUFFLGNBQXVCLEtBQUs7UUFDM0csT0FBTyxDQUFDLEtBQThCLEVBQUUsRUFBRTtZQUN0QyxJQUFJLFVBQVUsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7WUFFckMseURBQXlEO1lBQ3pELElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMvQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN4QztZQUVELElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0gsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQzdCO1lBQ0QsOEVBQThFO1lBQzlFLDZFQUE2RTtZQUM3RSxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUE7SUFDTCxDQUFDOytHQXZEUSxlQUFlO21IQUFmLGVBQWUsY0FGWixNQUFNOzs0RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgZm9yIEZvcm0gR3JvdXBzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Hcm91cEhlbHBlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsIHBhdGNoVmFsdWUgb24gdGhlIGZvcm1Hcm91cCB3aXRoIG9ubHkgdGhlIHByb3BlcnRpZXNcclxuICAgICAqIHRoYXQgYWN0dWFsbHkgaGF2ZSB2YWx1ZXMgaW4gdXBkYXRlcy4gVGhpcyBtZXRob2Qgd2lsbCBpZ25vcmVcclxuICAgICAqIGFueSB2YWx1ZSB0aGF0IGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGF0Y2hWYWx1ZVNhZmVseShmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsIHVwZGF0ZXM6IGFueSl7XHJcbiAgICAgICAgbGV0IHNhZmVVcGRhdGVzOiB7IFtrOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3BOYW1lKSB7XHJcbiAgICAgICAgICAgIGxldCByYXdWYWx1ZSA9IHVwZGF0ZXNbcHJvcE5hbWVdO1xyXG5cclxuICAgICAgICAgICAgaWYocmF3VmFsdWUgIT09IG51bGwgJiYgcmF3VmFsdWUgIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICBzYWZlVXBkYXRlc1twcm9wTmFtZV0gPSByYXdWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGZvcm1Hcm91cC5wYXRjaFZhbHVlKHNhZmVVcGRhdGVzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBhbiBpZCBmb3IgdGhlIGZvcm0gY29udHJvbHMgaW5wdXRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldElucHV0SWQoaWQ6IHN0cmluZyk6c3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaWQgKyAnX2lucHV0JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRha2VzIGluIGEgY29udHJvbCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUgY29udHJvbCdzIHJlcXVpcmVkIHZhbGlkYXRvciBiYXNlZCBvblxyXG4gICAgICogd2hldGhlciB0aGUgdmFsdWUgcHJvdmlkZWQgaXMgZW1wdHkgb3Igbm90LiBBZGRzIHRoZSByZXF1aXJlZCB2YWxpZGF0b3IgaWYgdGhlIHZhbHVlIHByb3ZpZGVkIGlzXHJcbiAgICAgKiBub3QgZW1wdHksIG90aGVyd2lzZSByZW1vdmVzIHRoZSByZXF1aXJlZCB2YWxpZGF0b3IuIFVzZWZ1bCBmb3IgZHluYW1pY2FsbHkgc2V0dGluZyB0aGUgcmVxdWlyZWRuZXNzXHJcbiAgICAgKiBvZiBhIGNvbnRyb2wgYmFzZWQgb24gd2hldGhlciBhbm90aGVyIGNvbnRyb2wgaGFzIGEgdmFsdWUgb3Igbm90LlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbFxyXG4gICAgICogQHBhcmFtIGtlZXBWYWxpZGF0b3JzIC0gQXJyYXkgb2YgVmFsaWRhdG9ycyB0byBsZWF2ZSBjb25maWd1cmVkIG9uIHRoZSBjb250cm9sLiBBbnkgZXhpc3RpbmdcclxuICAgICAqIHZhbGlkYXRvcnMgb24gdGhlIGNvbnRyb2wgd2lsbCBiZSBsb3N0IGlmIHRoaXMgaXMgbGVmdCBlbXB0eS5cclxuICAgICAqIEBwYXJhbSBpc1plcm9FbXB0eSAtIElmIHRydWUsIGEgbnVtZXJpYyB6ZXJvIHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlbXB0eSB2YWx1ZS4gRGVmYXVsdCBpcyBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFJlcXVpcmVkRm4oY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBrZWVwVmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdLCBpc1plcm9FbXB0eTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuICh2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IG51bGwpID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhbGlkYXRvcnMgPSBbLi4ua2VlcFZhbGlkYXRvcnNdO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBlbXB0eSwgYWRkIHRoZSByZXF1aXJlZCB2YWxpZGF0b3IuXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSB8fCAoIWlzWmVyb0VtcHR5ID8gdmFsdWUgPT09IDAgOiBmYWxzZSkpIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBSZWNhbGN1bGF0aW5nIHRoZSB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIGNoYW5naW5nIHRoZSB2YWxpZGF0b3JzLCBvdGhlcndpc2VcclxuICAgICAgICAgICAgLy8gdGhlIHZhbGlkYXRvciB3b24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgdmFsdWUgaXMgY2hhbmdlZCBpbiB0aGUgY29udHJvbC5cclxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
@@ -1,19 +1,19 @@
|
|
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
|
-
}
|
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
19
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2pzb24taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBRXJCOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBK0I7UUFDeEQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSnNvbkhlbHBlciB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIGdpdmVuIEpTT04gdGV4dCBpbnRvIGFuIG9iamVjdC5cclxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0ZXh0IGNhbm5vdCBiZSBwYXJzZWQgYXMgSlNPTi5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRyeVBhcnNlSlNPTih0ZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdW5rbm93biB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXRleHQpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHRleHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
|
@@ -0,0 +1,52 @@
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvbG9kYXNoLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUM7Ozs7Ozs7OztFQVNFO0FBQ0YsTUFBTSxVQUFVLGdCQUFnQixDQUFJLEtBQVUsRUFBRSxVQUFvQjtJQUNsRSxJQUFJLFNBQVMsR0FBZ0UsRUFBRSxDQUFDO0lBRWhGLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFbEMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFJLEtBQVUsRUFBRSxVQUFvQixFQUFFLFNBQStCO0lBQ3BHLElBQUksU0FBUyxHQUFnRSxFQUFFLENBQUM7SUFFaEYsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDaEMsdUdBQXVHO1FBQ3ZHLE9BQU8sQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsV0FBVyxDQUFJLElBQU8sRUFBRSxJQUFZO0lBQzNDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUIsSUFBRyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFDO1FBQ25DLE9BQWdCLEtBQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUN0QztTQUFNO1FBQ0wsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ25CO0FBQ0gsQ0FBQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQsIG9yZGVyQnksIHNvcnRCeSB9IGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbi8qKiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBsb2Rhc2ggc29ydEJ5IHRoYXQgc3VwcG9ydHMgdHJlYXRpbmcgdXBwZXIgY2FzZSBhbmQgbG93ZXIgY2FzZSB0ZXh0IGFzIHRoZSBzYW1lLiAgXHJcbiAqIElmIHRoZSB1bmRlcmx5aW5nIHByb3BlcnR5IHZhbHVlIGlzIG5vdCBhIHN0cmluZyAob3IgaXMgbnVsbCBvciB1bmRlZmluZWQpIHRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUganVzdCBsaWtlIGxvZGFzaCdzIG9yaWdpbmFsXHJcbiAqIFRoZSBvcmlnaW5hbCBhcnJheSBpcyBub3QgbW9kaWZpZWQsIGFuZCB0aGUgcmVzdWx0IGlzIGEgbmV3bHkgY3JlYXRlZCBhcnJheSB0byBhdm9pZCBhbnkgc2lkZSBlZmZlY3RzIChqdXN0IGxpa2UgdGhlIGxvZGFzaCBpbXBsZW1lbnRhdGlvbilcclxuICogU3RyaW5nIHByb3BlcnRpZXMgYXJlIG5vcm1hbGl6ZWQgYnkgY2FzZSBmb3IgY29tcGFyaXNvbnMgdG8gcHJldmVudCBzb3J0aW5nIEFiQyBhcyBBQ2JcclxuICogQHBhcmFtIGl0ZW1zIC0gdGhlIHNldCBvZiBpdGVtcyB0byBzb3J0LiBFeHBlY3RlZCB0byBiZSBhIHNldCBvZiBjb21wbGV4IG9iamVjdHMgdG8gc29ydCBieSB0aGUgZ2l2ZW4gcHJvcGVydGllc1xyXG4gKiBAcGFyYW0gcHJvcGVydGllcyAtIGEgbGlzdCBvZiB2YWx1ZXMsIGVhY2ggb2Ygd2hpY2ggY2FuIGJlIG51bWJlciwgZGF0ZSwgc3RyaW5nLCBldGMgcHJvcGVydHkgdHlwZXMuIFxyXG4gKiAgICAgICAgQ2FuIGJlIHRoZSBuYW1lIG9yIHBhdGggdG8gdGhlIHByb3BlcnR5IHRvIGxvb2sgYXQsIHBhc3NlZCB0byB0aGUgbG9kYXNoIGdldCBmdW5jdGlvbiBzbyBcImFkZHJlc3MubGluZTFcIiB3b3JrcyBpZiBpdGVtIGlzXHJcbiAqICAgICAgICBhIG1ldGVyIG9iamVjdCBsaWtlIHttZXRlck5hbWU6ICduYW1lJywgYWRkcmVzOiB7IGxpbmUxOiAnMTAwIEZhY3RvcnkgU3RyZWV0JyB9IH1cclxuICogQHNlZSBodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjEwI2dldFxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gc29ydEJ5SWdub3JlQ2FzZTxUPihpdGVtczogVFtdLCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSkgOiBUW10ge1xyXG4gIGxldCBpdGVyYXRlZXM6ICgodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGNvbGxlY3Rpb246IEFycmF5TGlrZTxUPik9PiBUKVtdID0gW107XHJcblxyXG4gIGl0ZXJhdGVlcyA9IHByb3BlcnRpZXMubWFwKHByb3A9PntcclxuICAgIHJldHVybiAoaXRlbTogVCkgPT4gc2FmZVRvTG93ZXIoaXRlbSwgcHJvcCk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBzb3J0QnkoaXRlbXMsIGl0ZXJhdGVlcyk7XHJcbiAgXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBsb2Rhc2ggb3JkZXJCeSB0aGF0IHN1cHBvcnRzIHRyZWF0aW5nIHVwcGVyIGNhc2UgYW5kIGxvd2VyIGNhc2UgdGV4dCBhcyB0aGUgc2FtZS5cclxuICogQHBhcmFtIGl0ZW1zIC0gdGhlIHNldCBvZiBpdGVtcyB0byBzb3J0LiBFeHBlY3RlZCB0byBiZSBhIHNldCBvZiBjb21wbGV4IG9iamVjdHMgdG8gc29ydCBieSB0aGUgZ2l2ZW4gcHJvcGVydGllc1xyXG4gKiBAcGFyYW0gcHJvcGVydGllcyAtIGEgbGlzdCBvZiB2YWx1ZXMsIGVhY2ggb2Ygd2hpY2ggY2FuIGJlIG51bWJlciwgZGF0ZSwgc3RyaW5nLCBldGMgcHJvcGVydHkgdHlwZXMuIFxyXG4gKiBAcGFyYW0gZGlyZWN0aW9uIC0gdGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0byBzb3J0LCB0aGUgcGFzcyBpbiBhbiBhcnJheSBvZiBkaXJlY3Rpb25zIHRvIG1hdGNoIGFuIGFycmF5IG9mIHByb3BlcnRpZXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcmRlckJ5SWdub3JlQ2FzZTxUPihpdGVtczogVFtdLCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSwgZGlyZWN0aW9uPzogQXJyYXk8XCJhc2NcInxcImRlc2NcIj4pOiBUW10ge1xyXG4gIGxldCBpdGVyYXRlZXM6ICgodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGNvbGxlY3Rpb246IEFycmF5TGlrZTxUPik9PiBUKVtdID0gW107XHJcblxyXG4gIGl0ZXJhdGVlcyA9IHByb3BlcnRpZXMubWFwKHByb3AgPT4ge1xyXG4gICAgLy8gVHJlYXQgbnVsbHMgYXMgZW1wdHkgc3RyaW5nIHRvIHNvcnQgdGhlbSBhdCB0aGUgYm90dG9tIHdoZW4gZGVjZW5kaW5nLCBoZWxwZnVsIHdoZW4gbG9va2luZyBhdCBkYXRlc1xyXG4gICAgcmV0dXJuIChpdGVtOiBUKSA9PiBzYWZlVG9Mb3dlcihpdGVtLCBwcm9wKSB8fCAnJztcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIG9yZGVyQnkoaXRlbXMsIGl0ZXJhdGVlcywgZGlyZWN0aW9uKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgdGhlIHByb3ZpZGVkIGl0ZW0ncyBwcm9wZXJ0eSB0byB0aGUgbG93ZXJjYXNlIHZlcnNpb24gb2YgaXQgaWYgdGhhdCBwcm9wZXJ0eVxyXG4gKiBoYXMgYSB2YWx1ZSBhbmQgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLiBOb24tc3RyaW5nIG9yIG51bGwvdW5kZWZpbmVkIHZhbHVlcyBhcmUga2VwdCBleGFjdGx5IGFzIHRoZXkgd2VyZVxyXG4gKiBAcGFyYW0gaXRlbSAtIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHZhbHVlIHdpbGwgIGJlIHJlYWQgYW5kIGludGVycHJldGVkXHJcbiAqIEBwYXJhbSBwcm9wIC0gdGhlIG5hbWUgb3IgcGF0aCB0byB0aGUgcHJvcGVydHkgdG8gbG9vayBhdCwgcGFzc2VkIHRvIHRoZSBsb2Rhc2ggZ2V0IGZ1bmN0aW9uIHNvIFwiYWRkcmVzcy5saW5lMVwiIHdvcmtzIGlmIGl0ZW0gaXNcclxuICogYSBtZXRlciBvYmplY3QgbGlrZSB7bWV0ZXJOYW1lOiAnbmFtZScsIGFkZHJlc3M6IHsgbGluZTE6ICcxMDAgRmFjdG9yeSBTdHJlZXQnIH0gfVxyXG4gKiBAc2VlIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuMTAjZ2V0XHJcbiAqL1xyXG5mdW5jdGlvbiBzYWZlVG9Mb3dlcjxUPihpdGVtOiBULCBwcm9wOiBzdHJpbmcpe1xyXG4gIGxldCB2YWx1ZSA9IGdldChpdGVtLCBwcm9wKTtcclxuICBpZihpdGVtICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpe1xyXG4gICAgcmV0dXJuICg8c3RyaW5nPnZhbHVlKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gaXRlbVtwcm9wXTtcclxuICB9XHJcbn07Il19
|