@codetectonics/mantle 0.0.2 → 0.0.4
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/README.md +10 -49
- package/bundles/codetectonics-mantle.umd.js +6907 -0
- package/bundles/codetectonics-mantle.umd.js.map +1 -0
- package/esm2015/codetectonics-mantle.js +5 -0
- package/esm2015/lib/components/dashboard/containers/dynamic-dashboard-container/dynamic-dashboard-container.component.js +24 -0
- package/esm2015/lib/components/dashboard/containers/plain-dashboard-container/plain-dashboard-container.component.js +35 -0
- package/esm2015/lib/components/dashboard/dashboard-card/dashboard-card.component.js +133 -0
- package/esm2015/lib/components/dashboard/dashboard-card-search-menu/dashboard-card-search-menu.component.js +55 -0
- package/esm2015/lib/components/dashboard/dynamic-dashboard/dynamic-dashboard.component.js +23 -0
- package/esm2015/lib/components/dashboard/sections/dashboard-section/dashboard-section.component.js +71 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-info-card/dashboard-info-card.component.js +26 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table-datasource.js +30 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.js +58 -0
- package/esm2015/lib/components/dashboard/widgets/dynamic-chart/dynamic-chart.component.js +85 -0
- package/esm2015/lib/components/dashboard/widgets/dynamic-widget-display/dynamic-widget-display.component.js +29 -0
- package/esm2015/lib/components/details/containers/accordion-details-container/accordion-details-container.component.js +26 -0
- package/esm2015/lib/components/details/containers/dynamic-details-container/dynamic-details-container.component.js +25 -0
- package/esm2015/lib/components/details/containers/plain-details-container/plain-details-container.component.js +25 -0
- package/esm2015/lib/components/details/dialog-details/dialog-details.component.js +77 -0
- package/esm2015/lib/components/details/dialog-nested-details/dialog-nested-details.component.js +40 -0
- package/esm2015/lib/components/details/dynamic-details/dynamic-details.component.js +23 -0
- package/esm2015/lib/components/details/fields/actions-attribute-display/actions-attribute-display.component.js +27 -0
- package/esm2015/lib/components/details/fields/chip-attribute-display/chip-attribute-display.component.js +40 -0
- package/esm2015/lib/components/details/fields/dynamic-attribute-display/dynamic-attribute-display.component.js +46 -0
- package/esm2015/lib/components/details/fields/file-attribute-display/file-attribute-display.component.js +37 -0
- package/esm2015/lib/components/details/fields/image-attribute-display/image-attribute-display.component.js +36 -0
- package/esm2015/lib/components/details/fields/link-attribute-display/link-attribute-display.component.js +30 -0
- package/esm2015/lib/components/details/fields/markdown-attribute-display/markdown-attribute-display.component.js +21 -0
- package/esm2015/lib/components/details/fields/thumbnail-display/thumbnail-display.component.js +33 -0
- package/esm2015/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.js +42 -0
- package/esm2015/lib/components/details/sections/grid-details-section/grid-details-section.component.js +53 -0
- package/esm2015/lib/components/details/sections/markdown-details-section/markdown-details-section.component.js +19 -0
- package/esm2015/lib/components/details/sections/table-details-section/table-details-section.component.js +37 -0
- package/esm2015/lib/components/form/containers/accordion-form-container/accordion-form-container.component.js +29 -0
- package/esm2015/lib/components/form/containers/dynamic-form-container/dynamic-form-container.component.js +28 -0
- package/esm2015/lib/components/form/containers/plain-form-container/plain-form-container.component.js +28 -0
- package/esm2015/lib/components/form/dialog-form/dialog-form.component.js +91 -0
- package/esm2015/lib/components/form/dialog-nested-form/dialog-nested-form.component.js +57 -0
- package/esm2015/lib/components/form/dynamic-form/dynamic-form.component.js +52 -0
- package/esm2015/lib/components/form/fields/autocomplete-input/autocomplete-input.component.js +69 -0
- package/esm2015/lib/components/form/fields/chip-input/chip-input.component.js +84 -0
- package/esm2015/lib/components/form/fields/datepicker/datepicker.component.js +91 -0
- package/esm2015/lib/components/form/fields/datetimepicker/datetimepicker.component.js +92 -0
- package/esm2015/lib/components/form/fields/dropdown/dropdown.component.js +73 -0
- package/esm2015/lib/components/form/fields/dynamic-form-field/dynamic-form-field.component.js +37 -0
- package/esm2015/lib/components/form/fields/filepicker/filepicker.component.js +97 -0
- package/esm2015/lib/components/form/fields/image-cropper/image-cropper.component.js +52 -0
- package/esm2015/lib/components/form/fields/imagepicker/imagepicker.component.js +139 -0
- package/esm2015/lib/components/form/fields/markdown-input/markdown-input.component.js +53 -0
- package/esm2015/lib/components/form/fields/number-input/number-input.component.js +91 -0
- package/esm2015/lib/components/form/fields/password-input/password-input.component.js +58 -0
- package/esm2015/lib/components/form/fields/text-input/text-input.component.js +55 -0
- package/esm2015/lib/components/form/fields/textarea/textarea.component.js +58 -0
- package/esm2015/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.js +47 -0
- package/esm2015/lib/components/form/sections/grid-form-section/grid-form-section.component.js +69 -0
- package/esm2015/lib/components/form/sections/table-form-section/table-form-section.component.js +107 -0
- package/esm2015/lib/components/layout-editor/containers/accordion-layout-editor-container/accordion-layout-editor-container.component.js +24 -0
- package/esm2015/lib/components/layout-editor/containers/dynamic-layout-editor-container/dynamic-layout-editor-container.component.js +23 -0
- package/esm2015/lib/components/layout-editor/containers/plain-layout-editor-container/plain-layout-editor-container.component.js +24 -0
- package/esm2015/lib/components/layout-editor/dynamic-layout-editor/dynamic-layout-editor.component.js +23 -0
- package/esm2015/lib/components/layout-editor/elements/dynamic-layout-editor-element/dynamic-layout-editor-element.component.js +38 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-field-element/layout-editor-field-element.component.js +76 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-table-column-element/layout-editor-table-column-element.component.js +76 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-widget-element/layout-editor-widget-element.component.js +19 -0
- package/esm2015/lib/components/layout-editor/sections/dashboard-layout-editor-section/dashboard-layout-editor-section.component.js +21 -0
- package/esm2015/lib/components/layout-editor/sections/dynamic-layout-editor-section/dynamic-layout-editor-section.component.js +25 -0
- package/esm2015/lib/components/layout-editor/sections/grid-layout-editor-section/grid-layout-editor-section.component.js +102 -0
- package/esm2015/lib/components/layout-editor/sections/markdown-layout-editor-section/markdown-layout-editor-section.component.js +19 -0
- package/esm2015/lib/components/layout-editor/sections/table-layout-editor-section/table-layout-editor-section.component.js +74 -0
- package/esm2015/lib/components/navigation/nav-tree/nav-tree.component.js +65 -0
- package/esm2015/lib/components/navigation/reroute/reroute.component.js +28 -0
- package/esm2015/lib/components/pages/dashboard-page/dashboard-page.component.js +34 -0
- package/esm2015/lib/components/pages/detail-page/detail-page.component.js +101 -0
- package/esm2015/lib/components/pages/documents-page/documents-page.component.js +109 -0
- package/esm2015/lib/components/pages/export-page/export-page.component.js +65 -0
- package/esm2015/lib/components/pages/form-page/form-page.component.js +133 -0
- package/esm2015/lib/components/pages/layout-editor-page/layout-editor-page.component.js +72 -0
- package/esm2015/lib/components/pages/list-page/list-page-datasource.js +62 -0
- package/esm2015/lib/components/pages/list-page/list-page.component.js +159 -0
- package/esm2015/lib/components/pages/tabbed-page/tabbed-page.component.js +35 -0
- package/esm2015/lib/components/titles/content-title/content-title.component.js +23 -0
- package/esm2015/lib/components/titles/page-title/page-title.component.js +28 -0
- package/esm2015/lib/components/titles/section-title/section-title.component.js +18 -0
- package/esm2015/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.js +36 -0
- package/esm2015/lib/components/widgets/dynamic-table/dynamic-table-datasource.js +89 -0
- package/esm2015/lib/components/widgets/dynamic-table/dynamic-table.component.js +67 -0
- package/esm2015/lib/components/widgets/file-preview-dialog/file-preview-dialog.component.js +42 -0
- package/esm2015/lib/components/widgets/loader/loader.component.js +21 -0
- package/esm2015/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.js +35 -0
- package/esm2015/lib/components/widgets/search-panel/search-panel.component.js +67 -0
- package/esm2015/lib/components/widgets/snackbar/snackbar.component.js +42 -0
- package/esm2015/lib/config/charts/column-chart.data.js +38 -0
- package/esm2015/lib/config/charts/gantt-chart.data.js +18 -0
- package/esm2015/lib/config/charts/pie-chart.data.js +21 -0
- package/esm2015/lib/config/charts/progress-bar-chart.data.js +50 -0
- package/esm2015/lib/config/charts/spline-chart.data.js +24 -0
- package/esm2015/lib/data-structures/dynamic-layout.structure.js +2 -0
- package/esm2015/lib/data-structures/file-attachment.structure.js +2 -0
- package/esm2015/lib/directives/click-stop-propagation.directive.js +19 -0
- package/esm2015/lib/directives/file-dropzone.directive.js +53 -0
- package/esm2015/lib/guards/feature.guard.js +42 -0
- package/esm2015/lib/guards/password-check.guard.js +21 -0
- package/esm2015/lib/guards/session.guard.js +21 -0
- package/esm2015/lib/mantle.module.js +518 -0
- package/esm2015/lib/material.module.js +290 -0
- package/esm2015/lib/models/screen-size-map.model.js +9 -0
- package/esm2015/lib/pipes/dynamic.pipe.js +45 -0
- package/esm2015/lib/pipes/secure-image.pipe.js +35 -0
- package/esm2015/lib/services/adapters/web-api-crud.adapter.js +22 -0
- package/esm2015/lib/services/adapters/websocket.adapter.js +2 -0
- package/esm2015/lib/services/announcement.service.js +43 -0
- package/esm2015/lib/services/array.service.js +82 -0
- package/esm2015/lib/services/chart.service.js +45 -0
- package/esm2015/lib/services/confirmation.service.js +45 -0
- package/esm2015/lib/services/current-user.service.js +120 -0
- package/esm2015/lib/services/dynamic-form.service.js +59 -0
- package/esm2015/lib/services/feature-config.service.js +240 -0
- package/esm2015/lib/services/interfaces/authorisable-feature.service.js +2 -0
- package/esm2015/lib/services/interfaces/dashboard-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/dashboard-widget.service.js +2 -0
- package/esm2015/lib/services/interfaces/detail-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/export-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/form-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/layout-editor-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/list-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/nav-tabs.service.js +2 -0
- package/esm2015/lib/services/interfaces/reroute.service.js +2 -0
- package/esm2015/lib/services/object.service.js +69 -0
- package/esm2015/lib/services/password-check.service.js +93 -0
- package/esm2015/lib/services/screen-size.service.js +41 -0
- package/esm2015/lib/services/web-api.service.js +99 -0
- package/esm2015/lib/services/websocket.service.js +58 -0
- package/esm2015/lib/tokens/environment.token.js +3 -0
- package/esm2015/public-api.js +133 -0
- package/fesm2015/codetectonics-mantle.js +5940 -0
- package/fesm2015/codetectonics-mantle.js.map +1 -0
- package/lib/components/dashboard/containers/dynamic-dashboard-container/dynamic-dashboard-container.component.d.ts +11 -0
- package/lib/components/dashboard/containers/plain-dashboard-container/plain-dashboard-container.component.d.ts +14 -0
- package/lib/components/dashboard/dashboard-card/dashboard-card.component.d.ts +41 -0
- package/lib/components/dashboard/dashboard-card-search-menu/dashboard-card-search-menu.component.d.ts +20 -0
- package/lib/components/dashboard/dynamic-dashboard/dynamic-dashboard.component.d.ts +10 -0
- package/lib/components/dashboard/sections/dashboard-section/dashboard-section.component.d.ts +27 -0
- package/lib/components/dashboard/widgets/dashboard-info-card/dashboard-info-card.component.d.ts +8 -0
- package/lib/components/dashboard/widgets/dashboard-table/dashboard-table-datasource.d.ts +22 -0
- package/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.d.ts +28 -0
- package/lib/components/dashboard/widgets/dynamic-chart/dynamic-chart.component.d.ts +20 -0
- package/lib/components/dashboard/widgets/dynamic-widget-display/dynamic-widget-display.component.d.ts +9 -0
- package/lib/components/details/containers/accordion-details-container/accordion-details-container.component.d.ts +11 -0
- package/lib/components/details/containers/dynamic-details-container/dynamic-details-container.component.d.ts +11 -0
- package/lib/components/details/containers/plain-details-container/plain-details-container.component.d.ts +11 -0
- package/lib/components/details/dialog-details/dialog-details.component.d.ts +36 -0
- package/lib/components/details/dialog-nested-details/dialog-nested-details.component.d.ts +22 -0
- package/lib/components/details/dynamic-details/dynamic-details.component.d.ts +10 -0
- package/lib/components/details/fields/actions-attribute-display/actions-attribute-display.component.d.ts +7 -0
- package/lib/components/details/fields/chip-attribute-display/chip-attribute-display.component.d.ts +9 -0
- package/lib/components/details/fields/dynamic-attribute-display/dynamic-attribute-display.component.d.ts +15 -0
- package/lib/components/details/fields/file-attribute-display/file-attribute-display.component.d.ts +12 -0
- package/lib/components/details/fields/image-attribute-display/image-attribute-display.component.d.ts +12 -0
- package/lib/components/details/fields/link-attribute-display/link-attribute-display.component.d.ts +10 -0
- package/lib/components/details/fields/markdown-attribute-display/markdown-attribute-display.component.d.ts +6 -0
- package/lib/components/details/fields/thumbnail-display/thumbnail-display.component.d.ts +10 -0
- package/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.d.ts +17 -0
- package/lib/components/details/sections/grid-details-section/grid-details-section.component.d.ts +17 -0
- package/lib/components/details/sections/markdown-details-section/markdown-details-section.component.d.ts +7 -0
- package/lib/components/details/sections/table-details-section/table-details-section.component.d.ts +12 -0
- package/lib/components/form/containers/accordion-form-container/accordion-form-container.component.d.ts +13 -0
- package/lib/components/form/containers/dynamic-form-container/dynamic-form-container.component.d.ts +13 -0
- package/lib/components/form/containers/plain-form-container/plain-form-container.component.d.ts +13 -0
- package/lib/components/form/dialog-form/dialog-form.component.d.ts +39 -0
- package/lib/components/form/dialog-nested-form/dialog-nested-form.component.d.ts +31 -0
- package/lib/components/form/dynamic-form/dynamic-form.component.d.ts +21 -0
- package/lib/components/form/fields/autocomplete-input/autocomplete-input.component.d.ts +32 -0
- package/lib/components/form/fields/chip-input/chip-input.component.d.ts +27 -0
- package/lib/components/form/fields/datepicker/datepicker.component.d.ts +24 -0
- package/lib/components/form/fields/datetimepicker/datetimepicker.component.d.ts +24 -0
- package/lib/components/form/fields/dropdown/dropdown.component.d.ts +31 -0
- package/lib/components/form/fields/dynamic-form-field/dynamic-form-field.component.d.ts +10 -0
- package/lib/components/form/fields/filepicker/filepicker.component.d.ts +27 -0
- package/lib/components/form/fields/image-cropper/image-cropper.component.d.ts +27 -0
- package/lib/components/form/fields/imagepicker/imagepicker.component.d.ts +41 -0
- package/lib/components/form/fields/markdown-input/markdown-input.component.d.ts +17 -0
- package/lib/components/form/fields/number-input/number-input.component.d.ts +27 -0
- package/lib/components/form/fields/password-input/password-input.component.d.ts +19 -0
- package/lib/components/form/fields/text-input/text-input.component.d.ts +18 -0
- package/lib/components/form/fields/textarea/textarea.component.d.ts +19 -0
- package/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.d.ts +19 -0
- package/lib/components/form/sections/grid-form-section/grid-form-section.component.d.ts +23 -0
- package/lib/components/form/sections/table-form-section/table-form-section.component.d.ts +22 -0
- package/lib/components/layout-editor/containers/accordion-layout-editor-container/accordion-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/containers/dynamic-layout-editor-container/dynamic-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/containers/plain-layout-editor-container/plain-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/dynamic-layout-editor/dynamic-layout-editor.component.d.ts +10 -0
- package/lib/components/layout-editor/elements/dynamic-layout-editor-element/dynamic-layout-editor-element.component.d.ts +13 -0
- package/lib/components/layout-editor/elements/layout-editor-field-element/layout-editor-field-element.component.d.ts +14 -0
- package/lib/components/layout-editor/elements/layout-editor-table-column-element/layout-editor-table-column-element.component.d.ts +14 -0
- package/lib/components/layout-editor/elements/layout-editor-widget-element/layout-editor-widget-element.component.d.ts +8 -0
- package/lib/components/layout-editor/sections/dashboard-layout-editor-section/dashboard-layout-editor-section.component.d.ts +8 -0
- package/lib/components/layout-editor/sections/dynamic-layout-editor-section/dynamic-layout-editor-section.component.d.ts +10 -0
- package/lib/components/layout-editor/sections/grid-layout-editor-section/grid-layout-editor-section.component.d.ts +21 -0
- package/lib/components/layout-editor/sections/markdown-layout-editor-section/markdown-layout-editor-section.component.d.ts +7 -0
- package/lib/components/layout-editor/sections/table-layout-editor-section/table-layout-editor-section.component.d.ts +14 -0
- package/lib/components/navigation/nav-tree/nav-tree.component.d.ts +46 -0
- package/lib/components/navigation/reroute/reroute.component.d.ts +14 -0
- package/lib/components/pages/dashboard-page/dashboard-page.component.d.ts +16 -0
- package/lib/components/pages/detail-page/detail-page.component.d.ts +35 -0
- package/lib/components/pages/documents-page/documents-page.component.d.ts +41 -0
- package/lib/components/pages/export-page/export-page.component.d.ts +29 -0
- package/lib/components/pages/form-page/form-page.component.d.ts +37 -0
- package/lib/components/pages/layout-editor-page/layout-editor-page.component.d.ts +26 -0
- package/lib/components/pages/list-page/list-page-datasource.d.ts +32 -0
- package/lib/components/pages/list-page/list-page.component.d.ts +46 -0
- package/lib/components/pages/tabbed-page/tabbed-page.component.d.ts +16 -0
- package/lib/components/titles/content-title/content-title.component.d.ts +8 -0
- package/lib/components/titles/page-title/page-title.component.d.ts +10 -0
- package/lib/components/titles/section-title/section-title.component.d.ts +7 -0
- package/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.d.ts +20 -0
- package/lib/components/widgets/dynamic-table/dynamic-table-datasource.d.ts +40 -0
- package/lib/components/widgets/dynamic-table/dynamic-table.component.d.ts +30 -0
- package/lib/components/widgets/file-preview-dialog/file-preview-dialog.component.d.ts +17 -0
- package/lib/components/widgets/loader/loader.component.d.ts +6 -0
- package/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.d.ts +16 -0
- package/lib/components/widgets/search-panel/search-panel.component.d.ts +21 -0
- package/lib/components/widgets/snackbar/snackbar.component.d.ts +11 -0
- package/lib/config/charts/column-chart.data.d.ts +37 -0
- package/lib/config/charts/gantt-chart.data.d.ts +17 -0
- package/lib/config/charts/pie-chart.data.d.ts +20 -0
- package/lib/config/charts/progress-bar-chart.data.d.ts +49 -0
- package/lib/config/charts/spline-chart.data.d.ts +23 -0
- package/lib/data-structures/dynamic-layout.structure.d.ts +161 -0
- package/lib/data-structures/file-attachment.structure.d.ts +6 -0
- package/lib/directives/click-stop-propagation.directive.d.ts +6 -0
- package/lib/directives/file-dropzone.directive.d.ts +12 -0
- package/lib/guards/feature.guard.d.ts +15 -0
- package/lib/guards/password-check.guard.d.ts +11 -0
- package/lib/guards/session.guard.d.ts +10 -0
- package/lib/mantle.module.d.ts +106 -0
- package/lib/material.module.d.ts +34 -0
- package/lib/models/screen-size-map.model.d.ts +13 -0
- package/lib/pipes/dynamic.pipe.d.ts +12 -0
- package/lib/pipes/secure-image.pipe.d.ts +11 -0
- package/lib/services/adapters/web-api-crud.adapter.d.ts +63 -0
- package/lib/services/adapters/websocket.adapter.d.ts +6 -0
- package/lib/services/announcement.service.d.ts +11 -0
- package/lib/services/array.service.d.ts +21 -0
- package/lib/services/chart.service.d.ts +14 -0
- package/lib/services/confirmation.service.d.ts +11 -0
- package/lib/services/current-user.service.d.ts +28 -0
- package/lib/services/dynamic-form.service.d.ts +30 -0
- package/lib/services/feature-config.service.d.ts +82 -0
- package/lib/services/interfaces/authorisable-feature.service.d.ts +5 -0
- package/lib/services/interfaces/dashboard-page.service.d.ts +13 -0
- package/lib/services/interfaces/dashboard-widget.service.d.ts +34 -0
- package/lib/services/interfaces/detail-page.service.d.ts +36 -0
- package/lib/services/interfaces/export-page.service.d.ts +6 -0
- package/lib/services/interfaces/form-page.service.d.ts +30 -0
- package/lib/services/interfaces/layout-editor-page.service.d.ts +14 -0
- package/lib/services/interfaces/list-page.service.d.ts +44 -0
- package/lib/services/interfaces/nav-tabs.service.d.ts +7 -0
- package/lib/services/interfaces/reroute.service.d.ts +3 -0
- package/lib/services/object.service.d.ts +11 -0
- package/lib/services/password-check.service.d.ts +21 -0
- package/lib/services/screen-size.service.d.ts +14 -0
- package/lib/services/web-api.service.d.ts +21 -0
- package/lib/services/websocket.service.d.ts +20 -0
- package/lib/tokens/environment.token.d.ts +2 -0
- package/package.json +33 -15
- package/public-api.d.ts +129 -2
- package/fesm2022/codetectonics-mantle.mjs +0 -42
- package/fesm2022/codetectonics-mantle.mjs.map +0 -1
- package/lib/mantle.component.d.ts +0 -5
- package/lib/mantle.service.d.ts +0 -6
- /package/{index.d.ts → codetectonics-mantle.d.ts} +0 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXRlY3Rvbmljcy1tYW50bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2NvZGV0ZWN0b25pY3MtbWFudGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../plain-dashboard-container/plain-dashboard-container.component";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
export class DynamicDashboardContainerComponent {
|
|
6
|
+
constructor() { }
|
|
7
|
+
}
|
|
8
|
+
DynamicDashboardContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicDashboardContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
DynamicDashboardContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicDashboardContainerComponent, selector: "mantle-dynamic-dashboard-container", inputs: { dashboardPageService: "dashboardPageService", content: "content", container: "container" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"container.container_style\">\n\n <ng-container *ngSwitchCase=\"'plain'\">\n <mantle-plain-dashboard-container [dashboardPageService]=\"dashboardPageService\" [container]=\"container\" [content]=\"content\">\n </mantle-plain-dashboard-container>\n </ng-container>\n\n</ng-container>\n", styles: [""], components: [{ type: i1.PlainDashboardContainerComponent, selector: "mantle-plain-dashboard-container", inputs: ["dashboardPageService", "content", "container"] }], directives: [{ type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicDashboardContainerComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'mantle-dynamic-dashboard-container',
|
|
14
|
+
templateUrl: './dynamic-dashboard-container.component.html',
|
|
15
|
+
styleUrls: ['./dynamic-dashboard-container.component.scss']
|
|
16
|
+
}]
|
|
17
|
+
}], ctorParameters: function () { return []; }, propDecorators: { dashboardPageService: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], content: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], container: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}] } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1kYXNoYm9hcmQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkL2NvbnRhaW5lcnMvZHluYW1pYy1kYXNoYm9hcmQtY29udGFpbmVyL2R5bmFtaWMtZGFzaGJvYXJkLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC9jb250YWluZXJzL2R5bmFtaWMtZGFzaGJvYXJkLWNvbnRhaW5lci9keW5hbWljLWRhc2hib2FyZC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFTakQsTUFBTSxPQUFPLGtDQUFrQztJQU03QyxnQkFBZ0IsQ0FBQzs7Z0lBTk4sa0NBQWtDO29IQUFsQyxrQ0FBa0MsZ0xDVC9DLGdVQVFBOzRGRENhLGtDQUFrQztrQkFMOUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0NBQW9DO29CQUM5QyxXQUFXLEVBQUUsOENBQThDO29CQUMzRCxTQUFTLEVBQUUsQ0FBQyw4Q0FBOEMsQ0FBQztpQkFDNUQ7MEVBR1Usb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0Rhc2hib2FyZENvbnRlbnQsIER5bmFtaWNMYXlvdXRDb250YWluZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhLXN0cnVjdHVyZXMvZHluYW1pYy1sYXlvdXQuc3RydWN0dXJlJztcbmltcG9ydCB7IERhc2hib2FyZFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kYXNoYm9hcmQtcGFnZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFudGxlLWR5bmFtaWMtZGFzaGJvYXJkLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWRhc2hib2FyZC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWRhc2hib2FyZC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRGFzaGJvYXJkQ29udGFpbmVyQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBkYXNoYm9hcmRQYWdlU2VydmljZSE6IERhc2hib2FyZFBhZ2VTZXJ2aWNlO1xuICBASW5wdXQoKSBjb250ZW50ITogRHluYW1pY0Rhc2hib2FyZENvbnRlbnQ7XG4gIEBJbnB1dCgpIGNvbnRhaW5lciE6IER5bmFtaWNMYXlvdXRDb250YWluZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29udGFpbmVyLmNvbnRhaW5lcl9zdHlsZVwiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwbGFpbidcIj5cbiAgICA8bWFudGxlLXBsYWluLWRhc2hib2FyZC1jb250YWluZXIgW2Rhc2hib2FyZFBhZ2VTZXJ2aWNlXT1cImRhc2hib2FyZFBhZ2VTZXJ2aWNlXCIgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIiBbY29udGVudF09XCJjb250ZW50XCI+XG4gICAgPC9tYW50bGUtcGxhaW4tZGFzaGJvYXJkLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../sections/dashboard-section/dashboard-section.component";
|
|
4
|
+
import * as i2 from "../../../details/sections/grid-details-section/grid-details-section.component";
|
|
5
|
+
import * as i3 from "../../../details/sections/table-details-section/table-details-section.component";
|
|
6
|
+
import * as i4 from "@angular/common";
|
|
7
|
+
export class PlainDashboardContainerComponent {
|
|
8
|
+
constructor() { }
|
|
9
|
+
asDynamicLayoutGridSection(section) {
|
|
10
|
+
return section;
|
|
11
|
+
}
|
|
12
|
+
asDynamicLayoutTableSection(section) {
|
|
13
|
+
return section;
|
|
14
|
+
}
|
|
15
|
+
asDynamicLayoutDashboardSection(section) {
|
|
16
|
+
return section;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
PlainDashboardContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PlainDashboardContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
PlainDashboardContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PlainDashboardContainerComponent, selector: "mantle-plain-dashboard-container", inputs: { dashboardPageService: "dashboardPageService", content: "content", container: "container" }, ngImport: i0, template: "<ng-container *ngFor=\"let section of container.sections\">\n <ng-container *ngIf=\"!section.hidden\">\n <ng-container [ngSwitch]=\"section.layout\">\n\n <ng-container *ngSwitchCase=\"'dashboard'\">\n <mantle-dashboard-section\n [slug]=\"section.slug\"\n [section]=\"asDynamicLayoutDashboardSection(section)\"\n [data]=\"content.data\"\n [dashboardPageService]=\"dashboardPageService\">\n </mantle-dashboard-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'grid'\">\n <mantle-grid-details-section\n [section]=\"asDynamicLayoutGridSection(section)\"\n [data]=\"content.data\">\n </mantle-grid-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'table'\">\n <mantle-table-details-section\n [section]=\"asDynamicLayoutTableSection(section)\"\n [data]=\"content.data\">\n </mantle-table-details-section>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [""], components: [{ type: i1.DashboardSectionComponent, selector: "mantle-dashboard-section", inputs: ["dashboardPageService", "slug", "data", "section"] }, { type: i2.GridDetailsSectionComponent, selector: "mantle-grid-details-section", inputs: ["data", "section", "defaultRowHeight"] }, { type: i3.TableDetailsSectionComponent, selector: "mantle-table-details-section", inputs: ["data", "section"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PlainDashboardContainerComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: 'mantle-plain-dashboard-container',
|
|
25
|
+
templateUrl: './plain-dashboard-container.component.html',
|
|
26
|
+
styleUrls: ['./plain-dashboard-container.component.scss']
|
|
27
|
+
}]
|
|
28
|
+
}], ctorParameters: function () { return []; }, propDecorators: { dashboardPageService: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], content: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], container: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaW4tZGFzaGJvYXJkLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC9jb250YWluZXJzL3BsYWluLWRhc2hib2FyZC1jb250YWluZXIvcGxhaW4tZGFzaGJvYXJkLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC9jb250YWluZXJzL3BsYWluLWRhc2hib2FyZC1jb250YWluZXIvcGxhaW4tZGFzaGJvYXJkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBWWpELE1BQU0sT0FBTyxnQ0FBZ0M7SUFNM0MsZ0JBQWdCLENBQUM7SUFFakIsMEJBQTBCLENBQUMsT0FBWTtRQUNyQyxPQUFPLE9BQW1DLENBQUM7SUFDN0MsQ0FBQztJQUVELDJCQUEyQixDQUFDLE9BQVk7UUFDdEMsT0FBTyxPQUFvQyxDQUFDO0lBQzlDLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxPQUFZO1FBQzFDLE9BQU8sT0FBd0MsQ0FBQztJQUNsRCxDQUFDOzs4SEFsQlUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0MsOEtDWjdDLG1qQ0E4QkE7NEZEbEJhLGdDQUFnQztrQkFMNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxXQUFXLEVBQUUsNENBQTRDO29CQUN6RCxTQUFTLEVBQUUsQ0FBQyw0Q0FBNEMsQ0FBQztpQkFDMUQ7MEVBR1Usb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRHluYW1pY0Rhc2hib2FyZENvbnRlbnQsIER5bmFtaWNMYXlvdXRDb250YWluZXIsIER5bmFtaWNMYXlvdXRHcmlkU2VjdGlvbixcbiAgRHluYW1pY0xheW91dFRhYmxlU2VjdGlvbiwgRHluYW1pY0xheW91dERhc2hib2FyZFNlY3Rpb25cbn0gZnJvbSAnLi4vLi4vLi4vLi4vZGF0YS1zdHJ1Y3R1cmVzL2R5bmFtaWMtbGF5b3V0LnN0cnVjdHVyZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRQYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ludGVyZmFjZXMvZGFzaGJvYXJkLXBhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1wbGFpbi1kYXNoYm9hcmQtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWluLWRhc2hib2FyZC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGFpbi1kYXNoYm9hcmQtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGxhaW5EYXNoYm9hcmRDb250YWluZXJDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGRhc2hib2FyZFBhZ2VTZXJ2aWNlITogRGFzaGJvYXJkUGFnZVNlcnZpY2U7XG4gIEBJbnB1dCgpIGNvbnRlbnQhOiBEeW5hbWljRGFzaGJvYXJkQ29udGVudDtcbiAgQElucHV0KCkgY29udGFpbmVyITogRHluYW1pY0xheW91dENvbnRhaW5lcjtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGFzRHluYW1pY0xheW91dEdyaWRTZWN0aW9uKHNlY3Rpb246IGFueSk6IER5bmFtaWNMYXlvdXRHcmlkU2VjdGlvbiB7XG4gICAgcmV0dXJuIHNlY3Rpb24gYXMgRHluYW1pY0xheW91dEdyaWRTZWN0aW9uO1xuICB9XG5cbiAgYXNEeW5hbWljTGF5b3V0VGFibGVTZWN0aW9uKHNlY3Rpb246IGFueSk6IER5bmFtaWNMYXlvdXRUYWJsZVNlY3Rpb24ge1xuICAgIHJldHVybiBzZWN0aW9uIGFzIER5bmFtaWNMYXlvdXRUYWJsZVNlY3Rpb247XG4gIH1cblxuICBhc0R5bmFtaWNMYXlvdXREYXNoYm9hcmRTZWN0aW9uKHNlY3Rpb246IGFueSk6IER5bmFtaWNMYXlvdXREYXNoYm9hcmRTZWN0aW9uIHtcbiAgICByZXR1cm4gc2VjdGlvbiBhcyBEeW5hbWljTGF5b3V0RGFzaGJvYXJkU2VjdGlvbjtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbnRhaW5lci5zZWN0aW9uc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlY3Rpb24uaGlkZGVuXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VjdGlvbi5sYXlvdXRcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Rhc2hib2FyZCdcIj5cbiAgICAgICAgPG1hbnRsZS1kYXNoYm9hcmQtc2VjdGlvblxuICAgICAgICAgICAgW3NsdWddPVwic2VjdGlvbi5zbHVnXCJcbiAgICAgICAgICAgIFtzZWN0aW9uXT1cImFzRHluYW1pY0xheW91dERhc2hib2FyZFNlY3Rpb24oc2VjdGlvbilcIlxuICAgICAgICAgICAgW2RhdGFdPVwiY29udGVudC5kYXRhXCJcbiAgICAgICAgICAgIFtkYXNoYm9hcmRQYWdlU2VydmljZV09XCJkYXNoYm9hcmRQYWdlU2VydmljZVwiPlxuICAgICAgICA8L21hbnRsZS1kYXNoYm9hcmQtc2VjdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZ3JpZCdcIj5cbiAgICAgICAgPG1hbnRsZS1ncmlkLWRldGFpbHMtc2VjdGlvblxuICAgICAgICAgICAgW3NlY3Rpb25dPVwiYXNEeW5hbWljTGF5b3V0R3JpZFNlY3Rpb24oc2VjdGlvbilcIlxuICAgICAgICAgICAgW2RhdGFdPVwiY29udGVudC5kYXRhXCI+XG4gICAgICAgIDwvbWFudGxlLWdyaWQtZGV0YWlscy1zZWN0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0YWJsZSdcIj5cbiAgICAgICAgPG1hbnRsZS10YWJsZS1kZXRhaWxzLXNlY3Rpb25cbiAgICAgICAgICAgIFtzZWN0aW9uXT1cImFzRHluYW1pY0xheW91dFRhYmxlU2VjdGlvbihzZWN0aW9uKVwiXG4gICAgICAgICAgICBbZGF0YV09XCJjb250ZW50LmRhdGFcIj5cbiAgICAgICAgPC9tYW50bGUtdGFibGUtZGV0YWlscy1zZWN0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { MatMenuTrigger } from '@angular/material/menu';
|
|
3
|
+
import { DashboardCardSearchMenuComponent } from '../../../components/dashboard/dashboard-card-search-menu/dashboard-card-search-menu.component';
|
|
4
|
+
import { ScreenSizeService } from '../../../services/screen-size.service';
|
|
5
|
+
import { ObjectService } from '../../../services/object.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../../services/object.service";
|
|
8
|
+
import * as i2 from "../../../services/screen-size.service";
|
|
9
|
+
import * as i3 from "@angular/material/card";
|
|
10
|
+
import * as i4 from "@angular/material/icon";
|
|
11
|
+
import * as i5 from "@angular/material/button";
|
|
12
|
+
import * as i6 from "@angular/material/menu";
|
|
13
|
+
import * as i7 from "../dashboard-card-search-menu/dashboard-card-search-menu.component";
|
|
14
|
+
import * as i8 from "@angular/material/grid-list";
|
|
15
|
+
import * as i9 from "../widgets/dynamic-widget-display/dynamic-widget-display.component";
|
|
16
|
+
import * as i10 from "@angular/flex-layout/flex";
|
|
17
|
+
import * as i11 from "@angular/common";
|
|
18
|
+
import * as i12 from "@angular/flex-layout/extended";
|
|
19
|
+
import * as i13 from "../../../directives/click-stop-propagation.directive";
|
|
20
|
+
export class DashboardCardComponent {
|
|
21
|
+
constructor(objectService, screenSizeService) {
|
|
22
|
+
this.objectService = objectService;
|
|
23
|
+
this.screenSizeService = screenSizeService;
|
|
24
|
+
this.rowHeight = '';
|
|
25
|
+
this.widgetItemContexts = [];
|
|
26
|
+
this.exportOptions = [];
|
|
27
|
+
this.additionalWidgetButtons = [];
|
|
28
|
+
this.options = {};
|
|
29
|
+
this.screenSize = 'default';
|
|
30
|
+
this.WIDGET_COLUMNS = 12;
|
|
31
|
+
this.widgetRowHeight = '170px';
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.initializeWidget();
|
|
35
|
+
this.getWidgetItemData();
|
|
36
|
+
this.options = this.dashboardWidgetService.defaultOptions();
|
|
37
|
+
this.watchScreenSize(this.dashboardWidgetService.widgetDimensions);
|
|
38
|
+
this.refreshFormContent();
|
|
39
|
+
}
|
|
40
|
+
initializeWidget() {
|
|
41
|
+
this.exportOptions = this.dashboardWidgetService.widgetExportOptions();
|
|
42
|
+
this.additionalWidgetButtons = this.dashboardWidgetService.additionalWidgetButtons(this.widgetConfig);
|
|
43
|
+
}
|
|
44
|
+
getWidgetItemData() {
|
|
45
|
+
this.widgetItemContexts = this.dashboardWidgetService.widgetItemsConfig().map((widgetItem) => {
|
|
46
|
+
let widgetItemData = this.widgetItems[widgetItem.slug];
|
|
47
|
+
widgetItemData.data = this.objectService.deepMerge(widgetItem.configuration, widgetItemData.data);
|
|
48
|
+
if (widgetItem.type == 'info') {
|
|
49
|
+
widgetItemData.data = this.objectService.deepMerge(widgetItemData.data, { key_value: { label: widgetItem.label } });
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
config: widgetItem,
|
|
53
|
+
data: widgetItemData.data,
|
|
54
|
+
options: widgetItemData.options
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
refreshFormContent() {
|
|
59
|
+
this.formContent = {
|
|
60
|
+
data: this.options,
|
|
61
|
+
elements: this.dashboardWidgetService.widgetSearchFields()
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
onSearchClicked() {
|
|
65
|
+
let itemSlugs = this.widgetItemContexts.map((context) => {
|
|
66
|
+
return context.config.slug;
|
|
67
|
+
});
|
|
68
|
+
let searchParams = this.searchForm.value;
|
|
69
|
+
searchParams.widget_item_slugs = JSON.stringify(itemSlugs);
|
|
70
|
+
this.objectService.removeEmptyAttributes(searchParams);
|
|
71
|
+
this.dashboardPageService.getWidgetItems(searchParams).subscribe(res => {
|
|
72
|
+
this.widgetConfig = res.content.data.widget_configs[this.widget.slug];
|
|
73
|
+
this.widgetItems = res.content.data.widget_items;
|
|
74
|
+
this.initializeWidget();
|
|
75
|
+
this.getWidgetItemData();
|
|
76
|
+
this.options = this.widgetItems[itemSlugs[0]].options;
|
|
77
|
+
this.refreshFormContent();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
onAdditionalWidgetButtonClicked(buttonCallback) {
|
|
81
|
+
buttonCallback({
|
|
82
|
+
onSuccess: () => {
|
|
83
|
+
this.dashboardPageService.getWidgetItems({}).subscribe(res => {
|
|
84
|
+
this.widgetConfig = res.content.data.widget_configs[this.widget.slug];
|
|
85
|
+
this.widgetItems = res.content.data.widget_items;
|
|
86
|
+
this.initializeWidget();
|
|
87
|
+
this.getWidgetItemData();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
watchScreenSize(widgetDimensions) {
|
|
93
|
+
this.screenSizeService.screenSize.subscribe((screenSize) => {
|
|
94
|
+
this.screenSize = screenSize;
|
|
95
|
+
this.widgetRowHeight = widgetDimensions.findByScreenSize(this.screenSize).rowHeight;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
getWidgetItemColspan(config) {
|
|
99
|
+
return config.size.findByScreenSize(this.screenSize).colspan;
|
|
100
|
+
}
|
|
101
|
+
getWidgetItemRowspan(config) {
|
|
102
|
+
return config.size.findByScreenSize(this.screenSize).rowspan;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
DashboardCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardCardComponent, deps: [{ token: i1.ObjectService }, { token: i2.ScreenSizeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
106
|
+
DashboardCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DashboardCardComponent, selector: "mantle-dashboard-card", inputs: { widget: "widget", widgetConfig: "widgetConfig", widgetItems: "widgetItems", rowHeight: "rowHeight", dashboardWidgetService: "dashboardWidgetService", dashboardPageService: "dashboardPageService" }, viewQueries: [{ propertyName: "searchForm", first: true, predicate: DashboardCardSearchMenuComponent, descendants: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<mat-card fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"0px\" class=\"dashboard-card\">\n <mat-card-header fxFlex=\"0 0 auto\">\n <mat-card-title>\n <span *ngIf=\"!dashboardWidgetService.icon; else iconHeader\" class=\"sub-card-title\">{{ widget.label }}</span>\n <ng-template #iconHeader>\n <div>\n <mat-icon class=\"card-title-icon\">{{ dashboardWidgetService.icon }}</mat-icon>\n <span class=\"main-card-title\">\n {{ widget.label }}\n </span>\n </div>\n </ng-template>\n\n <ng-container *ngFor=\"let exportOption of exportOptions\">\n <button mat-button type=\"button\" class=\"export-button\" (click)=\"exportOption.export(options).subscribe()\">\n <span class=\"export-button-label\">{{ exportOption.label }}</span>\n <mat-icon>download</mat-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"additionalWidgetButtons\">\n <div class=\"widget-button-container\" [ngClass]=\"{ 'with-menu-button': dashboardWidgetService.showMenuButton }\">\n <button *ngFor=\"let button of additionalWidgetButtons\"\n mat-raised-button\n color=\"{{ button.color }}\"\n type=\"button\"\n class=\"widget-button\"\n [ngStyle]=\"button.styling\"\n (click)=\"onAdditionalWidgetButtonClicked(button.onClick)\"\n [disabled]=\"button.disabled\">\n {{ button.label }}\n </button>\n </div>\n </ng-container>\n\n <button #menuTrigger mat-icon-button class=\"more-button\" [matMenuTriggerFor]=\"menu\" *ngIf=\"dashboardWidgetService.showMenuButton\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <div class=\"menu-form\" click-stop-propagation>\n <mantle-dashboard-card-search-menu #searchForm [content]=\"formContent\"></mantle-dashboard-card-search-menu>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"16px\">\n <div fxFlex=\"1 1 auto\"></div>\n <div fxFlex=\"0 0 auto\">\n <button mat-raised-button color=\"primary\" type=\"button\" class=\"search-button\" (click)=\"onSearchClicked(); menuTrigger.closeMenu();\">\n Search\n </button>\n </div>\n </div>\n </div>\n </mat-menu>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content fxFlex=\"1 0 1px\" fxAlign=\"center center\" class=\"dashboard-card-content\">\n\n <div class=\"grid-container\">\n <mat-grid-list\n [rowHeight]=\"widgetRowHeight\"\n [cols]=\"WIDGET_COLUMNS\">\n <mat-grid-tile *ngFor=\"let context of widgetItemContexts\" [colspan]=\"getWidgetItemColspan(context.config)\" [rowspan]=\"getWidgetItemRowspan(context.config)\">\n <mantle-dynamic-widget-display\n class=\"card-content-wrapper\"\n [widgetItem]=\"context.config\"\n [data]=\"context.data\"\n [options]=\"context.options\">\n </mantle-dynamic-widget-display>\n </mat-grid-tile>\n </mat-grid-list>\n </div>\n\n </mat-card-content>\n</mat-card>\n", styles: [".dashboard-card{position:absolute;top:15px;left:15px;right:15px;bottom:15px;padding:10px 15px}.more-button{position:absolute;top:5px;right:10px}.dashboard-card-content{text-align:center}.mat-card-title{margin-bottom:10px;padding-top:5px;font-weight:400}.mat-card-title .main-card-title{font-size:19px;text-transform:uppercase;font-weight:500;vertical-align:middle}.mat-card-title .card-title-icon{font-size:2rem;vertical-align:middle;padding-right:7px}.mat-card-title .sub-card-title{font-size:18px;font-weight:500}.card-content-wrapper{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:stretch}.menu-form{width:140px;padding:0 8px}.export-button{display:inline-block;width:110px;background-color:transparent;white-space:nowrap;padding:0;position:absolute;top:8px;right:50px}.export-button .export-button-label{display:inline-block;width:80px;white-space:normal;text-align:right;text-transform:uppercase;font-weight:normal;font-size:12px;line-height:1.25rem;margin-right:.25rem}.widget-button-container{display:inline-block;position:absolute;top:15px;right:20px}.widget-button-container .widget-button{margin-left:7px}.with-menu-button{right:50px}.mat-icon{height:auto;width:auto;font-size:1.5rem}\n"], components: [{ type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i3.MatCardHeader, selector: "mat-card-header" }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i7.DashboardCardSearchMenuComponent, selector: "mantle-dashboard-card-search-menu", inputs: ["content"] }, { type: i8.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i8.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i9.DynamicWidgetDisplayComponent, selector: "mantle-dynamic-widget-display", inputs: ["widgetItem", "data", "options"] }], directives: [{ type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i10.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i10.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i10.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i12.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i13.ClickStopPropagationDirective, selector: "[click-stop-propagation]" }, { type: i3.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }] });
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardCardComponent, decorators: [{
|
|
108
|
+
type: Component,
|
|
109
|
+
args: [{
|
|
110
|
+
selector: 'mantle-dashboard-card',
|
|
111
|
+
templateUrl: './dashboard-card.component.html',
|
|
112
|
+
styleUrls: ['./dashboard-card.component.scss']
|
|
113
|
+
}]
|
|
114
|
+
}], ctorParameters: function () { return [{ type: i1.ObjectService }, { type: i2.ScreenSizeService }]; }, propDecorators: { searchForm: [{
|
|
115
|
+
type: ViewChild,
|
|
116
|
+
args: [DashboardCardSearchMenuComponent]
|
|
117
|
+
}], menuTrigger: [{
|
|
118
|
+
type: ViewChild,
|
|
119
|
+
args: [MatMenuTrigger]
|
|
120
|
+
}], widget: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], widgetConfig: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], widgetItems: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], rowHeight: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], dashboardWidgetService: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], dashboardPageService: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}] } });
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLWNhcmQvZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLWNhcmQvZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwrRkFBK0YsQ0FBQztBQUNqSixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sc0JBQXNCO0lBc0JqQyxZQUFvQixhQUE0QixFQUFVLGlCQUFvQztRQUExRSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFkckYsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUl6Qix1QkFBa0IsR0FBVSxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBeUIsRUFBRSxDQUFDO1FBQ3pDLDRCQUF1QixHQUE0QixFQUFFLENBQUM7UUFFdEQsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUVqQixlQUFVLEdBQVcsU0FBUyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQ3JDLG9CQUFlLEdBQVcsT0FBTyxDQUFDO0lBRXlELENBQUM7SUFFbkcsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRTtZQUNoRyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxjQUFjLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xHLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7Z0JBQzdCLGNBQWMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3JIO1lBRUQsT0FBTztnQkFDTCxNQUFNLEVBQUUsVUFBVTtnQkFDbEIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJO2dCQUN6QixPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU87YUFDaEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTztZQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixFQUFFO1NBQzNELENBQUE7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUMzRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDekMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyRSxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBRWpELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDdEQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsK0JBQStCLENBQUMsY0FBd0I7UUFDdEQsY0FBYyxDQUFDO1lBQ2IsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDM0QsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBRWpELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxnQkFBcUI7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztZQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBaUM7UUFDcEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDL0QsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWlDO1FBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQy9ELENBQUM7O29IQTFHVSxzQkFBc0I7d0dBQXRCLHNCQUFzQix5VEFFdEIsZ0NBQWdDLDhFQUNoQyxjQUFjLGdEQ2pCM0Isb3VHQTBFQTs0RkQ1RGEsc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUMvQztvSUFHOEMsVUFBVTtzQkFBdEQsU0FBUzt1QkFBQyxnQ0FBZ0M7Z0JBQ2hCLFdBQVc7c0JBQXJDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IER5bmFtaWNEYXNoYm9hcmRXaWRnZXQsIERhc2hib2FyZENhcmRTZWFyY2hNZW51Q29udGVudCB9IGZyb20gJy4uLy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2FyZFNlYXJjaE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Rhc2hib2FyZC9kYXNoYm9hcmQtY2FyZC1zZWFyY2gtbWVudS9kYXNoYm9hcmQtY2FyZC1zZWFyY2gtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zY3JlZW4tc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kYXNoYm9hcmQtcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZFdpZGdldFNlcnZpY2UsIFdpZGdldEV4cG9ydE9wdGlvbiwgRGFzaGJvYXJkV2lkZ2V0QnV0dG9uLCBEYXNoYm9hcmRXaWRnZXRJdGVtQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kYXNoYm9hcmQtd2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29iamVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFudGxlLWRhc2hib2FyZC1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKERhc2hib2FyZENhcmRTZWFyY2hNZW51Q29tcG9uZW50KSBzZWFyY2hGb3JtITogRGFzaGJvYXJkQ2FyZFNlYXJjaE1lbnVDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIG1lbnVUcmlnZ2VyITogTWF0TWVudVRyaWdnZXI7XG5cbiAgQElucHV0KCkgd2lkZ2V0ITogRHluYW1pY0Rhc2hib2FyZFdpZGdldDtcbiAgQElucHV0KCkgd2lkZ2V0Q29uZmlnITogYW55O1xuICBASW5wdXQoKSB3aWRnZXRJdGVtcyE6IGFueTtcbiAgQElucHV0KCkgcm93SGVpZ2h0OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGFzaGJvYXJkV2lkZ2V0U2VydmljZSE6IERhc2hib2FyZFdpZGdldFNlcnZpY2U7XG4gIEBJbnB1dCgpIGRhc2hib2FyZFBhZ2VTZXJ2aWNlITogRGFzaGJvYXJkUGFnZVNlcnZpY2U7XG5cbiAgcHVibGljIHdpZGdldEl0ZW1Db250ZXh0czogYW55W10gPSBbXTtcbiAgcHVibGljIGV4cG9ydE9wdGlvbnM6IFdpZGdldEV4cG9ydE9wdGlvbltdID0gW107XG4gIHB1YmxpYyBhZGRpdGlvbmFsV2lkZ2V0QnV0dG9uczogRGFzaGJvYXJkV2lkZ2V0QnV0dG9uW10gPSBbXTtcbiAgcHVibGljIGZvcm1Db250ZW50ITogRGFzaGJvYXJkQ2FyZFNlYXJjaE1lbnVDb250ZW50O1xuICBwdWJsaWMgb3B0aW9uczogYW55ID0ge307XG5cbiAgcHJpdmF0ZSBzY3JlZW5TaXplOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIHB1YmxpYyByZWFkb25seSBXSURHRVRfQ09MVU1OUzogbnVtYmVyID0gMTI7XG4gIHB1YmxpYyB3aWRnZXRSb3dIZWlnaHQ6IHN0cmluZyA9ICcxNzBweCc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvYmplY3RTZXJ2aWNlOiBPYmplY3RTZXJ2aWNlLCBwcml2YXRlIHNjcmVlblNpemVTZXJ2aWNlOiBTY3JlZW5TaXplU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplV2lkZ2V0KCk7XG4gICAgdGhpcy5nZXRXaWRnZXRJdGVtRGF0YSgpO1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGFzaGJvYXJkV2lkZ2V0U2VydmljZS5kZWZhdWx0T3B0aW9ucygpO1xuICAgIHRoaXMud2F0Y2hTY3JlZW5TaXplKHRoaXMuZGFzaGJvYXJkV2lkZ2V0U2VydmljZS53aWRnZXREaW1lbnNpb25zKTtcbiAgICB0aGlzLnJlZnJlc2hGb3JtQ29udGVudCgpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVdpZGdldCgpIHtcbiAgICB0aGlzLmV4cG9ydE9wdGlvbnMgPSB0aGlzLmRhc2hib2FyZFdpZGdldFNlcnZpY2Uud2lkZ2V0RXhwb3J0T3B0aW9ucygpO1xuICAgIHRoaXMuYWRkaXRpb25hbFdpZGdldEJ1dHRvbnMgPSB0aGlzLmRhc2hib2FyZFdpZGdldFNlcnZpY2UuYWRkaXRpb25hbFdpZGdldEJ1dHRvbnModGhpcy53aWRnZXRDb25maWcpO1xuICB9XG5cbiAgZ2V0V2lkZ2V0SXRlbURhdGEoKSB7XG4gICAgdGhpcy53aWRnZXRJdGVtQ29udGV4dHMgPSB0aGlzLmRhc2hib2FyZFdpZGdldFNlcnZpY2Uud2lkZ2V0SXRlbXNDb25maWcoKS5tYXAoKHdpZGdldEl0ZW06IGFueSkgPT4ge1xuICAgICAgbGV0IHdpZGdldEl0ZW1EYXRhID0gdGhpcy53aWRnZXRJdGVtc1t3aWRnZXRJdGVtLnNsdWddO1xuICAgICAgd2lkZ2V0SXRlbURhdGEuZGF0YSA9IHRoaXMub2JqZWN0U2VydmljZS5kZWVwTWVyZ2Uod2lkZ2V0SXRlbS5jb25maWd1cmF0aW9uLCB3aWRnZXRJdGVtRGF0YS5kYXRhKTtcbiAgICAgIGlmICh3aWRnZXRJdGVtLnR5cGUgPT0gJ2luZm8nKSB7XG4gICAgICAgIHdpZGdldEl0ZW1EYXRhLmRhdGEgPSB0aGlzLm9iamVjdFNlcnZpY2UuZGVlcE1lcmdlKHdpZGdldEl0ZW1EYXRhLmRhdGEsIHsga2V5X3ZhbHVlOiB7IGxhYmVsOiB3aWRnZXRJdGVtLmxhYmVsIH0gfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbmZpZzogd2lkZ2V0SXRlbSxcbiAgICAgICAgZGF0YTogd2lkZ2V0SXRlbURhdGEuZGF0YSxcbiAgICAgICAgb3B0aW9uczogd2lkZ2V0SXRlbURhdGEub3B0aW9uc1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlZnJlc2hGb3JtQ29udGVudCgpIHtcbiAgICB0aGlzLmZvcm1Db250ZW50ID0ge1xuICAgICAgZGF0YTogdGhpcy5vcHRpb25zLFxuICAgICAgZWxlbWVudHM6IHRoaXMuZGFzaGJvYXJkV2lkZ2V0U2VydmljZS53aWRnZXRTZWFyY2hGaWVsZHMoKVxuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoQ2xpY2tlZCgpIHtcbiAgICBsZXQgaXRlbVNsdWdzID0gdGhpcy53aWRnZXRJdGVtQ29udGV4dHMubWFwKChjb250ZXh0OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBjb250ZXh0LmNvbmZpZy5zbHVnO1xuICAgIH0pO1xuICAgIGxldCBzZWFyY2hQYXJhbXMgPSB0aGlzLnNlYXJjaEZvcm0udmFsdWU7XG4gICAgc2VhcmNoUGFyYW1zLndpZGdldF9pdGVtX3NsdWdzID0gSlNPTi5zdHJpbmdpZnkoaXRlbVNsdWdzKTtcbiAgICB0aGlzLm9iamVjdFNlcnZpY2UucmVtb3ZlRW1wdHlBdHRyaWJ1dGVzKHNlYXJjaFBhcmFtcyk7XG5cbiAgICB0aGlzLmRhc2hib2FyZFBhZ2VTZXJ2aWNlLmdldFdpZGdldEl0ZW1zKHNlYXJjaFBhcmFtcykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLndpZGdldENvbmZpZyA9IHJlcy5jb250ZW50LmRhdGEud2lkZ2V0X2NvbmZpZ3NbdGhpcy53aWRnZXQuc2x1Z107XG4gICAgICB0aGlzLndpZGdldEl0ZW1zID0gcmVzLmNvbnRlbnQuZGF0YS53aWRnZXRfaXRlbXM7XG5cbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVdpZGdldCgpO1xuICAgICAgdGhpcy5nZXRXaWRnZXRJdGVtRGF0YSgpO1xuICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy53aWRnZXRJdGVtc1tpdGVtU2x1Z3NbMF1dLm9wdGlvbnM7XG4gICAgICB0aGlzLnJlZnJlc2hGb3JtQ29udGVudCgpO1xuICAgIH0pO1xuICB9XG5cbiAgb25BZGRpdGlvbmFsV2lkZ2V0QnV0dG9uQ2xpY2tlZChidXR0b25DYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBidXR0b25DYWxsYmFjayh7XG4gICAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRQYWdlU2VydmljZS5nZXRXaWRnZXRJdGVtcyh7fSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy53aWRnZXRDb25maWcgPSByZXMuY29udGVudC5kYXRhLndpZGdldF9jb25maWdzW3RoaXMud2lkZ2V0LnNsdWddO1xuICAgICAgICAgIHRoaXMud2lkZ2V0SXRlbXMgPSByZXMuY29udGVudC5kYXRhLndpZGdldF9pdGVtcztcblxuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVdpZGdldCgpO1xuICAgICAgICAgIHRoaXMuZ2V0V2lkZ2V0SXRlbURhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB3YXRjaFNjcmVlblNpemUod2lkZ2V0RGltZW5zaW9uczogYW55KSB7XG4gICAgdGhpcy5zY3JlZW5TaXplU2VydmljZS5zY3JlZW5TaXplLnN1YnNjcmliZSgoc2NyZWVuU2l6ZTogYW55KSA9PiB7XG4gICAgICB0aGlzLnNjcmVlblNpemUgPSBzY3JlZW5TaXplO1xuICAgICAgdGhpcy53aWRnZXRSb3dIZWlnaHQgPSB3aWRnZXREaW1lbnNpb25zLmZpbmRCeVNjcmVlblNpemUodGhpcy5zY3JlZW5TaXplKS5yb3dIZWlnaHQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXRXaWRnZXRJdGVtQ29sc3Bhbihjb25maWc6IERhc2hib2FyZFdpZGdldEl0ZW1Db25maWcpOiBudW1iZXIge1xuICAgIHJldHVybiBjb25maWcuc2l6ZS5maW5kQnlTY3JlZW5TaXplKHRoaXMuc2NyZWVuU2l6ZSkuY29sc3BhbjtcbiAgfVxuXG4gIGdldFdpZGdldEl0ZW1Sb3dzcGFuKGNvbmZpZzogRGFzaGJvYXJkV2lkZ2V0SXRlbUNvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvbmZpZy5zaXplLmZpbmRCeVNjcmVlblNpemUodGhpcy5zY3JlZW5TaXplKS5yb3dzcGFuO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RyZXRjaFwiIGZ4TGF5b3V0R2FwPVwiMHB4XCIgY2xhc3M9XCJkYXNoYm9hcmQtY2FyZFwiPlxuICA8bWF0LWNhcmQtaGVhZGVyIGZ4RmxleD1cIjAgMCBhdXRvXCI+XG4gICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZGFzaGJvYXJkV2lkZ2V0U2VydmljZS5pY29uOyBlbHNlIGljb25IZWFkZXJcIiBjbGFzcz1cInN1Yi1jYXJkLXRpdGxlXCI+e3sgd2lkZ2V0LmxhYmVsIH19PC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNpY29uSGVhZGVyPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNhcmQtdGl0bGUtaWNvblwiPnt7IGRhc2hib2FyZFdpZGdldFNlcnZpY2UuaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLWNhcmQtdGl0bGVcIj5cbiAgICAgICAgICAgIHt7IHdpZGdldC5sYWJlbCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHBvcnRPcHRpb24gb2YgZXhwb3J0T3B0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIChjbGljayk9XCJleHBvcnRPcHRpb24uZXhwb3J0KG9wdGlvbnMpLnN1YnNjcmliZSgpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHBvcnQtYnV0dG9uLWxhYmVsXCI+e3sgZXhwb3J0T3B0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxtYXQtaWNvbj5kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGRpdGlvbmFsV2lkZ2V0QnV0dG9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LWJ1dHRvbi1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICd3aXRoLW1lbnUtYnV0dG9uJzogZGFzaGJvYXJkV2lkZ2V0U2VydmljZS5zaG93TWVudUJ1dHRvbiB9XCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGFkZGl0aW9uYWxXaWRnZXRCdXR0b25zXCJcbiAgICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cInt7IGJ1dHRvbi5jb2xvciB9fVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2lkZ2V0LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJidXR0b24uc3R5bGluZ1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BZGRpdGlvbmFsV2lkZ2V0QnV0dG9uQ2xpY2tlZChidXR0b24ub25DbGljaylcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbi5kaXNhYmxlZFwiPlxuICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxidXR0b24gI21lbnVUcmlnZ2VyIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm1vcmUtYnV0dG9uXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiAqbmdJZj1cImRhc2hib2FyZFdpZGdldFNlcnZpY2Uuc2hvd01lbnVCdXR0b25cIj5cbiAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZm9ybVwiIGNsaWNrLXN0b3AtcHJvcGFnYXRpb24+XG4gICAgICAgICAgPG1hbnRsZS1kYXNoYm9hcmQtY2FyZC1zZWFyY2gtbWVudSAjc2VhcmNoRm9ybSBbY29udGVudF09XCJmb3JtQ29udGVudFwiPjwvbWFudGxlLWRhc2hib2FyZC1jYXJkLXNlYXJjaC1tZW51PlxuXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxNnB4XCI+XG4gICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjEgMSBhdXRvXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjAgMCBhdXRvXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2VhcmNoLWJ1dHRvblwiIChjbGljayk9XCJvblNlYXJjaENsaWNrZWQoKTsgbWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XCI+XG4gICAgICAgICAgICAgICAgU2VhcmNoXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L21hdC1jYXJkLXRpdGxlPlxuICA8L21hdC1jYXJkLWhlYWRlcj5cblxuICA8bWF0LWNhcmQtY29udGVudCBmeEZsZXg9XCIxIDAgMXB4XCIgZnhBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cImRhc2hib2FyZC1jYXJkLWNvbnRlbnRcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJncmlkLWNvbnRhaW5lclwiPlxuICAgICAgPG1hdC1ncmlkLWxpc3RcbiAgICAgICAgW3Jvd0hlaWdodF09XCJ3aWRnZXRSb3dIZWlnaHRcIlxuICAgICAgICBbY29sc109XCJXSURHRVRfQ09MVU1OU1wiPlxuICAgICAgICA8bWF0LWdyaWQtdGlsZSAqbmdGb3I9XCJsZXQgY29udGV4dCBvZiB3aWRnZXRJdGVtQ29udGV4dHNcIiBbY29sc3Bhbl09XCJnZXRXaWRnZXRJdGVtQ29sc3Bhbihjb250ZXh0LmNvbmZpZylcIiBbcm93c3Bhbl09XCJnZXRXaWRnZXRJdGVtUm93c3Bhbihjb250ZXh0LmNvbmZpZylcIj5cbiAgICAgICAgICA8bWFudGxlLWR5bmFtaWMtd2lkZ2V0LWRpc3BsYXlcbiAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1jb250ZW50LXdyYXBwZXJcIlxuICAgICAgICAgICAgW3dpZGdldEl0ZW1dPVwiY29udGV4dC5jb25maWdcIlxuICAgICAgICAgICAgW2RhdGFdPVwiY29udGV4dC5kYXRhXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbnRleHQub3B0aW9uc1wiPlxuICAgICAgICAgIDwvbWFudGxlLWR5bmFtaWMtd2lkZ2V0LWRpc3BsYXk+XG4gICAgICAgIDwvbWF0LWdyaWQtdGlsZT5cbiAgICAgIDwvbWF0LWdyaWQtbGlzdD5cbiAgICA8L2Rpdj5cblxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Component, ChangeDetectorRef, Input } from '@angular/core';
|
|
2
|
+
import { DynamicFormService } from '../../../services/dynamic-form.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../services/dynamic-form.service";
|
|
5
|
+
import * as i2 from "../../form/sections/grid-form-section/grid-form-section.component";
|
|
6
|
+
import * as i3 from "../../widgets/loader/loader.component";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class DashboardCardSearchMenuComponent {
|
|
9
|
+
constructor(changeDetectorRef, dynamicFormService) {
|
|
10
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
11
|
+
this.dynamicFormService = dynamicFormService;
|
|
12
|
+
}
|
|
13
|
+
ngOnChanges() {
|
|
14
|
+
if (this.content) {
|
|
15
|
+
this.form = this.dynamicFormService.toFormGroup(this.content.data);
|
|
16
|
+
this.section = {
|
|
17
|
+
layout: 'grid',
|
|
18
|
+
elements: this.content.elements,
|
|
19
|
+
singleColumn: true,
|
|
20
|
+
rowHeight: '60px',
|
|
21
|
+
writable: true,
|
|
22
|
+
hidden: false,
|
|
23
|
+
collapsed: false,
|
|
24
|
+
options: {}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ngAfterViewChecked() {
|
|
29
|
+
this.changeDetectorRef.detectChanges();
|
|
30
|
+
}
|
|
31
|
+
get valid() {
|
|
32
|
+
var _a;
|
|
33
|
+
return (_a = this.form) === null || _a === void 0 ? void 0 : _a.valid;
|
|
34
|
+
}
|
|
35
|
+
get value() {
|
|
36
|
+
var _a;
|
|
37
|
+
return this.dynamicFormService.transformFormValue((_a = this.form) === null || _a === void 0 ? void 0 : _a.getRawValue());
|
|
38
|
+
}
|
|
39
|
+
reset() {
|
|
40
|
+
this.form.reset();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
DashboardCardSearchMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardCardSearchMenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DynamicFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
DashboardCardSearchMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DashboardCardSearchMenuComponent, selector: "mantle-dashboard-card-search-menu", inputs: { content: "content" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"content; else loader\">\n <mantle-grid-form-section\n [section]=\"section\"\n [form]=\"form\">\n </mantle-grid-form-section>\n</ng-container>\n\n<ng-template #loader>\n <mantle-loader></mantle-loader>\n</ng-template>\n", styles: [""], components: [{ type: i2.GridFormSectionComponent, selector: "mantle-grid-form-section", inputs: ["title", "section", "form", "errors", "defaultRowHeight"] }, { type: i3.LoaderComponent, selector: "mantle-loader", inputs: ["delay"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardCardSearchMenuComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{
|
|
48
|
+
selector: 'mantle-dashboard-card-search-menu',
|
|
49
|
+
templateUrl: './dashboard-card-search-menu.component.html',
|
|
50
|
+
styleUrls: ['./dashboard-card-search-menu.component.scss']
|
|
51
|
+
}]
|
|
52
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DynamicFormService }]; }, propDecorators: { content: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}] } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNhcmQtc2VhcmNoLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLWNhcmQtc2VhcmNoLW1lbnUvZGFzaGJvYXJkLWNhcmQtc2VhcmNoLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLWNhcmQtc2VhcmNoLW1lbnUvZGFzaGJvYXJkLWNhcmQtc2VhcmNoLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0IsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7QUFPNUUsTUFBTSxPQUFPLGdDQUFnQztJQU8zQyxZQUFvQixpQkFBb0MsRUFBVSxrQkFBc0M7UUFBcEYsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFBSSxDQUFDO0lBRTdHLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFbkUsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2dCQUMvQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsU0FBUyxFQUFFLE1BQU07Z0JBQ2pCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLE1BQU0sRUFBRSxLQUFLO2dCQUNiLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixPQUFPLEVBQUUsRUFBRTthQUNaLENBQUE7U0FDRjtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUs7O1FBQ1AsT0FBTyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLOztRQUNQLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksMENBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7OEhBeENVLGdDQUFnQztrSEFBaEMsZ0NBQWdDLDhIQ1Y3QywrUEFVQTs0RkRBYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MsV0FBVyxFQUFFLDZDQUE2QztvQkFDMUQsU0FBUyxFQUFFLENBQUMsNkNBQTZDLENBQUM7aUJBQzNEO3lJQUdVLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhc2hib2FyZENhcmRTZWFyY2hNZW51Q29udGVudCwgRHluYW1pY0xheW91dEdyaWRTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1zdHJ1Y3R1cmVzL2R5bmFtaWMtbGF5b3V0LnN0cnVjdHVyZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1kYXNoYm9hcmQtY2FyZC1zZWFyY2gtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtY2FyZC1zZWFyY2gtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC1jYXJkLXNlYXJjaC1tZW51LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkQ2FyZFNlYXJjaE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBJbnB1dCgpIGNvbnRlbnQhOiBEYXNoYm9hcmRDYXJkU2VhcmNoTWVudUNvbnRlbnQ7XG5cbiAgcHVibGljIHNlY3Rpb24hOiBEeW5hbWljTGF5b3V0R3JpZFNlY3Rpb247XG4gIHB1YmxpYyBmb3JtITogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZTogRHluYW1pY0Zvcm1TZXJ2aWNlKSB7IH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS50b0Zvcm1Hcm91cCh0aGlzLmNvbnRlbnQuZGF0YSk7XG5cbiAgICAgIHRoaXMuc2VjdGlvbiA9IHtcbiAgICAgICAgbGF5b3V0OiAnZ3JpZCcsXG4gICAgICAgIGVsZW1lbnRzOiB0aGlzLmNvbnRlbnQuZWxlbWVudHMsXG4gICAgICAgIHNpbmdsZUNvbHVtbjogdHJ1ZSxcbiAgICAgICAgcm93SGVpZ2h0OiAnNjBweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgICBvcHRpb25zOiB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtPy52YWxpZDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS50cmFuc2Zvcm1Gb3JtVmFsdWUodGhpcy5mb3JtPy5nZXRSYXdWYWx1ZSgpKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50OyBlbHNlIGxvYWRlclwiPlxuICA8bWFudGxlLWdyaWQtZm9ybS1zZWN0aW9uXG4gICAgICBbc2VjdGlvbl09XCJzZWN0aW9uXCJcbiAgICAgIFtmb3JtXT1cImZvcm1cIj5cbiAgPC9tYW50bGUtZ3JpZC1mb3JtLXNlY3Rpb24+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNsb2FkZXI+XG4gIDxtYW50bGUtbG9hZGVyPjwvbWFudGxlLWxvYWRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../containers/dynamic-dashboard-container/dynamic-dashboard-container.component";
|
|
4
|
+
import * as i2 from "../../widgets/loader/loader.component";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
export class DynamicDashboardComponent {
|
|
7
|
+
constructor() { }
|
|
8
|
+
}
|
|
9
|
+
DynamicDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicDashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
DynamicDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicDashboardComponent, selector: "mantle-dynamic-dashboard", inputs: { dashboardPageService: "dashboardPageService", content: "content" }, ngImport: i0, template: "<ng-container *ngIf=\"content; else loader\">\n <ng-container *ngFor=\"let container of content.containers\">\n <mantle-dynamic-dashboard-container [dashboardPageService]=\"dashboardPageService\" [container]=\"container\" [content]=\"content\">\n </mantle-dynamic-dashboard-container>\n </ng-container>\n</ng-container>\n\n<ng-template #loader>\n <mantle-loader></mantle-loader>\n</ng-template>\n", styles: [""], components: [{ type: i1.DynamicDashboardContainerComponent, selector: "mantle-dynamic-dashboard-container", inputs: ["dashboardPageService", "content", "container"] }, { type: i2.LoaderComponent, selector: "mantle-loader", inputs: ["delay"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicDashboardComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{
|
|
14
|
+
selector: 'mantle-dynamic-dashboard',
|
|
15
|
+
templateUrl: './dynamic-dashboard.component.html',
|
|
16
|
+
styleUrls: ['./dynamic-dashboard.component.scss']
|
|
17
|
+
}]
|
|
18
|
+
}], ctorParameters: function () { return []; }, propDecorators: { dashboardPageService: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}], content: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}] } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvZHluYW1pYy1kYXNoYm9hcmQvZHluYW1pYy1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvZHluYW1pYy1kYXNoYm9hcmQvZHluYW1pYy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU2pELE1BQU0sT0FBTyx5QkFBeUI7SUFLcEMsZ0JBQWdCLENBQUM7O3VIQUxOLHlCQUF5QjsyR0FBekIseUJBQXlCLDhJQ1R0Qyx1WkFVQTs0RkREYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEOzBFQUdVLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljRGFzaGJvYXJkQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgRGFzaGJvYXJkUGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pbnRlcmZhY2VzL2Rhc2hib2FyZC1wYWdlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW50bGUtZHluYW1pYy1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWRhc2hib2FyZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNEYXNoYm9hcmRDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGRhc2hib2FyZFBhZ2VTZXJ2aWNlITogRGFzaGJvYXJkUGFnZVNlcnZpY2U7XG4gIEBJbnB1dCgpIGNvbnRlbnQhOiBEeW5hbWljRGFzaGJvYXJkQ29udGVudDtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudDsgZWxzZSBsb2FkZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29udGFpbmVyIG9mIGNvbnRlbnQuY29udGFpbmVyc1wiPlxuICAgIDxtYW50bGUtZHluYW1pYy1kYXNoYm9hcmQtY29udGFpbmVyIFtkYXNoYm9hcmRQYWdlU2VydmljZV09XCJkYXNoYm9hcmRQYWdlU2VydmljZVwiIFtjb250YWluZXJdPVwiY29udGFpbmVyXCIgW2NvbnRlbnRdPVwiY29udGVudFwiPlxuICAgIDwvbWFudGxlLWR5bmFtaWMtZGFzaGJvYXJkLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNsb2FkZXI+XG4gIDxtYW50bGUtbG9hZGVyPjwvbWFudGxlLWxvYWRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2015/lib/components/dashboard/sections/dashboard-section/dashboard-section.component.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { ScreenSizeService } from '../../../../services/screen-size.service';
|
|
3
|
+
import { ArrayService } from '../../../../services/array.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../../services/array.service";
|
|
6
|
+
import * as i2 from "../../../../services/screen-size.service";
|
|
7
|
+
import * as i3 from "@angular/material/grid-list";
|
|
8
|
+
import * as i4 from "../../dashboard-card/dashboard-card.component";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
export class DashboardSectionComponent {
|
|
11
|
+
constructor(arrayService, screenSizeService) {
|
|
12
|
+
this.arrayService = arrayService;
|
|
13
|
+
this.screenSizeService = screenSizeService;
|
|
14
|
+
this.data = {};
|
|
15
|
+
this.dashboardWidgetServices = [];
|
|
16
|
+
this.screenSize = 'default';
|
|
17
|
+
this.SECTION_COLUMNS = 12;
|
|
18
|
+
this.rowHeight = '200px';
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
if (!this.slug)
|
|
22
|
+
return;
|
|
23
|
+
let dashboardSections = this.dashboardPageService.dashboardSections();
|
|
24
|
+
let dashboardSection = this.arrayService.findByAttribute(dashboardSections, 'sectionSlug', this.slug);
|
|
25
|
+
this.dashboardWidgetServices = dashboardSection.dashboardWidgetServices;
|
|
26
|
+
this.watchScreenSize(dashboardSection.sectionDimensions);
|
|
27
|
+
}
|
|
28
|
+
watchScreenSize(sectionDimensions) {
|
|
29
|
+
this.screenSizeService.screenSize.subscribe((screenSize) => {
|
|
30
|
+
this.screenSize = screenSize;
|
|
31
|
+
this.rowHeight = sectionDimensions.findByScreenSize(this.screenSize).rowHeight;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
getColSpanForWidget(widgetSlug) {
|
|
35
|
+
const dashboardWidgetService = this.getDashboardWidgetService(widgetSlug);
|
|
36
|
+
if (dashboardWidgetService == null)
|
|
37
|
+
return 1;
|
|
38
|
+
return dashboardWidgetService.widgetSize().findByScreenSize(this.screenSize).colspan;
|
|
39
|
+
}
|
|
40
|
+
getRowSpanForWidget(widgetSlug) {
|
|
41
|
+
const dashboardWidgetService = this.getDashboardWidgetService(widgetSlug);
|
|
42
|
+
if (dashboardWidgetService == null)
|
|
43
|
+
return 1;
|
|
44
|
+
return dashboardWidgetService.widgetSize().findByScreenSize(this.screenSize).rowspan;
|
|
45
|
+
}
|
|
46
|
+
getDashboardWidgetService(widgetSlug) {
|
|
47
|
+
for (let widgetService of this.dashboardWidgetServices) {
|
|
48
|
+
if (widgetService.slug == widgetSlug)
|
|
49
|
+
return widgetService;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
DashboardSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardSectionComponent, deps: [{ token: i1.ArrayService }, { token: i2.ScreenSizeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
DashboardSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DashboardSectionComponent, selector: "mantle-dashboard-section", inputs: { dashboardPageService: "dashboardPageService", slug: "slug", data: "data", section: "section" }, ngImport: i0, template: "<div class=\"grid-container\">\n <mat-grid-list\n [rowHeight]=\"rowHeight\"\n [cols]=\"SECTION_COLUMNS\"\n [class.multi-column]=\"true\">\n\n <mat-grid-tile *ngFor=\"let widget of section.elements\" [colspan]=\"getColSpanForWidget(widget.slug)\" [rowspan]=\"getRowSpanForWidget(widget.slug)\">\n <mantle-dashboard-card\n [widget]=\"widget\"\n [widgetConfig]=\"data.widget_configs[widget.slug]\"\n [widgetItems]=\"data.widget_items\"\n [rowHeight]=\"rowHeight\"\n [dashboardWidgetService]=\"getDashboardWidgetService(widget.slug)\"\n [dashboardPageService]=\"dashboardPageService\">\n </mantle-dashboard-card>\n </mat-grid-tile>\n\n </mat-grid-list>\n</div>\n", styles: [""], components: [{ type: i3.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i3.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i4.DashboardCardComponent, selector: "mantle-dashboard-card", inputs: ["widget", "widgetConfig", "widgetItems", "rowHeight", "dashboardWidgetService", "dashboardPageService"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardSectionComponent, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{
|
|
58
|
+
selector: 'mantle-dashboard-section',
|
|
59
|
+
templateUrl: './dashboard-section.component.html',
|
|
60
|
+
styleUrls: ['./dashboard-section.component.scss']
|
|
61
|
+
}]
|
|
62
|
+
}], ctorParameters: function () { return [{ type: i1.ArrayService }, { type: i2.ScreenSizeService }]; }, propDecorators: { dashboardPageService: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], slug: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], data: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], section: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}] } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvc2VjdGlvbnMvZGFzaGJvYXJkLXNlY3Rpb24vZGFzaGJvYXJkLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvc2VjdGlvbnMvZGFzaGJvYXJkLXNlY3Rpb24vZGFzaGJvYXJkLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyx5QkFBeUI7SUFhcEMsWUFBb0IsWUFBMEIsRUFBVSxpQkFBb0M7UUFBeEUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVG5GLFNBQUksR0FBUSxFQUFFLENBQUM7UUFHakIsNEJBQXVCLEdBQTZCLEVBQUUsQ0FBQztRQUV0RCxlQUFVLEdBQVcsU0FBUyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQ3RDLGNBQVMsR0FBVyxPQUFPLENBQUM7SUFFNkQsQ0FBQztJQUVqRyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUV2QixJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RFLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUM7UUFFeEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsaUJBQXNCO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQWtCO1FBQ3BDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFFLElBQUksc0JBQXNCLElBQUksSUFBSTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTdDLE9BQU8sc0JBQXNCLENBQUMsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN2RixDQUFDO0lBRUQsbUJBQW1CLENBQUMsVUFBa0I7UUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUUsSUFBSSxzQkFBc0IsSUFBSSxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFN0MsT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxVQUFrQjtRQUMxQyxLQUFLLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUN0RCxJQUFJLGFBQWEsQ0FBQyxJQUFJLElBQUksVUFBVTtnQkFBRSxPQUFPLGFBQWEsQ0FBQztTQUM1RDtJQUNILENBQUM7O3VIQXJEVSx5QkFBeUI7MkdBQXpCLHlCQUF5QiwwS0NadEMsK3RCQW1CQTs0RkRQYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEO21JQUdVLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0xheW91dERhc2hib2FyZFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhLXN0cnVjdHVyZXMvZHluYW1pYy1sYXlvdXQuc3RydWN0dXJlJztcbmltcG9ydCB7IERhc2hib2FyZFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kYXNoYm9hcmQtcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZFdpZGdldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9pbnRlcmZhY2VzL2Rhc2hib2FyZC13aWRnZXQuc2VydmljZSc7XG5pbXBvcnQgeyBTY3JlZW5TaXplU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NjcmVlbi1zaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXJyYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvYXJyYXkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1kYXNoYm9hcmQtc2VjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkU2VjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgZGFzaGJvYXJkUGFnZVNlcnZpY2UhOiBEYXNoYm9hcmRQYWdlU2VydmljZTtcbiAgQElucHV0KCkgc2x1Zzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBkYXRhOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgc2VjdGlvbiE6IER5bmFtaWNMYXlvdXREYXNoYm9hcmRTZWN0aW9uO1xuXG4gIHB1YmxpYyBkYXNoYm9hcmRXaWRnZXRTZXJ2aWNlczogRGFzaGJvYXJkV2lkZ2V0U2VydmljZVtdID0gW107XG5cbiAgcHJpdmF0ZSBzY3JlZW5TaXplOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIHB1YmxpYyByZWFkb25seSBTRUNUSU9OX0NPTFVNTlM6IG51bWJlciA9IDEyO1xuICBwdWJsaWMgcm93SGVpZ2h0OiBzdHJpbmcgPSAnMjAwcHgnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXJyYXlTZXJ2aWNlOiBBcnJheVNlcnZpY2UsIHByaXZhdGUgc2NyZWVuU2l6ZVNlcnZpY2U6IFNjcmVlblNpemVTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2x1ZykgcmV0dXJuO1xuXG4gICAgbGV0IGRhc2hib2FyZFNlY3Rpb25zID0gdGhpcy5kYXNoYm9hcmRQYWdlU2VydmljZS5kYXNoYm9hcmRTZWN0aW9ucygpO1xuICAgIGxldCBkYXNoYm9hcmRTZWN0aW9uID0gdGhpcy5hcnJheVNlcnZpY2UuZmluZEJ5QXR0cmlidXRlKGRhc2hib2FyZFNlY3Rpb25zLCAnc2VjdGlvblNsdWcnLCB0aGlzLnNsdWcpO1xuXG4gICAgdGhpcy5kYXNoYm9hcmRXaWRnZXRTZXJ2aWNlcyA9IGRhc2hib2FyZFNlY3Rpb24uZGFzaGJvYXJkV2lkZ2V0U2VydmljZXM7XG5cbiAgICB0aGlzLndhdGNoU2NyZWVuU2l6ZShkYXNoYm9hcmRTZWN0aW9uLnNlY3Rpb25EaW1lbnNpb25zKTtcbiAgfVxuXG4gIHdhdGNoU2NyZWVuU2l6ZShzZWN0aW9uRGltZW5zaW9uczogYW55KSB7XG4gICAgdGhpcy5zY3JlZW5TaXplU2VydmljZS5zY3JlZW5TaXplLnN1YnNjcmliZSgoc2NyZWVuU2l6ZTogYW55KSA9PiB7XG4gICAgICB0aGlzLnNjcmVlblNpemUgPSBzY3JlZW5TaXplO1xuICAgICAgdGhpcy5yb3dIZWlnaHQgPSBzZWN0aW9uRGltZW5zaW9ucy5maW5kQnlTY3JlZW5TaXplKHRoaXMuc2NyZWVuU2l6ZSkucm93SGVpZ2h0O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29sU3BhbkZvcldpZGdldCh3aWRnZXRTbHVnOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IGRhc2hib2FyZFdpZGdldFNlcnZpY2UgPSB0aGlzLmdldERhc2hib2FyZFdpZGdldFNlcnZpY2Uod2lkZ2V0U2x1Zyk7XG5cbiAgICBpZiAoZGFzaGJvYXJkV2lkZ2V0U2VydmljZSA9PSBudWxsKSByZXR1cm4gMTtcblxuICAgIHJldHVybiBkYXNoYm9hcmRXaWRnZXRTZXJ2aWNlLndpZGdldFNpemUoKS5maW5kQnlTY3JlZW5TaXplKHRoaXMuc2NyZWVuU2l6ZSkuY29sc3BhbjtcbiAgfVxuXG4gIGdldFJvd1NwYW5Gb3JXaWRnZXQod2lkZ2V0U2x1Zzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXNoYm9hcmRXaWRnZXRTZXJ2aWNlID0gdGhpcy5nZXREYXNoYm9hcmRXaWRnZXRTZXJ2aWNlKHdpZGdldFNsdWcpO1xuXG4gICAgaWYgKGRhc2hib2FyZFdpZGdldFNlcnZpY2UgPT0gbnVsbCkgcmV0dXJuIDE7XG5cbiAgICByZXR1cm4gZGFzaGJvYXJkV2lkZ2V0U2VydmljZS53aWRnZXRTaXplKCkuZmluZEJ5U2NyZWVuU2l6ZSh0aGlzLnNjcmVlblNpemUpLnJvd3NwYW47XG4gIH1cblxuICBnZXREYXNoYm9hcmRXaWRnZXRTZXJ2aWNlKHdpZGdldFNsdWc6IHN0cmluZyk6IGFueSB7XG4gICAgZm9yIChsZXQgd2lkZ2V0U2VydmljZSBvZiB0aGlzLmRhc2hib2FyZFdpZGdldFNlcnZpY2VzKSB7XG4gICAgICBpZiAod2lkZ2V0U2VydmljZS5zbHVnID09IHdpZGdldFNsdWcpIHJldHVybiB3aWRnZXRTZXJ2aWNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdyaWQtY29udGFpbmVyXCI+XG4gIDxtYXQtZ3JpZC1saXN0XG4gICAgICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXG4gICAgICBbY29sc109XCJTRUNUSU9OX0NPTFVNTlNcIlxuICAgICAgW2NsYXNzLm11bHRpLWNvbHVtbl09XCJ0cnVlXCI+XG5cbiAgICA8bWF0LWdyaWQtdGlsZSAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIHNlY3Rpb24uZWxlbWVudHNcIiBbY29sc3Bhbl09XCJnZXRDb2xTcGFuRm9yV2lkZ2V0KHdpZGdldC5zbHVnKVwiIFtyb3dzcGFuXT1cImdldFJvd1NwYW5Gb3JXaWRnZXQod2lkZ2V0LnNsdWcpXCI+XG4gICAgICA8bWFudGxlLWRhc2hib2FyZC1jYXJkXG4gICAgICAgIFt3aWRnZXRdPVwid2lkZ2V0XCJcbiAgICAgICAgW3dpZGdldENvbmZpZ109XCJkYXRhLndpZGdldF9jb25maWdzW3dpZGdldC5zbHVnXVwiXG4gICAgICAgIFt3aWRnZXRJdGVtc109XCJkYXRhLndpZGdldF9pdGVtc1wiXG4gICAgICAgIFtyb3dIZWlnaHRdPVwicm93SGVpZ2h0XCJcbiAgICAgICAgW2Rhc2hib2FyZFdpZGdldFNlcnZpY2VdPVwiZ2V0RGFzaGJvYXJkV2lkZ2V0U2VydmljZSh3aWRnZXQuc2x1ZylcIlxuICAgICAgICBbZGFzaGJvYXJkUGFnZVNlcnZpY2VdPVwiZGFzaGJvYXJkUGFnZVNlcnZpY2VcIj5cbiAgICAgIDwvbWFudGxlLWRhc2hib2FyZC1jYXJkPlxuICAgIDwvbWF0LWdyaWQtdGlsZT5cblxuICA8L21hdC1ncmlkLWxpc3Q+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/icon";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/flex-layout/extended";
|
|
6
|
+
export class DashboardInfoCardComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.data = '';
|
|
9
|
+
this.options = '';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
DashboardInfoCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardInfoCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
DashboardInfoCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DashboardInfoCardComponent, selector: "mantle-dashboard-info-card", inputs: { data: "data", options: "options" }, ngImport: i0, template: "<div class=\"info-card\">\n <div *ngIf=\"data.key_value\">\n <div *ngIf=\"data.key_value.label\" class=\"sub-header\">{{ data.key_value.label }}</div>\n <span class=\"header\">\n <h1 class=\"header-value\" [ngStyle]=\"{ 'color': data.color }\">{{ data.key_value.value }}</h1> <span class=\"header-units\">{{ data.key_value.unit }}</span>\n </span>\n <div *ngIf=\"data.showSubLabel\">\n <span class=\"header-date\">{{ data.key_value.sub_label }}</span>\n </div>\n </div>\n\n <small *ngIf=\"data.comparison\" class=\"comparison\">\n <mat-icon>{{ (data.comparison.value < 0) ? 'keyboard_arrow_down' : 'keyboard_arrow_up' }}</mat-icon>\n {{ data.comparison.value }} {{ data.comparison.unit }} {{ data.comparison.label }}\n </small>\n\n <table *ngIf=\"data.bulletpoints && data.bulletpoints.length > 0\" class=\"bulletpoints\">\n <tr *ngFor=\"let bulletpoint of data.bulletpoints\" class=\"bulletpoint\">\n <td class=\"bulletpoint-icon\"><mat-icon>chevron_right</mat-icon></td><td class=\"bulletpoint-value\"><b>{{ bulletpoint.value }}</b></td><td class=\"bulletpoint-label\">{{ bulletpoint.label }}</td>\n </tr>\n </table>\n</div>\n", styles: [".info-card{padding:10px;margin:0 auto auto;max-width:100%;max-height:100%}.header{padding-bottom:4px;min-width:100px;margin:auto;word-wrap:normal}.header .header-value{display:inline-block;margin-bottom:10px;font-size:46px;font-weight:500}.header .header-units{display:inline-block;margin-left:4px;margin-bottom:0;font-size:16px;text-transform:uppercase}.sub-header{margin-top:4px;margin-bottom:30px;font-size:15px;font-weight:500}.header-date{margin-top:4px;margin-bottom:30px;font-size:12px;color:gray}.comparison .mat-icon{font-size:14px!important;height:14px}.bulletpoints{margin-top:16px;border-collapse:collapse}.bulletpoints .bulletpoint .bulletpoint-icon{padding-right:4px!important}.bulletpoints .bulletpoint .bulletpoint-value{font-weight:500;font-size:16px;text-align:right;padding-left:2px!important;padding-right:4px!important}.bulletpoints .bulletpoint .bulletpoint-label{text-align:left;padding-left:2px!important}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DashboardInfoCardComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{
|
|
17
|
+
selector: 'mantle-dashboard-info-card',
|
|
18
|
+
templateUrl: './dashboard-info-card.component.html',
|
|
19
|
+
styleUrls: ['./dashboard-info-card.component.scss']
|
|
20
|
+
}]
|
|
21
|
+
}], ctorParameters: function () { return []; }, propDecorators: { data: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], options: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}] } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWluZm8tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC93aWRnZXRzL2Rhc2hib2FyZC1pbmZvLWNhcmQvZGFzaGJvYXJkLWluZm8tY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC93aWRnZXRzL2Rhc2hib2FyZC1pbmZvLWNhcmQvZGFzaGJvYXJkLWluZm8tY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPakQsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQztRQUhTLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZixZQUFPLEdBQVEsRUFBRSxDQUFDO0lBRVgsQ0FBQzs7d0hBTE4sMEJBQTBCOzRHQUExQiwwQkFBMEIsZ0hDUHZDLDBwQ0FzQkE7NEZEZmEsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSxzQ0FBc0M7b0JBQ25ELFNBQVMsRUFBRSxDQUFDLHNDQUFzQyxDQUFDO2lCQUNwRDswRUFHVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW50bGUtZGFzaGJvYXJkLWluZm8tY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtaW5mby1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGFzaGJvYXJkLWluZm8tY2FyZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZEluZm9DYXJkQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSAnJztcbiAgQElucHV0KCkgb3B0aW9uczogYW55ID0gJyc7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImluZm8tY2FyZFwiPlxuICA8ZGl2ICpuZ0lmPVwiZGF0YS5rZXlfdmFsdWVcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5rZXlfdmFsdWUubGFiZWxcIiBjbGFzcz1cInN1Yi1oZWFkZXJcIj57eyBkYXRhLmtleV92YWx1ZS5sYWJlbCB9fTwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICA8aDEgY2xhc3M9XCJoZWFkZXItdmFsdWVcIiBbbmdTdHlsZV09XCJ7ICdjb2xvcic6IGRhdGEuY29sb3IgfVwiPnt7IGRhdGEua2V5X3ZhbHVlLnZhbHVlIH19PC9oMT4gPHNwYW4gY2xhc3M9XCJoZWFkZXItdW5pdHNcIj57eyBkYXRhLmtleV92YWx1ZS51bml0IH19PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5zaG93U3ViTGFiZWxcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLWRhdGVcIj57eyBkYXRhLmtleV92YWx1ZS5zdWJfbGFiZWwgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxzbWFsbCAqbmdJZj1cImRhdGEuY29tcGFyaXNvblwiIGNsYXNzPVwiY29tcGFyaXNvblwiPlxuICAgIDxtYXQtaWNvbj57eyAoZGF0YS5jb21wYXJpc29uLnZhbHVlIDwgMCkgPyAna2V5Ym9hcmRfYXJyb3dfZG93bicgOiAna2V5Ym9hcmRfYXJyb3dfdXAnIH19PC9tYXQtaWNvbj5cbiAgICB7eyBkYXRhLmNvbXBhcmlzb24udmFsdWUgfX0ge3sgZGF0YS5jb21wYXJpc29uLnVuaXQgfX0ge3sgZGF0YS5jb21wYXJpc29uLmxhYmVsIH19XG4gIDwvc21hbGw+XG5cbiAgPHRhYmxlICpuZ0lmPVwiZGF0YS5idWxsZXRwb2ludHMgJiYgZGF0YS5idWxsZXRwb2ludHMubGVuZ3RoID4gMFwiIGNsYXNzPVwiYnVsbGV0cG9pbnRzXCI+XG4gICAgPHRyICpuZ0Zvcj1cImxldCBidWxsZXRwb2ludCBvZiBkYXRhLmJ1bGxldHBvaW50c1wiIGNsYXNzPVwiYnVsbGV0cG9pbnRcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImJ1bGxldHBvaW50LWljb25cIj48bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+PC90ZD48dGQgY2xhc3M9XCJidWxsZXRwb2ludC12YWx1ZVwiPjxiPnt7IGJ1bGxldHBvaW50LnZhbHVlIH19PC9iPjwvdGQ+PHRkIGNsYXNzPVwiYnVsbGV0cG9pbnQtbGFiZWxcIj57eyBidWxsZXRwb2ludC5sYWJlbCB9fTwvdGQ+XG4gICAgPC90cj5cbiAgPC90YWJsZT5cbjwvZGl2PlxuIl19
|
package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table-datasource.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DataSource } from '@angular/cdk/collections';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
/**
|
|
5
|
+
* Data source for the List Page view. This class should
|
|
6
|
+
* encapsulate all logic for fetching and manipulating the displayed data
|
|
7
|
+
* (including sorting, pagination, and searching).
|
|
8
|
+
*/
|
|
9
|
+
export class DashboardTableDataSource extends DataSource {
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.listSubject = new BehaviorSubject([]);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Connect this data source to the table. The table will only update when
|
|
16
|
+
* the returned stream emits new items.
|
|
17
|
+
* @returns A stream of the items to be rendered.
|
|
18
|
+
*/
|
|
19
|
+
connect() {
|
|
20
|
+
return this.listSubject.asObservable().pipe(map(() => {
|
|
21
|
+
return this.listSubject.value;
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Called when the table is being destroyed. Use this function, to clean up
|
|
26
|
+
* any open connections or free any held resources that were set up during connect.
|
|
27
|
+
*/
|
|
28
|
+
disconnect() { }
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXRhYmxlLWRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC93aWRnZXRzL2Rhc2hib2FyZC10YWJsZS9kYXNoYm9hcmQtdGFibGUtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxVQUFlO0lBRzNEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFIVixnQkFBVyxHQUEyQixJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztJQUlyRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsS0FBVSxDQUFDO0NBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBEYXRhIHNvdXJjZSBmb3IgdGhlIExpc3QgUGFnZSB2aWV3LiBUaGlzIGNsYXNzIHNob3VsZFxuICogZW5jYXBzdWxhdGUgYWxsIGxvZ2ljIGZvciBmZXRjaGluZyBhbmQgbWFuaXB1bGF0aW5nIHRoZSBkaXNwbGF5ZWQgZGF0YVxuICogKGluY2x1ZGluZyBzb3J0aW5nLCBwYWdpbmF0aW9uLCBhbmQgc2VhcmNoaW5nKS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhc2hib2FyZFRhYmxlRGF0YVNvdXJjZSBleHRlbmRzIERhdGFTb3VyY2U8YW55PiB7XG4gIGxpc3RTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdCB0aGlzIGRhdGEgc291cmNlIHRvIHRoZSB0YWJsZS4gVGhlIHRhYmxlIHdpbGwgb25seSB1cGRhdGUgd2hlblxuICAgKiB0aGUgcmV0dXJuZWQgc3RyZWFtIGVtaXRzIG5ldyBpdGVtcy5cbiAgICogQHJldHVybnMgQSBzdHJlYW0gb2YgdGhlIGl0ZW1zIHRvIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RTdWJqZWN0LnZhbHVlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqICBDYWxsZWQgd2hlbiB0aGUgdGFibGUgaXMgYmVpbmcgZGVzdHJveWVkLiBVc2UgdGhpcyBmdW5jdGlvbiwgdG8gY2xlYW4gdXBcbiAgICogYW55IG9wZW4gY29ubmVjdGlvbnMgb3IgZnJlZSBhbnkgaGVsZCByZXNvdXJjZXMgdGhhdCB3ZXJlIHNldCB1cCBkdXJpbmcgY29ubmVjdC5cbiAgICovXG4gIGRpc2Nvbm5lY3QoKTogdm9pZCB7fVxufVxuIl19
|