@provoly/dashboard 0.11.0
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 +5 -0
- package/admin/admin-routing.module.d.ts +9 -0
- package/admin/admin.module.d.ts +87 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.d.ts +14 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.d.ts +29 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.d.ts +12 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.d.ts +13 -0
- package/admin/components/admin-abac-rules/admin-abac-rules.component.d.ts +18 -0
- package/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.d.ts +26 -0
- package/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.d.ts +29 -0
- package/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.d.ts +28 -0
- package/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.d.ts +17 -0
- package/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.d.ts +14 -0
- package/admin/components/admin-abac-rules/store/abac-rules.actions.d.ts +147 -0
- package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +67 -0
- package/admin/components/admin-abac-rules/store/abac-rules.model.d.ts +44 -0
- package/admin/components/admin-abac-rules/store/abac-rules.reducer.d.ts +10 -0
- package/admin/components/admin-abac-rules/store/abac-rules.selectors.d.ts +14 -0
- package/admin/components/admin-abac-rules/store/abac-rules.service.d.ts +21 -0
- package/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.d.ts +32 -0
- package/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.d.ts +46 -0
- package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +41 -0
- package/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.d.ts +16 -0
- package/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.d.ts +26 -0
- package/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.d.ts +5 -0
- package/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.d.ts +24 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +17 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +43 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +17 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +27 -0
- package/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.d.ts +44 -0
- package/admin/components/admin-classes/admin-classes.component.d.ts +25 -0
- package/admin/components/admin-classes/store/admin-class.actions.d.ts +143 -0
- package/admin/components/admin-classes/store/admin-class.effects.d.ts +81 -0
- package/admin/components/admin-classes/store/admin-class.reducer.d.ts +11 -0
- package/admin/components/admin-classes/store/admin-class.selectors.d.ts +12 -0
- package/admin/components/admin-dataset/admin-dataset.component.d.ts +32 -0
- package/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.d.ts +15 -0
- package/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.d.ts +5 -0
- package/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.d.ts +36 -0
- package/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.d.ts +34 -0
- package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +59 -0
- package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +30 -0
- package/admin/components/admin-dataset/store/admin-dataset.reducer.d.ts +6 -0
- package/admin/components/admin-dataset/store/admin-dataset.selector.d.ts +5 -0
- package/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.d.ts +35 -0
- package/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.d.ts +5 -0
- package/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.d.ts +24 -0
- package/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.d.ts +15 -0
- package/admin/components/admin-environment/admin-environment.component.d.ts +20 -0
- package/admin/components/admin-environment/store/environment.actions.d.ts +82 -0
- package/admin/components/admin-environment/store/environment.effects.d.ts +44 -0
- package/admin/components/admin-environment/store/environment.reducer.d.ts +9 -0
- package/admin/components/admin-environment/store/environment.selectors.d.ts +8 -0
- package/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.d.ts +15 -0
- package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +30 -0
- package/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.d.ts +5 -0
- package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +28 -0
- package/admin/components/admin-fields/admin-fields.component.d.ts +19 -0
- package/admin/components/admin-fields/store/admin-fields.model.d.ts +4 -0
- package/admin/components/admin-fields/store/fields.actions.d.ts +47 -0
- package/admin/components/admin-fields/store/fields.effects.d.ts +36 -0
- package/admin/components/admin-fields/store/fields.reducer.d.ts +8 -0
- package/admin/components/admin-fields/store/fields.selectors.d.ts +7 -0
- package/admin/components/admin-layout/admin-layout.component.d.ts +24 -0
- package/admin/components/admin-links/admin-links-new/admin-links-new.component.d.ts +33 -0
- package/admin/components/admin-links/admin-links.component.d.ts +19 -0
- package/admin/components/admin-links/store/links.actions.d.ts +31 -0
- package/admin/components/admin-links/store/links.effects.d.ts +28 -0
- package/admin/components/admin-links/store/links.reducer.d.ts +8 -0
- package/admin/components/admin-links/store/links.selectors.d.ts +5 -0
- package/admin/components/admin-menu/admin-menu.component.d.ts +14 -0
- package/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.d.ts +16 -0
- package/admin/components/admin-metadata/admin-metadata.component.d.ts +24 -0
- package/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.d.ts +10 -0
- package/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.d.ts +23 -0
- package/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.d.ts +36 -0
- package/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.d.ts +11 -0
- package/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.d.ts +40 -0
- package/admin/components/admin-metadata/store/metadata.action.d.ts +56 -0
- package/admin/components/admin-metadata/store/metadata.effects.d.ts +36 -0
- package/admin/components/admin-metadata/store/metadata.reducer.d.ts +13 -0
- package/admin/components/admin-metadata/store/metadata.selector.d.ts +10 -0
- package/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.d.ts +12 -0
- package/admin/components/admin-metadata-rules/admin-metadata-rules.component.d.ts +35 -0
- package/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.d.ts +5 -0
- package/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.d.ts +23 -0
- package/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.d.ts +41 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.actions.d.ts +49 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.effects.d.ts +39 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.reducer.d.ts +11 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.selectors.d.ts +7 -0
- package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +25 -0
- package/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.d.ts +17 -0
- package/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.d.ts +10 -0
- package/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.d.ts +23 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +84 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +48 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +11 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +14 -0
- package/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.d.ts +34 -0
- package/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.d.ts +5 -0
- package/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.d.ts +22 -0
- package/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.d.ts +16 -0
- package/admin/components/admin-predicates/admin-predicates.component.d.ts +19 -0
- package/admin/components/admin-predicates/store/predicates.actions.d.ts +46 -0
- package/admin/components/admin-predicates/store/predicates.effects.d.ts +33 -0
- package/admin/components/admin-predicates/store/predicates.reducer.d.ts +9 -0
- package/admin/components/admin-predicates/store/predicates.selectors.d.ts +8 -0
- package/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.d.ts +32 -0
- package/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.d.ts +19 -0
- package/admin/components/admin-relation-types/admin-relation-types.component.d.ts +15 -0
- package/admin/components/admin-title/admin-title.component.d.ts +15 -0
- package/admin/components/admin-user/admin-user-select/admin-user-select.component.d.ts +35 -0
- package/admin/components/admin-user/admin-user.component.d.ts +18 -0
- package/admin/components/admin-user/store/admin-user.action.d.ts +76 -0
- package/admin/components/admin-user/store/admin-user.effects.d.ts +43 -0
- package/admin/components/admin-user/store/admin-user.reducer.d.ts +10 -0
- package/admin/components/admin-user/store/admin-user.selector.d.ts +8 -0
- package/admin/components/admin.component.d.ts +17 -0
- package/admin/i18n/en.translations.d.ts +327 -0
- package/admin/i18n/fr.translations.d.ts +328 -0
- package/admin/index.d.ts +5 -0
- package/admin/public-api.d.ts +1 -0
- package/admin/store/admin.actions.d.ts +41 -0
- package/admin/store/admin.effects.d.ts +34 -0
- package/admin/store/admin.reducer.d.ts +13 -0
- package/admin/store/admin.selectors.d.ts +13 -0
- package/admin/store/admin.service.d.ts +45 -0
- package/assets/backgrounds/chart.svg +684 -0
- package/assets/backgrounds/detail.svg +27 -0
- package/assets/backgrounds/graph.svg +1775 -0
- package/assets/backgrounds/iframe.svg +799 -0
- package/assets/backgrounds/img_processus.png +0 -0
- package/assets/backgrounds/map.svg +154 -0
- package/assets/backgrounds/placeholder.png +0 -0
- package/assets/backgrounds/table.svg +48 -0
- package/assets/backgrounds/template.svg +26 -0
- package/assets/backgrounds/tile.svg +26 -0
- package/assets/fonts/ubuntu-latin-bold.woff2 +0 -0
- package/assets/fonts/ubuntu-latin-medium.woff2 +0 -0
- package/assets/fonts/ubuntu-latin-regular.woff2 +0 -0
- package/assets/svgs/add.svg +4 -0
- package/assets/svgs/add_column.svg +5 -0
- package/assets/svgs/admin-fill.svg +5 -0
- package/assets/svgs/admin.svg +8 -0
- package/assets/svgs/ads_click.svg +5 -0
- package/assets/svgs/apps.svg +5 -0
- package/assets/svgs/area_chart.svg +19 -0
- package/assets/svgs/arrow_back.svg +4 -0
- package/assets/svgs/arrow_right.svg +6 -0
- package/assets/svgs/auto_graph.svg +12 -0
- package/assets/svgs/bar_chart.svg +18 -0
- package/assets/svgs/bubble-chart-line.svg +18 -0
- package/assets/svgs/bulles.svg +5 -0
- package/assets/svgs/chart.svg +5 -0
- package/assets/svgs/chat-settings.svg +5 -0
- package/assets/svgs/check.svg +4 -0
- package/assets/svgs/checkbox-circle.svg +6 -0
- package/assets/svgs/chevron_bottom.svg +6 -0
- package/assets/svgs/chevron_bottom_rounded.svg +5 -0
- package/assets/svgs/chevron_left.svg +6 -0
- package/assets/svgs/chevron_right.svg +6 -0
- package/assets/svgs/chevron_top.svg +3 -0
- package/assets/svgs/chevron_top_rounded.svg +5 -0
- package/assets/svgs/click.svg +4 -0
- package/assets/svgs/close.svg +5 -0
- package/assets/svgs/control.svg +5 -0
- package/assets/svgs/control_point.svg +5 -0
- package/assets/svgs/danger.svg +5 -0
- package/assets/svgs/data.svg +5 -0
- package/assets/svgs/data_usage.svg +5 -0
- package/assets/svgs/dataset.svg +0 -0
- package/assets/svgs/default-restitution.svg +6 -0
- package/assets/svgs/default.svg +28 -0
- package/assets/svgs/delete.svg +5 -0
- package/assets/svgs/detail.svg +5 -0
- package/assets/svgs/donut_large.svg +14 -0
- package/assets/svgs/download.svg +4 -0
- package/assets/svgs/drag_indicator.svg +5 -0
- package/assets/svgs/edit.svg +5 -0
- package/assets/svgs/edit_off.svg +5 -0
- package/assets/svgs/epingle.svg +6 -0
- package/assets/svgs/event-fill.svg +5 -0
- package/assets/svgs/event.svg +5 -0
- package/assets/svgs/exposure_neg_1.svg +4 -0
- package/assets/svgs/exposure_plus_1.svg +4 -0
- package/assets/svgs/eye-arrow-down.svg +14 -0
- package/assets/svgs/eye-arrow-up.svg +14 -0
- package/assets/svgs/eye.svg +5 -0
- package/assets/svgs/file_download.svg +5 -0
- package/assets/svgs/file_upload.svg +5 -0
- package/assets/svgs/fleche_bas.svg +4 -0
- package/assets/svgs/fleche_haut.svg +4 -0
- package/assets/svgs/frequentation.svg +4 -0
- package/assets/svgs/fullscreen.svg +4 -0
- package/assets/svgs/globe.svg +5 -0
- package/assets/svgs/graph.svg +20 -0
- package/assets/svgs/grid_1_2_horizontal.svg +4 -0
- package/assets/svgs/grid_1_2_vertical.svg +4 -0
- package/assets/svgs/grid_1_3_horizontal.svg +5 -0
- package/assets/svgs/grid_1_3_vertical.svg +5 -0
- package/assets/svgs/grid_1_4.svg +6 -0
- package/assets/svgs/grid_2_gauche_1_droite.svg +5 -0
- package/assets/svgs/grid_composition_libre.svg +7 -0
- package/assets/svgs/grid_full.svg +3 -0
- package/assets/svgs/grid_view.svg +4 -0
- package/assets/svgs/heart-add-line.svg +5 -0
- package/assets/svgs/heart-fill.svg +5 -0
- package/assets/svgs/highlight_alt.svg +5 -0
- package/assets/svgs/history-line.svg +5 -0
- package/assets/svgs/home-fill.svg +5 -0
- package/assets/svgs/home-fill_old.svg +4 -0
- package/assets/svgs/home-line.svg +12 -0
- package/assets/svgs/home-line_old.svg +5 -0
- package/assets/svgs/home.svg +12 -0
- package/assets/svgs/iframe.svg +11 -0
- package/assets/svgs/image.svg +6 -0
- package/assets/svgs/info.svg +8 -0
- package/assets/svgs/information-point.svg +5 -0
- package/assets/svgs/lasso.svg +5 -0
- package/assets/svgs/launch.svg +5 -0
- package/assets/svgs/legend.svg +4 -0
- package/assets/svgs/library_add.svg +5 -0
- package/assets/svgs/links_line.svg +5 -0
- package/assets/svgs/map.svg +8 -0
- package/assets/svgs/marqueur.svg +5 -0
- package/assets/svgs/mode_clic.svg +5 -0
- package/assets/svgs/more_horiz.svg +5 -0
- package/assets/svgs/more_vertical.svg +5 -0
- package/assets/svgs/move.svg +5 -0
- package/assets/svgs/noise_aware.svg +12 -0
- package/assets/svgs/north_east.svg +6 -0
- package/assets/svgs/north_west.svg +6 -0
- package/assets/svgs/notification-4-line.svg +5 -0
- package/assets/svgs/notification.svg +5 -0
- package/assets/svgs/notifications.svg +5 -0
- package/assets/svgs/picture-in-picture.svg +7 -0
- package/assets/svgs/place.svg +5 -0
- package/assets/svgs/post_add.svg +8 -0
- package/assets/svgs/presentation-fill.svg +4 -0
- package/assets/svgs/presentation.svg +5 -0
- package/assets/svgs/private.svg +10 -0
- package/assets/svgs/pry_recherche.svg +81 -0
- package/assets/svgs/pry_recherche_pas_de_resultat.svg +81 -0
- package/assets/svgs/public.svg +16 -0
- package/assets/svgs/published_with_changes.svg +5 -0
- package/assets/svgs/question-line.svg +5 -0
- package/assets/svgs/radar_chart.svg +11 -0
- package/assets/svgs/rectangle.svg +5 -0
- package/assets/svgs/remove.svg +4 -0
- package/assets/svgs/renamed.svg +6 -0
- package/assets/svgs/reset.svg +4 -0
- package/assets/svgs/resize.svg +4 -0
- package/assets/svgs/restitution-fill.svg +11 -0
- package/assets/svgs/restitution.svg +15 -0
- package/assets/svgs/restricted.svg +18 -0
- package/assets/svgs/rotate-lock-line.svg +5 -0
- package/assets/svgs/save-fill.svg +4 -0
- package/assets/svgs/save-line.svg +5 -0
- package/assets/svgs/screenshot-fill.svg +5 -0
- package/assets/svgs/search-criteria.svg +5 -0
- package/assets/svgs/search-fill.svg +5 -0
- package/assets/svgs/search-line.svg +5 -0
- package/assets/svgs/search.svg +4 -0
- package/assets/svgs/settings_applications.svg +12 -0
- package/assets/svgs/share.svg +5 -0
- package/assets/svgs/share_location.svg +20 -0
- package/assets/svgs/shield-lock.svg +7 -0
- package/assets/svgs/show_chart.svg +12 -0
- package/assets/svgs/south_east.svg +6 -0
- package/assets/svgs/south_west.svg +6 -0
- package/assets/svgs/stack-fill.svg +5 -0
- package/assets/svgs/stack-line.svg +5 -0
- package/assets/svgs/stop.svg +5 -0
- package/assets/svgs/supervision.svg +13 -0
- package/assets/svgs/svg.svg +5 -0
- package/assets/svgs/synchro.svg +5 -0
- package/assets/svgs/table.svg +5 -0
- package/assets/svgs/table_chart.svg +18 -0
- package/assets/svgs/tags.svg +11 -0
- package/assets/svgs/tile.svg +12 -0
- package/assets/svgs/toc.svg +20 -0
- package/assets/svgs/transformation-fill.svg +21 -0
- package/assets/svgs/transformation.svg +20 -0
- package/assets/svgs/tune.svg +5 -0
- package/assets/svgs/unpublished.svg +5 -0
- package/assets/svgs/upload.svg +4 -0
- package/assets/svgs/user.svg +5 -0
- package/assets/svgs/warning-triangle.svg +5 -0
- package/assets/svgs/warning.svg +5 -0
- package/assets/svgs/zoom.svg +6 -0
- package/components/card/card.component.d.ts +69 -0
- package/components/card/card.module.d.ts +10 -0
- package/components/card/index.d.ts +5 -0
- package/components/card/public-api.d.ts +2 -0
- package/components/checkbox/checkbox.component.d.ts +20 -0
- package/components/checkbox/checkbox.module.d.ts +9 -0
- package/components/checkbox/index.d.ts +5 -0
- package/components/checkbox/public-api.d.ts +2 -0
- package/components/expand-panel/expand-panel.component.d.ts +14 -0
- package/components/expand-panel/expand-panel.module.d.ts +7 -0
- package/components/expand-panel/index.d.ts +5 -0
- package/components/expand-panel/public-api.d.ts +2 -0
- package/components/filter/filter.module.d.ts +7 -0
- package/components/filter/filter.pipe.d.ts +7 -0
- package/components/filter/index.d.ts +5 -0
- package/components/filter/public-api.d.ts +2 -0
- package/components/sinceDate/index.d.ts +5 -0
- package/components/sinceDate/public-api.d.ts +2 -0
- package/components/sinceDate/sinceDate.module.d.ts +7 -0
- package/components/sinceDate/sinceDate.pipe.d.ts +11 -0
- package/components/stepper/index.d.ts +5 -0
- package/components/stepper/public-api.d.ts +4 -0
- package/components/stepper/step/step.component.d.ts +15 -0
- package/components/stepper/step-title.directive.d.ts +8 -0
- package/components/stepper/stepper.component.d.ts +28 -0
- package/components/stepper/stepper.module.d.ts +10 -0
- package/dataset/components/dataset-card/dataset-card.component.d.ts +10 -0
- package/dataset/components/dataset-detail/dataset-detail.component.d.ts +29 -0
- package/dataset/components/dataset.component.d.ts +17 -0
- package/dataset/dataset.module.d.ts +17 -0
- package/dataset/i18n/en.translations.d.ts +33 -0
- package/dataset/i18n/fr.translations.d.ts +38 -0
- package/dataset/index.d.ts +5 -0
- package/dataset/public-api.d.ts +5 -0
- package/dataset/style/_o-pry-dataset-card.scss +29 -0
- package/dataset/style/_o-pry-dataset-detail.scss +55 -0
- package/dataset/style/_o-pry-dataset.scss +31 -0
- package/dataset/style/css.component.d.ts +5 -0
- package/esm2022/admin/admin-routing.module.mjs +567 -0
- package/esm2022/admin/admin.module.mjs +366 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +50 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +57 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +34 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +54 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +47 -0
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +81 -0
- package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +66 -0
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +69 -0
- package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +29 -0
- package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +24 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.actions.mjs +28 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +78 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.model.mjs +20 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.reducer.mjs +110 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.selectors.mjs +29 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +161 -0
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +92 -0
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +146 -0
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +127 -0
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +26 -0
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +91 -0
- package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +107 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +30 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +151 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +30 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +81 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +183 -0
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +70 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.actions.mjs +32 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +139 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.reducer.mjs +43 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.selectors.mjs +23 -0
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +79 -0
- package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +26 -0
- package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +13 -0
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +155 -0
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +98 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.actions.mjs +14 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +34 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.reducer.mjs +11 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.selector.mjs +9 -0
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +125 -0
- package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +94 -0
- package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +26 -0
- package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +51 -0
- package/esm2022/admin/components/admin-environment/store/environment.actions.mjs +19 -0
- package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +47 -0
- package/esm2022/admin/components/admin-environment/store/environment.reducer.mjs +39 -0
- package/esm2022/admin/components/admin-environment/store/environment.selectors.mjs +15 -0
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +25 -0
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +85 -0
- package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +96 -0
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +52 -0
- package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +2 -0
- package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +14 -0
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +54 -0
- package/esm2022/admin/components/admin-fields/store/fields.reducer.mjs +14 -0
- package/esm2022/admin/components/admin-fields/store/fields.selectors.mjs +13 -0
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +81 -0
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +92 -0
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +60 -0
- package/esm2022/admin/components/admin-links/store/links.actions.mjs +10 -0
- package/esm2022/admin/components/admin-links/store/links.effects.mjs +27 -0
- package/esm2022/admin/components/admin-links/store/links.reducer.mjs +19 -0
- package/esm2022/admin/components/admin-links/store/links.selectors.mjs +9 -0
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +38 -0
- package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +32 -0
- package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +65 -0
- package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +21 -0
- package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +77 -0
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +130 -0
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +21 -0
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +90 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.action.mjs +19 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.effects.mjs +33 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.reducer.mjs +35 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.selector.mjs +17 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +22 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +86 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +13 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +86 -0
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +133 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.actions.mjs +23 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +51 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.reducer.mjs +28 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.selectors.mjs +13 -0
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +65 -0
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +33 -0
- package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +21 -0
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +77 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +23 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +38 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +45 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +17 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +102 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +69 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +27 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +46 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.actions.mjs +13 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +28 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.reducer.mjs +40 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.selectors.mjs +15 -0
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +101 -0
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +63 -0
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +42 -0
- package/esm2022/admin/components/admin-title/admin-title.component.mjs +29 -0
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +116 -0
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +34 -0
- package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +21 -0
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +38 -0
- package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +27 -0
- package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +15 -0
- package/esm2022/admin/components/admin.component.mjs +29 -0
- package/esm2022/admin/i18n/en.translations.mjs +328 -0
- package/esm2022/admin/i18n/fr.translations.mjs +329 -0
- package/esm2022/admin/provoly-dashboard-admin.mjs +5 -0
- package/esm2022/admin/public-api.mjs +2 -0
- package/esm2022/admin/store/admin.actions.mjs +12 -0
- package/esm2022/admin/store/admin.effects.mjs +66 -0
- package/esm2022/admin/store/admin.reducer.mjs +52 -0
- package/esm2022/admin/store/admin.selectors.mjs +32 -0
- package/esm2022/admin/store/admin.service.mjs +181 -0
- package/esm2022/components/card/card.component.mjs +270 -0
- package/esm2022/components/card/card.module.mjs +38 -0
- package/esm2022/components/card/provoly-dashboard-components-card.mjs +5 -0
- package/esm2022/components/card/public-api.mjs +3 -0
- package/esm2022/components/checkbox/checkbox.component.mjs +58 -0
- package/esm2022/components/checkbox/checkbox.module.mjs +20 -0
- package/esm2022/components/checkbox/provoly-dashboard-components-checkbox.mjs +5 -0
- package/esm2022/components/checkbox/public-api.mjs +3 -0
- package/esm2022/components/expand-panel/expand-panel.component.mjs +65 -0
- package/esm2022/components/expand-panel/expand-panel.module.mjs +19 -0
- package/esm2022/components/expand-panel/provoly-dashboard-components-expand-panel.mjs +5 -0
- package/esm2022/components/expand-panel/public-api.mjs +3 -0
- package/esm2022/components/filter/filter.module.mjs +16 -0
- package/esm2022/components/filter/filter.pipe.mjs +16 -0
- package/esm2022/components/filter/provoly-dashboard-components-filter.mjs +5 -0
- package/esm2022/components/filter/public-api.mjs +3 -0
- package/esm2022/components/sinceDate/provoly-dashboard-components-sinceDate.mjs +5 -0
- package/esm2022/components/sinceDate/public-api.mjs +3 -0
- package/esm2022/components/sinceDate/sinceDate.module.mjs +16 -0
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +40 -0
- package/esm2022/components/stepper/provoly-dashboard-components-stepper.mjs +5 -0
- package/esm2022/components/stepper/public-api.mjs +5 -0
- package/esm2022/components/stepper/step/step.component.mjs +36 -0
- package/esm2022/components/stepper/step-title.directive.mjs +14 -0
- package/esm2022/components/stepper/stepper.component.mjs +109 -0
- package/esm2022/components/stepper/stepper.module.mjs +20 -0
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +24 -0
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +86 -0
- package/esm2022/dataset/components/dataset.component.mjs +35 -0
- package/esm2022/dataset/dataset.module.mjs +59 -0
- package/esm2022/dataset/i18n/en.translations.mjs +34 -0
- package/esm2022/dataset/i18n/fr.translations.mjs +39 -0
- package/esm2022/dataset/provoly-dashboard-dataset.mjs +5 -0
- package/esm2022/dataset/public-api.mjs +6 -0
- package/esm2022/dataset/style/css.component.mjs +11 -0
- package/esm2022/filters/date/date-filter.component.mjs +50 -0
- package/esm2022/filters/date/date-filter.module.mjs +25 -0
- package/esm2022/filters/date/provoly-dashboard-filters-date.mjs +5 -0
- package/esm2022/filters/date/public-api.mjs +4 -0
- package/esm2022/filters/date/style/css.component.mjs +11 -0
- package/esm2022/filters/list/list-filter.component.mjs +31 -0
- package/esm2022/filters/list/list-filter.module.mjs +24 -0
- package/esm2022/filters/list/provoly-dashboard-filters-list.mjs +5 -0
- package/esm2022/filters/list/public-api.mjs +4 -0
- package/esm2022/filters/list/style/css.component.mjs +11 -0
- package/esm2022/filters/number/number-filter.component.mjs +26 -0
- package/esm2022/filters/number/number-filter.module.mjs +24 -0
- package/esm2022/filters/number/provoly-dashboard-filters-number.mjs +5 -0
- package/esm2022/filters/number/public-api.mjs +3 -0
- package/esm2022/filters/text/provoly-dashboard-filters-text.mjs +5 -0
- package/esm2022/filters/text/public-api.mjs +3 -0
- package/esm2022/filters/text/text-filter.component.mjs +29 -0
- package/esm2022/filters/text/text-filter.module.mjs +24 -0
- package/esm2022/import/components/import.component.mjs +72 -0
- package/esm2022/import/i18n/en.translations.mjs +28 -0
- package/esm2022/import/i18n/fr.translations.mjs +28 -0
- package/esm2022/import/import-routing.module.mjs +32 -0
- package/esm2022/import/import.module.mjs +61 -0
- package/esm2022/import/provoly-dashboard-import.mjs +5 -0
- package/esm2022/import/public-api.mjs +3 -0
- package/esm2022/import/store/import.actions.mjs +7 -0
- package/esm2022/import/store/import.effects.mjs +32 -0
- package/esm2022/import/store/import.reducer.mjs +23 -0
- package/esm2022/import/store/import.selectors.mjs +10 -0
- package/esm2022/import/store/import.service.mjs +29 -0
- package/esm2022/import/style/css.component.mjs +11 -0
- package/esm2022/lib/core/access/access.directive.mjs +45 -0
- package/esm2022/lib/core/access/access.guard.mjs +21 -0
- package/esm2022/lib/core/access/access.model.mjs +2 -0
- package/esm2022/lib/core/access/access.service.mjs +20 -0
- package/esm2022/lib/core/access/access.utils.mjs +83 -0
- package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +44 -0
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +29 -0
- package/esm2022/lib/core/components/base-toolbox/base-toolbox-action.interface.mjs +2 -0
- package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +23 -0
- package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +64 -0
- package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +206 -0
- package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +36 -0
- package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +42 -0
- package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +92 -0
- package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +81 -0
- package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +60 -0
- package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +22 -0
- package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +25 -0
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +30 -0
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +20 -0
- package/esm2022/lib/core/components/icon/icon.component.mjs +92 -0
- package/esm2022/lib/core/components/icon/icon.module.mjs +19 -0
- package/esm2022/lib/core/components/modal/modal.component.mjs +34 -0
- package/esm2022/lib/core/components/modal/pry-modal.module.mjs +22 -0
- package/esm2022/lib/core/components/modalStatus/modalStatus.component.mjs +35 -0
- package/esm2022/lib/core/components/modalStatus/modalStatus.module.mjs +28 -0
- package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +77 -0
- package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +57 -0
- package/esm2022/lib/core/components/overlay/dialog-ref.mjs +15 -0
- package/esm2022/lib/core/components/overlay/dialog.service.mjs +71 -0
- package/esm2022/lib/core/components/overlay/overlay.constantes.mjs +9 -0
- package/esm2022/lib/core/components/overlay/overlay.directive.mjs +125 -0
- package/esm2022/lib/core/components/overlay/overlay.module.mjs +23 -0
- package/esm2022/lib/core/components/overlay/tooltip.directive.mjs +121 -0
- package/esm2022/lib/core/components/range/range.component.mjs +106 -0
- package/esm2022/lib/core/components/range/range.module.mjs +19 -0
- package/esm2022/lib/core/components/select/select.component.mjs +118 -0
- package/esm2022/lib/core/components/select/select.module.mjs +22 -0
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +84 -0
- package/esm2022/lib/core/components/share/share.component.mjs +83 -0
- package/esm2022/lib/core/components/share/share.model.mjs +7 -0
- package/esm2022/lib/core/components/share/share.module.mjs +21 -0
- package/esm2022/lib/core/components/snackbar/snack.interface.mjs +2 -0
- package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +65 -0
- package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +19 -0
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +63 -0
- package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +54 -0
- package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +52 -0
- package/esm2022/lib/core/components/sort/sort-header.directive.mjs +13 -0
- package/esm2022/lib/core/components/sort/sort-table.directive.mjs +64 -0
- package/esm2022/lib/core/components/sort/sort.model.mjs +2 -0
- package/esm2022/lib/core/components/sort/sort.module.mjs +23 -0
- package/esm2022/lib/core/components/title-presentation/title-presentation.component.mjs +26 -0
- package/esm2022/lib/core/components/toggle/toggle.component.mjs +100 -0
- package/esm2022/lib/core/components/toggle/toggle.module.mjs +21 -0
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +115 -0
- package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +27 -0
- package/esm2022/lib/core/components/upload/upload.component.mjs +88 -0
- package/esm2022/lib/core/core.module.mjs +179 -0
- package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +44 -0
- package/esm2022/lib/core/i18n/deep-merge.function.mjs +21 -0
- package/esm2022/lib/core/i18n/en.translations.mjs +323 -0
- package/esm2022/lib/core/i18n/fr.translations.mjs +323 -0
- package/esm2022/lib/core/i18n/i18n.module.mjs +16 -0
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +42 -0
- package/esm2022/lib/core/i18n/i18n.service.mjs +88 -0
- package/esm2022/lib/core/model/admin-api.model.mjs +45 -0
- package/esm2022/lib/core/model/dataset.interface.mjs +13 -0
- package/esm2022/lib/core/model/filter.interface.mjs +2 -0
- package/esm2022/lib/core/model/item.interface.mjs +2 -0
- package/esm2022/lib/core/model/manifest.interface.mjs +11 -0
- package/esm2022/lib/core/model/mimetype-resultset.constant.mjs +2 -0
- package/esm2022/lib/core/model/notification-interface.mjs +2 -0
- package/esm2022/lib/core/model/public-api.mjs +25 -0
- package/esm2022/lib/core/model/relation.interface.mjs +2 -0
- package/esm2022/lib/core/model/result-order.interface.mjs +2 -0
- package/esm2022/lib/core/model/result-set.interface.mjs +2 -0
- package/esm2022/lib/core/model/search-mono-class.model.mjs +17 -0
- package/esm2022/lib/core/model/search-multi-class.model.mjs +2 -0
- package/esm2022/lib/core/model/tooltip-of-class.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +26 -0
- package/esm2022/lib/core/model/widget-chart-manifest.interface.mjs +63 -0
- package/esm2022/lib/core/model/widget-detail-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-graph-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-iframe-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-image-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +19 -0
- package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-template-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-tile-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget.interface.mjs +2 -0
- package/esm2022/lib/core/public-api.mjs +113 -0
- package/esm2022/lib/core/store/category/category.actions.mjs +7 -0
- package/esm2022/lib/core/store/category/category.effects.mjs +20 -0
- package/esm2022/lib/core/store/category/category.interface.mjs +2 -0
- package/esm2022/lib/core/store/category/category.reducer.mjs +19 -0
- package/esm2022/lib/core/store/category/category.selectors.mjs +11 -0
- package/esm2022/lib/core/store/category/category.service.mjs +26 -0
- package/esm2022/lib/core/store/class/class.actions.mjs +13 -0
- package/esm2022/lib/core/store/class/class.effects.mjs +26 -0
- package/esm2022/lib/core/store/class/class.interface.mjs +2 -0
- package/esm2022/lib/core/store/class/class.reducer.mjs +42 -0
- package/esm2022/lib/core/store/class/class.selectors.mjs +31 -0
- package/esm2022/lib/core/store/class/class.service.mjs +42 -0
- package/esm2022/lib/core/store/config/config.actions.mjs +31 -0
- package/esm2022/lib/core/store/config/config.effects.mjs +100 -0
- package/esm2022/lib/core/store/config/config.reducer.mjs +122 -0
- package/esm2022/lib/core/store/config/config.selectors.mjs +82 -0
- package/esm2022/lib/core/store/config/config.service.mjs +106 -0
- package/esm2022/lib/core/store/config/config.widget.constants.mjs +55 -0
- package/esm2022/lib/core/store/config/icon-definitions.interface.mjs +19 -0
- package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +37 -0
- package/esm2022/lib/core/store/context-menu/context-menu.actions.mjs +6 -0
- package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +14 -0
- package/esm2022/lib/core/store/context-menu/context-menu.reducer.mjs +29 -0
- package/esm2022/lib/core/store/context-menu/context-menu.selectors.mjs +19 -0
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +53 -0
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +151 -0
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +2 -0
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +87 -0
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +66 -0
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +123 -0
- package/esm2022/lib/core/store/data-source/named-query-types.model.mjs +7 -0
- package/esm2022/lib/core/store/data-source/named-query-utils.mjs +13 -0
- package/esm2022/lib/core/store/field/field.actions.mjs +7 -0
- package/esm2022/lib/core/store/field/field.effects.mjs +20 -0
- package/esm2022/lib/core/store/field/field.interface.mjs +18 -0
- package/esm2022/lib/core/store/field/field.reducer.mjs +19 -0
- package/esm2022/lib/core/store/field/field.selectors.mjs +19 -0
- package/esm2022/lib/core/store/field/field.service.mjs +36 -0
- package/esm2022/lib/core/store/image/image.actions.mjs +10 -0
- package/esm2022/lib/core/store/image/image.effects.mjs +21 -0
- package/esm2022/lib/core/store/image/image.reducer.mjs +23 -0
- package/esm2022/lib/core/store/image/image.selectors.mjs +19 -0
- package/esm2022/lib/core/store/image/image.service.mjs +72 -0
- package/esm2022/lib/core/store/item/item.actions.mjs +7 -0
- package/esm2022/lib/core/store/item/item.effects.mjs +44 -0
- package/esm2022/lib/core/store/item/item.service.mjs +50 -0
- package/esm2022/lib/core/store/raw/raw.service.mjs +50 -0
- package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +22 -0
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +48 -0
- package/esm2022/lib/core/store/relation-types/relation-types.interface.mjs +2 -0
- package/esm2022/lib/core/store/relation-types/relation-types.reducer.mjs +33 -0
- package/esm2022/lib/core/store/relation-types/relation-types.selectors.mjs +18 -0
- package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +46 -0
- package/esm2022/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.mjs +35 -0
- package/esm2022/lib/core/store/search/search.actions.mjs +9 -0
- package/esm2022/lib/core/store/search/search.constants.mjs +3 -0
- package/esm2022/lib/core/store/search/search.effects.mjs +36 -0
- package/esm2022/lib/core/store/search/search.reducer.mjs +25 -0
- package/esm2022/lib/core/store/search/search.selectors.mjs +9 -0
- package/esm2022/lib/core/store/search/search.service.mjs +96 -0
- package/esm2022/lib/core/symbol/symbol.service.mjs +182 -0
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +335 -0
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +167 -0
- package/esm2022/lib/core/ws/websocket.service.mjs +92 -0
- package/esm2022/lib/dashboard/action-bus/bus-action.interface.mjs +2 -0
- package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +23 -0
- package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +86 -0
- package/esm2022/lib/dashboard/action-bus/service/control-message.interface.mjs +2 -0
- package/esm2022/lib/dashboard/base-widget.module.mjs +16 -0
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +131 -0
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +267 -0
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +558 -0
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +60 -0
- package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +33 -0
- package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +88 -0
- package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +17 -0
- package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +45 -0
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +62 -0
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +59 -0
- package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +45 -0
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +474 -0
- package/esm2022/lib/dashboard/components/widgets/public-api.mjs +10 -0
- package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +97 -0
- package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +20 -0
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +60 -0
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +90 -0
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.mjs +2 -0
- package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +17 -0
- package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +183 -0
- package/esm2022/lib/dashboard/dashboard.module.mjs +172 -0
- package/esm2022/lib/dashboard/date-utils.mjs +7 -0
- package/esm2022/lib/dashboard/filter/base-filter.component.mjs +32 -0
- package/esm2022/lib/dashboard/filter/base-filter.module.mjs +15 -0
- package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +42 -0
- package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +67 -0
- package/esm2022/lib/dashboard/filter/filter-loader.function.mjs +21 -0
- package/esm2022/lib/dashboard/filter/public-api.mjs +6 -0
- package/esm2022/lib/dashboard/guard/default-view.guard.mjs +41 -0
- package/esm2022/lib/dashboard/item-utils.mjs +167 -0
- package/esm2022/lib/dashboard/public-api.mjs +31 -0
- package/esm2022/lib/dashboard/resultset-utils.mjs +30 -0
- package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +37 -0
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +76 -0
- package/esm2022/lib/dashboard/store/dashboard.contants.mjs +5 -0
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +333 -0
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +590 -0
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +118 -0
- package/esm2022/lib/dashboard/store/geocoding.service.mjs +44 -0
- package/esm2022/lib/dashboard/store/manifest.service.mjs +95 -0
- package/esm2022/lib/dashboard/store/refresh.service.mjs +37 -0
- package/esm2022/lib/dashboard/store/title.service.mjs +39 -0
- package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +20 -0
- package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +16 -0
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +15 -0
- package/esm2022/lib/dashboard/tooltip/public-api.mjs +6 -0
- package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +77 -0
- package/esm2022/lib/dashboard/tooltip/tooltip-loader.function.mjs +22 -0
- package/esm2022/lib/dashboard/widget-loader.function.mjs +22 -0
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +62 -0
- package/esm2022/notification/components/notification/notification.component.mjs +59 -0
- package/esm2022/notification/i18n/en.translations.mjs +23 -0
- package/esm2022/notification/i18n/fr.translations.mjs +23 -0
- package/esm2022/notification/notification.module.mjs +53 -0
- package/esm2022/notification/provoly-dashboard-notification.mjs +5 -0
- package/esm2022/notification/public-api.mjs +9 -0
- package/esm2022/notification/store/notification.actions.mjs +9 -0
- package/esm2022/notification/store/notification.effects.mjs +37 -0
- package/esm2022/notification/store/notification.reducer.mjs +20 -0
- package/esm2022/notification/store/notification.selectors.mjs +9 -0
- package/esm2022/notification/store/notification.service.mjs +31 -0
- package/esm2022/notification/style/css.component.mjs +11 -0
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +103 -0
- package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +101 -0
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +305 -0
- package/esm2022/pipeline/components/pipeline-editor/pipeline.interface.mjs +7 -0
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +174 -0
- package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +22 -0
- package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +58 -0
- package/esm2022/pipeline/i18n/en.translations.mjs +74 -0
- package/esm2022/pipeline/i18n/fr.translations.mjs +74 -0
- package/esm2022/pipeline/node-class/base-node.class.mjs +44 -0
- package/esm2022/pipeline/pipeline.module.mjs +83 -0
- package/esm2022/pipeline/provoly-dashboard-pipeline.mjs +5 -0
- package/esm2022/pipeline/public-api.mjs +17 -0
- package/esm2022/pipeline/store/pipeline.actions.mjs +15 -0
- package/esm2022/pipeline/store/pipeline.effects.mjs +71 -0
- package/esm2022/pipeline/store/pipeline.reducer.mjs +41 -0
- package/esm2022/pipeline/store/pipeline.selectors.mjs +18 -0
- package/esm2022/pipeline/store/pipeline.service.mjs +51 -0
- package/esm2022/pipeline/style/css.component.mjs +11 -0
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +62 -0
- package/esm2022/pipeline-components/filter/filter.module.mjs +52 -0
- package/esm2022/pipeline-components/filter/i18n/en.translations.mjs +16 -0
- package/esm2022/pipeline-components/filter/i18n/fr.translations.mjs +16 -0
- package/esm2022/pipeline-components/filter/node-class/filter-node.class.mjs +10 -0
- package/esm2022/pipeline-components/filter/provoly-dashboard-pipeline-components-filter.mjs +5 -0
- package/esm2022/pipeline-components/filter/public-api.mjs +4 -0
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +28 -0
- package/esm2022/pipeline-components/input-datasource/i18n/en.translations.mjs +8 -0
- package/esm2022/pipeline-components/input-datasource/i18n/fr.translations.mjs +8 -0
- package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +59 -0
- package/esm2022/pipeline-components/input-datasource/node-class/input-datasourse-node.class.mjs +16 -0
- package/esm2022/pipeline-components/input-datasource/provoly-dashboard-pipeline-components-input-datasource.mjs +5 -0
- package/esm2022/pipeline-components/input-datasource/public-api.mjs +4 -0
- package/esm2022/pipeline-components/noop/component/noop.component.mjs +18 -0
- package/esm2022/pipeline-components/noop/node-class/noop-node.class.mjs +10 -0
- package/esm2022/pipeline-components/noop/noop.module.mjs +46 -0
- package/esm2022/pipeline-components/noop/provoly-dashboard-pipeline-components-noop.mjs +5 -0
- package/esm2022/pipeline-components/noop/public-api.mjs +4 -0
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +30 -0
- package/esm2022/pipeline-components/output-dataset/i18n/en.translations.mjs +8 -0
- package/esm2022/pipeline-components/output-dataset/i18n/fr.translations.mjs +8 -0
- package/esm2022/pipeline-components/output-dataset/node-class/output-dataset-node.class.mjs +17 -0
- package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +60 -0
- package/esm2022/pipeline-components/output-dataset/provoly-dashboard-pipeline-components-output-dataset.mjs +5 -0
- package/esm2022/pipeline-components/output-dataset/public-api.mjs +4 -0
- package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +18 -0
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-input.class.mjs +15 -0
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-node.class.mjs +96 -0
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-output.class.mjs +15 -0
- package/esm2022/pipeline-components/subgraph/provoly-dashboard-pipeline-components-subgraph.mjs +5 -0
- package/esm2022/pipeline-components/subgraph/public-api.mjs +6 -0
- package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +50 -0
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +119 -0
- package/esm2022/presentation/components/presentation.component.mjs +231 -0
- package/esm2022/presentation/i18n/en.translations.mjs +40 -0
- package/esm2022/presentation/i18n/fr.translations.mjs +41 -0
- package/esm2022/presentation/presentation.module.mjs +72 -0
- package/esm2022/presentation/provoly-dashboard-presentation.mjs +5 -0
- package/esm2022/presentation/public-api.mjs +5 -0
- package/esm2022/presentation/style/css.component.mjs +11 -0
- package/esm2022/provoly-dashboard.mjs +5 -0
- package/esm2022/public-api.mjs +6 -0
- package/esm2022/restitution/components/restitution/restitution.component.mjs +216 -0
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +114 -0
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +68 -0
- package/esm2022/restitution/i18n/en.translations.mjs +44 -0
- package/esm2022/restitution/i18n/fr.translations.mjs +44 -0
- package/esm2022/restitution/model/restitution.model.mjs +2 -0
- package/esm2022/restitution/provoly-dashboard-restitution.mjs +5 -0
- package/esm2022/restitution/public-api.mjs +5 -0
- package/esm2022/restitution/restitution.module.mjs +86 -0
- package/esm2022/restitution/style/css.component.mjs +11 -0
- package/esm2022/search/components/choose-widget/choose-widget.component.mjs +67 -0
- package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +101 -0
- package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +55 -0
- package/esm2022/search/components/save-query/save-query.component.mjs +106 -0
- package/esm2022/search/components/save-query-button/save-query-button.component.mjs +76 -0
- package/esm2022/search/i18n/en.translations.mjs +132 -0
- package/esm2022/search/i18n/fr.translations.mjs +132 -0
- package/esm2022/search/provoly-dashboard-search.mjs +5 -0
- package/esm2022/search/public-api.mjs +13 -0
- package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +207 -0
- package/esm2022/search/search-fulltext/store/search-fulltext.actions.mjs +6 -0
- package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +38 -0
- package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +22 -0
- package/esm2022/search/search-home/search-home.component.mjs +199 -0
- package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +78 -0
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +139 -0
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +34 -0
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +69 -0
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +37 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.actions.mjs +26 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +112 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.reducer.mjs +139 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.selectors.mjs +38 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +161 -0
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +150 -0
- package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +62 -0
- package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +37 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.actions.mjs +16 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +66 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.reducer.mjs +59 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.selectors.mjs +32 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +125 -0
- package/esm2022/search/search-tools/search-tools.component.mjs +151 -0
- package/esm2022/search/search.module.mjs +156 -0
- package/esm2022/search/style/css.component.mjs +11 -0
- package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +34 -0
- package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +33 -0
- package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +51 -0
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +27 -0
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +100 -0
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +47 -0
- package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +32 -0
- package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +24 -0
- package/esm2022/supervision/components/supervision.component.mjs +19 -0
- package/esm2022/supervision/i18n/en.translations.mjs +58 -0
- package/esm2022/supervision/i18n/fr.translations.mjs +58 -0
- package/esm2022/supervision/provoly-dashboard-supervision.mjs +5 -0
- package/esm2022/supervision/public-api.mjs +2 -0
- package/esm2022/supervision/store/supervision-api.model.mjs +2 -0
- package/esm2022/supervision/store/supervision.actions.mjs +33 -0
- package/esm2022/supervision/store/supervision.effects.mjs +60 -0
- package/esm2022/supervision/store/supervision.reducer.mjs +115 -0
- package/esm2022/supervision/store/supervision.selectors.mjs +35 -0
- package/esm2022/supervision/store/supervision.service.mjs +54 -0
- package/esm2022/supervision/supervision-routing.module.mjs +96 -0
- package/esm2022/supervision/supervision.module.mjs +96 -0
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +24 -0
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +43 -0
- package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +27 -0
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +235 -0
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +24 -0
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +35 -0
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +207 -0
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +109 -0
- package/esm2022/toolbox/components/toolbox.component.mjs +32 -0
- package/esm2022/toolbox/provoly-dashboard-toolbox.mjs +5 -0
- package/esm2022/toolbox/public-api.mjs +12 -0
- package/esm2022/toolbox/style/css.component.mjs +11 -0
- package/esm2022/toolbox/toolbox.module.mjs +107 -0
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +33 -0
- package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +24 -0
- package/esm2022/tooltips/attribute/provoly-dashboard-tooltips-attribute.mjs +5 -0
- package/esm2022/tooltips/attribute/public-api.mjs +3 -0
- package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +12 -0
- package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +24 -0
- package/esm2022/tooltips/cluster/provoly-dashboard-tooltips-cluster.mjs +5 -0
- package/esm2022/tooltips/cluster/public-api.mjs +3 -0
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +633 -0
- package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +104 -0
- package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +104 -0
- package/esm2022/widgets/widget-aggregated-chart/provoly-dashboard-widgets-widget-aggregated-chart.mjs +5 -0
- package/esm2022/widgets/widget-aggregated-chart/public-api.mjs +6 -0
- package/esm2022/widgets/widget-aggregated-chart/service/backend-aggregation.service.mjs +103 -0
- package/esm2022/widgets/widget-aggregated-chart/service/base-aggregation.service.mjs +16 -0
- package/esm2022/widgets/widget-aggregated-chart/service/frontend-aggregation.service.mjs +206 -0
- package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +72 -0
- package/esm2022/widgets/widget-chart/component/vega-error.handler.mjs +36 -0
- package/esm2022/widgets/widget-chart/component/vega-spec.constant.mjs +248 -0
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +652 -0
- package/esm2022/widgets/widget-chart/i18n/en.translations.mjs +114 -0
- package/esm2022/widgets/widget-chart/i18n/fr.translations.mjs +114 -0
- package/esm2022/widgets/widget-chart/provoly-dashboard-widgets-widget-chart.mjs +5 -0
- package/esm2022/widgets/widget-chart/public-api.mjs +3 -0
- package/esm2022/widgets/widget-chart/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-chart/widget-chart.module.mjs +70 -0
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +131 -0
- package/esm2022/widgets/widget-detail/i18n/en.translations.mjs +14 -0
- package/esm2022/widgets/widget-detail/i18n/fr.translations.mjs +14 -0
- package/esm2022/widgets/widget-detail/provoly-dashboard-widgets-widget-detail.mjs +5 -0
- package/esm2022/widgets/widget-detail/public-api.mjs +3 -0
- package/esm2022/widgets/widget-detail/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-detail/widget-detail.module.mjs +64 -0
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +448 -0
- package/esm2022/widgets/widget-graph/i18n/en.translations.mjs +15 -0
- package/esm2022/widgets/widget-graph/i18n/fr.translations.mjs +15 -0
- package/esm2022/widgets/widget-graph/layout/node.interface.mjs +2 -0
- package/esm2022/widgets/widget-graph/layout/simple.function.mjs +99 -0
- package/esm2022/widgets/widget-graph/provoly-dashboard-widgets-widget-graph.mjs +5 -0
- package/esm2022/widgets/widget-graph/public-api.mjs +4 -0
- package/esm2022/widgets/widget-graph/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-graph/widget-graph.module.mjs +73 -0
- package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +53 -0
- package/esm2022/widgets/widget-iframe/i18n/en.translations.mjs +11 -0
- package/esm2022/widgets/widget-iframe/i18n/fr.translations.mjs +11 -0
- package/esm2022/widgets/widget-iframe/messaging/iframe-message-type.interface.mjs +2 -0
- package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +30 -0
- package/esm2022/widgets/widget-iframe/provoly-dashboard-widgets-widget-iframe.mjs +5 -0
- package/esm2022/widgets/widget-iframe/public-api.mjs +5 -0
- package/esm2022/widgets/widget-iframe/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +66 -0
- package/esm2022/widgets/widget-image/component/widget-image.component.mjs +33 -0
- package/esm2022/widgets/widget-image/provoly-dashboard-widgets-widget-image.mjs +5 -0
- package/esm2022/widgets/widget-image/public-api.mjs +3 -0
- package/esm2022/widgets/widget-image/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-image/widget-image.module.mjs +24 -0
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +317 -0
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +822 -0
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +81 -0
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +81 -0
- package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +170 -0
- package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +52 -0
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +22 -0
- package/esm2022/widgets/widget-map/provoly-dashboard-widgets-widget-map.mjs +5 -0
- package/esm2022/widgets/widget-map/public-api.mjs +7 -0
- package/esm2022/widgets/widget-map/reader/kmz-zip-reader.class.mjs +57 -0
- package/esm2022/widgets/widget-map/reader/map-formats-reader.class.mjs +37 -0
- package/esm2022/widgets/widget-map/reader/random-color-style.function.mjs +32 -0
- package/esm2022/widgets/widget-map/reader/read-as-text.class.mjs +30 -0
- package/esm2022/widgets/widget-map/reader/shp-zip-reader.class.mjs +35 -0
- package/esm2022/widgets/widget-map/search-bar/search-bar.control.mjs +66 -0
- package/esm2022/widgets/widget-map/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +229 -0
- package/esm2022/widgets/widget-map/widget-map.module.mjs +72 -0
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +187 -0
- package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +30 -0
- package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +32 -0
- package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +29 -0
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +43 -0
- package/esm2022/widgets/widget-table/i18n/en.translations.mjs +15 -0
- package/esm2022/widgets/widget-table/i18n/fr.translations.mjs +15 -0
- package/esm2022/widgets/widget-table/provoly-dashboard-widgets-widget-table.mjs +5 -0
- package/esm2022/widgets/widget-table/public-api.mjs +6 -0
- package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +21 -0
- package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +34 -0
- package/esm2022/widgets/widget-table/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-table/widget-table.module.mjs +86 -0
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +86 -0
- package/esm2022/widgets/widget-template/provoly-dashboard-widgets-widget-template.mjs +5 -0
- package/esm2022/widgets/widget-template/public-api.mjs +3 -0
- package/esm2022/widgets/widget-template/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-template/widget-template.module.mjs +52 -0
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +114 -0
- package/esm2022/widgets/widget-tile/i18n/en.translations.mjs +13 -0
- package/esm2022/widgets/widget-tile/i18n/fr.translations.mjs +13 -0
- package/esm2022/widgets/widget-tile/provoly-dashboard-widgets-widget-tile.mjs +5 -0
- package/esm2022/widgets/widget-tile/public-api.mjs +3 -0
- package/esm2022/widgets/widget-tile/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-tile/widget-tile.module.mjs +72 -0
- package/fesm2022/provoly-dashboard-admin.mjs +6992 -0
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-card.mjs +312 -0
- package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-checkbox.mjs +81 -0
- package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs +88 -0
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-filter.mjs +36 -0
- package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +60 -0
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-stepper.mjs +175 -0
- package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-dataset.mjs +268 -0
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-date.mjs +85 -0
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-list.mjs +65 -0
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-number.mjs +53 -0
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-text.mjs +56 -0
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-import.mjs +302 -0
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-notification.mjs +303 -0
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +154 -0
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +116 -0
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +76 -0
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +120 -0
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +188 -0
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline.mjs +1183 -0
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-presentation.mjs +498 -0
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-restitution.mjs +557 -0
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-search.mjs +2590 -0
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-supervision.mjs +866 -0
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-toolbox.mjs +774 -0
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +60 -0
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +39 -0
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1228 -0
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1238 -0
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +230 -0
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +656 -0
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +173 -0
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +67 -0
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +2055 -0
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +464 -0
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +148 -0
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +219 -0
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -0
- package/fesm2022/provoly-dashboard.mjs +10650 -0
- package/fesm2022/provoly-dashboard.mjs.map +1 -0
- package/filters/date/date-filter.component.d.ts +17 -0
- package/filters/date/date-filter.module.d.ts +15 -0
- package/filters/date/index.d.ts +5 -0
- package/filters/date/public-api.d.ts +3 -0
- package/filters/date/style/_m-date.scss +6 -0
- package/filters/date/style/css.component.d.ts +5 -0
- package/filters/list/index.d.ts +5 -0
- package/filters/list/list-filter.component.d.ts +12 -0
- package/filters/list/list-filter.module.d.ts +14 -0
- package/filters/list/public-api.d.ts +3 -0
- package/filters/list/style/_m-list.scss +7 -0
- package/filters/list/style/css.component.d.ts +5 -0
- package/filters/number/index.d.ts +5 -0
- package/filters/number/number-filter.component.d.ts +11 -0
- package/filters/number/number-filter.module.d.ts +14 -0
- package/filters/number/public-api.d.ts +2 -0
- package/filters/text/index.d.ts +5 -0
- package/filters/text/public-api.d.ts +2 -0
- package/filters/text/text-filter.component.d.ts +12 -0
- package/filters/text/text-filter.module.d.ts +14 -0
- package/import/components/import.component.d.ts +29 -0
- package/import/i18n/en.translations.d.ts +27 -0
- package/import/i18n/fr.translations.d.ts +27 -0
- package/import/import-routing.module.d.ts +7 -0
- package/import/import.module.d.ts +17 -0
- package/import/index.d.ts +5 -0
- package/import/public-api.d.ts +2 -0
- package/import/store/import.actions.d.ts +33 -0
- package/import/store/import.effects.d.ts +18 -0
- package/import/store/import.reducer.d.ts +11 -0
- package/import/store/import.selectors.d.ts +9 -0
- package/import/store/import.service.d.ts +12 -0
- package/import/style/_o-import.scss +51 -0
- package/import/style/css.component.d.ts +5 -0
- package/index.d.ts +5 -0
- package/lib/core/access/access.directive.d.ts +16 -0
- package/lib/core/access/access.guard.d.ts +13 -0
- package/lib/core/access/access.model.d.ts +24 -0
- package/lib/core/access/access.service.d.ts +13 -0
- package/lib/core/access/access.utils.d.ts +6 -0
- package/lib/core/components/base-layout/base-layout.component.d.ts +20 -0
- package/lib/core/components/base-menu/base-menu.component.d.ts +27 -0
- package/lib/core/components/base-toolbox/base-toolbox-action.interface.d.ts +12 -0
- package/lib/core/components/base-toolbox/base-toolbox.component.d.ts +10 -0
- package/lib/core/components/base-toolbox-action/base-toolbox-action.component.d.ts +23 -0
- package/lib/core/components/date-picker/date-picker.component.d.ts +47 -0
- package/lib/core/components/date-picker/date-picker.module.d.ts +14 -0
- package/lib/core/components/date-picker/date-range-highlight.pipe.d.ts +8 -0
- package/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.d.ts +26 -0
- package/lib/core/components/date-picker/time-picker/time-picker.component.d.ts +28 -0
- package/lib/core/components/edit-input/edit-input.component.d.ts +21 -0
- package/lib/core/components/edit-input/edit-input.module.d.ts +11 -0
- package/lib/core/components/get-secured-image/get-secured-image.pipe.d.ts +16 -0
- package/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.d.ts +12 -0
- package/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.d.ts +9 -0
- package/lib/core/components/icon/icon.component.d.ts +32 -0
- package/lib/core/components/icon/icon.module.d.ts +8 -0
- package/lib/core/components/modal/modal.component.d.ts +11 -0
- package/lib/core/components/modal/pry-modal.module.d.ts +11 -0
- package/lib/core/components/modalStatus/modalStatus.component.d.ts +17 -0
- package/lib/core/components/modalStatus/modalStatus.module.d.ts +13 -0
- package/lib/core/components/nq-color-selector/nq-color-selector.component.d.ts +23 -0
- package/lib/core/components/overlay/dialog-confirm.component.d.ts +29 -0
- package/lib/core/components/overlay/dialog-ref.d.ts +9 -0
- package/lib/core/components/overlay/dialog.service.d.ts +27 -0
- package/lib/core/components/overlay/overlay.constantes.d.ts +4 -0
- package/lib/core/components/overlay/overlay.directive.d.ts +27 -0
- package/lib/core/components/overlay/overlay.module.d.ts +13 -0
- package/lib/core/components/overlay/tooltip.directive.d.ts +28 -0
- package/lib/core/components/range/range.component.d.ts +35 -0
- package/lib/core/components/range/range.module.d.ts +9 -0
- package/lib/core/components/select/select.component.d.ts +42 -0
- package/lib/core/components/select/select.module.d.ts +12 -0
- package/lib/core/components/select-image/select-image.component.d.ts +28 -0
- package/lib/core/components/share/share.component.d.ts +31 -0
- package/lib/core/components/share/share.model.d.ts +9 -0
- package/lib/core/components/share/share.module.d.ts +11 -0
- package/lib/core/components/snackbar/snack.interface.d.ts +6 -0
- package/lib/core/components/snackbar/snackbar/snackbar.component.d.ts +25 -0
- package/lib/core/components/snackbar/snackbar.module.d.ts +9 -0
- package/lib/core/components/snackbar/snackbar.service.d.ts +22 -0
- package/lib/core/components/sort/sort-data.pipe.d.ts +10 -0
- package/lib/core/components/sort/sort-header/sort-header.component.d.ts +16 -0
- package/lib/core/components/sort/sort-header.directive.d.ts +5 -0
- package/lib/core/components/sort/sort-table.directive.d.ts +17 -0
- package/lib/core/components/sort/sort.model.d.ts +4 -0
- package/lib/core/components/sort/sort.module.d.ts +12 -0
- package/lib/core/components/title-presentation/title-presentation.component.d.ts +12 -0
- package/lib/core/components/toggle/toggle.component.d.ts +31 -0
- package/lib/core/components/toggle/toggle.module.d.ts +10 -0
- package/lib/core/components/translate-id/translate-id.pipe.d.ts +20 -0
- package/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.d.ts +18 -0
- package/lib/core/components/upload/upload.component.d.ts +19 -0
- package/lib/core/core.module.d.ts +36 -0
- package/lib/core/errors/http-error-interceptor.service.d.ts +16 -0
- package/lib/core/i18n/deep-merge.function.d.ts +1 -0
- package/lib/core/i18n/en.translations.d.ts +322 -0
- package/lib/core/i18n/fr.translations.d.ts +322 -0
- package/lib/core/i18n/i18n.module.d.ts +7 -0
- package/lib/core/i18n/i18n.pipe.d.ts +16 -0
- package/lib/core/i18n/i18n.service.d.ts +35 -0
- package/lib/core/model/admin-api.model.d.ts +111 -0
- package/lib/core/model/dataset.interface.d.ts +29 -0
- package/lib/core/model/filter.interface.d.ts +20 -0
- package/lib/core/model/item.interface.d.ts +38 -0
- package/lib/core/model/manifest.interface.d.ts +84 -0
- package/lib/core/model/mimetype-resultset.constant.d.ts +1 -0
- package/lib/core/model/notification-interface.d.ts +13 -0
- package/lib/core/model/public-api.d.ts +24 -0
- package/lib/core/model/relation.interface.d.ts +5 -0
- package/lib/core/model/result-order.interface.d.ts +5 -0
- package/lib/core/model/result-set.interface.d.ts +19 -0
- package/lib/core/model/search-mono-class.model.d.ts +49 -0
- package/lib/core/model/search-multi-class.model.d.ts +38 -0
- package/lib/core/model/tooltip-of-class.interface.d.ts +4 -0
- package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +60 -0
- package/lib/core/model/widget-chart-manifest.interface.d.ts +150 -0
- package/lib/core/model/widget-detail-manifest.interface.d.ts +4 -0
- package/lib/core/model/widget-graph-manifest.interface.d.ts +14 -0
- package/lib/core/model/widget-iframe-manifest.interface.d.ts +3 -0
- package/lib/core/model/widget-image-manifest.interface.d.ts +4 -0
- package/lib/core/model/widget-map-manifest.interface.d.ts +97 -0
- package/lib/core/model/widget-table-manifest.interface.d.ts +9 -0
- package/lib/core/model/widget-template-manifest.interface.d.ts +5 -0
- package/lib/core/model/widget-tile-manifest.interface.d.ts +10 -0
- package/lib/core/model/widget.interface.d.ts +13 -0
- package/lib/core/public-api.d.ts +113 -0
- package/lib/core/store/category/category.actions.d.ts +14 -0
- package/lib/core/store/category/category.effects.d.ts +15 -0
- package/lib/core/store/category/category.interface.d.ts +4 -0
- package/lib/core/store/category/category.reducer.d.ts +11 -0
- package/lib/core/store/category/category.selectors.d.ts +6 -0
- package/lib/core/store/category/category.service.d.ts +13 -0
- package/lib/core/store/class/class.actions.d.ts +37 -0
- package/lib/core/store/class/class.effects.d.ts +25 -0
- package/lib/core/store/class/class.interface.d.ts +19 -0
- package/lib/core/store/class/class.reducer.d.ts +15 -0
- package/lib/core/store/class/class.selectors.d.ts +14 -0
- package/lib/core/store/class/class.service.d.ts +22 -0
- package/lib/core/store/config/config.actions.d.ts +185 -0
- package/lib/core/store/config/config.effects.d.ts +51 -0
- package/lib/core/store/config/config.reducer.d.ts +37 -0
- package/lib/core/store/config/config.selectors.d.ts +52 -0
- package/lib/core/store/config/config.service.d.ts +51 -0
- package/lib/core/store/config/config.widget.constants.d.ts +12 -0
- package/lib/core/store/config/icon-definitions.interface.d.ts +34 -0
- package/lib/core/store/config/open-map-tiles.service.d.ts +17 -0
- package/lib/core/store/context-menu/context-menu.actions.d.ts +18 -0
- package/lib/core/store/context-menu/context-menu.effects.d.ts +8 -0
- package/lib/core/store/context-menu/context-menu.reducer.d.ts +12 -0
- package/lib/core/store/context-menu/context-menu.selectors.d.ts +16 -0
- package/lib/core/store/data-source/data-source.actions.d.ts +238 -0
- package/lib/core/store/data-source/data-source.effects.d.ts +106 -0
- package/lib/core/store/data-source/data-source.model.d.ts +32 -0
- package/lib/core/store/data-source/data-source.reducer.d.ts +21 -0
- package/lib/core/store/data-source/data-source.selectors.d.ts +31 -0
- package/lib/core/store/data-source/data-source.service.d.ts +40 -0
- package/lib/core/store/data-source/named-query-types.model.d.ts +5 -0
- package/lib/core/store/data-source/named-query-utils.d.ts +6 -0
- package/lib/core/store/field/field.actions.d.ts +14 -0
- package/lib/core/store/field/field.effects.d.ts +15 -0
- package/lib/core/store/field/field.interface.d.ts +21 -0
- package/lib/core/store/field/field.reducer.d.ts +11 -0
- package/lib/core/store/field/field.selectors.d.ts +7 -0
- package/lib/core/store/field/field.service.d.ts +15 -0
- package/lib/core/store/image/image.actions.d.ts +32 -0
- package/lib/core/store/image/image.effects.d.ts +20 -0
- package/lib/core/store/image/image.reducer.d.ts +9 -0
- package/lib/core/store/image/image.selectors.d.ts +7 -0
- package/lib/core/store/image/image.service.d.ts +29 -0
- package/lib/core/store/item/item.actions.d.ts +18 -0
- package/lib/core/store/item/item.effects.d.ts +27 -0
- package/lib/core/store/item/item.service.d.ts +28 -0
- package/lib/core/store/raw/raw.service.d.ts +18 -0
- package/lib/core/store/relation-types/relation-types.actions.d.ts +65 -0
- package/lib/core/store/relation-types/relation-types.effects.d.ts +31 -0
- package/lib/core/store/relation-types/relation-types.interface.d.ts +8 -0
- package/lib/core/store/relation-types/relation-types.reducer.d.ts +11 -0
- package/lib/core/store/relation-types/relation-types.selectors.d.ts +8 -0
- package/lib/core/store/relation-types/relation-types.service.d.ts +17 -0
- package/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.d.ts +2 -0
- package/lib/core/store/search/search.actions.d.ts +33 -0
- package/lib/core/store/search/search.constants.d.ts +2 -0
- package/lib/core/store/search/search.effects.d.ts +33 -0
- package/lib/core/store/search/search.reducer.d.ts +10 -0
- package/lib/core/store/search/search.selectors.d.ts +5 -0
- package/lib/core/store/search/search.service.d.ts +50 -0
- package/lib/core/symbol/symbol.service.d.ts +27 -0
- package/lib/core/toolbox/toolbox-manifest.service.d.ts +21 -0
- package/lib/core/toolbox/toolbox-menu.service.d.ts +45 -0
- package/lib/core/ws/websocket.service.d.ts +26 -0
- package/lib/dashboard/action-bus/bus-action.interface.d.ts +4 -0
- package/lib/dashboard/action-bus/effect/action-bus.effects.d.ts +13 -0
- package/lib/dashboard/action-bus/service/bus.service.d.ts +22 -0
- package/lib/dashboard/action-bus/service/control-message.interface.d.ts +6 -0
- package/lib/dashboard/base-widget.module.d.ts +9 -0
- package/lib/dashboard/components/context-menu/context-menu.component.d.ts +59 -0
- package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +78 -0
- package/lib/dashboard/components/dashboard.component.d.ts +99 -0
- package/lib/dashboard/components/manifests/manifests.component.d.ts +20 -0
- package/lib/dashboard/components/metadata/metadata.component.d.ts +16 -0
- package/lib/dashboard/components/solve-collisions.function.d.ts +15 -0
- package/lib/dashboard/components/subscriptionner.directive.d.ts +9 -0
- package/lib/dashboard/components/vizualize-raw/vizualize-raw.component.d.ts +26 -0
- package/lib/dashboard/components/widgets/base-widget.component.d.ts +36 -0
- package/lib/dashboard/components/widgets/data-widget.component.d.ts +20 -0
- package/lib/dashboard/components/widgets/header/resultset-size.pipe.d.ts +18 -0
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +115 -0
- package/lib/dashboard/components/widgets/public-api.d.ts +9 -0
- package/lib/dashboard/components/widgets/settings/settings.component.d.ts +35 -0
- package/lib/dashboard/components/widgets/widget-filler/widget-filler.component.d.ts +10 -0
- package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +24 -0
- package/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.d.ts +34 -0
- package/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.d.ts +11 -0
- package/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.d.ts +9 -0
- package/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.d.ts +39 -0
- package/lib/dashboard/dashboard.module.d.ts +59 -0
- package/lib/dashboard/date-utils.d.ts +3 -0
- package/lib/dashboard/filter/base-filter.component.d.ts +13 -0
- package/lib/dashboard/filter/base-filter.module.d.ts +9 -0
- package/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.d.ts +20 -0
- package/lib/dashboard/filter/filter-factory.service.d.ts +40 -0
- package/lib/dashboard/filter/filter-loader.function.d.ts +3 -0
- package/lib/dashboard/filter/public-api.d.ts +5 -0
- package/lib/dashboard/guard/default-view.guard.d.ts +14 -0
- package/lib/dashboard/item-utils.d.ts +35 -0
- package/lib/dashboard/public-api.d.ts +30 -0
- package/lib/dashboard/resultset-utils.d.ts +4 -0
- package/lib/dashboard/store/dashboard-init.service.d.ts +20 -0
- package/lib/dashboard/store/dashboard.actions.d.ts +455 -0
- package/lib/dashboard/store/dashboard.contants.d.ts +4 -0
- package/lib/dashboard/store/dashboard.effects.d.ts +226 -0
- package/lib/dashboard/store/dashboard.reducers.d.ts +48 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +374 -0
- package/lib/dashboard/store/geocoding.service.d.ts +56 -0
- package/lib/dashboard/store/manifest.service.d.ts +26 -0
- package/lib/dashboard/store/refresh.service.d.ts +12 -0
- package/lib/dashboard/store/title.service.d.ts +17 -0
- package/lib/dashboard/tooltip/base-tooltip.component.d.ts +15 -0
- package/lib/dashboard/tooltip/base-tooltip.module.d.ts +9 -0
- package/lib/dashboard/tooltip/components/default/default.tooltip.component.d.ts +6 -0
- package/lib/dashboard/tooltip/public-api.d.ts +5 -0
- package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +42 -0
- package/lib/dashboard/tooltip/tooltip-loader.function.d.ts +3 -0
- package/lib/dashboard/widget-loader.function.d.ts +3 -0
- package/notification/components/notification/content/notification-content.component.d.ts +25 -0
- package/notification/components/notification/notification.component.d.ts +20 -0
- package/notification/i18n/en.translations.d.ts +22 -0
- package/notification/i18n/fr.translations.d.ts +22 -0
- package/notification/index.d.ts +5 -0
- package/notification/notification.module.d.ts +17 -0
- package/notification/public-api.d.ts +9 -0
- package/notification/store/notification.actions.d.ts +20 -0
- package/notification/store/notification.effects.d.ts +18 -0
- package/notification/store/notification.reducer.d.ts +6 -0
- package/notification/store/notification.selectors.d.ts +5 -0
- package/notification/store/notification.service.d.ts +12 -0
- package/notification/style/_m-notifications.scss +127 -0
- package/notification/style/css.component.d.ts +5 -0
- package/package.json +266 -0
- package/pipeline/components/pipeline-details/pipeline-details.component.d.ts +27 -0
- package/pipeline/components/pipeline-editor/graph-serializer.utils.d.ts +8 -0
- package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +73 -0
- package/pipeline/components/pipeline-editor/pipeline.interface.d.ts +52 -0
- package/pipeline/components/pipeline-list/pipeline-list.component.d.ts +46 -0
- package/pipeline/components/pipeline-properties-panel.component.d.ts +11 -0
- package/pipeline/factory/pipeline-component-factory.service.d.ts +29 -0
- package/pipeline/i18n/en.translations.d.ts +73 -0
- package/pipeline/i18n/fr.translations.d.ts +73 -0
- package/pipeline/index.d.ts +5 -0
- package/pipeline/node-class/base-node.class.d.ts +13 -0
- package/pipeline/pipeline.module.d.ts +20 -0
- package/pipeline/public-api.d.ts +16 -0
- package/pipeline/store/pipeline.actions.d.ts +81 -0
- package/pipeline/store/pipeline.effects.d.ts +30 -0
- package/pipeline/store/pipeline.reducer.d.ts +13 -0
- package/pipeline/store/pipeline.selectors.d.ts +8 -0
- package/pipeline/store/pipeline.service.d.ts +19 -0
- package/pipeline/style/_o-pipeline.scss +274 -0
- package/pipeline/style/css.component.d.ts +5 -0
- package/pipeline-components/filter/component/filter.component.d.ts +16 -0
- package/pipeline-components/filter/filter.module.d.ts +15 -0
- package/pipeline-components/filter/i18n/en.translations.d.ts +15 -0
- package/pipeline-components/filter/i18n/fr.translations.d.ts +15 -0
- package/pipeline-components/filter/index.d.ts +5 -0
- package/pipeline-components/filter/node-class/filter-node.class.d.ts +4 -0
- package/pipeline-components/filter/public-api.d.ts +3 -0
- package/pipeline-components/input-datasource/component/input-datasource.component.d.ts +13 -0
- package/pipeline-components/input-datasource/i18n/en.translations.d.ts +10 -0
- package/pipeline-components/input-datasource/i18n/fr.translations.d.ts +10 -0
- package/pipeline-components/input-datasource/index.d.ts +5 -0
- package/pipeline-components/input-datasource/input-datasource.module.d.ts +17 -0
- package/pipeline-components/input-datasource/node-class/input-datasourse-node.class.d.ts +5 -0
- package/pipeline-components/input-datasource/public-api.d.ts +3 -0
- package/pipeline-components/noop/component/noop.component.d.ts +7 -0
- package/pipeline-components/noop/index.d.ts +5 -0
- package/pipeline-components/noop/node-class/noop-node.class.d.ts +4 -0
- package/pipeline-components/noop/noop.module.d.ts +13 -0
- package/pipeline-components/noop/public-api.d.ts +3 -0
- package/pipeline-components/output-dataset/component/output-dataset.component.d.ts +13 -0
- package/pipeline-components/output-dataset/i18n/en.translations.d.ts +9 -0
- package/pipeline-components/output-dataset/i18n/fr.translations.d.ts +9 -0
- package/pipeline-components/output-dataset/index.d.ts +5 -0
- package/pipeline-components/output-dataset/node-class/output-dataset-node.class.d.ts +5 -0
- package/pipeline-components/output-dataset/output-dataset.module.d.ts +17 -0
- package/pipeline-components/output-dataset/public-api.d.ts +3 -0
- package/pipeline-components/subgraph/component/empty.component.d.ts +7 -0
- package/pipeline-components/subgraph/index.d.ts +5 -0
- package/pipeline-components/subgraph/node-class/sub-graph-input.class.d.ts +4 -0
- package/pipeline-components/subgraph/node-class/sub-graph-node.class.d.ts +17 -0
- package/pipeline-components/subgraph/node-class/sub-graph-output.class.d.ts +4 -0
- package/pipeline-components/subgraph/public-api.d.ts +5 -0
- package/pipeline-components/subgraph/subgraph.module.d.ts +13 -0
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +28 -0
- package/presentation/components/presentation.component.d.ts +55 -0
- package/presentation/i18n/en.translations.d.ts +39 -0
- package/presentation/i18n/fr.translations.d.ts +40 -0
- package/presentation/index.d.ts +5 -0
- package/presentation/presentation.module.d.ts +18 -0
- package/presentation/public-api.d.ts +4 -0
- package/presentation/style/_o-pry-new-presentation.scss +78 -0
- package/presentation/style/_o-pry-presentation.scss +93 -0
- package/presentation/style/css.component.d.ts +5 -0
- package/public-api.d.ts +2 -0
- package/restitution/components/restitution/restitution.component.d.ts +54 -0
- package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +40 -0
- package/restitution/components/restitution-list/restitution-list.component.d.ts +33 -0
- package/restitution/i18n/en.translations.d.ts +43 -0
- package/restitution/i18n/fr.translations.d.ts +43 -0
- package/restitution/index.d.ts +5 -0
- package/restitution/model/restitution.model.d.ts +8 -0
- package/restitution/public-api.d.ts +4 -0
- package/restitution/restitution.module.d.ts +21 -0
- package/restitution/style/_o-restitution-list.scss +161 -0
- package/restitution/style/_o-restitution.scss +32 -0
- package/restitution/style/css.component.d.ts +5 -0
- package/search/components/choose-widget/choose-widget.component.d.ts +34 -0
- package/search/components/edit-named-query/edit-named-query.component.d.ts +37 -0
- package/search/components/edit-named-query-modal/edit-named-query-modal.component.d.ts +17 -0
- package/search/components/save-query/save-query.component.d.ts +36 -0
- package/search/components/save-query-button/save-query-button.component.d.ts +23 -0
- package/search/i18n/en.translations.d.ts +131 -0
- package/search/i18n/fr.translations.d.ts +131 -0
- package/search/index.d.ts +5 -0
- package/search/public-api.d.ts +12 -0
- package/search/search-fulltext/search-fulltext/search-fulltext.component.d.ts +56 -0
- package/search/search-fulltext/store/search-fulltext.actions.d.ts +21 -0
- package/search/search-fulltext/store/search-fulltext.effects.d.ts +25 -0
- package/search/search-fulltext/store/search-fulltext.service.d.ts +7 -0
- package/search/search-home/search-home.component.d.ts +76 -0
- package/search/search-mono-class/components/search-composed/search-composed.component.d.ts +27 -0
- package/search/search-mono-class/components/search-condition/search-condition.component.d.ts +42 -0
- package/search/search-mono-class/components/search-mono-class/search-mono-class.component.d.ts +15 -0
- package/search/search-mono-class/components/search-order/search-order.component.d.ts +25 -0
- package/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.d.ts +16 -0
- package/search/search-mono-class/store/search-mono-class.actions.d.ts +119 -0
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +64 -0
- package/search/search-mono-class/store/search-mono-class.reducer.d.ts +10 -0
- package/search/search-mono-class/store/search-mono-class.selectors.d.ts +13 -0
- package/search/search-mono-class/store/search-mono-class.service.d.ts +20 -0
- package/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.d.ts +39 -0
- package/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.d.ts +24 -0
- package/search/search-multi-class/components/search-multi-class/search-multi-class.component.d.ts +15 -0
- package/search/search-multi-class/store/search-multi-class.actions.d.ts +65 -0
- package/search/search-multi-class/store/search-multi-class.effects.d.ts +39 -0
- package/search/search-multi-class/store/search-multi-class.reducer.d.ts +8 -0
- package/search/search-multi-class/store/search-multi-class.selectors.d.ts +9 -0
- package/search/search-multi-class/store/search-multi-class.service.d.ts +15 -0
- package/search/search-tools/search-tools.component.d.ts +52 -0
- package/search/search.module.d.ts +37 -0
- package/search/style/_m-choose-widget.scss +108 -0
- package/search/style/_m-pry-search-select-attribute.scss +28 -0
- package/search/style/_o-edit-named-query-modal.scss +9 -0
- package/search/style/_o-edit-named-query.scss +29 -0
- package/search/style/_o-multi-class-condition.scss +65 -0
- package/search/style/_o-multi-class-field-selection.scss +64 -0
- package/search/style/_o-pry-search-composed.scss +89 -0
- package/search/style/_o-pry-search-condition.scss +54 -0
- package/search/style/_o-pry-search-home.scss +91 -0
- package/search/style/_o-pry-search-order.scss +14 -0
- package/search/style/_o-pry-search-tools.scss +150 -0
- package/search/style/_o-search-fulltext.scss +154 -0
- package/search/style/_o-search-mono-class.scss +45 -0
- package/search/style/_o-search-multi-class.scss +34 -0
- package/search/style/css.component.d.ts +5 -0
- package/styles/abstracts/_abstracts-overlays.scss +13 -0
- package/styles/abstracts/_abstracts-utils.scss +82 -0
- package/styles/abstracts/_functions.scss +229 -0
- package/styles/abstracts/_index.scss +5 -0
- package/styles/abstracts/_mixins.scss +309 -0
- package/styles/abstracts/_variables.scss +3 -0
- package/styles/base/_custom-scrollbar.scss +9 -0
- package/styles/base/_html-body.scss +5 -0
- package/styles/base/_index.scss +6 -0
- package/styles/base/_normalize.scss +351 -0
- package/styles/base/_reboot.scss +376 -0
- package/styles/base/_typography.scss +25 -0
- package/styles/base/_utils.scss +67 -0
- package/styles/components/_a-badge.scss +8 -0
- package/styles/components/_a-btn.scss +207 -0
- package/styles/components/_a-checkbox.scss +80 -0
- package/styles/components/_a-checkmark.scss +1 -0
- package/styles/components/_a-expandable-value.scss +51 -0
- package/styles/components/_a-form-field.scss +96 -0
- package/styles/components/_a-icon.scss +16 -0
- package/styles/components/_a-label.scss +16 -0
- package/styles/components/_a-link.scss +17 -0
- package/styles/components/_a-loader.scss +30 -0
- package/styles/components/_a-pastille.scss +14 -0
- package/styles/components/_a-pry-select-image.scss +16 -0
- package/styles/components/_a-pry-select.scss +19 -0
- package/styles/components/_a-range-slider.scss +105 -0
- package/styles/components/_a-table.scss +128 -0
- package/styles/components/_a-toggle.scss +150 -0
- package/styles/components/_m-actions-list.scss +25 -0
- package/styles/components/_m-btn-group.scss +58 -0
- package/styles/components/_m-btn-sorttable.scss +75 -0
- package/styles/components/_m-color-selector.scss +58 -0
- package/styles/components/_m-context-menu.scss +52 -0
- package/styles/components/_m-filter.scss +7 -0
- package/styles/components/_m-form-label-field.scss +55 -0
- package/styles/components/_m-form-radio-group.scss +47 -0
- package/styles/components/_m-image-selector.scss +11 -0
- package/styles/components/_m-metadata-tag.scss +55 -0
- package/styles/components/_m-minus-plus.scss +81 -0
- package/styles/components/_m-nav-links.scss +34 -0
- package/styles/components/_m-pry-overlay.scss +56 -0
- package/styles/components/_m-snackbar.scss +52 -0
- package/styles/components/_m-time-picker.scss +55 -0
- package/styles/components/_m-toolbox.scss +21 -0
- package/styles/components/_m-tooltip.scss +91 -0
- package/styles/components/_o-accordion.scss +24 -0
- package/styles/components/_o-card.scss +131 -0
- package/styles/components/_o-cards-list.scss +11 -0
- package/styles/components/_o-dashboard.scss +169 -0
- package/styles/components/_o-datasources.scss +83 -0
- package/styles/components/_o-date-picker.scss +141 -0
- package/styles/components/_o-draggable-menu.scss +54 -0
- package/styles/components/_o-form.scss +29 -0
- package/styles/components/_o-modal.scss +94 -0
- package/styles/components/_o-named-query.scss +43 -0
- package/styles/components/_o-object-panel.scss +109 -0
- package/styles/components/_o-panel.scss +37 -0
- package/styles/components/_o-properties.scss +42 -0
- package/styles/components/_o-pry-admin-classes-customize.scss +130 -0
- package/styles/components/_o-pry-card-menu.scss +105 -0
- package/styles/components/_o-pry-card.scss +97 -0
- package/styles/components/_o-pry-composed-condition.scss +84 -0
- package/styles/components/_o-pry-edit.scss +9 -0
- package/styles/components/_o-pry-expand-panel.scss +36 -0
- package/styles/components/_o-pry-stepper.scss +103 -0
- package/styles/components/_o-search-mono-class.scss +45 -0
- package/styles/components/_o-search-multi-class.scss +34 -0
- package/styles/components/_o-settings.scss +123 -0
- package/styles/components/_o-tabs.scss +108 -0
- package/styles/components/_o-widget.scss +208 -0
- package/styles/components/_overlay.scss +82 -0
- package/styles/layout/_o-base-layout.scss +113 -0
- package/styles/layout/_o-main-layout.scss +38 -0
- package/styles/layout/_o-manifest-layout.scss +89 -0
- package/styles/layout/_o-workspace.scss +61 -0
- package/styles/layout/grid/_grid.scss +141 -0
- package/styles/layout/grid/_visibility.scss +71 -0
- package/styles/layout/grid/mixins/_grid-mixins.scss +368 -0
- package/styles/layout/grid/mixins/_visibility-mixins.scss +115 -0
- package/styles/layout/grid/variables/_grid-variables.scss +41 -0
- package/styles/libs/_reset-lib-ol.scss +35 -0
- package/styles/main.scss +78 -0
- package/styles-theme/abstracts-theme/_abstracts-cards.theme.scss +22 -0
- package/styles-theme/abstracts-theme/_abstracts-overlays.theme.scss +10 -0
- package/styles-theme/abstracts-theme/_index.scss +3 -0
- package/styles-theme/abstracts-theme/_variables.theme.scss +5 -0
- package/styles-theme/abstracts-theme/variables/_index.scss +4 -0
- package/styles-theme/abstracts-theme/variables/_variables-colors.scss +113 -0
- package/styles-theme/abstracts-theme/variables/_variables-decoration.scss +49 -0
- package/styles-theme/abstracts-theme/variables/_variables-fonts.scss +40 -0
- package/styles-theme/abstracts-theme/variables/_variables-typo.scss +138 -0
- package/styles-theme/base-theme/_custom-scrollbar.theme.scss +8 -0
- package/styles-theme/base-theme/_fonts.theme.scss +37 -0
- package/styles-theme/base-theme/_html-body.theme.scss +6 -0
- package/styles-theme/base-theme/_index.scss +4 -0
- package/styles-theme/base-theme/_typography.theme.scss +27 -0
- package/styles-theme/components-theme/_a-badge.theme.scss +21 -0
- package/styles-theme/components-theme/_a-btn.theme.scss +214 -0
- package/styles-theme/components-theme/_a-checkbox.theme.scss +68 -0
- package/styles-theme/components-theme/_a-checkmark.theme.scss +4 -0
- package/styles-theme/components-theme/_a-expandable-value.theme.scss +23 -0
- package/styles-theme/components-theme/_a-form-field.theme.scss +63 -0
- package/styles-theme/components-theme/_a-icon.theme.scss +17 -0
- package/styles-theme/components-theme/_a-label.theme.scss +16 -0
- package/styles-theme/components-theme/_a-link.theme.scss +12 -0
- package/styles-theme/components-theme/_a-pastille.theme.scss +14 -0
- package/styles-theme/components-theme/_a-pry-select.theme.scss +117 -0
- package/styles-theme/components-theme/_a-range-slider.theme.scss +54 -0
- package/styles-theme/components-theme/_a-table.theme.scss +49 -0
- package/styles-theme/components-theme/_a-toggle.theme.scss +62 -0
- package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +45 -0
- package/styles-theme/components-theme/_m-choose-widget.theme.scss +4 -0
- package/styles-theme/components-theme/_m-context-menu.theme.scss +46 -0
- package/styles-theme/components-theme/_m-metadata-tag.theme.scss +17 -0
- package/styles-theme/components-theme/_m-minus-plus.theme.scss +51 -0
- package/styles-theme/components-theme/_m-nav-links.theme.scss +4 -0
- package/styles-theme/components-theme/_m-notifications.theme.scss +90 -0
- package/styles-theme/components-theme/_m-pry-search-select-attribute.theme.scss +15 -0
- package/styles-theme/components-theme/_m-snackbar.theme.scss +42 -0
- package/styles-theme/components-theme/_m-time-picker.theme.scss +36 -0
- package/styles-theme/components-theme/_m-toolbox.theme.scss +15 -0
- package/styles-theme/components-theme/_m-tooltip.theme.scss +66 -0
- package/styles-theme/components-theme/_o-card.theme.scss +45 -0
- package/styles-theme/components-theme/_o-catalog.theme.scss +74 -0
- package/styles-theme/components-theme/_o-datasources.theme.scss +38 -0
- package/styles-theme/components-theme/_o-date-picker.theme.scss +37 -0
- package/styles-theme/components-theme/_o-draggable-menu.theme.scss +26 -0
- package/styles-theme/components-theme/_o-modal.theme.scss +28 -0
- package/styles-theme/components-theme/_o-multi-class-condition.theme.scss +22 -0
- package/styles-theme/components-theme/_o-multi-class-field-selection.theme.scss +43 -0
- package/styles-theme/components-theme/_o-named-query.theme.scss +19 -0
- package/styles-theme/components-theme/_o-object-panel.theme.scss +11 -0
- package/styles-theme/components-theme/_o-panel.theme.scss +18 -0
- package/styles-theme/components-theme/_o-pipeline.theme.scss +88 -0
- package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +14 -0
- package/styles-theme/components-theme/_o-pry-card-menu.theme.scss +55 -0
- package/styles-theme/components-theme/_o-pry-card.theme.scss +44 -0
- package/styles-theme/components-theme/_o-pry-composed-condition.theme.scss +60 -0
- package/styles-theme/components-theme/_o-pry-dataset-card.theme.scss +18 -0
- package/styles-theme/components-theme/_o-pry-dataset.theme.scss +12 -0
- package/styles-theme/components-theme/_o-pry-expand-panel.theme.scss +12 -0
- package/styles-theme/components-theme/_o-pry-new-presentation.theme.scss +20 -0
- package/styles-theme/components-theme/_o-pry-presentation.theme.scss +39 -0
- package/styles-theme/components-theme/_o-pry-search-composed.theme.scss +44 -0
- package/styles-theme/components-theme/_o-pry-search-condition.theme.scss +10 -0
- package/styles-theme/components-theme/_o-pry-search-home.theme.scss +25 -0
- package/styles-theme/components-theme/_o-pry-search-tools.theme.scss +54 -0
- package/styles-theme/components-theme/_o-pry-stepper.theme.scss +35 -0
- package/styles-theme/components-theme/_o-restitution-list.theme.scss +27 -0
- package/styles-theme/components-theme/_o-restitution.theme.scss +7 -0
- package/styles-theme/components-theme/_o-search-fulltext.theme.scss +83 -0
- package/styles-theme/components-theme/_o-search-multi-class.theme.scss +28 -0
- package/styles-theme/components-theme/_o-select-grid-layout.theme.scss +33 -0
- package/styles-theme/components-theme/_o-settings.theme.scss +64 -0
- package/styles-theme/components-theme/_o-tabs.theme.scss +37 -0
- package/styles-theme/components-theme/_o-widget-detail.theme.scss +21 -0
- package/styles-theme/components-theme/_o-widget-graph.theme.scss +32 -0
- package/styles-theme/components-theme/_o-widget-iframe.theme.scss +30 -0
- package/styles-theme/components-theme/_o-widget-map.theme.scss +5 -0
- package/styles-theme/components-theme/_o-widget-table.theme.scss +18 -0
- package/styles-theme/components-theme/_o-widget-tile.theme.scss +21 -0
- package/styles-theme/components-theme/_o-widget.theme.scss +70 -0
- package/styles-theme/components-theme/_overlay.theme.scss +44 -0
- package/styles-theme/layout-theme/_o-base-layout.theme.scss +24 -0
- package/styles-theme/layout-theme/_o-manifest-layout.theme.scss +33 -0
- package/styles-theme/layout-theme/_o-workspace.theme.scss +18 -0
- package/styles-theme/libs-theme/_reset-lib-ol.theme.scss +38 -0
- package/styles-theme/main-theme.scss +83 -0
- package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +14 -0
- package/supervision/components/supervision-flow/supervision-flow.component.d.ts +14 -0
- package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +18 -0
- package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +14 -0
- package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +29 -0
- package/supervision/components/supervision-layout/supervision-layout.component.d.ts +21 -0
- package/supervision/components/supervision-menu/supervision-menu.component.d.ts +13 -0
- package/supervision/components/supervision-title/supervision-title.component.d.ts +11 -0
- package/supervision/components/supervision.component.d.ts +9 -0
- package/supervision/i18n/en.translations.d.ts +57 -0
- package/supervision/i18n/fr.translations.d.ts +57 -0
- package/supervision/index.d.ts +5 -0
- package/supervision/public-api.d.ts +1 -0
- package/supervision/store/supervision-api.model.d.ts +36 -0
- package/supervision/store/supervision.actions.d.ts +121 -0
- package/supervision/store/supervision.effects.d.ts +51 -0
- package/supervision/store/supervision.reducer.d.ts +22 -0
- package/supervision/store/supervision.selectors.d.ts +18 -0
- package/supervision/store/supervision.service.d.ts +19 -0
- package/supervision/supervision-routing.module.d.ts +7 -0
- package/supervision/supervision.module.d.ts +25 -0
- package/toolbox/components/clear-view/clear-view.component.d.ts +10 -0
- package/toolbox/components/drag-widgets/drag-widgets.component.d.ts +19 -0
- package/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.d.ts +12 -0
- package/toolbox/components/filter-settings/filter-settings.component.d.ts +80 -0
- package/toolbox/components/launch-tab/launch-tab.component.d.ts +10 -0
- package/toolbox/components/named-query/named-query.component.d.ts +15 -0
- package/toolbox/components/save-view/save-view.component.d.ts +53 -0
- package/toolbox/components/select-grid-layout/select-grid-layout.component.d.ts +35 -0
- package/toolbox/components/toolbox.component.d.ts +11 -0
- package/toolbox/index.d.ts +5 -0
- package/toolbox/public-api.d.ts +11 -0
- package/toolbox/style/_o-filter-settings.scss +96 -0
- package/toolbox/style/_o-select-grid-layout.scss +43 -0
- package/toolbox/style/css.component.d.ts +5 -0
- package/toolbox/toolbox.module.d.ts +23 -0
- package/tooltips/attribute/attribute-tooltip.component.d.ts +10 -0
- package/tooltips/attribute/attribute-tooltip.module.d.ts +14 -0
- package/tooltips/attribute/index.d.ts +5 -0
- package/tooltips/attribute/public-api.d.ts +2 -0
- package/tooltips/cluster/cluster-tooltip.component.d.ts +6 -0
- package/tooltips/cluster/cluster-tooltip.module.d.ts +13 -0
- package/tooltips/cluster/index.d.ts +5 -0
- package/tooltips/cluster/public-api.d.ts +2 -0
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +101 -0
- package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +103 -0
- package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +103 -0
- package/widgets/widget-aggregated-chart/index.d.ts +5 -0
- package/widgets/widget-aggregated-chart/public-api.d.ts +5 -0
- package/widgets/widget-aggregated-chart/service/backend-aggregation.service.d.ts +21 -0
- package/widgets/widget-aggregated-chart/service/base-aggregation.service.d.ts +21 -0
- package/widgets/widget-aggregated-chart/service/frontend-aggregation.service.d.ts +32 -0
- package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +43 -0
- package/widgets/widget-aggregated-chart/style/css.component.d.ts +5 -0
- package/widgets/widget-aggregated-chart/widget-aggregated-chart.module.d.ts +18 -0
- package/widgets/widget-chart/component/vega-error.handler.d.ts +6 -0
- package/widgets/widget-chart/component/vega-spec.constant.d.ts +98 -0
- package/widgets/widget-chart/component/widget-chart.component.d.ts +151 -0
- package/widgets/widget-chart/i18n/en.translations.d.ts +113 -0
- package/widgets/widget-chart/i18n/fr.translations.d.ts +113 -0
- package/widgets/widget-chart/index.d.ts +5 -0
- package/widgets/widget-chart/public-api.d.ts +2 -0
- package/widgets/widget-chart/style/_o-widget-chart.scss +43 -0
- package/widgets/widget-chart/style/css.component.d.ts +5 -0
- package/widgets/widget-chart/widget-chart.module.d.ts +18 -0
- package/widgets/widget-detail/component/widget-detail.component.d.ts +45 -0
- package/widgets/widget-detail/i18n/en.translations.d.ts +13 -0
- package/widgets/widget-detail/i18n/fr.translations.d.ts +13 -0
- package/widgets/widget-detail/index.d.ts +5 -0
- package/widgets/widget-detail/public-api.d.ts +2 -0
- package/widgets/widget-detail/style/_o-widget-detail.scss +60 -0
- package/widgets/widget-detail/style/css.component.d.ts +5 -0
- package/widgets/widget-detail/widget-detail.module.d.ts +18 -0
- package/widgets/widget-graph/component/widget-graph.component.d.ts +101 -0
- package/widgets/widget-graph/i18n/en.translations.d.ts +14 -0
- package/widgets/widget-graph/i18n/fr.translations.d.ts +14 -0
- package/widgets/widget-graph/index.d.ts +5 -0
- package/widgets/widget-graph/layout/node.interface.d.ts +12 -0
- package/widgets/widget-graph/layout/simple.function.d.ts +9 -0
- package/widgets/widget-graph/public-api.d.ts +3 -0
- package/widgets/widget-graph/style/_o-widget-graph.scss +4 -0
- package/widgets/widget-graph/style/css.component.d.ts +5 -0
- package/widgets/widget-graph/widget-graph.module.d.ts +18 -0
- package/widgets/widget-iframe/component/widget-iframe.component.d.ts +20 -0
- package/widgets/widget-iframe/i18n/en.translations.d.ts +10 -0
- package/widgets/widget-iframe/i18n/fr.translations.d.ts +10 -0
- package/widgets/widget-iframe/index.d.ts +5 -0
- package/widgets/widget-iframe/messaging/iframe-message-type.interface.d.ts +8 -0
- package/widgets/widget-iframe/messaging/iframe-messaging.service.d.ts +10 -0
- package/widgets/widget-iframe/public-api.d.ts +4 -0
- package/widgets/widget-iframe/style/_o-widget-iframe.scss +19 -0
- package/widgets/widget-iframe/style/css.component.d.ts +5 -0
- package/widgets/widget-iframe/widget-iframe.module.d.ts +18 -0
- package/widgets/widget-image/component/widget-image.component.d.ts +13 -0
- package/widgets/widget-image/index.d.ts +5 -0
- package/widgets/widget-image/public-api.d.ts +2 -0
- package/widgets/widget-image/style/_o-widget-image.scss +7 -0
- package/widgets/widget-image/style/css.component.d.ts +5 -0
- package/widgets/widget-image/widget-image.module.d.ts +14 -0
- package/widgets/widget-map/component/widget-map-layer.service.d.ts +98 -0
- package/widgets/widget-map/component/widget-map.component.d.ts +136 -0
- package/widgets/widget-map/i18n/en.translations.d.ts +80 -0
- package/widgets/widget-map/i18n/fr.translations.d.ts +80 -0
- package/widgets/widget-map/index.d.ts +5 -0
- package/widgets/widget-map/interaction/selection-interaction.class.d.ts +25 -0
- package/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.d.ts +14 -0
- package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +8 -0
- package/widgets/widget-map/public-api.d.ts +6 -0
- package/widgets/widget-map/reader/kmz-zip-reader.class.d.ts +12 -0
- package/widgets/widget-map/reader/map-formats-reader.class.d.ts +15 -0
- package/widgets/widget-map/reader/random-color-style.function.d.ts +6 -0
- package/widgets/widget-map/reader/read-as-text.class.d.ts +10 -0
- package/widgets/widget-map/reader/shp-zip-reader.class.d.ts +10 -0
- package/widgets/widget-map/search-bar/search-bar.control.d.ts +27 -0
- package/widgets/widget-map/style/_o-layer-legend.scss +42 -0
- package/widgets/widget-map/style/_o-widget-map.scss +69 -0
- package/widgets/widget-map/style/css.component.d.ts +5 -0
- package/widgets/widget-map/utils/widget-map.utils.d.ts +29 -0
- package/widgets/widget-map/widget-map.module.d.ts +20 -0
- package/widgets/widget-table/component/widget-table.component.d.ts +41 -0
- package/widgets/widget-table/expand-value/detach-row.directive.d.ts +12 -0
- package/widgets/widget-table/expand-value/expand-value.component.d.ts +10 -0
- package/widgets/widget-table/expand-value/format-number.pipe.d.ts +12 -0
- package/widgets/widget-table/get-value/get-value.pipe.d.ts +11 -0
- package/widgets/widget-table/i18n/en.translations.d.ts +14 -0
- package/widgets/widget-table/i18n/fr.translations.d.ts +14 -0
- package/widgets/widget-table/index.d.ts +5 -0
- package/widgets/widget-table/public-api.d.ts +5 -0
- package/widgets/widget-table/resizable/resizable.component.d.ts +7 -0
- package/widgets/widget-table/resizable/resizable.directive.d.ts +10 -0
- package/widgets/widget-table/style/_o-widget-table.scss +64 -0
- package/widgets/widget-table/style/css.component.d.ts +5 -0
- package/widgets/widget-table/widget-table.module.d.ts +24 -0
- package/widgets/widget-template/component/widget-template.component.d.ts +21 -0
- package/widgets/widget-template/index.d.ts +5 -0
- package/widgets/widget-template/public-api.d.ts +2 -0
- package/widgets/widget-template/style/_o-widget-template.scss +8 -0
- package/widgets/widget-template/style/css.component.d.ts +5 -0
- package/widgets/widget-template/widget-template.module.d.ts +16 -0
- package/widgets/widget-tile/component/widget-tile.component.d.ts +47 -0
- package/widgets/widget-tile/i18n/en.translations.d.ts +12 -0
- package/widgets/widget-tile/i18n/fr.translations.d.ts +12 -0
- package/widgets/widget-tile/index.d.ts +5 -0
- package/widgets/widget-tile/public-api.d.ts +2 -0
- package/widgets/widget-tile/style/_o-widget-tile.scss +83 -0
- package/widgets/widget-tile/style/css.component.d.ts +5 -0
- package/widgets/widget-tile/widget-tile.module.d.ts +20 -0
package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs
ADDED
|
@@ -0,0 +1,633 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { ClassSelectors, DataWidgetComponent, FieldSelectors, FieldType, GraphType, Operation, VegaColorType, VegaType, WIDGET_HEADER_HEIGHT } from '@provoly/dashboard';
|
|
3
|
+
import { BehaviorSubject, combineLatest, Subject, switchMap, withLatestFrom } from 'rxjs';
|
|
4
|
+
import { debounceTime, filter, map } from 'rxjs/operators';
|
|
5
|
+
import embed, { vega } from 'vega-embed';
|
|
6
|
+
import { mergeDeep } from 'vega-lite';
|
|
7
|
+
import { fontConfig } from 'vega-lite/build/src/config';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngrx/store";
|
|
10
|
+
import * as i2 from "@provoly/dashboard";
|
|
11
|
+
import * as i3 from "../service/base-aggregation.service";
|
|
12
|
+
import * as i4 from "@angular/common";
|
|
13
|
+
import * as i5 from "@angular/forms";
|
|
14
|
+
import * as i6 from "@provoly/dashboard/components/checkbox";
|
|
15
|
+
import * as i7 from "../style/css.component";
|
|
16
|
+
vega.scheme('KO/W/OK', ['#C04D3F', '#FD9843', '#9ABE29']);
|
|
17
|
+
export class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
18
|
+
constructor(store, translateService, el, aggregationService) {
|
|
19
|
+
super(store, el);
|
|
20
|
+
this.translateService = translateService;
|
|
21
|
+
this.aggregationService = aggregationService;
|
|
22
|
+
this.optionsCopy$ = new BehaviorSubject(null);
|
|
23
|
+
this.trigger$ = new Subject();
|
|
24
|
+
this.WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;
|
|
25
|
+
this.GraphType = GraphType;
|
|
26
|
+
this.Operation = Operation;
|
|
27
|
+
this.typeOptions = [];
|
|
28
|
+
this.classes = [];
|
|
29
|
+
this.fields = [];
|
|
30
|
+
this.triggerOrdinateAttributes$ = new Subject();
|
|
31
|
+
this.schemes = [];
|
|
32
|
+
this.schemes = Object.values(VegaColorType).map((id) => ({ id }));
|
|
33
|
+
this.typeOptions = Object.values(GraphType)
|
|
34
|
+
.map((v) => ({
|
|
35
|
+
id: v,
|
|
36
|
+
label: this.translateService.instant('@pry.widget.chart.graphType.' + v)
|
|
37
|
+
}))
|
|
38
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
39
|
+
this.options$ = this.manifest$.pipe(map((manifest) => mergeDeep({
|
|
40
|
+
graph: { type: GraphType.BAR, tooltip: true, legend: false },
|
|
41
|
+
abscissa: { keep0: true },
|
|
42
|
+
ordinate: { keep0: true }
|
|
43
|
+
}, (manifest.options ?? {}))));
|
|
44
|
+
this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {
|
|
45
|
+
this.optionsCopy$.next(JSON.parse(JSON.stringify(options)));
|
|
46
|
+
});
|
|
47
|
+
this.fields$ = this.store.select(FieldSelectors.fields);
|
|
48
|
+
this.classes$ = this.store.select(ClassSelectors.classes);
|
|
49
|
+
this.operations$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(map(([rs, classes, fields]) => classes
|
|
50
|
+
.filter((clazz) => Object.keys(rs.items).includes(clazz.id))
|
|
51
|
+
.map((clazz) => clazz.attributes)
|
|
52
|
+
.map((attrs) => attrs.filter((attr) => {
|
|
53
|
+
const field = fields.find((field) => {
|
|
54
|
+
return field.id === attr.field;
|
|
55
|
+
});
|
|
56
|
+
return !!field && [FieldType.INTEGER, FieldType.DECIMAL, FieldType.LONG].includes(field.type);
|
|
57
|
+
}))
|
|
58
|
+
.reduce((a, b) => [...a, ...b], [])
|
|
59
|
+
.filter((attr) => !!attr)), map((attributes) => (attributes.length > 0 ? Object.values(Operation) : [Operation.COUNT, Operation.DISTINCT, Operation.NONE])
|
|
60
|
+
.map((v) => ({
|
|
61
|
+
id: v,
|
|
62
|
+
label: this.translateService.instant('@pry.widget.chart.operation.' + v)
|
|
63
|
+
}))
|
|
64
|
+
.sort((a, b) => a.label.localeCompare(b.label))));
|
|
65
|
+
this.subscriptions.add(this.fields$.subscribe((fields) => (this.fields = fields)));
|
|
66
|
+
this.subscriptions.add(this.classes$.subscribe((classes) => (this.classes = classes)));
|
|
67
|
+
this.abscissaAttributes$ = combineLatest([this.classes$, this.fields$, this.resultSet$, this.optionsCopy$]).pipe(map(([classes, fields, rs, optionCopy]) => classes
|
|
68
|
+
.filter((clazz) => Object.keys(rs.items).includes(clazz.id))
|
|
69
|
+
.map((clazz) => clazz.attributes)
|
|
70
|
+
.map((attrs) => attrs.filter((attr) => {
|
|
71
|
+
const field = fields.find((field) => {
|
|
72
|
+
return field.id === attr.field;
|
|
73
|
+
});
|
|
74
|
+
return (!!field &&
|
|
75
|
+
field.type !== FieldType.RAW &&
|
|
76
|
+
field.type !== FieldType.STRING &&
|
|
77
|
+
(optionCopy?.graph.type !== GraphType.HISTOGRAM || field.type !== FieldType.KEYWORD));
|
|
78
|
+
}))
|
|
79
|
+
.reduce((a, b) => [...a, ...b], [])));
|
|
80
|
+
this.ordinateAttributes$ = combineLatest([
|
|
81
|
+
this.classes$,
|
|
82
|
+
this.fields$,
|
|
83
|
+
this.resultSet$,
|
|
84
|
+
this.triggerOrdinateAttributes$
|
|
85
|
+
]).pipe(map(([classes, fields, rs]) => classes
|
|
86
|
+
.filter((clazz) => Object.keys(rs.items).includes(clazz.id))
|
|
87
|
+
.map((clazz) => clazz.attributes)
|
|
88
|
+
.map((attrs) => attrs.filter((attr) => {
|
|
89
|
+
const field = fields.find((field) => {
|
|
90
|
+
return field.id === attr.field;
|
|
91
|
+
});
|
|
92
|
+
if (this.optionsCopy$.value &&
|
|
93
|
+
[
|
|
94
|
+
Operation.MAX,
|
|
95
|
+
Operation.MIN,
|
|
96
|
+
Operation.SUM,
|
|
97
|
+
Operation.Q1,
|
|
98
|
+
Operation.Q3,
|
|
99
|
+
Operation.AVERAGE,
|
|
100
|
+
Operation.MEDIAN,
|
|
101
|
+
Operation.NONE
|
|
102
|
+
].includes(this.optionsCopy$.value.ordinate.operation)) {
|
|
103
|
+
return (!!field &&
|
|
104
|
+
[FieldType.INTEGER, FieldType.INSTANT, FieldType.LONG, FieldType.DECIMAL].includes(field.type));
|
|
105
|
+
}
|
|
106
|
+
return !!field && field.type !== FieldType.RAW && field.type !== FieldType.STRING;
|
|
107
|
+
}))
|
|
108
|
+
.reduce((a, b) => [...a, ...b], [])));
|
|
109
|
+
this.isChartValid$ = combineLatest([this.options$, this.abscissaAttributes$, this.ordinateAttributes$]).pipe(map(([options, abscissaAttrs, ordinateAttrs]) => {
|
|
110
|
+
return (!!options.abscissa.attribute &&
|
|
111
|
+
abscissaAttrs.map((attr) => attr.id).includes(options.abscissa.attribute) &&
|
|
112
|
+
(options.ordinate.attribute
|
|
113
|
+
? ordinateAttrs.map((attr) => attr.id).includes(options.ordinate.attribute)
|
|
114
|
+
: true));
|
|
115
|
+
}));
|
|
116
|
+
this.attributeTypes$ = combineLatest([this.options$, this.fields$, this.classes$]).pipe(filter(([options, fields, classes]) => !!options.abscissa && !!options.ordinate), map(([options, fields, classes]) => {
|
|
117
|
+
const abscissa = classes
|
|
118
|
+
.map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa.attribute))
|
|
119
|
+
.find((attr) => !!attr);
|
|
120
|
+
const ordinate = classes
|
|
121
|
+
.map((clazz) => clazz.attributes.find((attr) => attr.id === options.ordinate.attribute))
|
|
122
|
+
.find((attr) => !!attr);
|
|
123
|
+
const abscissaFieldType = fields.find((field) => field.id === abscissa?.field)?.type ?? FieldType.STRING;
|
|
124
|
+
const ordinateFieldType = fields.find((field) => field.id === ordinate?.field)?.type ?? FieldType.STRING;
|
|
125
|
+
return {
|
|
126
|
+
abscissa: {
|
|
127
|
+
fieldType: abscissaFieldType,
|
|
128
|
+
vegaType: this.translateToVegaType(abscissaFieldType, abscissa?.name ?? '')
|
|
129
|
+
},
|
|
130
|
+
ordinate: {
|
|
131
|
+
fieldType: ordinateFieldType,
|
|
132
|
+
vegaType: options.ordinate.operation === Operation.COUNT || options.ordinate.operation === Operation.DISTINCT
|
|
133
|
+
? VegaType.QUANTITATIVE
|
|
134
|
+
: this.translateToVegaType(ordinateFieldType, ordinate?.name ?? '')
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
}));
|
|
138
|
+
this.aggregatedValues$ = combineLatest([this.datasourceIds$, this.options$, this.resultSet$]).pipe(switchMap(([datasources, options]) => this.aggregationService.aggregate(datasources, options)), debounceTime(100), withLatestFrom(this.options$), map(([aggregate, options]) => {
|
|
139
|
+
// @ts-ignore
|
|
140
|
+
if (aggregate.values.length > 0 && !aggregate.values[0].groupBy) {
|
|
141
|
+
return {
|
|
142
|
+
operation: aggregate.operation,
|
|
143
|
+
data: aggregate.values.map((value) => ({ ...value, series: options.ordinate.label }))
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const flattened = aggregate.values
|
|
147
|
+
.map((value) => value.groupBy.map((groupBy) => ({
|
|
148
|
+
key: value.key,
|
|
149
|
+
series: groupBy.key,
|
|
150
|
+
value: groupBy.value
|
|
151
|
+
})))
|
|
152
|
+
.reduce((a, b) => [...a, ...b], []);
|
|
153
|
+
return { operation: aggregate.operation, data: flattened };
|
|
154
|
+
}));
|
|
155
|
+
this.noData$ = this.aggregatedValues$.pipe(map(({ operation, data }) => data.length === 0));
|
|
156
|
+
this.vegaLiteSpec$ = combineLatest([
|
|
157
|
+
this.options$,
|
|
158
|
+
this.attributeTypes$,
|
|
159
|
+
this.aggregatedValues$,
|
|
160
|
+
this.widgetSize$.pipe(debounceTime(100)),
|
|
161
|
+
this.displayHeader$
|
|
162
|
+
]).pipe(map(([options, types, values, size, display]) => {
|
|
163
|
+
const isCircular = [GraphType.CIRCULAR, GraphType.DONUT].includes(options.graph.type);
|
|
164
|
+
return mergeDeep({
|
|
165
|
+
$schema: 'https://vega.github.io/schema/vega-lite/v5.json',
|
|
166
|
+
title: this.getTitle(options),
|
|
167
|
+
width: 'container',
|
|
168
|
+
height: (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT : 0),
|
|
169
|
+
padding: 10,
|
|
170
|
+
autosize: { type: 'fit', contains: 'padding' },
|
|
171
|
+
data: { values: JSON.parse(JSON.stringify(values.data)) },
|
|
172
|
+
layer: [
|
|
173
|
+
{
|
|
174
|
+
mark: {
|
|
175
|
+
type: options.graph.type.split('-')[0],
|
|
176
|
+
point: options.graph.type.indexOf('point') >= 0,
|
|
177
|
+
line: options.graph.type.indexOf('line') >= 0,
|
|
178
|
+
innerRadius: options.graph.donutSize ?? 30
|
|
179
|
+
},
|
|
180
|
+
encoding: {
|
|
181
|
+
x: !isCircular
|
|
182
|
+
? {
|
|
183
|
+
field: 'key',
|
|
184
|
+
title: options.abscissa.label,
|
|
185
|
+
type: types.abscissa.vegaType,
|
|
186
|
+
timeUnit: types.abscissa.vegaType === VegaType.TEMPORAL && options.abscissa.limit?.isTimeLimit
|
|
187
|
+
? options.abscissa.limit.interval
|
|
188
|
+
: undefined,
|
|
189
|
+
bin: options.graph.type.indexOf('histogram') >= 0,
|
|
190
|
+
axis: {
|
|
191
|
+
//format: types.abscissa.vegaType === VegaType.TEMPORAL ? '%Y-%B-%dT%H:%M:%S' : undefined,
|
|
192
|
+
grid: false,
|
|
193
|
+
...WidgetAggregatedChartComponent.minTick(types.abscissa.fieldType),
|
|
194
|
+
labelExpr: `height < 300 ? ${types.abscissa.vegaType === VegaType.TEMPORAL
|
|
195
|
+
? "timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')"
|
|
196
|
+
: 'truncate(datum.value, 10)'} : ${types.abscissa.vegaType === VegaType.TEMPORAL
|
|
197
|
+
? "timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')"
|
|
198
|
+
: 'datum.value'}`
|
|
199
|
+
},
|
|
200
|
+
scale: {
|
|
201
|
+
// Force a false value here so that vega understands properly
|
|
202
|
+
zero: !!options.abscissa.keep0
|
|
203
|
+
//type: WidgetChartComponent.isTimeUnitUTC(variables[0]) ? 'utc' : undefined
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
: undefined,
|
|
207
|
+
y: !isCircular
|
|
208
|
+
? {
|
|
209
|
+
field: 'value',
|
|
210
|
+
title: options.ordinate.label,
|
|
211
|
+
type: types.ordinate.vegaType,
|
|
212
|
+
axis: {
|
|
213
|
+
...WidgetAggregatedChartComponent.minTick(types.ordinate.fieldType),
|
|
214
|
+
...this.setTickCount(values.data)
|
|
215
|
+
},
|
|
216
|
+
scale: {
|
|
217
|
+
zero: options.ordinate.keep0
|
|
218
|
+
},
|
|
219
|
+
...(options.graph.stacked ? { stack: true } : {})
|
|
220
|
+
}
|
|
221
|
+
: undefined,
|
|
222
|
+
theta: isCircular ? { field: 'value', type: types.ordinate.vegaType } : undefined,
|
|
223
|
+
color: {
|
|
224
|
+
title: this.translateService.instant(options.groupBy ? '@pry.widget.chart.series' : '@pry.widget.chart.legendLabel'),
|
|
225
|
+
field: !isCircular ? 'series' : 'key',
|
|
226
|
+
legend: options.graph.legend,
|
|
227
|
+
scale: options.graph.legend ? { scheme: options.groupBy?.color ?? this.schemes[0].id } : undefined
|
|
228
|
+
},
|
|
229
|
+
xOffset: options.graph.stacked && options.groupBy ? { field: 'series' } : undefined,
|
|
230
|
+
tooltip: options.graph.tooltip
|
|
231
|
+
? options.groupBy
|
|
232
|
+
? [
|
|
233
|
+
{
|
|
234
|
+
field: 'key',
|
|
235
|
+
type: types.abscissa.vegaType,
|
|
236
|
+
title: options.abscissa.label,
|
|
237
|
+
...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})
|
|
238
|
+
},
|
|
239
|
+
{ field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label },
|
|
240
|
+
{
|
|
241
|
+
field: 'series',
|
|
242
|
+
title: this.translateService.instant('@pry.widget.chart.series'),
|
|
243
|
+
type: 'nominal'
|
|
244
|
+
}
|
|
245
|
+
]
|
|
246
|
+
: [
|
|
247
|
+
{
|
|
248
|
+
field: 'key',
|
|
249
|
+
type: types.abscissa.vegaType,
|
|
250
|
+
title: options.abscissa.label,
|
|
251
|
+
...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})
|
|
252
|
+
},
|
|
253
|
+
{ field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label }
|
|
254
|
+
]
|
|
255
|
+
: undefined
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
config: fontConfig('Ubuntu, sans-serif')
|
|
260
|
+
}, options.additionalSpec);
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
ngAfterViewInit() {
|
|
264
|
+
this.subscriptions.add(combineLatest([this.vegaLiteSpec$, this.trigger$]).subscribe(([spec, _]) => {
|
|
265
|
+
if (this.vega) {
|
|
266
|
+
this.view?.finalize();
|
|
267
|
+
console.log(spec);
|
|
268
|
+
embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {
|
|
269
|
+
actions: false,
|
|
270
|
+
renderer: 'canvas',
|
|
271
|
+
formatLocale: this.translateService.instantObject('@pry.widget.chart.numberLocale'),
|
|
272
|
+
timeFormatLocale: this.translateService.instantObject('@pry.widget.chart.timeFormatLocale')
|
|
273
|
+
}).then((result) => (this.view = result.view));
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
setTimeout(() => this.trigger$.next(), 100);
|
|
277
|
+
}
|
|
278
|
+
}));
|
|
279
|
+
this.trigger$.next();
|
|
280
|
+
}
|
|
281
|
+
translateToVegaType(type, name) {
|
|
282
|
+
let idRegex = new RegExp(/_id|id_|_ID|ID_|_Id|Id_/, 'g');
|
|
283
|
+
if (idRegex.test(name ?? '-------')) {
|
|
284
|
+
return VegaType.ORDINAL;
|
|
285
|
+
}
|
|
286
|
+
switch (type) {
|
|
287
|
+
case FieldType.DECIMAL:
|
|
288
|
+
case FieldType.INTEGER:
|
|
289
|
+
case FieldType.LONG:
|
|
290
|
+
return VegaType.QUANTITATIVE;
|
|
291
|
+
case FieldType.INSTANT:
|
|
292
|
+
return VegaType.TEMPORAL;
|
|
293
|
+
case FieldType.KEYWORD:
|
|
294
|
+
case FieldType.STRING:
|
|
295
|
+
return VegaType.NOMINAL;
|
|
296
|
+
default:
|
|
297
|
+
return VegaType.NOMINAL;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
static minTick(type) {
|
|
301
|
+
switch (type) {
|
|
302
|
+
case FieldType.INTEGER:
|
|
303
|
+
case FieldType.LONG:
|
|
304
|
+
return { tickMinStep: 1 };
|
|
305
|
+
case FieldType.DECIMAL:
|
|
306
|
+
case FieldType.INSTANT:
|
|
307
|
+
case FieldType.KEYWORD:
|
|
308
|
+
case FieldType.STRING:
|
|
309
|
+
default:
|
|
310
|
+
return {};
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
emitManifest() {
|
|
314
|
+
this.manifestModified.emit({
|
|
315
|
+
widgetIndex: this.widgetIndex,
|
|
316
|
+
manifest: {
|
|
317
|
+
...this.manifest,
|
|
318
|
+
options: { ...this.optionsCopy$.getValue() }
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
openSettings() {
|
|
323
|
+
this.open$.next(undefined);
|
|
324
|
+
}
|
|
325
|
+
getTitle(options) {
|
|
326
|
+
return options.graph?.title ?? (options.abscissa.label ?? 'key') + ' / ' + (options.ordinate.label ?? 'value');
|
|
327
|
+
}
|
|
328
|
+
changeChartTitle($event) {
|
|
329
|
+
if (this.optionsCopy$.value) {
|
|
330
|
+
this.optionsCopy$.next({
|
|
331
|
+
...this.optionsCopy$.value,
|
|
332
|
+
graph: { ...this.optionsCopy$.value?.graph, title: $event }
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
changeType($event) {
|
|
337
|
+
if (this.optionsCopy$.value) {
|
|
338
|
+
this.optionsCopy$.next({
|
|
339
|
+
...this.optionsCopy$.value,
|
|
340
|
+
graph: { ...this.optionsCopy$.value?.graph, type: $event }
|
|
341
|
+
});
|
|
342
|
+
if ([GraphType.CIRCULAR, GraphType.DONUT].includes($event)) {
|
|
343
|
+
this.optionsCopy$.next({
|
|
344
|
+
...this.optionsCopy$.value,
|
|
345
|
+
groupBy: undefined
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
if ([GraphType.HISTOGRAM].includes($event)) {
|
|
349
|
+
this.limitElements(true);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
changeDonutSize($event) {
|
|
354
|
+
if (this.optionsCopy$.value) {
|
|
355
|
+
this.optionsCopy$.next({
|
|
356
|
+
...this.optionsCopy$.value,
|
|
357
|
+
graph: { ...this.optionsCopy$.value?.graph, donutSize: $event }
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
changeOperation($event) {
|
|
362
|
+
if (this.optionsCopy$.value) {
|
|
363
|
+
this.optionsCopy$.next({
|
|
364
|
+
...this.optionsCopy$.value,
|
|
365
|
+
ordinate: { ...this.optionsCopy$.value?.ordinate, operation: $event }
|
|
366
|
+
});
|
|
367
|
+
if ($event === Operation.COUNT || $event === Operation.DISTINCT) {
|
|
368
|
+
this.optionsCopy$.next({
|
|
369
|
+
...this.optionsCopy$.value,
|
|
370
|
+
ordinate: {
|
|
371
|
+
...this.optionsCopy$.value?.ordinate,
|
|
372
|
+
label: this.translateService.instant('@pry.widget.chart.operation.' + $event),
|
|
373
|
+
attribute: undefined
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
setTimeout(() => this.triggerOrdinateAttributes$.next(), 10);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
changeAbscissa($event) {
|
|
381
|
+
if ($event && this.optionsCopy$.value) {
|
|
382
|
+
this.optionsCopy$.next({
|
|
383
|
+
...this.optionsCopy$.value,
|
|
384
|
+
abscissa: { ...this.optionsCopy$.value?.abscissa, attribute: $event }
|
|
385
|
+
});
|
|
386
|
+
const attr = this.classes
|
|
387
|
+
.map((clazz) => clazz.attributes)
|
|
388
|
+
.reduce((a, b) => [...a, ...b], [])
|
|
389
|
+
.find((attr) => attr.id === $event);
|
|
390
|
+
this.optionsCopy$.next({
|
|
391
|
+
...this.optionsCopy$.value,
|
|
392
|
+
abscissa: { ...this.optionsCopy$.value?.abscissa, label: attr?.name ?? 'attr-not-found' }
|
|
393
|
+
});
|
|
394
|
+
this.copyAbscissaField = this.fields.find((field) => attr?.field === field.id);
|
|
395
|
+
this.limitElements(!!this.optionsCopy$.value?.abscissa.limit);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
changeAbscissaLabel($event) {
|
|
399
|
+
if (this.optionsCopy$.value) {
|
|
400
|
+
this.optionsCopy$.next({
|
|
401
|
+
...this.optionsCopy$.value,
|
|
402
|
+
abscissa: { ...this.optionsCopy$.value?.abscissa, label: $event }
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
changeOrdinate($event) {
|
|
407
|
+
if ($event && this.optionsCopy$.value) {
|
|
408
|
+
this.optionsCopy$.next({
|
|
409
|
+
...this.optionsCopy$.value,
|
|
410
|
+
ordinate: { ...this.optionsCopy$.value?.ordinate, attribute: $event }
|
|
411
|
+
});
|
|
412
|
+
const attr = this.classes
|
|
413
|
+
.map((clazz) => clazz.attributes)
|
|
414
|
+
.reduce((a, b) => [...a, ...b], [])
|
|
415
|
+
.find((attr) => attr.id === $event);
|
|
416
|
+
this.optionsCopy$.next({
|
|
417
|
+
...this.optionsCopy$.value,
|
|
418
|
+
ordinate: { ...this.optionsCopy$.value?.ordinate, label: attr?.name ?? 'attr-not-found' }
|
|
419
|
+
});
|
|
420
|
+
this.copyOrdinateField = this.fields.find((field) => attr?.field === field.id);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
changeOrdinateLabel($event) {
|
|
424
|
+
if (this.optionsCopy$.value) {
|
|
425
|
+
this.optionsCopy$.next({
|
|
426
|
+
...this.optionsCopy$.value,
|
|
427
|
+
ordinate: { ...this.optionsCopy$.value?.ordinate, label: $event }
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
changeKeep0Abscissa($event) {
|
|
432
|
+
if (this.optionsCopy$.value) {
|
|
433
|
+
this.optionsCopy$.next({
|
|
434
|
+
...this.optionsCopy$.value,
|
|
435
|
+
abscissa: { ...this.optionsCopy$.value?.abscissa, keep0: $event }
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
changeKeep0Ordinate($event) {
|
|
440
|
+
if (this.optionsCopy$.value) {
|
|
441
|
+
this.optionsCopy$.next({
|
|
442
|
+
...this.optionsCopy$.value,
|
|
443
|
+
ordinate: { ...this.optionsCopy$.value?.ordinate, keep0: $event }
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
limitElements($event) {
|
|
448
|
+
if (this.optionsCopy$.value) {
|
|
449
|
+
if ($event) {
|
|
450
|
+
if (this.copyAbscissaField?.type !== FieldType.INSTANT &&
|
|
451
|
+
this.optionsCopy$.value?.abscissa?.limit &&
|
|
452
|
+
'at' in this.optionsCopy$.value?.abscissa?.limit) {
|
|
453
|
+
this.optionsCopy$.next({
|
|
454
|
+
...this.optionsCopy$.value,
|
|
455
|
+
abscissa: {
|
|
456
|
+
...this.optionsCopy$.value?.abscissa,
|
|
457
|
+
limit: {
|
|
458
|
+
at: this.optionsCopy$.value?.abscissa?.limit?.at ?? 3,
|
|
459
|
+
others: false,
|
|
460
|
+
order: 'asc',
|
|
461
|
+
isTimeLimit: false
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
this.optionsCopy$.next({
|
|
468
|
+
...this.optionsCopy$.value,
|
|
469
|
+
abscissa: { ...this.optionsCopy$.value?.abscissa, limit: { interval: 'second', isTimeLimit: true } }
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
else {
|
|
474
|
+
this.optionsCopy$.next({
|
|
475
|
+
...this.optionsCopy$.value,
|
|
476
|
+
abscissa: { ...this.optionsCopy$.value?.abscissa, limit: undefined }
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
changeLimit($event) {
|
|
482
|
+
if (this.optionsCopy$.value &&
|
|
483
|
+
this.optionsCopy$.value.abscissa.limit &&
|
|
484
|
+
!this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
|
|
485
|
+
this.optionsCopy$.next({
|
|
486
|
+
...this.optionsCopy$.value,
|
|
487
|
+
abscissa: {
|
|
488
|
+
...this.optionsCopy$.value?.abscissa,
|
|
489
|
+
limit: {
|
|
490
|
+
...this.optionsCopy$.value?.abscissa.limit,
|
|
491
|
+
at: $event
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
changeLimitOthers($event) {
|
|
498
|
+
if (this.optionsCopy$.value &&
|
|
499
|
+
this.optionsCopy$.value.abscissa.limit &&
|
|
500
|
+
!this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
|
|
501
|
+
this.optionsCopy$.next({
|
|
502
|
+
...this.optionsCopy$.value,
|
|
503
|
+
abscissa: {
|
|
504
|
+
...this.optionsCopy$.value?.abscissa,
|
|
505
|
+
limit: {
|
|
506
|
+
...this.optionsCopy$.value?.abscissa.limit,
|
|
507
|
+
others: $event
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
changeLimitOrder($event) {
|
|
514
|
+
if (this.optionsCopy$.value &&
|
|
515
|
+
this.optionsCopy$.value.abscissa.limit &&
|
|
516
|
+
!this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
|
|
517
|
+
this.optionsCopy$.next({
|
|
518
|
+
...this.optionsCopy$.value,
|
|
519
|
+
abscissa: {
|
|
520
|
+
...this.optionsCopy$.value?.abscissa,
|
|
521
|
+
limit: {
|
|
522
|
+
...this.optionsCopy$.value?.abscissa.limit,
|
|
523
|
+
order: $event ? 'asc' : 'desc'
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
changeTimeLimit($event) {
|
|
530
|
+
if (this.optionsCopy$.value &&
|
|
531
|
+
this.optionsCopy$.value.abscissa.limit &&
|
|
532
|
+
this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
|
|
533
|
+
this.optionsCopy$.next({
|
|
534
|
+
...this.optionsCopy$.value,
|
|
535
|
+
abscissa: {
|
|
536
|
+
...this.optionsCopy$.value.abscissa,
|
|
537
|
+
limit: {
|
|
538
|
+
...this.optionsCopy$.value.abscissa.limit,
|
|
539
|
+
interval: $event
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
toggleLegend($event) {
|
|
546
|
+
if (this.optionsCopy$.value) {
|
|
547
|
+
this.optionsCopy$.next({
|
|
548
|
+
...this.optionsCopy$.value,
|
|
549
|
+
graph: { ...this.optionsCopy$.value.graph, legend: $event }
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
toggleTooltip($event) {
|
|
554
|
+
if (this.optionsCopy$.value) {
|
|
555
|
+
this.optionsCopy$.next({
|
|
556
|
+
...this.optionsCopy$.value,
|
|
557
|
+
graph: { ...this.optionsCopy$.value?.graph, tooltip: $event }
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
toggleGroupBy($event) {
|
|
562
|
+
if (this.optionsCopy$.value) {
|
|
563
|
+
if ($event) {
|
|
564
|
+
this.optionsCopy$.next({
|
|
565
|
+
...this.optionsCopy$.value,
|
|
566
|
+
groupBy: { attribute: this.optionsCopy$.value?.groupBy?.attribute ?? '', color: this.schemes[0].id }
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
else {
|
|
570
|
+
this.optionsCopy$.next({
|
|
571
|
+
...this.optionsCopy$.value,
|
|
572
|
+
groupBy: undefined
|
|
573
|
+
});
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
changeGroupBy($event) {
|
|
578
|
+
if (typeof $event === 'string' && this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {
|
|
579
|
+
this.optionsCopy$.next({
|
|
580
|
+
...this.optionsCopy$.value,
|
|
581
|
+
groupBy: {
|
|
582
|
+
...this.optionsCopy$.value?.groupBy,
|
|
583
|
+
attribute: $event
|
|
584
|
+
}
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
changeColorScheme($event) {
|
|
589
|
+
if (this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {
|
|
590
|
+
this.optionsCopy$.next({
|
|
591
|
+
...this.optionsCopy$.value,
|
|
592
|
+
groupBy: {
|
|
593
|
+
attribute: this.optionsCopy$.value.groupBy?.attribute,
|
|
594
|
+
color: $event
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
setTickCount(data) {
|
|
600
|
+
return Math.max(...data.map((val) => val.value)) < 3
|
|
601
|
+
? { tickCount: Math.max(...data.map((val) => val.value)) }
|
|
602
|
+
: {};
|
|
603
|
+
}
|
|
604
|
+
scheme() {
|
|
605
|
+
return vega.scheme(this.optionsCopy$.value?.groupBy?.color ?? '');
|
|
606
|
+
}
|
|
607
|
+
toggleStacked($event) {
|
|
608
|
+
if (this.optionsCopy$.value) {
|
|
609
|
+
this.optionsCopy$.next({
|
|
610
|
+
...this.optionsCopy$.value,
|
|
611
|
+
graph: {
|
|
612
|
+
...this.optionsCopy$.value?.graph,
|
|
613
|
+
stacked: $event
|
|
614
|
+
}
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
toImage() {
|
|
619
|
+
return new Promise((resolve, reject) => {
|
|
620
|
+
resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i0.ElementRef }, { token: i3.PryAggregationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
624
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetAggregatedChartComponent, selector: "pry-widget-aggregated-chart", viewQueries: [{ propertyName: "vega", first: true, predicate: ["vega"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesScheme\">{{ '@pry.widget.chart.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n <div class=\"no-result\" *ngIf=\"(isChartValid$ | async) === false\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n </div>\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.noData' | i18n }}\n </p>\n </div>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["saveTriggered"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "additionalOptions", "headerOptions", "displayCount", "datasourceIds$", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryEditInputComponent, selector: "pry-edit-input", inputs: ["label"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: i7.PryWidgetAggregatedChartCssComponent, selector: "pry-widget-aggregated-chart-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
|
|
625
|
+
}
|
|
626
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartComponent, decorators: [{
|
|
627
|
+
type: Component,
|
|
628
|
+
args: [{ selector: 'pry-widget-aggregated-chart', template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesScheme\">{{ '@pry.widget.chart.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n <div class=\"no-result\" *ngIf=\"(isChartValid$ | async) === false\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n </div>\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.noData' | i18n }}\n </p>\n </div>\n </ng-container>\n</div>\n" }]
|
|
629
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.PryI18nService }, { type: i0.ElementRef }, { type: i3.PryAggregationService }]; }, propDecorators: { vega: [{
|
|
630
|
+
type: ViewChild,
|
|
631
|
+
args: ['vega']
|
|
632
|
+
}] } });
|
|
633
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFJTCxjQUFjLEVBQ2QsbUJBQW1CLEVBRW5CLGNBQWMsRUFDZCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFHVCxhQUFhLEVBQ2IsUUFBUSxFQUNSLG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBU3hELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxT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QUVRLE9BQU87UUFDZCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBN3VCVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3TEN2QzNDLGsyWUE4U0E7OzJGRHZRYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNkJBQTZCO3NMQUlwQixJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGUsXG4gIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnMsXG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgRGF0YVdpZGdldENvbXBvbmVudCxcbiAgRmllbGQsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEdyYXBoVHlwZSxcbiAgT3BlcmF0aW9uLFxuICBQcnlJMThuU2VydmljZSxcbiAgVmFsdWVUeXBlLFxuICBWZWdhQ29sb3JUeXBlLFxuICBWZWdhVHlwZSxcbiAgV0lER0VUX0hFQURFUl9IRUlHSFRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICd2ZWdhJztcbmltcG9ydCBlbWJlZCwgeyB2ZWdhIH0gZnJvbSAndmVnYS1lbWJlZCc7XG5pbXBvcnQgeyBtZXJnZURlZXAsIFRvcExldmVsU3BlYyB9IGZyb20gJ3ZlZ2EtbGl0ZSc7XG5pbXBvcnQgeyBmb250Q29uZmlnIH0gZnJvbSAndmVnYS1saXRlL2J1aWxkL3NyYy9jb25maWcnO1xuaW1wb3J0IHsgUHJ5QWdncmVnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9iYXNlLWFnZ3JlZ2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBSYWRhclZhbHVlID0ge1xuICBjYXRlZ29yeTogbnVtYmVyO1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn07XG5cbnZlZ2Euc2NoZW1lKCdLTy9XL09LJywgWycjQzA0RDNGJywgJyNGRDk4NDMnLCAnIzlBQkUyOSddKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRBZ2dyZWdhdGVkQ2hhcnRDb21wb25lbnQgZXh0ZW5kcyBEYXRhV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3ZlZ2EnKSB2ZWdhITogRWxlbWVudFJlZjtcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8Q2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnNDb3B5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucyB8IG51bGw+KG51bGwpO1xuICB2aWV3PzogVmlldztcbiAgdHJpZ2dlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICB2ZWdhTGl0ZVNwZWMkOiBPYnNlcnZhYmxlPFRvcExldmVsU3BlYz47XG4gIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT47XG4gIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBhdHRyaWJ1dGVUeXBlcyQ6IE9ic2VydmFibGU8e1xuICAgIG9yZGluYXRlOiB7IHZlZ2FUeXBlOiBWZWdhVHlwZTsgZmllbGRUeXBlOiBhbnkgfTtcbiAgICBhYnNjaXNzYTogeyB2ZWdhVHlwZTogVmVnYVR5cGU7IGZpZWxkVHlwZTogYW55IH07XG4gIH0+O1xuICBhZ2dyZWdhdGVkVmFsdWVzJDogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueTsgb3BlcmF0aW9uOiBhbnkgfT47XG4gIFdJREdFVF9IRUFERVJfSEVJR0hUID0gV0lER0VUX0hFQURFUl9IRUlHSFQ7XG4gIEdyYXBoVHlwZSA9IEdyYXBoVHlwZTtcbiAgT3BlcmF0aW9uID0gT3BlcmF0aW9uO1xuICBpc0NoYXJ0VmFsaWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB0eXBlT3B0aW9uczogeyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSA9IFtdO1xuICBvcGVyYXRpb25zJDogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdPjtcbiAgYWJzY2lzc2FBdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT47XG4gIGNsYXNzZXM6IENsYXNzW10gPSBbXTtcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIG9yZGluYXRlQXR0cmlidXRlcyQ6IE9ic2VydmFibGU8QXR0cmlidXRlW10+O1xuICB0cmlnZ2VyT3JkaW5hdGVBdHRyaWJ1dGVzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvcHlBYnNjaXNzYUZpZWxkPzogRmllbGQ7XG4gIGNvcHlPcmRpbmF0ZUZpZWxkPzogRmllbGQ7XG4gIHNjaGVtZXM6IHsgaWQ6IHN0cmluZyB9W10gPSBbXTtcbiAgbm9EYXRhJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgYWdncmVnYXRpb25TZXJ2aWNlOiBQcnlBZ2dyZWdhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUsIGVsKTtcbiAgICB0aGlzLnNjaGVtZXMgPSBPYmplY3QudmFsdWVzKFZlZ2FDb2xvclR5cGUpLm1hcCgoaWQpID0+ICh7IGlkIH0pKTtcbiAgICB0aGlzLnR5cGVPcHRpb25zID0gT2JqZWN0LnZhbHVlcyhHcmFwaFR5cGUpXG4gICAgICAubWFwKCh2KSA9PiAoe1xuICAgICAgICBpZDogdixcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5ncmFwaFR5cGUuJyArIHYpXG4gICAgICB9KSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuXG4gICAgdGhpcy5vcHRpb25zJCA9IHRoaXMubWFuaWZlc3QkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChtYW5pZmVzdCkgPT5cbiAgICAgICAgICBtZXJnZURlZXAoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGdyYXBoOiB7IHR5cGU6IEdyYXBoVHlwZS5CQVIsIHRvb2x0aXA6IHRydWUsIGxlZ2VuZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgYWJzY2lzc2E6IHsga2VlcDA6IHRydWUgfSxcbiAgICAgICAgICAgICAgb3JkaW5hdGU6IHsga2VlcDA6IHRydWUgfVxuICAgICAgICAgICAgfSBhcyBDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zLFxuICAgICAgICAgICAgKG1hbmlmZXN0Lm9wdGlvbnMgPz8ge30pIGFzIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnNcbiAgICAgICAgICApIGFzIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnNcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMub3B0aW9ucyQucGlwZShmaWx0ZXIoKG9wdCkgPT4gISFvcHQpKS5zdWJzY3JpYmUoKG9wdGlvbnMpID0+IHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSkpO1xuICAgIH0pO1xuICAgIHRoaXMuZmllbGRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcyk7XG4gICAgdGhpcy5jbGFzc2VzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpO1xuXG4gICAgdGhpcy5vcGVyYXRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmVzdWx0U2V0JCwgdGhpcy5jbGFzc2VzJCwgdGhpcy5maWVsZHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3JzLCBjbGFzc2VzLCBmaWVsZHNdKSA9PlxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgLmZpbHRlcigoY2xhenopID0+IE9iamVjdC5rZXlzKHJzLml0ZW1zKS5pbmNsdWRlcyhjbGF6ei5pZCkpXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgLm1hcCgoYXR0cnMpID0+XG4gICAgICAgICAgICBhdHRycy5maWx0ZXIoKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQuaWQgPT09IGF0dHIuZmllbGQ7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gISFmaWVsZCAmJiBbRmllbGRUeXBlLklOVEVHRVIsIEZpZWxkVHlwZS5ERUNJTUFMLCBGaWVsZFR5cGUuTE9OR10uaW5jbHVkZXMoZmllbGQudHlwZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+ICEhYXR0cilcbiAgICAgICksXG4gICAgICBtYXAoKGF0dHJpYnV0ZXMpID0+XG4gICAgICAgIChhdHRyaWJ1dGVzLmxlbmd0aCA+IDAgPyBPYmplY3QudmFsdWVzKE9wZXJhdGlvbikgOiBbT3BlcmF0aW9uLkNPVU5ULCBPcGVyYXRpb24uRElTVElOQ1QsIE9wZXJhdGlvbi5OT05FXSlcbiAgICAgICAgICAubWFwKCh2KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHYsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9wZXJhdGlvbi4nICsgdilcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZmllbGRzJC5zdWJzY3JpYmUoKGZpZWxkcykgPT4gKHRoaXMuZmllbGRzID0gZmllbGRzKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5jbGFzc2VzJC5zdWJzY3JpYmUoKGNsYXNzZXMpID0+ICh0aGlzLmNsYXNzZXMgPSBjbGFzc2VzKSkpO1xuXG4gICAgdGhpcy5hYnNjaXNzYUF0dHJpYnV0ZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5jbGFzc2VzJCwgdGhpcy5maWVsZHMkLCB0aGlzLnJlc3VsdFNldCQsIHRoaXMub3B0aW9uc0NvcHkkXSkucGlwZShcbiAgICAgIG1hcCgoW2NsYXNzZXMsIGZpZWxkcywgcnMsIG9wdGlvbkNvcHldKSA9PlxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgLmZpbHRlcigoY2xhenopID0+IE9iamVjdC5rZXlzKHJzLml0ZW1zKS5pbmNsdWRlcyhjbGF6ei5pZCkpXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgLm1hcCgoYXR0cnMpID0+XG4gICAgICAgICAgICBhdHRycy5maWx0ZXIoKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQuaWQgPT09IGF0dHIuZmllbGQ7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICEhZmllbGQgJiZcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlICE9PSBGaWVsZFR5cGUuUkFXICYmXG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLlNUUklORyAmJlxuICAgICAgICAgICAgICAgIChvcHRpb25Db3B5Py5ncmFwaC50eXBlICE9PSBHcmFwaFR5cGUuSElTVE9HUkFNIHx8IGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5LRVlXT1JEKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gWy4uLmEsIC4uLmJdLCBbXSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5vcmRpbmF0ZUF0dHJpYnV0ZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNsYXNzZXMkLFxuICAgICAgdGhpcy5maWVsZHMkLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkLFxuICAgICAgdGhpcy50cmlnZ2VyT3JkaW5hdGVBdHRyaWJ1dGVzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjbGFzc2VzLCBmaWVsZHMsIHJzXSkgPT5cbiAgICAgICAgY2xhc3Nlc1xuICAgICAgICAgIC5maWx0ZXIoKGNsYXp6KSA9PiBPYmplY3Qua2V5cyhycy5pdGVtcykuaW5jbHVkZXMoY2xhenouaWQpKVxuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5tYXAoKGF0dHJzKSA9PlxuICAgICAgICAgICAgYXR0cnMuZmlsdGVyKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmlkID09PSBhdHRyLmZpZWxkO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLk1BWCxcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5NSU4sXG4gICAgICAgICAgICAgICAgICBPcGVyYXRpb24uU1VNLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLlExLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLlEzLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLkFWRVJBR0UsXG4gICAgICAgICAgICAgICAgICBPcGVyYXRpb24uTUVESUFOLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLk5PTkVcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLm9yZGluYXRlLm9wZXJhdGlvbilcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICEhZmllbGQgJiZcbiAgICAgICAgICAgICAgICAgIFtGaWVsZFR5cGUuSU5URUdFUiwgRmllbGRUeXBlLklOU1RBTlQsIEZpZWxkVHlwZS5MT05HLCBGaWVsZFR5cGUuREVDSU1BTF0uaW5jbHVkZXMoZmllbGQudHlwZSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAhIWZpZWxkICYmIGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5SQVcgJiYgZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLlNUUklORztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuaXNDaGFydFZhbGlkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMuYWJzY2lzc2FBdHRyaWJ1dGVzJCwgdGhpcy5vcmRpbmF0ZUF0dHJpYnV0ZXMkXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIGFic2Npc3NhQXR0cnMsIG9yZGluYXRlQXR0cnNdKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgISFvcHRpb25zLmFic2Npc3NhLmF0dHJpYnV0ZSAmJlxuICAgICAgICAgIGFic2Npc3NhQXR0cnMubWFwKChhdHRyKSA9PiBhdHRyLmlkKS5pbmNsdWRlcyhvcHRpb25zLmFic2Npc3NhLmF0dHJpYnV0ZSkgJiZcbiAgICAgICAgICAob3B0aW9ucy5vcmRpbmF0ZS5hdHRyaWJ1dGVcbiAgICAgICAgICAgID8gb3JkaW5hdGVBdHRycy5tYXAoKGF0dHIpID0+IGF0dHIuaWQpLmluY2x1ZGVzKG9wdGlvbnMub3JkaW5hdGUuYXR0cmlidXRlKVxuICAgICAgICAgICAgOiB0cnVlKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5hdHRyaWJ1dGVUeXBlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLmZpZWxkcyQsIHRoaXMuY2xhc3NlcyRdKS5waXBlKFxuICAgICAgZmlsdGVyKChbb3B0aW9ucywgZmllbGRzLCBjbGFzc2VzXSkgPT4gISFvcHRpb25zLmFic2Npc3NhICYmICEhb3B0aW9ucy5vcmRpbmF0ZSksXG4gICAgICBtYXAoKFtvcHRpb25zLCBmaWVsZHMsIGNsYXNzZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFic2Npc3NhID0gY2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIuaWQgPT09IG9wdGlvbnMuYWJzY2lzc2EuYXR0cmlidXRlKSlcbiAgICAgICAgICAuZmluZCgoYXR0cikgPT4gISFhdHRyKTtcbiAgICAgICAgY29uc3Qgb3JkaW5hdGUgPSBjbGFzc2VzXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gb3B0aW9ucy5vcmRpbmF0ZS5hdHRyaWJ1dGUpKVxuICAgICAgICAgIC5maW5kKChhdHRyKSA9PiAhIWF0dHIpO1xuICAgICAgICBjb25zdCBhYnNjaXNzYUZpZWxkVHlwZSA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuaWQgPT09IGFic2Npc3NhPy5maWVsZCk/LnR5cGUgPz8gRmllbGRUeXBlLlNUUklORztcbiAgICAgICAgY29uc3Qgb3JkaW5hdGVGaWVsZFR5cGUgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmlkID09PSBvcmRpbmF0ZT8uZmllbGQpPy50eXBlID8/IEZpZWxkVHlwZS5TVFJJTkc7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWJzY2lzc2E6IHtcbiAgICAgICAgICAgIGZpZWxkVHlwZTogYWJzY2lzc2FGaWVsZFR5cGUsXG4gICAgICAgICAgICB2ZWdhVHlwZTogdGhpcy50cmFuc2xhdGVUb1ZlZ2FUeXBlKGFic2Npc3NhRmllbGRUeXBlLCBhYnNjaXNzYT8ubmFtZSA/PyAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9yZGluYXRlOiB7XG4gICAgICAgICAgICBmaWVsZFR5cGU6IG9yZGluYXRlRmllbGRUeXBlLFxuICAgICAgICAgICAgdmVnYVR5cGU6XG4gICAgICAgICAgICAgIG9wdGlvbnMub3JkaW5hdGUub3BlcmF0aW9uID09PSBPcGVyYXRpb24uQ09VTlQgfHwgb3B0aW9ucy5vcmRpbmF0ZS5vcGVyYXRpb24gPT09IE9wZXJhdGlvbi5ESVNUSU5DVFxuICAgICAgICAgICAgICAgID8gVmVnYVR5cGUuUVVBTlRJVEFUSVZFXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVRvVmVnYVR5cGUob3JkaW5hdGVGaWVsZFR5cGUsIG9yZGluYXRlPy5uYW1lID8/ICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYWdncmVnYXRlZFZhbHVlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGFzb3VyY2VJZHMkLCB0aGlzLm9wdGlvbnMkLCB0aGlzLnJlc3VsdFNldCRdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbZGF0YXNvdXJjZXMsIG9wdGlvbnNdKSA9PiB0aGlzLmFnZ3JlZ2F0aW9uU2VydmljZS5hZ2dyZWdhdGUoZGF0YXNvdXJjZXMsIG9wdGlvbnMpKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5vcHRpb25zJCksXG4gICAgICBtYXAoKFthZ2dyZWdhdGUsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGFnZ3JlZ2F0ZS52YWx1ZXMubGVuZ3RoID4gMCAmJiAhYWdncmVnYXRlLnZhbHVlc1swXS5ncm91cEJ5KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogYWdncmVnYXRlLm9wZXJhdGlvbixcbiAgICAgICAgICAgIGRhdGE6IGFnZ3JlZ2F0ZS52YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIHNlcmllczogb3B0aW9ucy5vcmRpbmF0ZS5sYWJlbCB9KSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IChcbiAgICAgICAgICBhZ2dyZWdhdGUudmFsdWVzIGFzIHtcbiAgICAgICAgICAgIGtleTogVmFsdWVUeXBlO1xuICAgICAgICAgICAgZ3JvdXBCeToge1xuICAgICAgICAgICAgICBrZXk6IFZhbHVlVHlwZTtcbiAgICAgICAgICAgICAgdmFsdWU6IFZhbHVlVHlwZTtcbiAgICAgICAgICAgIH1bXTtcbiAgICAgICAgICB9W11cbiAgICAgICAgKVxuICAgICAgICAgIC5tYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdmFsdWUuZ3JvdXBCeS5tYXAoKGdyb3VwQnkpID0+ICh7XG4gICAgICAgICAgICAgIGtleTogdmFsdWUua2V5LFxuICAgICAgICAgICAgICBzZXJpZXM6IGdyb3VwQnkua2V5LFxuICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXBCeS52YWx1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pO1xuICAgICAgICByZXR1cm4geyBvcGVyYXRpb246IGFnZ3JlZ2F0ZS5vcGVyYXRpb24sIGRhdGE6IGZsYXR0ZW5lZCB9O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5ub0RhdGEkID0gdGhpcy5hZ2dyZWdhdGVkVmFsdWVzJC5waXBlKG1hcCgoeyBvcGVyYXRpb24sIGRhdGEgfSkgPT4gZGF0YS5sZW5ndGggPT09IDApKTtcblxuICAgIHRoaXMudmVnYUxpdGVTcGVjJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMuYXR0cmlidXRlVHlwZXMkLFxuICAgICAgdGhpcy5hZ2dyZWdhdGVkVmFsdWVzJCxcbiAgICAgIHRoaXMud2lkZ2V0U2l6ZSQucGlwZShkZWJvdW5jZVRpbWUoMTAwKSksXG4gICAgICB0aGlzLmRpc3BsYXlIZWFkZXIkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHR5cGVzLCB2YWx1ZXMsIHNpemUsIGRpc3BsYXldKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQ2lyY3VsYXIgPSBbR3JhcGhUeXBlLkNJUkNVTEFSLCBHcmFwaFR5cGUuRE9OVVRdLmluY2x1ZGVzKG9wdGlvbnMuZ3JhcGgudHlwZSk7XG4gICAgICAgIHJldHVybiBtZXJnZURlZXAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgJHNjaGVtYTogJ2h0dHBzOi8vdmVnYS5naXRodWIuaW8vc2NoZW1hL3ZlZ2EtbGl0ZS92NS5qc29uJyxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldFRpdGxlKG9wdGlvbnMpLFxuICAgICAgICAgICAgd2lkdGg6ICdjb250YWluZXInLFxuICAgICAgICAgICAgaGVpZ2h0OiAoc2l6ZS5oZWlnaHQgPz8gMTAwKSAtIChkaXNwbGF5ID8gV0lER0VUX0hFQURFUl9IRUlHSFQgOiAwKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgYXV0b3NpemU6IHsgdHlwZTogJ2ZpdCcsIGNvbnRhaW5zOiAncGFkZGluZycgfSxcbiAgICAgICAgICAgIGRhdGE6IHsgdmFsdWVzOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlcy5kYXRhKSkgfSxcbiAgICAgICAgICAgIGxheWVyOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJrOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBvcHRpb25zLmdyYXBoLnR5cGUuc3BsaXQoJy0nKVswXSBhcyAnYXJjJyB8ICdsaW5lJyB8ICdwb2ludCcgfCAnYmFyJyB8ICdhcmVhJyxcbiAgICAgICAgICAgICAgICAgIHBvaW50OiBvcHRpb25zLmdyYXBoLnR5cGUuaW5kZXhPZigncG9pbnQnKSA+PSAwLFxuICAgICAgICAgICAgICAgICAgbGluZTogb3B0aW9ucy5ncmFwaC50eXBlLmluZGV4T2YoJ2xpbmUnKSA+PSAwLFxuICAgICAgICAgICAgICAgICAgaW5uZXJSYWRpdXM6IG9wdGlvbnMuZ3JhcGguZG9udXRTaXplID8/IDMwXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbmNvZGluZzoge1xuICAgICAgICAgICAgICAgICAgeDogIWlzQ2lyY3VsYXJcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2tleScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9ucy5hYnNjaXNzYS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZVVuaXQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTCAmJiBvcHRpb25zLmFic2Npc3NhLmxpbWl0Py5pc1RpbWVMaW1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb3B0aW9ucy5hYnNjaXNzYS5saW1pdC5pbnRlcnZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmluOiBvcHRpb25zLmdyYXBoLnR5cGUuaW5kZXhPZignaGlzdG9ncmFtJykgPj0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3JtYXQ6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTCA/ICclWS0lQi0lZFQlSDolTTolUycgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5XaWRnZXRBZ2dyZWdhdGVkQ2hhcnRDb21wb25lbnQubWluVGljayh0eXBlcy5hYnNjaXNzYS5maWVsZFR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEV4cHI6IGBoZWlnaHQgPCAzMDAgPyAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInRpbWVGb3JtYXQoZGF0dW0udmFsdWUsICclWS0lQi0lZFQlSDolTTolUycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RydW5jYXRlKGRhdHVtLnZhbHVlLCAxMCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInRpbWVGb3JtYXQoZGF0dW0udmFsdWUsICclWS0lQi0lZFQlSDolTTolUycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2RhdHVtLnZhbHVlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGEgZmFsc2UgdmFsdWUgaGVyZSBzbyB0aGF0IHZlZ2EgdW5kZXJzdGFuZHMgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgemVybzogISFvcHRpb25zLmFic2Npc3NhLmtlZXAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vdHlwZTogV2lkZ2V0Q2hhcnRDb21wb25lbnQuaXNUaW1lVW5pdFVUQyh2YXJpYWJsZXNbMF0pID8gJ3V0YycgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgeTogIWlzQ2lyY3VsYXJcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBheGlzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLldpZGdldEFnZ3JlZ2F0ZWRDaGFydENvbXBvbmVudC5taW5UaWNrKHR5cGVzLm9yZGluYXRlLmZpZWxkVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc2V0VGlja0NvdW50KHZhbHVlcy5kYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHplcm86IG9wdGlvbnMub3JkaW5hdGUua2VlcDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ob3B0aW9ucy5ncmFwaC5zdGFja2VkID8geyBzdGFjazogdHJ1ZSB9IDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHRoZXRhOiBpc0NpcmN1bGFyID8geyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmdyb3VwQnkgPyAnQHByeS53aWRnZXQuY2hhcnQuc2VyaWVzJyA6ICdAcHJ5LndpZGdldC5jaGFydC5sZWdlbmRMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICFpc0NpcmN1bGFyID8gJ3NlcmllcycgOiAna2V5JyxcbiAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiBvcHRpb25zLmdyYXBoLmxlZ2VuZCxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IG9wdGlvbnMuZ3JhcGgubGVnZW5kID8geyBzY2hlbWU6IG9wdGlvbnMuZ3JvdXBCeT8uY29sb3IgPz8gdGhpcy5zY2hlbWVzWzBdLmlkIH0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB4T2Zmc2V0OiBvcHRpb25zLmdyYXBoLnN0YWNrZWQgJiYgb3B0aW9ucy5ncm91cEJ5ID8geyBmaWVsZDogJ3NlcmllcycgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IG9wdGlvbnMuZ3JhcGgudG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMuZ3JvdXBCeVxuICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdrZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLmFic2Npc3NhLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gJ3RlbXBvcmFsJyA/IHsgZm9ybWF0OiAnJVktJUItJWRUJUg6JU06JVMnIH0gOiB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NlcmllcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5zZXJpZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbm9taW5hbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdrZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLmFic2Npc3NhLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gJ3RlbXBvcmFsJyA/IHsgZm9ybWF0OiAnJVktJUItJWRUJUg6JU06JVMnIH0gOiB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb25maWc6IGZvbnRDb25maWcoJ1VidW50dSwgc2Fucy1zZXJpZicpXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgb3B0aW9ucy5hZGRpdGlvbmFsU3BlY1xuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnZlZ2FMaXRlU3BlYyQsIHRoaXMudHJpZ2dlciRdKS5zdWJzY3JpYmUoKFtzcGVjLCBfXSkgPT4ge1xuICAgICAgICBpZiAodGhpcy52ZWdhKSB7XG4gICAgICAgICAgdGhpcy52aWV3Py5maW5hbGl6ZSgpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKHNwZWMpO1xuICAgICAgICAgIGVtYmVkKHRoaXMudmVnYS5uYXRpdmVFbGVtZW50LCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNwZWMpKSwge1xuICAgICAgICAgICAgYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgICByZW5kZXJlcjogJ2NhbnZhcycsXG4gICAgICAgICAgICBmb3JtYXRMb2NhbGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50T2JqZWN0KCdAcHJ5LndpZGdldC5jaGFydC5udW1iZXJMb2NhbGUnKSBhcyBhbnksXG4gICAgICAgICAgICB0aW1lRm9ybWF0TG9jYWxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudE9iamVjdCgnQHByeS53aWRnZXQuY2hhcnQudGltZUZvcm1hdExvY2FsZScpIGFzIGFueVxuICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gKHRoaXMudmlldyA9IHJlc3VsdC52aWV3KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRyaWdnZXIkLm5leHQoKSwgMTAwKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudHJpZ2dlciQubmV4dCgpO1xuICB9XG5cbiAgdHJhbnNsYXRlVG9WZWdhVHlwZSh0eXBlPzogRmllbGRUeXBlLCBuYW1lPzogc3RyaW5nKTogVmVnYVR5cGUge1xuICAgIGxldCBpZFJlZ2V4ID0gbmV3IFJlZ0V4cCgvX2lkfGlkX3xfSUR8SURffF9JZHxJZF8vLCAnZycpO1xuICAgIGlmIChpZFJlZ2V4LnRlc3QobmFtZSA/PyAnLS0tLS0tLScpKSB7XG4gICAgICByZXR1cm4gVmVnYVR5cGUuT1JESU5BTDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlRFR0VSOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuTE9ORzpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLlFVQU5USVRBVElWRTtcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOU1RBTlQ6XG4gICAgICAgIHJldHVybiBWZWdhVHlwZS5URU1QT1JBTDtcbiAgICAgIGNhc2UgRmllbGRUeXBlLktFWVdPUkQ6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5TVFJJTkc6XG4gICAgICAgIHJldHVybiBWZWdhVHlwZS5OT01JTkFMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLk5PTUlOQUw7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1pblRpY2sodHlwZTogRmllbGRUeXBlKTogeyB0aWNrTWluU3RlcDogbnVtYmVyIH0gfCB7fSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlRFR0VSOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuTE9ORzpcbiAgICAgICAgcmV0dXJuIHsgdGlja01pblN0ZXA6IDEgfTtcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlNUQU5UOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuS0VZV09SRDpcbiAgICAgIGNhc2UgRmllbGRUeXBlLlNUUklORzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMud2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDoge1xuICAgICAgICAuLi50aGlzLm1hbmlmZXN0LFxuICAgICAgICBvcHRpb25zOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLmdldFZhbHVlKCkgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3BlblNldHRpbmdzKCkge1xuICAgICh0aGlzLm9wZW4kIGFzIFN1YmplY3Q8dm9pZD4pLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGl0bGUob3B0aW9uczogQ2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLmdyYXBoPy50aXRsZSA/PyAob3B0aW9ucy5hYnNjaXNzYS5sYWJlbCA/PyAna2V5JykgKyAnIC8gJyArIChvcHRpb25zLm9yZGluYXRlLmxhYmVsID8/ICd2YWx1ZScpO1xuICB9XG5cbiAgY2hhbmdlQ2hhcnRUaXRsZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHRpdGxlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVHlwZSgkZXZlbnQ6IEdyYXBoVHlwZSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHR5cGU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmIChbR3JhcGhUeXBlLkNJUkNVTEFSLCBHcmFwaFR5cGUuRE9OVVRdLmluY2x1ZGVzKCRldmVudCkpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgZ3JvdXBCeTogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKFtHcmFwaFR5cGUuSElTVE9HUkFNXS5pbmNsdWRlcygkZXZlbnQpKSB7XG4gICAgICAgIHRoaXMubGltaXRFbGVtZW50cyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VEb251dFNpemUoJGV2ZW50OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCBkb251dFNpemU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VPcGVyYXRpb24oJGV2ZW50OiBPcGVyYXRpb24pIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBvcGVyYXRpb246ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmICgkZXZlbnQgPT09IE9wZXJhdGlvbi5DT1VOVCB8fCAkZXZlbnQgPT09IE9wZXJhdGlvbi5ESVNUSU5DVCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBvcmRpbmF0ZToge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5vcGVyYXRpb24uJyArICRldmVudCksXG4gICAgICAgICAgICBhdHRyaWJ1dGU6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudHJpZ2dlck9yZGluYXRlQXR0cmlidXRlcyQubmV4dCgpLCAxMCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2EoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlBYnNjaXNzYUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG5cbiAgICAgIHRoaXMubGltaXRFbGVtZW50cyghIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYS5saW1pdCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2FMYWJlbCgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGUoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIG9yZGluYXRlOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5vcmRpbmF0ZSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlPcmRpbmF0ZUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGVMYWJlbCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBBYnNjaXNzYSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbGltaXRFbGVtZW50cygkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb3B5QWJzY2lzc2FGaWVsZD8udHlwZSAhPT0gRmllbGRUeXBlLklOU1RBTlQgJiZcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0ICYmXG4gICAgICAgICAgJ2F0JyBpbiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgICBhYnNjaXNzYToge1xuICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsXG4gICAgICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAgICAgYXQ6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYT8ubGltaXQ/LmF0ID8/IDMsXG4gICAgICAgICAgICAgICAgb3RoZXJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvcmRlcjogJ2FzYycsXG4gICAgICAgICAgICAgICAgaXNUaW1lTGltaXQ6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsaW1pdDogeyBpbnRlcnZhbDogJ3NlY29uZCcsIGlzVGltZUxpbWl0OiB0cnVlIH0gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxpbWl0OiB1bmRlZmluZWQgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBhdDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdE90aGVycygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvdGhlcnM6ICRldmVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTGltaXRPcmRlcigkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvcmRlcjogJGV2ZW50ID8gJ2FzYycgOiAnZGVzYydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRpbWVMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQuaXNUaW1lTGltaXRcbiAgICApIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYSxcbiAgICAgICAgICBsaW1pdDoge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBpbnRlcnZhbDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVMZWdlbmQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGgsIGxlZ2VuZDogJGV2ZW50IH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVRvb2x0aXAoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCB0b29sdGlwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlR3JvdXBCeSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBncm91cEJ5OiB7IGF0dHJpYnV0ZTogdGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lmdyb3VwQnk/LmF0dHJpYnV0ZSA/PyAnJywgY29sb3I6IHRoaXMuc2NoZW1lc1swXS5pZCB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgZ3JvdXBCeTogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUdyb3VwQnkoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodHlwZW9mICRldmVudCA9PT0gJ3N0cmluZycgJiYgdGhpcy5vcHRpb25zQ29weSQudmFsdWUgJiYgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JvdXBCeSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lmdyb3VwQnksXG4gICAgICAgICAgYXR0cmlidXRlOiAkZXZlbnRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUgJiYgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JvdXBCeSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgYXR0cmlidXRlOiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncm91cEJ5Py5hdHRyaWJ1dGUsXG4gICAgICAgICAgY29sb3I6ICRldmVudFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRUaWNrQ291bnQoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLmRhdGEubWFwKCh2YWw6IGFueSkgPT4gdmFsLnZhbHVlKSkgPCAzXG4gICAgICA/IHsgdGlja0NvdW50OiBNYXRoLm1heCguLi5kYXRhLm1hcCgodmFsOiBhbnkpID0+IHZhbC52YWx1ZSkpIH1cbiAgICAgIDoge307XG4gIH1cblxuICBzY2hlbWUoKSB7XG4gICAgcmV0dXJuIHZlZ2Euc2NoZW1lKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5ncm91cEJ5Py5jb2xvciA/PyAnJyk7XG4gIH1cblxuICB0b2dnbGVTdGFja2VkKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLFxuICAgICAgICAgIHN0YWNrZWQ6ICRldmVudFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSB0b0ltYWdlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlc29sdmUodGhpcy52ZWdhLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnY2FudmFzJylbMF0udG9EYXRhVVJMKCdpbWFnZS9wbmcnKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxwcnktd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQtY3NzPjwvcHJ5LXdpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0LWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldC0tY2hhcnRcIiAqbmdJZj1cIm9wdGlvbnNDb3B5JCB8IGFzeW5jIGFzIG9wdGlvbnNDb3B5XCI+XG4gIDxwcnktd2lkZ2V0LWhlYWRlclxuICAgIFtkYXRhc291cmNlSWRzJF09XCJkYXRhc291cmNlSWRzJFwiXG4gICAgKm5nSWY9XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgIFttYW5pZmVzdF09XCJtYW5pZmVzdFwiXG4gICAgKG1hbmlmZXN0TW9kaWZpZWQpPVwibWFuaWZlc3RNb2RpZmllZC5lbWl0KCRldmVudClcIlxuICAgICNoZWFkZXJcbiAgICBbaGVhZGVyT3B0aW9uc109XCIoZGlzcGxheUhlYWRlciQgfCBhc3luYykgPz8ge31cIlxuICAgIFtkaXNwbGF5Q291bnRdPVwiZmFsc2VcIlxuICA+XG4gICAgPHByeS1zZXR0aW5nc1xuICAgICAgKHNhdmVUcmlnZ2VyZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgICAgW2hlYWRlclByZXNlbnRdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW29wZW4kXT1cIm9wZW4kXCJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcbiAgICAgIGNsYXNzPVwiby1zZXR0aW5nc1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19maWVsZHMgLWNvbmRlbnNlZFwiPlxuICAgICAgICA8cHJ5LWVkaXQtaW5wdXRcbiAgICAgICAgICBsYWJlbD1cIkBwcnkud2lkZ2V0LmNoYXJ0LnRpdGxlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VDaGFydFRpdGxlKCRldmVudClcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmdyYXBoLnRpdGxlXCJcbiAgICAgICAgPjwvcHJ5LWVkaXQtaW5wdXQ+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnNDb3B5XCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfdHlwZVwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC50eXBlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VUeXBlKCRldmVudClcIlxuICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwidHlwZU9wdGlvbnNcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBpZD1cImNoYXJ0X3R5cGVcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zQ29weS5ncmFwaC50eXBlID09PSBHcmFwaFR5cGUuRE9OVVRcIj5cbiAgICAgICAgICA8cHJ5LXJhbmdlXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncmFwaC5kb251dFNpemVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlRG9udXRTaXplKCRldmVudClcIlxuICAgICAgICAgICAgbGFiZWxUcmFuc2xhdGU9XCJAcHJ5LndpZGdldC5jaGFydC5kb251dFNpemVcIlxuICAgICAgICAgICAgbWluPVwiMVwiXG4gICAgICAgICAgICBtYXg9XCI1MDBcIlxuICAgICAgICAgID48L3ByeS1yYW5nZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlTGVnZW5kKCRldmVudClcIiBbbmdNb2RlbF09XCIhIW9wdGlvbnNDb3B5LmdyYXBoLmxlZ2VuZFwiPlxuICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmxlZ2VuZCcgfCBpMThuIH19XG4gICAgICAgICAgPC9wcnktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8cHJ5LWNoZWNrYm94IChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVRvb2x0aXAoJGV2ZW50KVwiIFtuZ01vZGVsXT1cIiEhb3B0aW9uc0NvcHkuZ3JhcGgudG9vbHRpcFwiXG4gICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnRvb2x0aXAnIHwgaTE4biB9fVxuICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncmFwaC50eXBlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzIC1jb25kZW5zZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiYWJzY2lzc2FcIj57eyAnQHByeS53aWRnZXQuY2hhcnQuYWJzY2lzc2EnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VBYnNjaXNzYSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJhYnNjaXNzYUF0dHJpYnV0ZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5hdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgIGlkPVwiYWJzY2lzc2FcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxwcnktZWRpdC1pbnB1dFxuICAgICAgICAgICAgbGFiZWw9XCJAcHJ5LndpZGdldC5jaGFydC5kYXRhTGFiZWxcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQWJzY2lzc2FMYWJlbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxhYmVsXCJcbiAgICAgICAgICA+PC9wcnktZWRpdC1pbnB1dD5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIFsncXVhbnRpdGF0aXZlJywgJ3RlbXBvcmFsJ10uaW5jbHVkZXModHJhbnNsYXRlVG9WZWdhVHlwZShjb3B5QWJzY2lzc2FGaWVsZD8udHlwZSkpICYmXG4gICAgICAgICAgICAgIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5ET05VVCAmJlxuICAgICAgICAgICAgICBvcHRpb25zQ29weS5ncmFwaC50eXBlICE9PSBHcmFwaFR5cGUuQ0lSQ1VMQVJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHByeS1jaGVja2JveCAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VLZWVwMEFic2Npc3NhKCRldmVudClcIiBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5rZWVwMFwiXG4gICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQub3JpZ2luJyB8IGkxOG4gfX1cbiAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuXG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94XG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImxpbWl0RWxlbWVudHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIiEhb3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXRcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSA9PT0gR3JhcGhUeXBlLkhJU1RPR1JBTVwiXG4gICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQubGltaXQnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIW9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5pc1RpbWVMaW1pdCA9PT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICA8cHJ5LXJhbmdlXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5hdFwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VMaW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIGxhYmVsVHJhbnNsYXRlPVwiQHByeS53aWRnZXQuY2hhcnQubGltaXRcIlxuICAgICAgICAgICAgICAgICAgbWluPVwiMVwiXG4gICAgICAgICAgICAgICAgICBtYXg9XCIxMFwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXJhbmdlPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5ISVNUT0dSQU1cIj5cbiAgICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGltaXRPdGhlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0Lm90aGVyc1wiXG4gICAgICAgICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQub3RoZXJzJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZGF0ZV9saW1pdFwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcmRlcicgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUxpbWl0T3JkZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiW3sgaWQ6ICdhc2MnIH0sIHsgaWQ6ICdkZXNjJyB9XVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0Lm9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2Jhc2VUcmFuc2xhdGVdPVwiJ0Bwcnkud2lkZ2V0LmNoYXJ0LidcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxUcmFuc2xhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwib3RoZXJfbGltaXRcIlxuICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhb3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXQuaXNUaW1lTGltaXRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZGF0ZV9saW1pdFwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC50aW1lSW50ZXJ2YWwnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRpbWVMaW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIltcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3NlY29uZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ21pbnV0ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2hvdXInIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdkYXknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICd3ZWVrJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnbW9udGgnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdxdWFydGVyJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAneWVhcicgfVxuICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5pbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxUcmFuc2xhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBiYXNlVHJhbnNsYXRlPVwiQHByeS53aWRnZXQuY2hhcnQudGltZS5cIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJkYXRlX2xpbWl0XCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cIm9wZXJhdGlvbnNcIj57eyAnQHByeS53aWRnZXQuY2hhcnQub3BlcmF0aW9uLnRpdGxlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlT3BlcmF0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cIm9wZXJhdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5vcGVyYXRpb25cIlxuICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICBpZD1cIm9wZXJhdGlvbnNcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5vcGVyYXRpb24gIT09IE9wZXJhdGlvbi5DT1VOVFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwib3JkaW5hdGVcIj57eyAnQHByeS53aWRnZXQuY2hhcnQub3JkaW5hdGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlT3JkaW5hdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cIm9yZGluYXRlQXR0cmlidXRlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUuYXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgIGlkPVwib3JkaW5hdGVcIlxuICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8cHJ5LWVkaXQtaW5wdXRcbiAgICAgICAgICAgIGxhYmVsPVwiQHByeS53aWRnZXQuY2hhcnQuZGF0YUxhYmVsXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZU9yZGluYXRlTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5sYWJlbFwiXG4gICAgICAgICAgPjwvcHJ5LWVkaXQtaW5wdXQ+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHJhbnNsYXRlVG9WZWdhVHlwZShjb3B5T3JkaW5hdGVGaWVsZD8udHlwZSkgPT09ICdxdWFudGl0YXRpdmUnXCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQpXCIgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUua2VlcDBcIlxuICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9yaWdpbicgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkRPTlVUICYmIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5DSVJDVUxBUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlR3JvdXBCeSgkZXZlbnQpXCIgW25nTW9kZWxdPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCJcbiAgICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lmdyb3VwQnknIHwgaTE4biB9fVxuICAgICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5ncm91cEF0dHInIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUdyb3VwQnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYWJzY2lzc2FBdHRyaWJ1dGVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJjaGFydF9zZXJpZXNBdHRyXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNoYXJ0X3Nlcmllc1NjaGVtZVwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5jb2xvclNjaGVtZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInNjaGVtZXNcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJjaGFydF9zZXJpZXNTY2hlbWVcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsVHJhbnNsYXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgYmFzZVRyYW5zbGF0ZT1cIkBwcnkud2lkZ2V0LmNoYXJ0LnNjaGVtZS5cIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiaWRcIlxuICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXdpZGdldC0tY2hhcnQtY29sb3ItdGh1bWJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2NoZW1lQ29sb3Igb2Ygc2NoZW1lKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvLXdpZGdldC0tY2hhcnQtY29sb3ItdGh1bWItaXRlbVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwic2NoZW1lQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2NoZW1lQ29sb3JcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGguc3RhY2tlZFwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVN0YWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnN0YWNrZWQnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvcHJ5LXNldHRpbmdzPlxuICA8L3ByeS13aWRnZXQtaGVhZGVyPlxuICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0XCIgKm5nSWY9XCIoaXNDaGFydFZhbGlkJCB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgICA8aW1nXG4gICAgICBjbGFzcz1cIm5vLXJlc3VsdF9fc2VhcmNoXCJcbiAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICBhbHQ9XCJ7eyAnQHByeS53aWRnZXQuY2hhcnQubm9EYXRhJyB8IGkxOG4gfX1cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAvPlxuICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm5vRGF0YScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc0NoYXJ0VmFsaWQkIHwgYXN5bmMpICYmICEobm9EYXRhJCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgI3ZlZ2E+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGlzQ2hhcnRWYWxpZCQgfCBhc3luYylcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby13aWRnZXRfX2Nob29zZS1wYXJhbWV0ZXJzXCI+XG4gICAgICA8cCBjbGFzcz1cImEtcFwiPlxuICAgICAgICB7eyAnQHByeS53aWRnZXQuY2hhcnQuY2hvb3NlUGFyYW1ldGVycycgfCBpMThuIH19XG4gICAgICA8L3A+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblNldHRpbmdzKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQuc2V0dGluZ3MudGl0bGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhJCB8IGFzeW5jXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19jaG9vc2UtcGFyYW1ldGVyc1wiPlxuICAgICAgPHAgY2xhc3M9XCJhLXBcIj5cbiAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm5vRGF0YScgfCBpMThuIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|