{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./node_modules/chart.js/node_modules/moment/locale sync ^\\.\\/.*$","./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/app.component.html","./src/app/layout/footer/footer.component.html","./src/app/layout/layout.component.html","./src/app/layout/left-navbar/left-navbar.component.html","./src/app/layout/navbar-top/navbar-top.component.html","./src/app/pages/404/not-found.component.html","./src/app/pages/admin/companies-home/companies-home.component.html","./src/app/pages/admin/company/company.component.html","./src/app/pages/admin/identification-pattern/identification-pattern.component.html","./src/app/pages/admin/user/user.component.html","./src/app/pages/admin/users-home/users-home.component.html","./src/app/pages/alerts-management/alerts-management.component.html","./src/app/pages/analyse/compare/compare.component.html","./src/app/pages/analyse/cross-data/cross-data.component.html","./src/app/pages/bills-control/bills-control.component.html","./src/app/pages/bills/bills.component.html","./src/app/pages/cartography/cartography.component.html","./src/app/pages/collect/collect.component.html","./src/app/pages/contracts/contracts.component.html","./src/app/pages/dju/dju.component.html","./src/app/pages/documents/documents.component.html","./src/app/pages/energy/followup/followup.component.html","./src/app/pages/energy/load-curve/load-curve.component.html","./src/app/pages/energy/merge/merge.component.html","./src/app/pages/energy/optimization/optimization.component.html","./src/app/pages/energy/pdl-view/cooling/cooling.component.html","./src/app/pages/energy/pdl-view/elec/elec.component.html","./src/app/pages/energy/pdl-view/gas/gas.component.html","./src/app/pages/energy/pdl-view/heating/heating.component.html","./src/app/pages/energy/pdl-view/water/water.component.html","./src/app/pages/energy/profiles/profiles.component.html","./src/app/pages/energy/ranking/ranking.component.html","./src/app/pages/energy/repartition/repartition.component.html","./src/app/pages/energy/sites-list/sites-list.component.html","./src/app/pages/fix-regex-property/fix-regex-property.component.html","./src/app/pages/fix-regex-upload/fix-regex-upload.component.html","./src/app/pages/home/home.component.html","./src/app/pages/managers/devis/devis.component.html","./src/app/pages/managers/exchange/exchange.component.html","./src/app/pages/managers/managers.component.html","./src/app/pages/profile/account/account.component.html","./src/app/pages/profile/em/em.component.html","./src/app/pages/profile/profile.component.html","./src/app/pages/profile/users/users.component.html","./src/app/pages/reset-password/reset-password.component.html","./src/app/pages/rse/rse.component.html","./src/app/pages/rules/rules.component.html","./src/app/pages/signin/signin.component.html","./src/app/pages/specific/resah/cotisation/cotisation.component.html","./src/app/pages/targets/campaigns/campaigns.component.html","./src/app/pages/targets/operating-monitoring/operating-monitoring.component.html","./src/app/pages/vehicles/followup/followup.component.html","./src/app/pages/vehicles/park-monitoring/park-monitoring.component.html","./src/app/shared/components/admin/admin-selection/admin-selection.component.html","./src/app/shared/components/admin/admin-users-list/admin-users-list.component.html","./src/app/shared/components/admin/company/company.component.html","./src/app/shared/components/admin/company/contacts/company-contacts.component.html","./src/app/shared/components/admin/company/loading-curves/company-loading-curves.component.html","./src/app/shared/components/admin/company/loading-curves/providers/enedis/assignation-enedis.component.html","./src/app/shared/components/admin/company/loading-curves/providers/enedis/rrefs-selection/rrefs-selection.component.html","./src/app/shared/components/admin/company/loading-curves/providers/enedis/warrant-form/warrant-form.component.html","./src/app/shared/components/admin/company/loading-curves/providers/greenanalyzer/assignation-greenanalyzer.component.html","./src/app/shared/components/admin/company/profile/company-profile.component.html","./src/app/shared/components/admin/company/rref-merge/rref-keyfigures-card/rref-keyfigures-card.component.html","./src/app/shared/components/admin/company/rref-merge/rref-list/rref-list.component.html","./src/app/shared/components/admin/company/rref-merge/rref-merge-preview/rref-merge-preview.component.html","./src/app/shared/components/admin/company/rref-merge/rref-merge.component.html","./src/app/shared/components/admin/company/rref-merge/rref-rename/rref-rename.component.html","./src/app/shared/components/admin/company/rref-merge/rref-selected/rref-selected.component.html","./src/app/shared/components/admin/company/sites-entities-attribution/entity-attribution.component.html","./src/app/shared/components/admin/company/sites/company-sites.component.html","./src/app/shared/components/admin/company/uploads/company-uploads.component.html","./src/app/shared/components/admin/company/users/company-users.component.html","./src/app/shared/components/admin/identification-pattern-search/identification-pattern-search.component.html","./src/app/shared/components/admin/identification-pattern/identification-pattern.component.html","./src/app/shared/components/admin/user/engineer/user-engineer.component.html","./src/app/shared/components/admin/user/profile/user-profile.component.html","./src/app/shared/components/admin/user/sites/user-sites.component.html","./src/app/shared/components/admin/user/user.component.html","./src/app/shared/components/alerts/edition/alerts-edition.component.html","./src/app/shared/components/alerts/edition/condition-builder/alerts-condition-builder.component.html","./src/app/shared/components/alerts/management-filter/alerts-mgmt-filter.component.html","./src/app/shared/components/alerts/management-table/alerts-mgmt-table.component.html","./src/app/shared/components/analyse/axis-selection/axis-selection.component.html","./src/app/shared/components/analyse/statistics/statistics.component.html","./src/app/shared/components/bills/bills-control/bills-control-tabs/bills-control-tabs.component.html","./src/app/shared/components/bills/bills-control/completeness/bills-completeness-tab/bills-completeness-tab.component.html","./src/app/shared/components/bills/bills-control/completeness/bills-datepicker/bills-datepicker.component.html","./src/app/shared/components/bills/bills-control/completeness/bills-table-completeness/bills-table-completeness.component.html","./src/app/shared/components/bills/bills-control/completeness/bills-timeline/bills-timeline.component.html","./src/app/shared/components/bills/bills-control/completeness/completeness-data-tab/completeness-data-tab.component.html","./src/app/shared/components/bills/bills-control/control/bill-verifications/bill-verifications.component.html","./src/app/shared/components/bills/bills-control/control/bills-control-tab/bills-control-tab.component.html","./src/app/shared/components/bills/bills-control/control/bills-table-control/bills-table-control.component.html","./src/app/shared/components/bills/bills-control/control/recap-banner/bills-control-recap-banner.component.html","./src/app/shared/components/bills/bills-management/bill-verification-pill/bill-verification-pill.component.html","./src/app/shared/components/bills/bills-management/bill-verification-popover/bill-verification-popover.component.html","./src/app/shared/components/bills/bills-management/bills-list/bills-list.component.html","./src/app/shared/components/campaigns/campaign-create/campaign-create.component.html","./src/app/shared/components/campaigns/campaign-goal-recap/campaign-goal-recap.component.html","./src/app/shared/components/campaigns/campaign-overview/campaign-overview.component.html","./src/app/shared/components/campaigns/campaign-visualization/campaign-visualization.component.html","./src/app/shared/components/campaigns/campaigns-nav/campaigns-nav.component.html","./src/app/shared/components/cartography/data-search-list/data-search-list.component.html","./src/app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component.html","./src/app/shared/components/charts/chart-bar/chart-bar.component.html","./src/app/shared/components/charts/chart-doughnut-toggle/chart-doughnut-toggle.component.html","./src/app/shared/components/charts/chart-doughnut/chart-doughnut.component.html","./src/app/shared/components/charts/chart-heatmap/chart-heatmap.component.html","./src/app/shared/components/charts/chart-line-toggle/chart-line-toggle.component.html","./src/app/shared/components/charts/chart-line/chart-line.component.html","./src/app/shared/components/charts/graph-bottom/graph-bottom.component.html","./src/app/shared/components/charts/highchart-doughnut-toggle/highchart-doughnut-toggle.component.html","./src/app/shared/components/charts/highchart-doughnut/highchart-doughnut.component.html","./src/app/shared/components/charts/highchart-multilevel-pie-toggle/highchart-multilevel-pie-toggle.component.html","./src/app/shared/components/charts/highchart-multilevel-pie/highchart-multilevel-pie.component.html","./src/app/shared/components/charts/highchart-sankey-editable/highchart-sankey-editable.component.html","./src/app/shared/components/charts/highchart-sankey/highchart-sankey.component.html","./src/app/shared/components/charts/highchart-scatter-plot/highchart-scatter-plot.component.html","./src/app/shared/components/common/component-bloc/component-bloc.component.html","./src/app/shared/components/common/date-range-picker/date-range-picker.component.html","./src/app/shared/components/common/dropdown-multilevel/dropdown-multilevel.component.html","./src/app/shared/components/common/filter/filter.component.html","./src/app/shared/components/common/full-filter/full-filter.component.html","./src/app/shared/components/common/loading-data/loading-data.component.html","./src/app/shared/components/common/map/map.component.html","./src/app/shared/components/common/modal/modal.component.html","./src/app/shared/components/common/nodata/no-data.component.html","./src/app/shared/components/common/popover/history/history-popover.component.html","./src/app/shared/components/common/progress-bar/progress-bar.component.html","./src/app/shared/components/common/simple-autocomplete/simple-autocomplete.component.html","./src/app/shared/components/common/simple-table/simple-table.component.html","./src/app/shared/components/common/toggle-buttons/toggle-buttons.component.html","./src/app/shared/components/common/tree-view-select/tree-view-select.component.html","./src/app/shared/components/common/ultra-simple-autocomplete/ultra-simple-autocomplete.component.html","./src/app/shared/components/contracts/contract-edition/capacity-factor/capacity-factor.component.html","./src/app/shared/components/contracts/contract-edition/contract-edition.component.html","./src/app/shared/components/contracts/contract-edition/dates-periodicity/dates-periodicity.component.html","./src/app/shared/components/contracts/contract-edition/pdl-pricings/pdl-pricings.component.html","./src/app/shared/components/contracts/contract-edition/pricings-common/pricings-common.component.html","./src/app/shared/components/contracts/contracts-table/contracts-table.component.html","./src/app/shared/components/data-tiles/tile-1/data-tile-1.component.html","./src/app/shared/components/data-tiles/tile-2/data-tile-2.component.html","./src/app/shared/components/data-tiles/tile-3/data-tile-3.component.html","./src/app/shared/components/data-tiles/tile-4/data-tile-4.component.html","./src/app/shared/components/data-tiles/tile-5/data-tile-5.component.html","./src/app/shared/components/export-button/export-button.component.html","./src/app/shared/components/filters/autocomplete-filter/autocomplete-filter.component.html","./src/app/shared/components/filters/bills-contracts-filter/bills-contracts-filter.component.html","./src/app/shared/components/filters/custom-filter/custom-filter.component.html","./src/app/shared/components/filters/custom-filter/filter-sites-rules/filter-sites-rules.component.html","./src/app/shared/components/filters/data-scope-filter-readonly/data-scope-filter-readonly.component.html","./src/app/shared/components/filters/date-filter/date-filter.component.html","./src/app/shared/components/filters/followup-filter/followup-filter.component.html","./src/app/shared/components/filters/multiple-autocomplete-filter/multiple-autocomplete-filter.component.html","./src/app/shared/components/filters/number-filter/number-filter.component.html","./src/app/shared/components/filters/scope-filter/scope-filter.component.html","./src/app/shared/components/filters/select-filter/select-filter.component.html","./src/app/shared/components/filters/simple-tags/simple-tags.component.html","./src/app/shared/components/filters/switch-bloc-filter/switch-bloc-filter.component.html","./src/app/shared/components/filters/switch-filter/switch-filter.component.html","./src/app/shared/components/filters/text-filter/text-filter.component.html","./src/app/shared/components/legends/legend.component.html","./src/app/shared/components/load-curve/message-display/message-display.component.html","./src/app/shared/components/modals/input-modal/input-modal.component.html","./src/app/shared/components/modals/yes-no-modal/yes-no-modal.component.html","./src/app/shared/components/ng2-charts/ng2-charts-bar.component.html","./src/app/shared/components/ng2-charts/ng2-charts-doughnut.component.html","./src/app/shared/components/ng2-charts/ng2-charts-line.component.html","./src/app/shared/components/operating-monitoring/monitoring-companies-select/monitoring-companies-select.component.html","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-contract/monitoring-edition-contract.component.html","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-scope/monitoring-edition-scope.component.html","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-source/monitoring-edition-source.component.html","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition.component.html","./src/app/shared/components/operating-monitoring/monitoring-graphs/monitoring-graphs.component.html","./src/app/shared/components/operating-monitoring/monitoring-header/monitoring-header.component.html","./src/app/shared/components/operating-monitoring/monitoring-keyfigures/monitoring-keyfigures.component.html","./src/app/shared/components/operating-monitoring/monitoring-list/monitoring-list.component.html","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-add-meter/monitoring-add-meter.component.html","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-add-reading/monitoring-add-reading.component.html","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-readings.component.html","./src/app/shared/components/operating-monitoring/monitoring-resume/monitoring-resume.component.html","./src/app/shared/components/other/card-key-figures/grid-key-figures.component.html","./src/app/shared/components/other/card-key-figures/key-figure.component.html","./src/app/shared/components/other/timeline/timeline.component.html","./src/app/shared/components/other/user-tile/user-tile.component.html","./src/app/shared/components/pagination/back/pagination-back.component.html","./src/app/shared/components/pagination/front/pagination-front.component.html","./src/app/shared/components/pattern-fix/pattern-fix-table/pattern-fix-table.component.html","./src/app/shared/components/pattern-fix/upload-fix-table/upload-fix-table.component.html","./src/app/shared/components/pdl/bloc-contract/bloc-contract.component.html","./src/app/shared/components/pdl/pdl-data-site-top/pdl-communicating-icon/pdl-communicating-icon.component.html","./src/app/shared/components/pdl/pdl-data-site-top/pdl-contractual-data/pdl-contractual-data.component.html","./src/app/shared/components/pdl/pdl-data-site-top/pdl-data-site-top.component.html","./src/app/shared/components/pdl/pdl-data-table-site/pdl-data-table-site.component.html","./src/app/shared/components/pdl/pdl-data-table/pdl-data-table.component.html","./src/app/shared/components/pdl/pdl-table/pdl-table.component.html","./src/app/shared/components/regex/not-find-table/not-find-table.component.html","./src/app/shared/components/regex/pattern-table/pattern-table.component.html","./src/app/shared/components/regex/patterns-properties-table/patterns-properties-table.component.html","./src/app/shared/components/regex/recap-files/recap-files.component.html","./src/app/shared/components/sites/add-material/add-material.component.html","./src/app/shared/components/sites/basic-information-form/basic-information-form.component.html","./src/app/shared/components/sites/bloc-adress/bloc-adress.component.html","./src/app/shared/components/sites/distribution-key/distribution-key.component.html","./src/app/shared/components/sites/general-informations/general-informations.component.html","./src/app/shared/components/sites/informations/site-informations.component.html","./src/app/shared/components/sites/legacy-data/legacy-data.component.html","./src/app/shared/components/sites/list-drag-n-drop/list-drag-n-drop.component.html","./src/app/shared/components/sites/pdl-list/pdl-list.component.html","./src/app/shared/components/sites/properties/site-properties.component.html","./src/app/shared/components/sites/questions/file-upload/file-upload.component.html","./src/app/shared/components/sites/questions/group-collapse/group-collapse.component.html","./src/app/shared/components/sites/questions/input-text-multiple/input-text-multiple.component.html","./src/app/shared/components/sites/questions/input-text/input-text.component.html","./src/app/shared/components/sites/questions/modal/modal.component.html","./src/app/shared/components/sites/questions/question/question.component.html","./src/app/shared/components/sites/questions/select-choices-bloc/select-choices-bloc.component.html","./src/app/shared/components/sites/questions/select-choices-input/select-choices-input.component.html","./src/app/shared/components/sites/questions/select-choices/select-choices.component.html","./src/app/shared/components/sites/questions/select-dropdown/select-dropdown.component.html","./src/app/shared/components/sites/select-pdls/select-pdls.component.html","./src/app/shared/components/sites/sites-pdls-list/sites-fluids-list.component.html","./src/app/shared/components/sites/zone/site-zone.component.html","./src/app/shared/components/upload/upload-files-tile/upload-files-tile.component.html","./src/app/shared/components/upload/upload-files/upload-files.component.html","./src/app/shared/components/upload/upload-list/upload-list.component.html","./src/app/shared/components/upload/upload-report/upload-report.component.html","./src/app/shared/components/vehicles/edit/vehicle-edit.component.html","./node_modules/tslib/tslib.es6.js","./src/app/app.component.scss","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/app.routing.ts","./src/app/app.service.ts","./src/app/app.state.ts","./src/app/layout/footer/footer.component.scss","./src/app/layout/footer/footer.component.ts","./src/app/layout/layout.component.scss","./src/app/layout/layout.component.ts","./src/app/layout/layout.module.ts","./src/app/layout/layout.routes.ts","./src/app/layout/left-navbar/left-navbar.component.scss","./src/app/layout/left-navbar/left-navbar.component.ts","./src/app/layout/navbar-top/navbar-top.component.scss","./src/app/layout/navbar-top/navbar-top.component.ts","./src/app/pages/404/not-found.component.scss","./src/app/pages/404/not-found.component.ts","./src/app/pages/404/not-found.module.ts","./src/app/pages/admin/companies-home/companies-home.component.scss","./src/app/pages/admin/companies-home/companies-home.component.ts","./src/app/pages/admin/companies-home/companies-home.module.ts","./src/app/pages/admin/company/company.component.scss","./src/app/pages/admin/company/company.component.ts","./src/app/pages/admin/company/company.module.ts","./src/app/pages/admin/company/company.service.ts","./src/app/pages/admin/identification-pattern/identification-pattern.component.scss","./src/app/pages/admin/identification-pattern/identification-pattern.component.ts","./src/app/pages/admin/identification-pattern/identification-pattern.module.ts","./src/app/pages/admin/identification-pattern/identification-pattern.service.ts","./src/app/pages/admin/user/user.component.scss","./src/app/pages/admin/user/user.component.ts","./src/app/pages/admin/user/user.module.ts","./src/app/pages/admin/user/user.service.ts","./src/app/pages/admin/users-home/users-home.component.scss","./src/app/pages/admin/users-home/users-home.component.ts","./src/app/pages/admin/users-home/users-home.module.ts","./src/app/pages/alerts-management/alerts-management.component.scss","./src/app/pages/alerts-management/alerts-management.component.ts","./src/app/pages/alerts-management/alerts-management.module.ts","./src/app/pages/analyse/compare/compare.component.scss","./src/app/pages/analyse/compare/compare.component.ts","./src/app/pages/analyse/compare/compare.module.ts","./src/app/pages/analyse/compare/compare.service.ts","./src/app/pages/analyse/cross-data/cross-data.component.scss","./src/app/pages/analyse/cross-data/cross-data.component.ts","./src/app/pages/analyse/cross-data/cross-data.module.ts","./src/app/pages/analyse/cross-data/cross-data.service.ts","./src/app/pages/bills-control/bills-control.component.scss","./src/app/pages/bills-control/bills-control.component.ts","./src/app/pages/bills-control/bills-control.module.ts","./src/app/pages/bills/bills.component.scss","./src/app/pages/bills/bills.component.ts","./src/app/pages/bills/bills.module.ts","./src/app/pages/cartography/cartography.component.scss","./src/app/pages/cartography/cartography.component.ts","./src/app/pages/cartography/cartography.module.ts","./src/app/pages/cartography/cartography.service.ts","./src/app/pages/collect/collect.component.scss","./src/app/pages/collect/collect.component.ts","./src/app/pages/collect/collect.helper.ts","./src/app/pages/collect/collect.module.ts","./src/app/pages/collect/collect.service.ts","./src/app/pages/contracts/contracts.component.scss","./src/app/pages/contracts/contracts.component.ts","./src/app/pages/contracts/contracts.module.ts","./src/app/pages/contracts/contracts.service.ts","./src/app/pages/dju/dju.component.scss","./src/app/pages/dju/dju.component.ts","./src/app/pages/dju/dju.module.ts","./src/app/pages/dju/dju.service.ts","./src/app/pages/documents/documents.component.scss","./src/app/pages/documents/documents.component.ts","./src/app/pages/documents/documents.module.ts","./src/app/pages/documents/documents.service.ts","./src/app/pages/documents/upload-snackbar.component.ts","./src/app/pages/energy/followup/followup.component.scss","./src/app/pages/energy/followup/followup.component.ts","./src/app/pages/energy/followup/followup.module.ts","./src/app/pages/energy/followup/followup.service.ts","./src/app/pages/energy/load-curve/load-curve.component.scss","./src/app/pages/energy/load-curve/load-curve.component.ts","./src/app/pages/energy/load-curve/load-curve.module.ts","./src/app/pages/energy/load-curve/load-curve.service.ts","./src/app/pages/energy/merge/merge.component.scss","./src/app/pages/energy/merge/merge.component.ts","./src/app/pages/energy/merge/merge.module.ts","./src/app/pages/energy/merge/merge.service.ts","./src/app/pages/energy/optimization/optimization.component.scss","./src/app/pages/energy/optimization/optimization.component.ts","./src/app/pages/energy/optimization/optimization.module.ts","./src/app/pages/energy/pdl-view/cooling/cooling.component.scss","./src/app/pages/energy/pdl-view/cooling/cooling.component.ts","./src/app/pages/energy/pdl-view/cooling/cooling.module.ts","./src/app/pages/energy/pdl-view/elec/elec-power-reach.service.ts","./src/app/pages/energy/pdl-view/elec/elec.component.scss","./src/app/pages/energy/pdl-view/elec/elec.component.ts","./src/app/pages/energy/pdl-view/elec/elec.module.ts","./src/app/pages/energy/pdl-view/elec/elec.service.ts","./src/app/pages/energy/pdl-view/gas/gas.component.scss","./src/app/pages/energy/pdl-view/gas/gas.component.ts","./src/app/pages/energy/pdl-view/gas/gas.module.ts","./src/app/pages/energy/pdl-view/heating/heating.component.scss","./src/app/pages/energy/pdl-view/heating/heating.component.ts","./src/app/pages/energy/pdl-view/heating/heating.module.ts","./src/app/pages/energy/pdl-view/water/water.component.scss","./src/app/pages/energy/pdl-view/water/water.component.ts","./src/app/pages/energy/pdl-view/water/water.module.ts","./src/app/pages/energy/profiles/profiles.component.scss","./src/app/pages/energy/profiles/profiles.component.ts","./src/app/pages/energy/profiles/profiles.module.ts","./src/app/pages/energy/ranking/ranking.component.scss","./src/app/pages/energy/ranking/ranking.component.ts","./src/app/pages/energy/ranking/ranking.module.ts","./src/app/pages/energy/ranking/ranking.service.ts","./src/app/pages/energy/repartition/repartition.component.scss","./src/app/pages/energy/repartition/repartition.component.ts","./src/app/pages/energy/repartition/repartition.module.ts","./src/app/pages/energy/repartition/repartition.service.ts","./src/app/pages/energy/sites-list/sites-list.component.scss","./src/app/pages/energy/sites-list/sites-list.component.ts","./src/app/pages/energy/sites-list/sites-list.module.ts","./src/app/pages/energy/sites-list/sites-list.service.ts","./src/app/pages/fix-regex-property/fix-regex-property.component.scss","./src/app/pages/fix-regex-property/fix-regex-property.component.ts","./src/app/pages/fix-regex-property/fix-regex-property.module.ts","./src/app/pages/fix-regex-property/fix-regex-property.service.ts","./src/app/pages/fix-regex-upload/chunk/fix-regex-upload-chunk.component.ts","./src/app/pages/fix-regex-upload/chunk/fix-regex-upload-chunk.module.ts","./src/app/pages/fix-regex-upload/fix-regex-upload.component.scss","./src/app/pages/fix-regex-upload/fix-regex-upload.component.ts","./src/app/pages/fix-regex-upload/fix-regex-upload.module.ts","./src/app/pages/fix-regex-upload/fix-regex-upload.service.ts","./src/app/pages/home/home.component.scss","./src/app/pages/home/home.component.ts","./src/app/pages/home/home.module.ts","./src/app/pages/home/home.service.ts","./src/app/pages/managers/devis/devis.component.scss","./src/app/pages/managers/devis/devis.component.ts","./src/app/pages/managers/devis/devis.module.ts","./src/app/pages/managers/exchange/exchange.component.scss","./src/app/pages/managers/exchange/exchange.component.ts","./src/app/pages/managers/exchange/exchange.module.ts","./src/app/pages/managers/managers.component.scss","./src/app/pages/managers/managers.component.ts","./src/app/pages/managers/managers.module.ts","./src/app/pages/profile/account/account.component.scss","./src/app/pages/profile/account/account.component.ts","./src/app/pages/profile/account/account.module.ts","./src/app/pages/profile/em/em.component.scss","./src/app/pages/profile/em/em.component.ts","./src/app/pages/profile/em/em.module.ts","./src/app/pages/profile/profile.component.scss","./src/app/pages/profile/profile.component.ts","./src/app/pages/profile/profile.module.ts","./src/app/pages/profile/users/users.component.scss","./src/app/pages/profile/users/users.component.ts","./src/app/pages/profile/users/users.module.ts","./src/app/pages/reset-password/reset-password.component.scss","./src/app/pages/reset-password/reset-password.component.ts","./src/app/pages/reset-password/reset-password.module.ts","./src/app/pages/reset-password/reset-password.service.ts","./src/app/pages/rse/rse.component.scss","./src/app/pages/rse/rse.component.ts","./src/app/pages/rse/rse.module.ts","./src/app/pages/rules/rules.component.scss","./src/app/pages/rules/rules.component.ts","./src/app/pages/rules/rules.module.ts","./src/app/pages/signin/signin.component.scss","./src/app/pages/signin/signin.component.ts","./src/app/pages/signin/signin.module.ts","./src/app/pages/signin/signin.service.ts","./src/app/pages/specific/resah/cotisation/cotisation.component.scss","./src/app/pages/specific/resah/cotisation/cotisation.component.ts","./src/app/pages/specific/resah/cotisation/cotisation.module.ts","./src/app/pages/specific/resah/cotisation/cotisation.service.ts","./src/app/pages/targets/campaigns/campaigns.component.scss","./src/app/pages/targets/campaigns/campaigns.component.ts","./src/app/pages/targets/campaigns/campaigns.module.ts","./src/app/pages/targets/operating-monitoring/operating-monitoring.component.scss","./src/app/pages/targets/operating-monitoring/operating-monitoring.component.ts","./src/app/pages/targets/operating-monitoring/operating-monitoring.module.ts","./src/app/pages/vehicles/followup/followup.component.scss","./src/app/pages/vehicles/followup/followup.component.ts","./src/app/pages/vehicles/followup/followup.module.ts","./src/app/pages/vehicles/followup/followup.service.ts","./src/app/pages/vehicles/park-monitoring/park-monitoring.component.scss","./src/app/pages/vehicles/park-monitoring/park-monitoring.component.ts","./src/app/pages/vehicles/park-monitoring/park-monitoring.module.ts","./src/app/pages/vehicles/park-monitoring/park-monitoring.service.ts","./src/app/rollbar.ts","./src/app/shared/components/admin/admin-selection/admin-selection.component.scss","./src/app/shared/components/admin/admin-selection/admin-selection.component.ts","./src/app/shared/components/admin/admin-users-list/admin-users-list.component.scss","./src/app/shared/components/admin/admin-users-list/admin-users-list.component.ts","./src/app/shared/components/admin/company/company.component.scss","./src/app/shared/components/admin/company/company.component.ts","./src/app/shared/components/admin/company/company.service.ts","./src/app/shared/components/admin/company/contacts/company-contacts.component.scss","./src/app/shared/components/admin/company/contacts/company-contacts.component.ts","./src/app/shared/components/admin/company/loading-curves/company-loading-curves.component.scss","./src/app/shared/components/admin/company/loading-curves/company-loading-curves.component.ts","./src/app/shared/components/admin/company/loading-curves/providers/enedis/assignation-enedis.component.scss","./src/app/shared/components/admin/company/loading-curves/providers/enedis/assignation-enedis.component.ts","./src/app/shared/components/admin/company/loading-curves/providers/enedis/enedis-warrant.service.ts","./src/app/shared/components/admin/company/loading-curves/providers/enedis/rrefs-selection/rrefs-selection.component.scss","./src/app/shared/components/admin/company/loading-curves/providers/enedis/rrefs-selection/rrefs-selection.component.ts","./src/app/shared/components/admin/company/loading-curves/providers/enedis/rrefs-selection/rrefs-selection.service.ts","./src/app/shared/components/admin/company/loading-curves/providers/enedis/warrant-form/warrant-form.component.scss","./src/app/shared/components/admin/company/loading-curves/providers/enedis/warrant-form/warrant-form.component.ts","./src/app/shared/components/admin/company/loading-curves/providers/greenanalyzer/assignation-greenanalyzer.component.scss","./src/app/shared/components/admin/company/loading-curves/providers/greenanalyzer/assignation-greenanalyzer.component.ts","./src/app/shared/components/admin/company/profile/company-profile.component.scss","./src/app/shared/components/admin/company/profile/company-profile.component.ts","./src/app/shared/components/admin/company/rref-merge/rref-keyfigures-card/rref-keyfigures-card.component.scss","./src/app/shared/components/admin/company/rref-merge/rref-keyfigures-card/rref-keyfigures-card.component.ts","./src/app/shared/components/admin/company/rref-merge/rref-list/rref-list.component.scss","./src/app/shared/components/admin/company/rref-merge/rref-list/rref-list.component.ts","./src/app/shared/components/admin/company/rref-merge/rref-merge-preview/rref-merge-preview.component.scss","./src/app/shared/components/admin/company/rref-merge/rref-merge-preview/rref-merge-preview.component.ts","./src/app/shared/components/admin/company/rref-merge/rref-merge.component.scss","./src/app/shared/components/admin/company/rref-merge/rref-merge.component.ts","./src/app/shared/components/admin/company/rref-merge/rref-merge.service.ts","./src/app/shared/components/admin/company/rref-merge/rref-rename/rref-rename.component.scss","./src/app/shared/components/admin/company/rref-merge/rref-rename/rref-rename.component.ts","./src/app/shared/components/admin/company/rref-merge/rref-selected/rref-selected.component.scss","./src/app/shared/components/admin/company/rref-merge/rref-selected/rref-selected.component.ts","./src/app/shared/components/admin/company/sites-entities-attribution/entity-attribution.component.scss","./src/app/shared/components/admin/company/sites-entities-attribution/entity-attribution.component.ts","./src/app/shared/components/admin/company/sites-entities-attribution/routing-references/company-routing-references.component.ts","./src/app/shared/components/admin/company/sites-entities-attribution/vehicles/company-vehicles.component.ts","./src/app/shared/components/admin/company/sites/company-sites.component.scss","./src/app/shared/components/admin/company/sites/company-sites.components.ts","./src/app/shared/components/admin/company/uploads/company-uploads.component.scss","./src/app/shared/components/admin/company/uploads/company-uploads.component.ts","./src/app/shared/components/admin/company/users/company-users.component.scss","./src/app/shared/components/admin/company/users/company-users.component.ts","./src/app/shared/components/admin/identification-pattern-search/identification-pattern-search.component.scss","./src/app/shared/components/admin/identification-pattern-search/identification-pattern-search.component.ts","./src/app/shared/components/admin/identification-pattern/identification-pattern.component.scss","./src/app/shared/components/admin/identification-pattern/identification-pattern.component.ts","./src/app/shared/components/admin/user/engineer/user-engineer.component.scss","./src/app/shared/components/admin/user/engineer/user-engineer.component.ts","./src/app/shared/components/admin/user/profile/user-profile.component.scss","./src/app/shared/components/admin/user/profile/user-profile.component.ts","./src/app/shared/components/admin/user/sites/user-sites.component.scss","./src/app/shared/components/admin/user/sites/user-sites.component.ts","./src/app/shared/components/admin/user/user.component.scss","./src/app/shared/components/admin/user/user.component.ts","./src/app/shared/components/alerts/edition/alerts-edition.component.scss","./src/app/shared/components/alerts/edition/alerts-edition.component.ts","./src/app/shared/components/alerts/edition/condition-builder/alerts-condition-builder.component.scss","./src/app/shared/components/alerts/edition/condition-builder/alerts-condition-builder.component.ts","./src/app/shared/components/alerts/management-filter/alerts-mgmt-filter.component.scss","./src/app/shared/components/alerts/management-filter/alerts-mgmt-filter.component.ts","./src/app/shared/components/alerts/management-table/alerts-mgmt-table.component.scss","./src/app/shared/components/alerts/management-table/alerts-mgmt-table.component.ts","./src/app/shared/components/analyse/axis-selection/axis-selection.component.scss","./src/app/shared/components/analyse/axis-selection/axis-selection.component.ts","./src/app/shared/components/analyse/statistics/statistics.component.scss","./src/app/shared/components/analyse/statistics/statistics.component.ts","./src/app/shared/components/bills/bill-verification.scss","./src/app/shared/components/bills/bills-control/bills-control-tabs/bills-control-tabs.component.scss","./src/app/shared/components/bills/bills-control/bills-control-tabs/bills-control-tabs.component.ts","./src/app/shared/components/bills/bills-control/completeness/bills-completeness-tab/bills-completeness-tab.component.scss","./src/app/shared/components/bills/bills-control/completeness/bills-completeness-tab/bills-completeness-tab.component.ts","./src/app/shared/components/bills/bills-control/completeness/bills-datepicker/bills-datepicker.component.scss","./src/app/shared/components/bills/bills-control/completeness/bills-datepicker/bills-datepicker.component.ts","./src/app/shared/components/bills/bills-control/completeness/bills-table-completeness/bills-table-completeness.component.scss","./src/app/shared/components/bills/bills-control/completeness/bills-table-completeness/bills-table-completeness.component.ts","./src/app/shared/components/bills/bills-control/completeness/bills-timeline/bills-timeline.component.scss","./src/app/shared/components/bills/bills-control/completeness/bills-timeline/bills-timeline.component.ts","./src/app/shared/components/bills/bills-control/completeness/completeness-data-tab/completeness-data-tab.component.scss","./src/app/shared/components/bills/bills-control/completeness/completeness-data-tab/completeness-data-tab.component.ts","./src/app/shared/components/bills/bills-control/completeness/completeness-data-tab/completeness-ranges.service.ts","./src/app/shared/components/bills/bills-control/control/bill-verifications/bill-verifications.component.scss","./src/app/shared/components/bills/bills-control/control/bill-verifications/bill-verifications.component.ts","./src/app/shared/components/bills/bills-control/control/bills-control-tab/bills-control-tab.component.scss","./src/app/shared/components/bills/bills-control/control/bills-control-tab/bills-control-tab.component.ts","./src/app/shared/components/bills/bills-control/control/bills-table-control/bills-table-control.component.scss","./src/app/shared/components/bills/bills-control/control/bills-table-control/bills-table-control.component.ts","./src/app/shared/components/bills/bills-control/control/recap-banner/bills-control-recap-banner.component.scss","./src/app/shared/components/bills/bills-control/control/recap-banner/bills-control-recap-banner.component.ts","./src/app/shared/components/bills/bills-management/bill-verification-pill/bill-verification-pill.component.scss","./src/app/shared/components/bills/bills-management/bill-verification-pill/bill-verification-pill.component.ts","./src/app/shared/components/bills/bills-management/bill-verification-popover/bill-verification-popover.component.scss","./src/app/shared/components/bills/bills-management/bill-verification-popover/bill-verification-popover.component.ts","./src/app/shared/components/bills/bills-management/bills-list/bills-list.component.scss","./src/app/shared/components/bills/bills-management/bills-list/bills-list.component.ts","./src/app/shared/components/campaigns/campaign-create/campaign-create.component.scss","./src/app/shared/components/campaigns/campaign-create/campaign-create.component.ts","./src/app/shared/components/campaigns/campaign-goal-recap/campaign-goal-recap.component.scss","./src/app/shared/components/campaigns/campaign-goal-recap/campaign-goal-recap.component.ts","./src/app/shared/components/campaigns/campaign-overview/campaign-overview.component.scss","./src/app/shared/components/campaigns/campaign-overview/campaign-overview.component.ts","./src/app/shared/components/campaigns/campaign-visualization/campaign-visualization.component.scss","./src/app/shared/components/campaigns/campaign-visualization/campaign-visualization.component.ts","./src/app/shared/components/campaigns/campaigns-nav/campaigns-nav.component.scss","./src/app/shared/components/campaigns/campaigns-nav/campaigns-nav.component.ts","./src/app/shared/components/cartography/data-search-list/data-search-list.component.scss","./src/app/shared/components/cartography/data-search-list/data-search-list.component.ts","./src/app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component.scss","./src/app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component.ts","./src/app/shared/components/charts/chart-bar/chart-bar.component.scss","./src/app/shared/components/charts/chart-bar/chart-bar.component.ts","./src/app/shared/components/charts/chart-doughnut-toggle/chart-doughnut-toggle.component.scss","./src/app/shared/components/charts/chart-doughnut-toggle/chart-doughnut-toggle.component.ts","./src/app/shared/components/charts/chart-doughnut/chart-doughnut.component.scss","./src/app/shared/components/charts/chart-doughnut/chart-doughnut.component.ts","./src/app/shared/components/charts/chart-heatmap/chart-heatmap.component.scss","./src/app/shared/components/charts/chart-heatmap/chart-heatmap.component.ts","./src/app/shared/components/charts/chart-line-toggle/chart-line-toggle.component.scss","./src/app/shared/components/charts/chart-line-toggle/chart-line-toggle.component.ts","./src/app/shared/components/charts/chart-line/chart-line.component.scss","./src/app/shared/components/charts/chart-line/chart-line.component.ts","./src/app/shared/components/charts/graph-bottom/graph-bottom.component.scss","./src/app/shared/components/charts/graph-bottom/graph-bottom.component.ts","./src/app/shared/components/charts/highchart-doughnut-toggle/highchart-doughnut-toggle.component.scss","./src/app/shared/components/charts/highchart-doughnut-toggle/highchart-doughnut-toggle.component.ts","./src/app/shared/components/charts/highchart-doughnut/highchart-doughnut.component.scss","./src/app/shared/components/charts/highchart-doughnut/highchart-doughnut.component.ts","./src/app/shared/components/charts/highchart-multilevel-pie-toggle/highchart-multilevel-pie-toggle.component.scss","./src/app/shared/components/charts/highchart-multilevel-pie-toggle/highchart-multilevel-pie-toggle.component.ts","./src/app/shared/components/charts/highchart-multilevel-pie/highchart-multilevel-pie.component.scss","./src/app/shared/components/charts/highchart-multilevel-pie/highchart-multilevel-pie.component.ts","./src/app/shared/components/charts/highchart-sankey-editable/highchart-sankey-editable.component.scss","./src/app/shared/components/charts/highchart-sankey-editable/highchart-sankey-editable.component.ts","./src/app/shared/components/charts/highchart-sankey/highchart-sankey.component.scss","./src/app/shared/components/charts/highchart-sankey/highchart-sankey.component.ts","./src/app/shared/components/charts/highchart-scatter-plot/highchart-scatter-plot.component.scss","./src/app/shared/components/charts/highchart-scatter-plot/highchart-scatter-plot.component.ts","./src/app/shared/components/common/component-bloc/component-bloc.component.scss","./src/app/shared/components/common/component-bloc/component-bloc.component.ts","./src/app/shared/components/common/date-range-picker/date-range-picker.component.scss","./src/app/shared/components/common/date-range-picker/date-range-picker.component.ts","./src/app/shared/components/common/dropdown-multilevel/dropdown-multilevel.component.scss","./src/app/shared/components/common/dropdown-multilevel/dropdown-multilevel.component.ts","./src/app/shared/components/common/filter/filter.component.scss","./src/app/shared/components/common/filter/filter.component.ts","./src/app/shared/components/common/full-filter/full-filter.component.scss","./src/app/shared/components/common/full-filter/full-filter.component.ts","./src/app/shared/components/common/loading-data/loading-data.component.scss","./src/app/shared/components/common/loading-data/loading-data.component.ts","./src/app/shared/components/common/map/map.component.scss","./src/app/shared/components/common/map/map.component.ts","./src/app/shared/components/common/modal/modal.component.scss","./src/app/shared/components/common/modal/modal.component.ts","./src/app/shared/components/common/nodata/no-data.component.scss","./src/app/shared/components/common/nodata/no-data.component.ts","./src/app/shared/components/common/popover/history/history-popover.component.scss","./src/app/shared/components/common/popover/history/history-popover.component.ts","./src/app/shared/components/common/progress-bar/progress-bar.component.scss","./src/app/shared/components/common/progress-bar/progress-bar.component.ts","./src/app/shared/components/common/simple-autocomplete/simple-autocomplete.component.scss","./src/app/shared/components/common/simple-autocomplete/simple-autocomplete.component.ts","./src/app/shared/components/common/simple-table/simple-table.component.scss","./src/app/shared/components/common/simple-table/simple-table.component.ts","./src/app/shared/components/common/toggle-buttons/toggle-buttons.component.scss","./src/app/shared/components/common/toggle-buttons/toggle-buttons.component.ts","./src/app/shared/components/common/tree-view-select/ga-treeview-i18n.ts","./src/app/shared/components/common/tree-view-select/tree-view-select.component.scss","./src/app/shared/components/common/tree-view-select/tree-view-select.component.ts","./src/app/shared/components/common/ultra-simple-autocomplete/ultra-simple-autocomplete.component.scss","./src/app/shared/components/common/ultra-simple-autocomplete/ultra-simple-autocomplete.component.ts","./src/app/shared/components/contracts/contract-edition/capacity-factor/capacity-factor.component.scss","./src/app/shared/components/contracts/contract-edition/capacity-factor/capacity-factor.component.ts","./src/app/shared/components/contracts/contract-edition/contract-edition.component.scss","./src/app/shared/components/contracts/contract-edition/contract-edition.component.ts","./src/app/shared/components/contracts/contract-edition/contract-edition.service.ts","./src/app/shared/components/contracts/contract-edition/dates-periodicity/dates-periodicity.component.scss","./src/app/shared/components/contracts/contract-edition/dates-periodicity/dates-periodicity.component.ts","./src/app/shared/components/contracts/contract-edition/pdl-pricings/pdl-pricings.component.scss","./src/app/shared/components/contracts/contract-edition/pdl-pricings/pdl-pricings.component.ts","./src/app/shared/components/contracts/contract-edition/pricings-common/pricings-common.component.scss","./src/app/shared/components/contracts/contract-edition/pricings-common/pricings-common.component.ts","./src/app/shared/components/contracts/contracts-table/contracts-table.component.scss","./src/app/shared/components/contracts/contracts-table/contracts-table.component.ts","./src/app/shared/components/data-tiles/tile-1/data-tile-1.component.scss","./src/app/shared/components/data-tiles/tile-1/data-tile-1.component.ts","./src/app/shared/components/data-tiles/tile-2/data-tile-2.component.scss","./src/app/shared/components/data-tiles/tile-2/data-tile-2.component.ts","./src/app/shared/components/data-tiles/tile-3/data-tile-3.component.scss","./src/app/shared/components/data-tiles/tile-3/data-tile-3.component.ts","./src/app/shared/components/data-tiles/tile-4/data-tile-4.component.scss","./src/app/shared/components/data-tiles/tile-4/data-tile-4.component.ts","./src/app/shared/components/data-tiles/tile-5/data-tile-5.component.scss","./src/app/shared/components/data-tiles/tile-5/data-tile-5.component.ts","./src/app/shared/components/export-button/export-button.component.scss","./src/app/shared/components/export-button/export-button.component.ts","./src/app/shared/components/filters/autocomplete-filter/autocomplete-filter.component.scss","./src/app/shared/components/filters/autocomplete-filter/autocomplete-filter.component.ts","./src/app/shared/components/filters/bills-contracts-filter/bills-contracts-filter.component.scss","./src/app/shared/components/filters/bills-contracts-filter/bills-contracts-filter.component.ts","./src/app/shared/components/filters/custom-filter/custom-filter.component.scss","./src/app/shared/components/filters/custom-filter/custom-filter.component.ts","./src/app/shared/components/filters/custom-filter/filter-sites-rules/filter-sites-rules.component.scss","./src/app/shared/components/filters/custom-filter/filter-sites-rules/filter-sites-rules.component.ts","./src/app/shared/components/filters/data-scope-filter-readonly/data-scope-filter-readonly.component.scss","./src/app/shared/components/filters/data-scope-filter-readonly/data-scope-filter-readonly.component.ts","./src/app/shared/components/filters/date-filter/date-filter.component.scss","./src/app/shared/components/filters/date-filter/date-filter.component.ts","./src/app/shared/components/filters/followup-filter/followup-filter.component.scss","./src/app/shared/components/filters/followup-filter/followup-filter.component.ts","./src/app/shared/components/filters/followup-filter/followup-filter.service.ts","./src/app/shared/components/filters/multiple-autocomplete-filter/multiple-autocomplete-filter.component.scss","./src/app/shared/components/filters/multiple-autocomplete-filter/multiple-autocomplete-filter.component.ts","./src/app/shared/components/filters/number-filter/number-filter.component.scss","./src/app/shared/components/filters/number-filter/number-filter.component.ts","./src/app/shared/components/filters/scope-filter/routing-reference/routing-reference-scope-filter.component.ts","./src/app/shared/components/filters/scope-filter/scope-filter.component.scss","./src/app/shared/components/filters/scope-filter/scope-filter.component.ts","./src/app/shared/components/filters/scope-filter/scope-filter.service.ts","./src/app/shared/components/filters/scope-filter/vehicle/vehicle-scope-filter.component.ts","./src/app/shared/components/filters/select-filter/select-filter.component.scss","./src/app/shared/components/filters/select-filter/select-filter.component.ts","./src/app/shared/components/filters/simple-tags/simple-tags.component.scss","./src/app/shared/components/filters/simple-tags/simple-tags.component.ts","./src/app/shared/components/filters/switch-bloc-filter/switch-bloc-filter.component.scss","./src/app/shared/components/filters/switch-bloc-filter/switch-bloc-filter.component.ts","./src/app/shared/components/filters/switch-filter/switch-filter.component.scss","./src/app/shared/components/filters/switch-filter/switch-filter.component.ts","./src/app/shared/components/filters/text-filter/text-filter.component.scss","./src/app/shared/components/filters/text-filter/text-filter.component.ts","./src/app/shared/components/legends/legend.component.scss","./src/app/shared/components/legends/legend.component.ts","./src/app/shared/components/load-curve/message-display/message-display.component.scss","./src/app/shared/components/load-curve/message-display/message-display.component.ts","./src/app/shared/components/load-curve/message-display/message-display.service.ts","./src/app/shared/components/modals/input-modal/input-modal.component.scss","./src/app/shared/components/modals/input-modal/input-modal.component.ts","./src/app/shared/components/modals/yes-no-modal/yes-no-modal.component.scss","./src/app/shared/components/modals/yes-no-modal/yes-no-modal.component.ts","./src/app/shared/components/ng2-charts/ng2-charts-bar.component.ts","./src/app/shared/components/ng2-charts/ng2-charts-doughnut.component.ts","./src/app/shared/components/ng2-charts/ng2-charts-line.component.ts","./src/app/shared/components/operating-monitoring/monitoring-companies-select/monitoring-companies-select.component.scss","./src/app/shared/components/operating-monitoring/monitoring-companies-select/monitoring-companies-select.component.ts","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-contract/monitoring-costs.service.ts","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-contract/monitoring-edition-contract.component.scss","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-contract/monitoring-edition-contract.component.ts","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-scope/monitoring-edition-scope.component.scss","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-scope/monitoring-edition-scope.component.ts","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-source/monitoring-edition-source.component.scss","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-source/monitoring-edition-source.component.ts","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition.component.scss","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition.component.ts","./src/app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition.service.ts","./src/app/shared/components/operating-monitoring/monitoring-graphs/monitoring-graphs.component.scss","./src/app/shared/components/operating-monitoring/monitoring-graphs/monitoring-graphs.component.ts","./src/app/shared/components/operating-monitoring/monitoring-header/monitoring-header.component.scss","./src/app/shared/components/operating-monitoring/monitoring-header/monitoring-header.component.ts","./src/app/shared/components/operating-monitoring/monitoring-keyfigures/monitoring-keyfigures.component.scss","./src/app/shared/components/operating-monitoring/monitoring-keyfigures/monitoring-keyfigures.component.ts","./src/app/shared/components/operating-monitoring/monitoring-list/monitoring-list.component.scss","./src/app/shared/components/operating-monitoring/monitoring-list/monitoring-list.component.ts","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-add-meter/monitoring-add-meter.component.scss","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-add-meter/monitoring-add-meter.component.ts","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-add-reading/monitoring-add-reading.component.scss","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-add-reading/monitoring-add-reading.component.ts","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-readings.component.scss","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-readings.component.ts","./src/app/shared/components/operating-monitoring/monitoring-readings/monitoring-readings.service.ts","./src/app/shared/components/operating-monitoring/monitoring-resume/monitoring-resume.component.scss","./src/app/shared/components/operating-monitoring/monitoring-resume/monitoring-resume.component.ts","./src/app/shared/components/operating-monitoring/operating-monitoring.interface.ts","./src/app/shared/components/operating-monitoring/operating-monitoring.service.ts","./src/app/shared/components/other/card-key-figures/grid-key-figures.component.scss","./src/app/shared/components/other/card-key-figures/grid-key-figures.component.ts","./src/app/shared/components/other/card-key-figures/key-figure.component.scss","./src/app/shared/components/other/card-key-figures/key-figure.component.ts","./src/app/shared/components/other/card-key-figures/key-figure.model.ts","./src/app/shared/components/other/timeline/timeline.component.scss","./src/app/shared/components/other/timeline/timeline.component.ts","./src/app/shared/components/other/user-tile/user-tile.component.scss","./src/app/shared/components/other/user-tile/user-tile.component.ts","./src/app/shared/components/pagination/back/pagination-back.component.ts","./src/app/shared/components/pagination/back/pagination-back.service.ts","./src/app/shared/components/pagination/front/pagination-front.component.ts","./src/app/shared/components/pagination/front/pagination-front.service.ts","./src/app/shared/components/pagination/pagination.component.scss","./src/app/shared/components/pattern-fix/pattern-fix-table/pattern-fix-table.component.scss","./src/app/shared/components/pattern-fix/pattern-fix-table/pattern-fix-table.component.ts","./src/app/shared/components/pattern-fix/upload-fix-table/upload-fix-table.component.scss","./src/app/shared/components/pattern-fix/upload-fix-table/upload-fix-table.component.ts","./src/app/shared/components/pdl/bloc-contract/bloc-contract.component.scss","./src/app/shared/components/pdl/bloc-contract/bloc-contract.component.ts","./src/app/shared/components/pdl/pdl-data-site-top/pdl-communicating-icon/pdl-communicating-icon.component.scss","./src/app/shared/components/pdl/pdl-data-site-top/pdl-communicating-icon/pdl-communicating-icon.component.ts","./src/app/shared/components/pdl/pdl-data-site-top/pdl-communicating.interface.ts","./src/app/shared/components/pdl/pdl-data-site-top/pdl-communicating.service.ts","./src/app/shared/components/pdl/pdl-data-site-top/pdl-contractual-data/pdl-contractual-data.component.scss","./src/app/shared/components/pdl/pdl-data-site-top/pdl-contractual-data/pdl-contractual-data.component.ts","./src/app/shared/components/pdl/pdl-data-site-top/pdl-contractual-data/pdl-contractual-data.service.ts","./src/app/shared/components/pdl/pdl-data-site-top/pdl-data-site-top.component.scss","./src/app/shared/components/pdl/pdl-data-site-top/pdl-data-site-top.component.ts","./src/app/shared/components/pdl/pdl-data-table-site/pdl-data-table-site.component.scss","./src/app/shared/components/pdl/pdl-data-table-site/pdl-data-table-site.component.ts","./src/app/shared/components/pdl/pdl-data-table/pdl-data-table.component.scss","./src/app/shared/components/pdl/pdl-data-table/pdl-data-table.component.ts","./src/app/shared/components/pdl/pdl-table/pdl-table.component.scss","./src/app/shared/components/pdl/pdl-table/pdl-table.component.ts","./src/app/shared/components/regex/not-find-table/not-find-table.component.scss","./src/app/shared/components/regex/not-find-table/not-find-table.component.ts","./src/app/shared/components/regex/pattern-table/pattern-table.component.scss","./src/app/shared/components/regex/pattern-table/pattern-table.component.ts","./src/app/shared/components/regex/patterns-properties-table/patterns-properties-table.component.scss","./src/app/shared/components/regex/patterns-properties-table/patterns-properties-table.component.ts","./src/app/shared/components/regex/recap-files/recap-files.component.scss","./src/app/shared/components/regex/recap-files/recap-files.component.ts","./src/app/shared/components/sites/add-material/add-material.component.scss","./src/app/shared/components/sites/add-material/add-material.component.ts","./src/app/shared/components/sites/basic-information-form/basic-information-form.component.scss","./src/app/shared/components/sites/basic-information-form/basic-information-form.component.ts","./src/app/shared/components/sites/bloc-adress/bloc-adress.component.scss","./src/app/shared/components/sites/bloc-adress/bloc-adress.component.ts","./src/app/shared/components/sites/distribution-key/distribution-key.component.scss","./src/app/shared/components/sites/distribution-key/distribution-key.component.ts","./src/app/shared/components/sites/general-informations/general-informations.component.scss","./src/app/shared/components/sites/general-informations/general-informations.component.ts","./src/app/shared/components/sites/informations/site-informations.component.scss","./src/app/shared/components/sites/informations/site-informations.component.ts","./src/app/shared/components/sites/legacy-data/legacy-data.component.scss","./src/app/shared/components/sites/legacy-data/legacy-data.component.ts","./src/app/shared/components/sites/list-drag-n-drop/list-drag-n-drop.component.scss","./src/app/shared/components/sites/list-drag-n-drop/list-drag-n-drop.component.ts","./src/app/shared/components/sites/pdl-list/pdl-list.component.scss","./src/app/shared/components/sites/pdl-list/pdl-list.component.ts","./src/app/shared/components/sites/properties/site-properties.component.scss","./src/app/shared/components/sites/properties/site-properties.component.ts","./src/app/shared/components/sites/questions/file-upload/file-upload.component.scss","./src/app/shared/components/sites/questions/file-upload/file-upload.component.ts","./src/app/shared/components/sites/questions/group-collapse/group-collapse.component.scss","./src/app/shared/components/sites/questions/group-collapse/group-collapse.component.ts","./src/app/shared/components/sites/questions/input-text-multiple/input-text-multiple.component.scss","./src/app/shared/components/sites/questions/input-text-multiple/input-text-multiple.component.ts","./src/app/shared/components/sites/questions/input-text/input-text.component.scss","./src/app/shared/components/sites/questions/input-text/input-text.component.ts","./src/app/shared/components/sites/questions/modal/modal.component.scss","./src/app/shared/components/sites/questions/modal/modal.component.ts","./src/app/shared/components/sites/questions/question/question.component.scss","./src/app/shared/components/sites/questions/question/question.component.ts","./src/app/shared/components/sites/questions/select-choices-bloc/select-choices-bloc.component.scss","./src/app/shared/components/sites/questions/select-choices-bloc/select-choices-bloc.component.ts","./src/app/shared/components/sites/questions/select-choices-input/select-choices-input.component.scss","./src/app/shared/components/sites/questions/select-choices-input/select-choices-input.component.ts","./src/app/shared/components/sites/questions/select-choices/select-choices.component.scss","./src/app/shared/components/sites/questions/select-choices/select-choices.component.ts","./src/app/shared/components/sites/questions/select-dropdown/select-dropdown.component.scss","./src/app/shared/components/sites/questions/select-dropdown/select-dropdown.component.ts","./src/app/shared/components/sites/select-pdls/select-pdls.component.scss","./src/app/shared/components/sites/select-pdls/select-pdls.component.ts","./src/app/shared/components/sites/sites-pdls-list/sites-fluids-list.component.scss","./src/app/shared/components/sites/sites-pdls-list/sites-fluids-list.component.ts","./src/app/shared/components/sites/zone/site-zone.component.scss","./src/app/shared/components/sites/zone/site-zone.component.ts","./src/app/shared/components/upload/upload-files-tile/upload-files-tile.component.scss","./src/app/shared/components/upload/upload-files-tile/upload-files-tile.component.ts","./src/app/shared/components/upload/upload-files/upload-files.component.scss","./src/app/shared/components/upload/upload-files/upload-files.component.ts","./src/app/shared/components/upload/upload-list/upload-list.component.scss","./src/app/shared/components/upload/upload-list/upload-list.component.ts","./src/app/shared/components/upload/upload-report/upload-report.component.scss","./src/app/shared/components/upload/upload-report/upload-report.component.ts","./src/app/shared/components/vehicles/edit/vehicle-edit.component.scss","./src/app/shared/components/vehicles/edit/vehicle-edit.component.ts","./src/app/shared/constants/company-roles-list.constants.ts","./src/app/shared/constants/extract-error-list.constants.ts","./src/app/shared/constants/manager-types-list.constants.ts","./src/app/shared/constants/material-types.constants.ts","./src/app/shared/constants/upload-error-list.constants.ts","./src/app/shared/constants/upload-state-list.constants.ts","./src/app/shared/constants/user-types-list.constants.ts","./src/app/shared/directives/feature-toggle.directive.ts","./src/app/shared/directives/list-panel.directive.ts","./src/app/shared/directives/nav-dropdown-toggle.directive.ts","./src/app/shared/directives/nav-dropdown.directive.ts","./src/app/shared/directives/off-click.directive.ts","./src/app/shared/directives/scrollbar.directive.ts","./src/app/shared/models/animations.ts","./src/app/shared/models/contractual-data.interface.ts","./src/app/shared/models/external-providers.interface.ts","./src/app/shared/models/filter-config.interface.ts","./src/app/shared/models/upload-file.interface.ts","./src/app/shared/pipes/format-date.pipe.ts","./src/app/shared/pipes/format-file-size.pipe.ts","./src/app/shared/pipes/format-number-unit.pipe.ts","./src/app/shared/pipes/format-number.pipe.ts","./src/app/shared/pipes/get-stack-message.pipe.ts","./src/app/shared/pipes/order-by.pipe.ts","./src/app/shared/pipes/pdl-filter.pipe.ts","./src/app/shared/pipes/pipes.module.ts","./src/app/shared/pipes/remove-file-extension.pipe.ts","./src/app/shared/pipes/title-case.pipe.ts","./src/app/shared/pipes/translate.pipe.ts","./src/app/shared/pipes/truncate.pipe.ts","./src/app/shared/pipes/user-filter.pipe.ts","./src/app/shared/services/alerts/alerts.service.ts","./src/app/shared/services/analytics/analytics-configuration.ts","./src/app/shared/services/analytics/analytics.module.ts","./src/app/shared/services/analytics/analytics.service.ts","./src/app/shared/services/analytics/google-analytics/build-gtm-js-url.ts","./src/app/shared/services/analytics/google-analytics/google-analytics.service.ts","./src/app/shared/services/analytics/google-analytics/load-google-analytics.ts","./src/app/shared/services/analytics/hotjar/build-hotjar-js-url.ts","./src/app/shared/services/analytics/hotjar/hotjar.service.ts","./src/app/shared/services/analytics/hotjar/load-hotjar.ts","./src/app/shared/services/api/api.service.ts","./src/app/shared/services/api/error.interceptor.ts","./src/app/shared/services/bills-list/bills-list.service.ts","./src/app/shared/services/bills/bills-completeness.service.ts","./src/app/shared/services/bills/bills-control.service.ts","./src/app/shared/services/bills/bills-verifications.service.ts","./src/app/shared/services/bills/bills.service.ts","./src/app/shared/services/campaigns/campaigns.service.ts","./src/app/shared/services/chart/chart.service.ts","./src/app/shared/services/color/color.service.ts","./src/app/shared/services/companies/companies.service.ts","./src/app/shared/services/completeness/completeness.service.ts","./src/app/shared/services/config/config.service.ts","./src/app/shared/services/contracts/contracts.service.ts","./src/app/shared/services/contractual-data/contractual-data.service.ts","./src/app/shared/services/contractual-data/index.ts","./src/app/shared/services/dju/dju.service.ts","./src/app/shared/services/energy/energy-data.service.ts","./src/app/shared/services/energy/energy.service.ts","./src/app/shared/services/export/export.service.ts","./src/app/shared/services/external-data/external-data.service.ts","./src/app/shared/services/external-providers/external-providers.service.ts","./src/app/shared/services/feature-toggle/feature-toggle.service.ts","./src/app/shared/services/files/file-storage.service.ts","./src/app/shared/services/files/files-type.service.ts","./src/app/shared/services/files/upload.service.ts","./src/app/shared/services/filter/filter.service.ts","./src/app/shared/services/forms/validators.ts","./src/app/shared/services/guards/access-guard.service.ts","./src/app/shared/services/guards/auth-guard.service.ts","./src/app/shared/services/guards/can-deactivate-guard.service.ts","./src/app/shared/services/identification-pattern/identification-pattern.service.ts","./src/app/shared/services/key-data/key-data.service.ts","./src/app/shared/services/load-curve/load-curve.service.ts","./src/app/shared/services/map/map.service.ts","./src/app/shared/services/meteo/meteo.service.ts","./src/app/shared/services/notifications/notifications.service.ts","./src/app/shared/services/page/page.service.ts","./src/app/shared/services/pattern/pattern.service.ts","./src/app/shared/services/preloader/preloader.service.ts","./src/app/shared/services/profiles/profiles.service.ts","./src/app/shared/services/regex/regex.service.ts","./src/app/shared/services/rights/rights.service.ts","./src/app/shared/services/routing-references/routing-references.service.ts","./src/app/shared/services/schedules/schedules.service.ts","./src/app/shared/services/services.module.ts","./src/app/shared/services/session/session.service.ts","./src/app/shared/services/session/user-session.service.ts","./src/app/shared/services/sites/legacy.service.ts","./src/app/shared/services/sites/properties.service.ts","./src/app/shared/services/sites/question.service.ts","./src/app/shared/services/sites/sites.service.ts","./src/app/shared/services/sort/sort-filter/sort-filter.service.ts","./src/app/shared/services/sort/sort.service.ts","./src/app/shared/services/spinner/spinner.service.ts","./src/app/shared/services/themes/themes.service.ts","./src/app/shared/services/tiles/tiles.service.ts","./src/app/shared/services/title/title.service.ts","./src/app/shared/services/translate/translate.service.ts","./src/app/shared/services/users/engineer.service.ts","./src/app/shared/services/users/users.service.ts","./src/app/shared/services/utils/text.service.ts","./src/app/shared/services/utils/utils.service.ts","./src/app/shared/services/vehicles/fuelCards.service.ts","./src/app/shared/services/vehicles/vehicles.service.ts","./src/app/shared/services/warrants/warrant.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/styles/navigation.scss","./src/app/shared/styles/themes/theme-a.scss","./src/app/shared/styles/themes/theme-b.scss","./src/app/shared/styles/themes/theme-c.scss","./src/app/shared/styles/themes/theme-d.scss","./src/app/shared/styles/themes/theme-e.scss","./src/app/shared/styles/themes/theme-f.scss","./src/app/shared/styles/themes/theme-g.scss","./src/app/shared/styles/themes/theme-h.scss","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,wE;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mG;;;;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","var map = {\n\t\"./af\": \"./node_modules/chart.js/node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/chart.js/node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/chart.js/node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/chart.js/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/chart.js/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/chart.js/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/chart.js/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/chart.js/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/chart.js/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/chart.js/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/chart.js/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/chart.js/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/chart.js/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/chart.js/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/chart.js/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/chart.js/node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/chart.js/node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/chart.js/node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/chart.js/node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/chart.js/node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/chart.js/node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/chart.js/node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/chart.js/node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/chart.js/node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/chart.js/node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/chart.js/node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/chart.js/node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/chart.js/node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/chart.js/node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/chart.js/node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/chart.js/node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/chart.js/node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/chart.js/node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/chart.js/node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/chart.js/node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/chart.js/node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/chart.js/node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/chart.js/node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/chart.js/node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/chart.js/node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/chart.js/node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/chart.js/node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/chart.js/node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/chart.js/node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/chart.js/node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/chart.js/node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/chart.js/node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/chart.js/node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/chart.js/node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/chart.js/node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/chart.js/node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/chart.js/node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/chart.js/node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/chart.js/node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/chart.js/node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/chart.js/node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/chart.js/node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/chart.js/node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/chart.js/node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/chart.js/node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/chart.js/node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/chart.js/node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/chart.js/node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/chart.js/node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/chart.js/node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/chart.js/node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/chart.js/node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/chart.js/node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/chart.js/node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/chart.js/node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/chart.js/node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/chart.js/node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/chart.js/node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/chart.js/node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/chart.js/node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/chart.js/node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/chart.js/node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/chart.js/node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/chart.js/node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/chart.js/node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/chart.js/node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/chart.js/node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/chart.js/node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/chart.js/node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/chart.js/node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/chart.js/node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/chart.js/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/chart.js/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/chart.js/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/chart.js/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/chart.js/node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/chart.js/node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/chart.js/node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/chart.js/node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/chart.js/node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/chart.js/node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/chart.js/node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/chart.js/node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/chart.js/node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/chart.js/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/chart.js/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/chart.js/node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/chart.js/node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/chart.js/node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/chart.js/node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/chart.js/node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/chart.js/node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/chart.js/node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/chart.js/node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/chart.js/node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/chart.js/node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/chart.js/node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/chart.js/node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/chart.js/node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/chart.js/node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/chart.js/node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/chart.js/node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/chart.js/node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/chart.js/node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/chart.js/node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/chart.js/node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/chart.js/node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/chart.js/node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/chart.js/node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/chart.js/node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/chart.js/node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/chart.js/node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/chart.js/node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/chart.js/node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/chart.js/node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/chart.js/node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/chart.js/node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/chart.js/node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/chart.js/node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/chart.js/node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/chart.js/node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/chart.js/node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/chart.js/node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/chart.js/node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/chart.js/node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/chart.js/node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/chart.js/node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/chart.js/node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/chart.js/node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/chart.js/node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/chart.js/node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/chart.js/node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/chart.js/node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/chart.js/node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/chart.js/node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/chart.js/node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/chart.js/node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/chart.js/node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/chart.js/node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/chart.js/node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/chart.js/node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/chart.js/node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/chart.js/node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/chart.js/node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/chart.js/node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/chart.js/node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/chart.js/node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/chart.js/node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/chart.js/node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/chart.js/node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/chart.js/node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/chart.js/node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/chart.js/node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/chart.js/node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/chart.js/node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/chart.js/node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/chart.js/node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/chart.js/node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/chart.js/node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/chart.js/node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/chart.js/node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/chart.js/node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/chart.js/node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/chart.js/node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/chart.js/node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/chart.js/node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/chart.js/node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/chart.js/node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/chart.js/node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/chart.js/node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/chart.js/node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/chart.js/node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/chart.js/node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/chart.js/node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/chart.js/node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/chart.js/node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/chart.js/node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/chart.js/node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/chart.js/node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/chart.js/node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/chart.js/node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/chart.js/node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/chart.js/node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/chart.js/node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/chart.js/node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/chart.js/node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/chart.js/node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/chart.js/node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/chart.js/node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/chart.js/node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/chart.js/node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/chart.js/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/chart.js/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/chart.js/node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/chart.js/node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/chart.js/node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/chart.js/node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/chart.js/node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/chart.js/node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/chart.js/node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/chart.js/node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/chart.js/node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/chart.js/node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/chart.js/node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/chart.js/node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/chart.js/node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/chart.js/node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/chart.js/node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/chart.js/node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/chart.js/node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/chart.js/node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/chart.js/node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/chart.js/node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/chart.js/node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/chart.js/node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/chart.js/node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/chart.js/node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/chart.js/node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/chart.js/node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/chart.js/node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/chart.js/node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/chart.js/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/chart.js/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/chart.js/node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/chart.js/node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/chart.js/node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/chart.js/node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/chart.js/node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/chart.js/node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/chart.js/node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/chart.js/node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/chart.js/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/chart.js/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/chart.js/node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/chart.js/node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/chart.js/node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/chart.js/node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/chart.js/node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/chart.js/node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/chart.js/node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/chart.js/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/chart.js/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/chart.js/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/chart.js/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/chart.js/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/chart.js/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/chart.js/node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/chart.js/node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/chart.js/node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-SG\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-SG.js\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","export default \"\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
Citron® - 2020 {{ versionString }}
\\n
\\n
\\n
\\n\"","export default \"
\\n \\n\\n
\\n \\n \\n\\n \\n \\n
\\n\\n \\n
\\n\"","export default \"\\n\"","export default \"\\n\"","export default \"
\\n \\n \\\"\\\"\\n\\n

404

\\n

Vous êtes tombé sur un pépin !

\\n\\n Retour à l'accueil\\n
\\n
\\n\"","export default \"
\\n
\\n \\n \\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n
\\n\"","export default \"
\\n \\n \\n \\n \\n
\\n\"","export default \"
\\n
\\n \\n \\n\\n \\n \\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n

{{ 'alert_setup' | translate }}

\\n \\n ×\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n\"","export default \"
\\n \\n \\n\\n \\n \\n \\n\\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n\\n \\n \\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n\\n \\n
\\n \\n \\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n \\n\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n
\\n\\n \\n \\n \\n\\n \\n
\\n
Mise en forme
\\n \\n \\n \\n \\n \\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n\\n \\n \\n\\n \\n\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
\\n Pour toute information ou étude complémentaire, contactez votre Energy-Manager !\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n\"","export default \"
\\n \\n
\\n\"","export default \"
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n \\n
\\n\\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n\\n \\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n \\n
\\n \\n
\\n \\n\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n {{ 'delete_group' | translate }}\\n \\n \\n {{ 're_extract' | translate }}\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n \\n\\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n
\\n \\n {{ 'extract_selection' | translate }}\\n \\n \\n {{ 'force_quality' | translate }}\\n \\n
\\n \\n\\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n\\n \\n\\n \\n \\n\\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n {{ 'dju_search_address_instruction' | translate }}\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
{{ 'address_found' | translate }}
\\n
{{ locationAddressDisplay }}
\\n
{{ 'address_not_found' | translate }}
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
{{ 'station_found' | translate }}
\\n
{{ station.name }}
\\n
{{ 'station_not_found' | translate }}
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n {{ 'date_range_available' | translate }}\\n
\\n
\\n {{ datesAvailable.start | formatDate }} - {{ datesAvailable.end | formatDate }}\\n
\\n
\\n {{ 'date_range_not_available' | translate }}\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n {{ 'dju_search_address_instruction' | translate }}\\n
\\n \\n
\\n
\\n
{{ 'start_date' | translate }}
\\n
\\n \\n
\\n
\\n
\\n
{{ 'end_date' | translate }}
\\n
\\n \\n
\\n
\\n
\\n
{{ 'dju_group_type' | translate }}
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n\"","export default \"
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n Résultats de recherche pour : {{ searchQuery }}\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n Nom\\n Type\\n Taille\\n Ajouté Par\\n Dernière Modification\\n \\n \\n \\n \\n \\n {{ item.originalname }}\\n {{ getFileType(item) }}\\n {{ getFileSize(item) }}\\n {{ getFileUsername(item) | titlecaseGA }}\\n {{ getUpdatedDate(item) }}\\n \\n \\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
{{ selectedItem.originalname }}
\\n
\\n
\\n
\\n \\n
\\n
\\n
Tags
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
Relations
\\n \\n
\\n
\\n
Sites
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
Contrats
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
Veuillez séléctionner un élément
\\n
\\n
\\n
\\n
\\n \\n \\n \\n\\n\"","export default \"
\\n \\n \\n\\n \\n \\n \\n\\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n
\\n \\n
\\n \\n\\n \\n\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n
\\n\\n \\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n\"","export default \"
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n

\\n \\n {{ 'routing_references_sites' | translate }}\\n

\\n \\n
\\n \\n
\\n

\\n {{ 'available_data' | translate }} :\\n

\\n

\\n {{ dateRangeLimit.minDate | formatDate }} -\\n {{ dateRangeLimit.maxDate | formatDate }}\\n

\\n
\\n
\\n

{{ 'no_available_data' | translate }}

\\n
\\n
\\n \\n
\\n
\\n
\\n

\\n \\n {{ 'period' | translate }} \\n \\n - {{ dateRangeDaysCount }} {{ dateRangeDaysKey | translate }}\\n \\n

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n {{ 'load_curve_stack_display' | translate }}\\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n
\\n Les PDLs sélectionnés ont des pas de mesures différents (top 10 ou top 30). Citron®\\n propose donc un affichage cumulé en calculant la moyenne des valeurs disponibles\\n afin d’obtenir un pas uniforme. Dans le cas d’un affichage non cumulé, les mesures\\n sont restituées avec le pas d’origine.\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n
{{ texts.error }}
\\n
{{ texts.warning }}
\\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n \\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n\\n \\n \\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n\\n \\n \\n \\n
\\n\\n
\\n \\n \\n\\n \\n\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n\\n \\n \\n\\n \\n
\\n \\n \\n
\\n \\n
\\n\\n \\n
\\n \\n \\n\\n \\n \\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n \\n \\n\\n \\n\\n
\\n \\n \\n
\\n \\n
\\n\\n \\n
\\n \\n \\n\\n \\n\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n\\n \\n\\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n\\n \\n \\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n \\n\\n \\n \\n \\n
\\n\\n
\\n \\n \\n\\n \\n\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n \\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n\\n \\n \\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n\\n \\n \\n \\n
\\n\\n
\\n \\n \\n\\n \\n\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n\\n \\n \\n\\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n\\n \\n \\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n\\n \\n \\n \\n
\\n\\n
\\n \\n \\n\\n \\n\\n \\n \\n \\n
\\n\\n
\\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n \\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n {{ site.complement || 'NC' }}\\n
\\n\\n
\\n
\\n
{{ getAddressToDisplay(site) }}
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
\\n \\n Etat du site\\n
\\n
\\n \\n {{ routingReferenceStatusText }}\\n \\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
{{ routingReferences.length }} PDL
\\n
Points de livraison
\\n
\\n
\\n\\n
\\n
\\n\\n
\\n
{{ siteProfileCompletion | number: '.0-0' }} %
\\n
du profil est complété
\\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n {{ siteLegacyDataCompletion | number: '.0-0' }} %\\n
\\n
des données patrimoniales complétées
\\n
\\n
\\n
\\n\\n \\n
\\n {{ 'followup_temporal' | translate }}\\n \\n {{ 'load_curve' | translate }}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n {{ getAddressToDisplay(site) }}\\n
\\n \\n \\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n
\\n\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n \\n
\\n
\\n
\\n Ajouter une zone\\n
\\n
\\n \\n
\\n {{ zone.name }}\\n
\\n
\\n \\n\\n \\n
\\n
\\n Profil de la zone\\n
\\n\\n \\n \\n \\n\\n \\n
\\n Données Patrimoniales\\n
\\n\\n
\\n
\\n
\\n

\\n {{ legacyWarningMessage }}\\n

\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n
\\n PDLs de la zone\\n
\\n\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n Supprimer la zone\\n \\n
\\n \\n
\\n
\\n
\\n\\n \\n \\n
\\n
\\n
\\n

\\n {{ legacyWarningMessage }}\\n

\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n

Erreur lors du chargement des données du site

\\n
\\n \\n\\n\"","export default \"
\\n \\n \\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n \\n
\\n
\\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n \\n
\\n\\n \\n \\n \\n \\n\\n
\\n \\n
\\n\\n \\n \\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n\\n
\\n \\n Retour\\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n {{ 'pattern_disabled' | translate }}\\n
\\n
\\n \\n \\n \\n Retour\\n \\n\\n \\n\\n \\n
\\n\\n \\n \\n\\n
\\n \\n MAJ du pattern\\n \\n\\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n\\n \\n
\\n \\n \\n\\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n
\\n\\n
\\n \\n \\n \\n \\n \\n\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n \\n \\n \\n\\n \\n\\n
\\n \\n
\\n
\\n\\n \\n \\n \\n\\n \\n\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n \\n
\\n\\n \\n \\n
\\n {{ instructionText }}\\n
\\n \\n
\\n \\n
\\n {{ instructionText }}\\n
\\n
\\n \\n\\n
\\n
    \\n \\n
  • \\n
\\n
\\n \\n {{ 'password_min_char' | translate }}\\n
\\n \\n {{ 'password_required' | translate }}\\n
\\n \\n {{ 'password_conformity_rules' | translate }}\\n\\n
\\n - {{ getDescOfPrerequisite(prerequisite) }}\\n
\\n
\\n
\\n
\\n \\n \\n {{ 'password_not_matching' | translate }}\\n
\\n \\n {{ 'password_required' | translate }}\\n \\n \\n \\n
\\n {{ apiError }}\\n
\\n \\n \\n
\\n {{ 'password_changed_success' | translate }}\\n
\\n \\n
\\n \\n \\n \\n\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n\"","export default \"\\n\\n\"","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
N° de la procédureConsommation annuelle de gaz/d'électricité pour un bénéficiaireFormule Electron LibreFormule Electron +
{{ procedure.name }}{{ getConsommationText(procedure) }}{{ procedure.priceLibre.toLocaleString() }}€ / année d'exécution{{ procedure.pricePlus.toLocaleString() }}€ / année d'exécution
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n

\\n {{ getSiteName(selectedSite) }}\\n

\\n

\\n {{ getSiteAddress(selectedSite) }} {{ getSiteCity(selectedSite) }}\\n

\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
AnnéeConsommation annuelleFluideFormule Electron LibreFormule Electron +Statut du montant
{{ consoYearFluid.year }}{{ formatConsumption(consoYearFluid) }}{{ getFluidDisplayName(consoYearFluid.energyType) }}{{ getElectronLibrePrice(consoYearFluid) }}{{ getElectronPlusPrice(consoYearFluid) }}{{ consoYearFluid.statut }}
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n\\n \\n \\n \\n\\n\\n\\n\\n \\n \\n \\n\\n\"","export default \"
\\n \\n \\n\\n \\n \\n \\n\\n \\n
\\n
\\n \\n \\n
\\n \\n\\n \\n\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n \\n
\\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n
\\n\\n \\n \\n
\\n \\n\\n \\n\\n \\n \\n
\\n \\n
\\n\"","export default \"
\\n \\n \\n\\n \\n \\n \\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n\\n\"","export default \"
\\n
\\n \\n
\\n
\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n 0 && !isLoading\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n {{ displayNbUsersSelected() }}\\n
{{ 'name' | translate }}{{ 'state' | translate }}{{ 'company' | translate }}{{ 'job' | translate }}
\\n \\n
\\n \\n
\\n \\n \\n \\n \\\"\\\"\\n \\n \\n {{ getUserName(user.firstname, user.name) }}\\n \\n \\n \\n {{ getStatusText(user.active) }}\\n \\n \\n
\\n \\n {{ getCompaniesText(user) }}\\n \\n \\n
\\n
\\n \\n {{ user.position }}\\n \\n \\n \\n
\\n\\n\\n
\\n
{{ company }}
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n {{ getNameCapitalized(tab.name) }}\\n
\\n
\\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n\\n \\n
\\n \\n
\\n\\n \\n
\\n \\n
\\n\\n \\n
\\n \\n
\\n\\n \\n
\\n \\n
\\n\\n \\n
\\n \\n
\\n\\n \\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n\\n \\n\\n \\n
\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n\\n
\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
PrénomNomMailFonctionTéléphone
{{ contact.firstname | titlecaseGA }}{{ contact.name.toUpperCase() }}{{ contact.mail }}{{ contact.position }}{{ contact.phone }}\\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n \\n
\\n
\\n \\n
\\n
Services de données
\\n
\\n
\\n \\n \\n {{ provider.name }}\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
Sélection de données à affecter
\\n
\\n \\n
\\n
\\n \\n \\n
\\n\\n \\n
\\n \\n
\\n
Sites, zones et PDL existants
\\n
\\n
\\n
\\n Afficher la liste des\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n
{{ getEntityTitle(entity) }}
\\n
\\n
\\n
{{ getEntitySubtitle(entity) }}
\\n
\\n
\\n
\\n {{ getEntityAddressRoot(entity).streetNumber }}\\n {{ getEntityAddressRoot(entity).streetName }}\\n
\\n
\\n {{ getEntityAddressRoot(entity).zipcode }}\\n {{ getEntityAddressRoot(entity).city }}\\n
\\n
\\n
\\n \\n \\n
\\n {{ entityDisplayInfo[entity._id][fluid.value].count }}\\n
\\n
\\n
\\n
\\n \\n \\n\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
Période d'affectation
\\n
\\n
\\n
Pas de site / zone / PDL sélectionné(e)
\\n
\\n \\n
\\n
\\n {{ getEntitySelectedProperty('title') }}\\n
\\n
\\n > {{ getEntitySelectedProperty('subtitle') }}\\n
\\n
\\n {{ getEntitySelectedAddressProperty('streetNumber') }}\\n {{ getEntitySelectedAddressProperty('streetName') }}\\n
\\n
\\n {{ getEntitySelectedAddressProperty('zipcode') }} {{ getEntitySelectedAddressProperty('city') }}\\n
\\n
\\n \\n
\\n
\\n

{{ errorMessage }}

\\n
\\n
\\n\\n
\\n
\\n Liste des données affectées :\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ externalData.title }}\\n
\\n
\\n {{ externalData.startDate | formatDate }} -\\n {{ externalData.endDate | formatDate }}\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n\\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n

{{ 'entity_without_enedis_warrant' | translate }}

\\n
\\n
\\n
\\n\"","export default \"
\\n
{{ 'loadcurve_config_perimeter' | translate }}
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n Liste des PDLs
\\n ({{ nbSelected }}{{ nbUpdated | lowercase }})\\n
{{ 'loadcurve_config_warrant_authorization' | translate }}{{ 'loadcurve_config_contractual_data' | translate }}{{ 'loadcurve_config_load_curve' | translate }}{{ 'loadcurve_config_siret' | translate }}
\\n {{ 'select_all' | translate }}\\n \\n \\n \\n \\n \\n \\n \\n
\\n {{ rRef.reference }}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n {{ 'loadcurve_config_update_on' | translate }}\\n {{ updateDay.value }}\\n \\n \\n \\n \\n \\n {{ 'loadcurve_config_of_month' | translate }}\\n \\n \\n {{ 'save' | translate }}\\n \\n \\n \\n {{ 'loadcurve_config_no_update' | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
{{ 'warrant' | translate }}
\\n
\\n

{{ 'warrant_edition_must_have_client_warrant' | translate }}

\\n\\n
\\n \\n
\\n \\n \\n {{ 'warrant_corporate_name' | translate }}\\n \\n {{ 'warrant_edition_invalid_corporate_name' | translate }}\\n \\n \\n {{ searchBarMessage | translate }}\\n \\n
\\n\\n \\n
\\n \\n \\n {{ 'warrant_validity_start_tooltip' | translate }}\\n \\n {{ 'warrant_edition_invalid_validity_start' | translate }}\\n \\n
\\n \\n
\\n \\n \\n {{ 'warrant_validity_start_tooltip' | translate }}\\n \\n {{ 'warrant_edition_invalid_validity_end' | translate }}\\n \\n
\\n \\n
\\n \\n \\n \\n {{ 'warrant_edition_missing_confirmation' | translate }}\\n \\n
\\n\\n \\n
\\n \\n \\n\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n {{ data.client }}\\n
\\n
{{ data.site }}
\\n
{{ data.name }}
\\n
{{ data.startDate | formatDate }} - {{ data.endDate | formatDate }}
\\n
\\n
\\n
\\n\\n\"","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n \\n \\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n \\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n
    \\n
  • \\n {{ branch.name }}\\n \\n
  • \\n
\\n
\\n\\n
\\n Aucune filiale sélectionnée \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n {{ company.holding.name }}\\n \\n \\n
\\n
\\n Aucune maison mère sélectionnée \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n \\n
\\n\\n \\n
\\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n\\n\"","export default \"
\\n
\\n
\\n
\\n {{ keyFigures.reference }}\\n \\n
\\n \\n
\\n
\\n \\n {{ keyFigures.address?.name }}\\n \\n {{ keyFigures.address?.streetNumber }} {{ keyFigures.address?.streetName }}
\\n {{ keyFigures.address?.zipcode }} {{ keyFigures.address?.city }}\\n
\\n
\\n \\n {{ alias.reference }}, \\n \\n \\n
\\n
{{ 'routing_reference_keyfigures' | translate }}
\\n
\\n {{ keyFigures.keyfigures?.contracts }}\\n {{ (keyFigures.keyfigures?.contracts > 1 ? 'contracts' : 'contract') | translate | lowercase }}\\n
\\n
\\n {{ keyFigures.keyfigures?.bills }}\\n {{ (keyFigures.keyfigures?.bills > 1 ? 'bills' : 'bill') | translate | lowercase }}\\n
\\n
{{ 'contracts' | translate }}
\\n
\\n
\\n
\\n
\\n {{ contract.reference }} \\n
\\n
\\n {{ contract.dateStart }} -\\n {{ contract.dateEnd }}\\n
\\n
\\n
\\n
\\n
\\n\\n\\n\\n \\n \\n \\n\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
{{ site.complement }}
\\n
\\n {{ site.streetNumber }} {{ site.streetName }}
\\n {{ site.zipcode }} {{ site.city }}\\n
\\n
\\n \\n
\\n
\\n
\\n {{ rRef.reference }}\\n
\\n 1\\\"\\n tooltip=\\\"{{ rRef.alias?.join('\\\\n') }}\\\"\\n placement=\\\"top\\\"\\n >\\n {{ rRef.alias?.length }}\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n

{{ 'assets-routing_references' | translate | uppercase }}

\\n
\\n
\\n \\n
\\n
\\n
\\n

{{ 'routing_references_selected' | translate | uppercase }}

\\n
\\n
\\n \\n
\\n
\\n
\\n

{{ 'preview' | translate | uppercase }}

\\n
\\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n

{{ 'routing_reference_alias_list' | translate }}

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n

{{ 'routing_reference_add_alias' | translate }}

\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n {{ message }}\\n \\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n {{ 'drag_drop_rref_to_merge' | translate }}\\n
\\n
\\n
\\n \\n
\\n {{ 'routing_reference_origin' | translate }}\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n {{ 'routing_reference_destination' | translate }}\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n\"","export default \"
\\n \\n
\\n \\n
\\n \\n
\\n
Liste des {{ entityKeyPlural | translate }} non assignés
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n {{ getEntityTitle(entity) }}\\n \\n
\\n
\\n
\\n
{{ getEntitySubtitle1(entity) }}
\\n
{{ getEntitySubtitle2(entity) }}
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
Liste des sites existants
\\n
\\n \\n \\n \\n
\\n \\n
\\n \\n
\\n
Informations du site
\\n
\\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
{{ site.complement }}
\\n
{{ site.googleAddress }}
\\n
\\n
\\n
\\n
\\n
\\n \\n\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
{{ site.complement }}
\\n
{{ site.googleAddress }}
\\n
\\n
\\n
\\n
\\n
\\n Votre entreprise n'a pas de filiale.\\n
\\n
\\n
\\n \\n \\n\\n\"","export default \"\\n\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n
NomPrénomMailTéléphoneFonctionAdresse
\\n \\n {{ user.name | titlecaseGA }}\\n {{ user.firstname | titlecaseGA }}{{ user.contact.mail }}{{ user.contact.phone }}{{ user.position }}{{ user.address }}\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{ rightAvailable.name }}\\n
\\n {{ getPageName(page) }}\\n \\n \\n
\\n {{ getSubPageName(page, subPage) }}\\n \\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n
\\n \\n\\n
\\n \\n \\n\\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n \\n
\\n \\n
\\n\\n \\n
\\n \\n \\n \\n \\n
\\n\\n \\n
\\n \\n \\n \\n \\n
\\n\\n \\n
\\n \\n \\n \\n \\n
\\n\\n \\n
\\n \\n \\n \\n Fournisseur: {{ identificationPattern.provider.extracted }} \\n [{{ identificationPattern.tests.provider }}] \\n Contrat: {{ identificationPattern.contractType.extracted }}\\n \\n \\n [{{ identificationPattern.tests.contractType }}]\\n \\n Option: {{ option.extracted }} \\n [{{ identificationPattern.tests.option }}] \\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n \\n
\\n \\n
\\n\\n \\n
\\n \\n \\n \\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
RegexValeur extraiteNom
Fournisseur\\n \\n \\n \\n \\n \\n \\n \\n
Type de contrat\\n \\n \\n \\n \\n \\n \\n \\n
Options\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
{{ option.extracted }}
\\n
{{ option.name }}
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n \\n
    \\n
  • \\n
    \\n
    \\n Identifier : {{ cutter.chunkIdentifiersPattern }} | Cutter : {{ cutter.chunkCutterPattern }}\\n
    \\n
    \\n
    \\n
    \\n
    \\n
  • \\n
\\n
\\n
Pattern d'identifiant
\\n \\n
Pattern de cutter
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n Supprimer le pattern d'identification\\n \\n \\n \\n Mettre à jour\\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n
\\n \\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n \\n
\\n \\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n\\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n\"","export default \"
\\n \\n
\\n
\\n
\\n \\n Filtres de recherche\\n
\\n \\n 1\\\"\\n (ruleChanged)=\\\"updateRuleBlock(ruleBlockSites, $event)\\\"\\n >\\n \\n
\\n\\n \\n
\\n
\\n \\n Liste des sites correspondants\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n {{ infoMessage }}\\n
\\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n {{ getNameCapitalized(tab.name) }}\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n
{{ 'alert_condition' | translate }}
\\n
\\n \\n
\\n \\n
\\n {{ 'required_field' | translate }}\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n {{ 'active_f' | translate }}\\n \\n
\\n \\n
\\n {{\\n 'inactive_f' | translate\\n }}\\n {{\\n 'active_f' | translate\\n }}\\n
\\n
\\n \\n\\n
\\n
\\n \\n \\n {{ 'save' | translate }}\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n\"","export default \"
\\n
-1\\\">\\n
\\n \\n \\n \\n {{ 'select_all' | translate }} \\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n {{\\n getRoutingReferenceDisplay(routingReference) | truncate: [50]\\n }}\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n {{ getRoutingReferenceDisplay(selectedRoutingRef) }}\\n
\\n
{{ 'all_p' | translate }}
\\n
\\n \\n \\n

\\n NB : Analyse les factures déjà présentes sur la plateforme avant la création de l'alerte. Entraîne\\n naturellement la création de beaucoup de notifications.\\n

\\n
\\n
\\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n\"","export default \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{ status.displayKey | translate }}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n 0 }\\\"\\n (click)=\\\"archiveSelected()\\\"\\n >\\n {{ getCountAllSelected() }} {{ getCountSelectedKey() | translate }}
{{ 'alert_name' | translate }}{{ 'alert_description' | translate }}{{ 'alert_type' | translate }}{{ 'shared_f' | translate }}{{ 'actions' | translate }}{{ 'scope' | translate }}
\\n \\n \\n
\\n {{ getFlagKey(scenario) | translate }}\\n
\\n
{{ scenario.name || '' }}{{ scenario.description || '' | truncate: [150] }}{{ getTypeKey(scenario) | translate }}{{ getPrivacyKey(scenario) | translate }}\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
{{ getPerimeter(scenario) | translate }}
\\n \\n
\\n
\\n
\\n \\n \\n
\\n\"","export default \"
\\n
\\n
{{ column.name }}
\\n
\\n
\\n \\n {{ option.legend }}\\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n {{ 'means' | translate }}\\n
\\n
\\n {{ getStatitic(property, 'mean') }}\\n
\\n\\n
\\n {{ 'medians' | translate }}\\n
\\n
\\n {{ getStatitic(property, 'median') }}\\n
\\n
\\n * La médiane est la valeur pour laquelle il y a autant de points à gauche qu'à droite dans l'échantillon.\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n
{{ getNameCapitalized(tab.name) }}
\\n
\\n \\n \\n\\n\\n\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\"","export default \"\\n
\\n \\n \\n
\\n\\n\\n\\n\\n
\\n \\n
\\n\\n\\n\\n \\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
{{ errorMessage }}
\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n {{ component | translate }}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n {{ routingRefCompleteness.percentages[component] }} %\\n \\n \\n \\n \\n \\n \\n
\\n {{ 'heatmap_table_title' | translate }}\\n \\n {{ tableProperties.dateSelected | titlecaseGA }} -\\n \\n \\n {{ tableProperties.data.length }}\\n {{ tableHeaderMessage | translate }}\\n \\n
\\n {{ 'routingReference' | translate }}\\n \\n
\\n {{ 'select_cell_message' | translate }}\\n
\\n \\n
\\n {{ routingRefCompleteness.routingReference }}\\n \\n {{\\n 'details' | translate\\n }}\\n
\\n
\\n\\n \\n\"","export default \"
\\n
\\n
\\n
\\n
{{ legend.name }}
\\n
\\n
\\n\"","export default \"\\n
\\n
\\n \\n
\\n
\\n\\n\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n {{ 'completeness__key_selection' | translate }}\\n \\n \\n \\n
\\n\\n \\n
\\n \\n {{ 'average_completeness' | translate }} :\\n {{ averageValueDisplayed }}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n\\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\\n\\n \\n \\n \\n\\n\"","export default \"\\n
\\n
\\n \\n

{{ sourceReferenceTitle | translate }}

\\n

{{ sourceReferenceValue }}

\\n
\\n
\\n \\n

{{ 'site' | translate }}

\\n

{{ site?.complement }}

\\n
\\n
\\n \\n
\\n

\\n {{ section.label }}\\n
\\n

\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ 'expected' | translate }}{{ 'noticed' | translate }}{{ 'difference' | translate }} (€){{ 'difference' | translate }} (%)
\\n \\n {{ control.label }}\\n {{ control.expectedValue | formatNumberUnit: { unit: '€', excludedValues: [null] } }}\\n \\n {{ control.noticedValue | formatNumberUnit: { unit: '€', excludedValues: [null] } }}\\n \\n {{ control.difference | formatNumberUnit: { unit: '€', excludedValues: [null] } }}\\n \\n {{ control.ratio | formatNumberUnit: { unit: '%', excludedValues: [null] } }}\\n
\\n Total\\n {{ getTotalValue(section, 'expectedValue') }}{{ getTotalValue(section, 'noticedValue') }}{{ getTotalValue(section, 'difference') }}{{ getRatioTotal(section) }}
\\n
\\n
\\n
\\n\\n\\n

Le contrôle de la facture n'est pas encore disponible pour ce fluide.

\\n
\\n\"","export default \"\\n
\\n \\n \\n
\\n
\\n\\n\\n \\n\\n\\n
\\n \\n \\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n {{ displayNbBillsSelected() }}\\n \\n \\n \\n \\n
\\n Date\\n \\n {{ 'provider' | translate }}{{ 'bill_number' | translate }}{{ 'routing_reference_vehicle' | translate }}{{ 'contract_number' | translate }}{{ 'fluid' | translate }}\\n {{ 'difference' | translate }} (€)\\n \\n \\n {{ 'difference' | translate }} (%)\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n {{ getType(bill) | uppercase }}\\n
\\n \\n \\n
\\n {{ bill.dates.billDate | formatDate: 'DD/MM/YYYY' }}\\n \\n {{ bill.provider }}\\n \\n {{ getBillNumber(bill) }}\\n \\n {{ getSourceReference(bill) }}\\n \\n {{ getContractNumber(bill) }}\\n \\n
\\n
\\n \\n {{\\n bill.controlsRecap.balance | formatNumberUnit: { unit: '€', excludedValues: [null] }\\n }}\\n \\n \\n \\n {{ bill.controlsRecap.ratio | formatNumberUnit: { unit: '%', excludedValues: [null] } }}\\n \\n \\n \\n \\n \\n \\n \\n
\\n {{ bill.dates.billDate | formatDate: 'DD/MM/YYYY' }}\\n \\n {{ bill.provider }}\\n \\n {{ getBillNumber(bill, chunk) }}\\n \\n {{ getSourceReference(bill, chunk) }}\\n \\n {{ getContractNumber(bill, chunk) }}\\n \\n \\n \\n \\n {{\\n chunk.controlsRecap.balance\\n | formatNumberUnit: { unit: '€', excludedValues: [null] }\\n }}\\n \\n \\n \\n {{\\n chunk.controlsRecap.ratio\\n | formatNumberUnit: { unit: '%', excludedValues: [null] }\\n }}\\n \\n \\n \\n
\\n
\\n\\n\\n \\n \\n \\n \\n\\n\"","export default \"
\\n
\\n

\\n \\n {{ item.key | translate }}\\n \\n

\\n
\\n \\n {{ item.value }}\\n \\n \\n \\n \\n
\\n
\\n\"","export default \"
\\n \\n
\\n
\\n \\n \\n \\n \\n\\n\\n\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n {{ displayErrorText() }}\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n {{ v.message }} : \\n {{ v.value }}\\n
\\n
\\n {{ e.key }} : {{ e.value }}\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n {{ displayNbBillsSelected() }}\\n \\n * \\n Ces valeurs n'ont pas pu être extraites, elles ont été calculées.\\n \\n \\n
DateFournisseurN° facturePDL/VéhiculeConsommationTotal HTVATotal TVATotal TTCFonction budgétaire
\\n

{{ emptyTableMsg }}

\\n

\\n {{ 'info_contact' | translate }}\\n support-cen@citron.io\\n

\\n
\\n \\n
\\n \\n \\n \\n
\\n {{ getType(bill) | uppercase }}\\n
\\n \\n \\n
\\n \\n {{ bill.dates.billDate | formatDate: 'DD/MM/YYYY' }}\\n \\n \\n \\n {{ bill.provider }}\\n \\n \\n \\n {{ getBillNumber(bill) }}\\n \\n \\n \\n {{ getSourceReference(bill) }}\\n \\n \\n \\n {{ getValue(bill, 'quantity') }}\\n \\n \\n \\n \\n \\n \\n {{ getValue(bill, 'totalHTVA') }}\\n * \\n \\n \\n \\n {{ getValue(bill, 'totalTVA') }}\\n * \\n \\n \\n \\n {{ getValue(bill, 'totalTTC') }}\\n * \\n \\n \\n \\n {{ getCategory(bill) }}\\n \\n \\n
\\n \\n \\n
\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n {{ bill.dates.billDate | formatDate: 'DD/MM/YYYY' }}\\n \\n \\n \\n {{ bill.provider }}\\n \\n \\n \\n {{ getBillNumber(bill, chunk) }}\\n \\n \\n \\n {{ getSourceReference(bill, chunk) }}\\n \\n \\n \\n {{ getValue(bill, 'quantity', chunk) }}\\n \\n \\n \\n {{ getValue(bill, 'totalHTVA', chunk) }}\\n \\n *\\n \\n \\n \\n \\n {{ getValue(bill, 'totalTVA', chunk) }}\\n \\n *\\n \\n \\n \\n \\n {{ getValue(bill, 'totalTTC', chunk) }}\\n \\n *\\n \\n \\n \\n \\n {{ getCategory(bill, chunk) }}\\n \\n \\n \\n \\n
\\n Sous-total: {{ categoryGroup.name }}\\n \\n {{ getSubtotalValue(categoryGroup, 'quantity') }}\\n \\n {{ getSubtotalValue(categoryGroup, 'totalHTVA') }}\\n \\n {{ getSubtotalValue(categoryGroup, 'totalTVA') }}\\n \\n {{ getSubtotalValue(categoryGroup, 'totalTTC') }}\\n
\\n
\\n\"","export default \"
\\n

Créer une nouvelle campagne de réduction des consommations

\\n\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n
\\n

\\n Information : La période représente la période de référence des données et ne doit pas dépasser une\\n année.\\n

\\n \\n \\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n

{{ referencePeriodDisplay }}

\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
{{ tile.value }} {{ tile.unit }}
\\n
\\n
\\n
{{ tile.message }}
\\n
\\n
\\n\\n\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Campagne{{ campaign.name }}
Période de référence{{ campaignReferenceDates }}
Période de campagne{{ campaignDates }}
Périmètre\\n \\n
\\n
\\n
\\n
\\n
\\n
Objectifs fixés
\\n \\n \\n
\\n
\\n

Objectifs atteints

\\n \\n \\n
\\n
\\n
\\n
\\n
\\n Supprimer\\n
\\n
\\n
\\n\"","export default \"\\n
\\n
\\n \\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n  Créer une campagne\\n
\\n
\\n \\n
\\n
\\n  {{ campaignsList.displayName }} ({{ getCampaignsListCount(campaignsList) }})\\n
\\n
\\n
    \\n \\n {{ campaign.name }}\\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n \\n
Adresse du site{{ 'energies' | translate }}EauVéhicules
\\n
\\n
\\n {{ site.complement || 'NC' }}\\n
\\n
{{ site.code }}
\\n
\\n
\\n
\\n
\\n {{ site.name }}\\n
\\n
\\n
\\n {{ site.address }}\\n \\n
\\n
\\n \\n
\\n
\\n
{{ site.infoFluids[energy] }} PDL
\\n
\\n
\\n
\\n\\n
\\n Gestion de l'énergie\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
{{ site.infoFluids.water }} PDL
\\n
\\n
\\n\\n
\\n Gestion de l'eau\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
{{ site.vehicles.length }}
\\n
\\n
\\n\\n
\\n Gestion des véhicules\\n
\\n
\\n
\\n
\\n \\n\"","export default \"
\\n \\n
\\n
\\n
\\n \\n {{ toggle.name }}\\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n {{ toggle.name }}\\n \\n
\\n
\\n
\\n \\n
\\n\"","export default \"
\\n
\\n \\n
\\n\\n \\n \\n\\n
\\n \\n
\\n \\n
\\n\"","export default \"
\\n \\n
\\n
\\n
\\n \\n {{ titles[0] }}\\n \\n \\n {{ titles[1] }}\\n \\n
\\n
\\n
\\n \\n\\n \\n
\\n
\\n
\\n \\n {{ titles[0] }}\\n \\n \\n {{ titles[1] }}\\n \\n
\\n
\\n
\\n \\n
\\n\"","export default \"\\n\\n\\n
\\n \\n
\\n\\n\\n\"","export default \"\\n\"","export default \"
\\n \\n \\n
\\n
\\n
\\n \\n {{ toggle }}\\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n {{ toggle }}\\n \\n
\\n
\\n
\\n \\n
\\n\"","export default \"
\\n
\\n \\n
\\n\\n \\n \\n\\n
\\n \\n
\\n\\n \\n
\\n\"","export default \"
\\n
\\n
    \\n
  • \\n
    \\n \\n
    \\n
    \\n
    {{ i.name }}
    \\n
  • \\n
\\n \\n
\\n
    \\n
  • \\n
    \\n \\n
\\n \\n
{{ i.name }}
\\n \\n \\n \\n
\\n
\\n \\n \\\"\\\"\\n
\\n\\n\"","export default \"\\n
\\n
\\n
\\n \\n {{ toggleNames[0] }}\\n \\n \\n {{ toggleNames[1] }}\\n \\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n
\\n \\n {{ toggleNames[0] }}\\n \\n \\n {{ toggleNames[1] }}\\n \\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n
\\n \\n {{ toggleNames[0] }}\\n \\n \\n {{ toggleNames[1] }}\\n \\n
\\n
\\n
\\n
\\n\"","export default \" \\n\\n
\\n \\n
\\n\\n\\n\"","export default \"
\\n \\n
\\n
\\n
\\n \\n {{ toggleNames[0] }}\\n \\n \\n {{ toggleNames[1] }}\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n {{ toggleNames[0] }}\\n \\n \\n {{ toggleNames[1] }}\\n \\n
\\n
\\n
\\n \\n
\\n\"","export default \"
\\n \\n\\n
\\n \\n
\\n\\n \\n
\\n\"","export default \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
{{ 'Données à visualiser' | uppercase }}
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n {{ val.name }}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
{{ 'Nombre de colonne(s)' | uppercase }}
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n {{ val.name }}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n

{{ getShort(item.id) }}

\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n {{ getShort(item.id) }}\\n
\\n
\\n
\\n
\\n
\\n \\n\"","export default \"\\n \\n \\n\\n \\n\\n\"","export default \"
\\n \\n\\n
\\n
\\n

\\n {{ getTitle() }}\\n {{ sup }}\\n

\\n

- {{ subtitle }}

\\n
\\n
\\n \\n DJU\\n \\n
\\n
\\n
\\n
\\n
\\n \\n\\n
\\n \\n
\\n\\n\\n\\n
\\n
{{ name }}
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n \\n
\\n
\\n \\n {{ nbDays }} {{ messageKey | translate }} \\n
\\n
\\n\"","export default \"\\n \\n
\\n
{{ 'select_all' | translate }}
\\n
\\n
\\n\\n\"","export default \"
\\n \\n
\\n \\n
\\n\\n
\\n \\n \\n\\n \\n \\n \\n\\n \\n\\n
\\n \\n
\\n \\n {{ placeHolders[filter.propertyName] }}\\n
\\n \\n {{ searchItem.text }}\\n
\\n
\\n
\\n \\n
\\n
\\n
{{ tag.text }}
\\n \\n
\\n
\\n \\n\\n\"","export default \"
\\n \\n \\n\\n
{{ error }}
\\n\\n
\\n \\n
\\n
\\n\"","export default \"
\\n

Chargement en cours ...

\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n \\n
{{ legend.text }}
\\n
\\n
\\n
\\n\\n
\\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n {{ markerSelected.infoWindow.title }}\\n \\n
\\n \\n \\n \\n \\n \\n \\n
{{ colInfo }}
\\n
\\n\\n
\\n \\n \\n \\n\\n\"","export default \"
\\n
\\n
\\n
\\n

{{ title | translate }}

\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n

{{ noDataMessage }}

\\n\\n \\n
\\n\"","export default \"\\n
\\n
\\n {{ action.actionText }}\\n le {{ action.date }} par {{ action.user | titlecaseGA }}\\n
\\n
\\n
\\n
\\n
\\n Afficher Tout ...\\n
\\n
\\n
\\n
\\n
\\n
\\n
Pas d'historique
\\n
\\n\"","export default \"
\\n
\\n
\\n\"","export default \"
\\n \\n \\n\\n
\\n
\\n {{ defaultNoList }}\\n
\\n\\n
\\n \\n\\n \\n \\n \\n\\n \\n {{ getItemText(item) }}\\n \\n
\\n
\\n
\\n\"","export default \"\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n
{{ header }}
{{ y }}
\\n\"","export default \"
\\n
\\n
\\n {{ item.displayName }}\\n
\\n
\\n
\\n\"","export default \"\\n \\n {{ getText() }}\\n = 2\\\" class=\\\"badge\\\">+ {{ this.checkedOptions.length - 1 }}\\n \\n \\n \\n\\n \\n \\n \\n \\n\\n\"","export default \"
\\n \\n \\n\\n
\\n
\\n {{ defaultNoList }}\\n
\\n\\n
\\n {{ item.label }}\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n

\\n 4\\n {{ 'capacity_factor' | translate }}\\n

\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Tarification{{ item.label }}
{{ pricing.label }}\\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"\\n\\n
\\n \\n \\n \\n
\\n\\n \\n
\\n
\\n
\\n
\\n
\\n {{ saveMessage | translate }}\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n

\\n 1\\n {{ 'dates' | translate }}\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

\\n 2\\n {{ 'bill_periodicity' | translate }}\\n

\\n
\\n
\\n \\n {{ 'periodicity' | translate }} :\\n \\n {{\\n item.label | translate\\n }}\\n \\n \\n
\\n
\\n
\\n \\n Autour du\\n \\n du mois.\\n \\n
\\n
\\n \\n Prévenir d'une absence de nouvelle facture après\\n \\n \\n {{\\n item.label | translate\\n }}\\n \\n \\n mois.\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n

\\n 4\\n {{ 'pdl_list' | translate }}\\n

\\n
\\n
\\n \\n
{{ 'no_pricing_selected' | translate }}
\\n
\\n
\\n
\\n

{{ pricing?.label }}

\\n \\n \\n
\\n
\\n
\\n {{ 'no_routing_references_selected' | translate }}\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ 'routing_reference_number' | translate }}{{ 'site_name' | translate }}{{ item.label }}
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n \\n
\\n

{{ 'add_routing_references_to_pricing' | translate }}

\\n
\\n
\\n \\n \\n \\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ 'routing_reference_number' | translate }}{{ 'site_name' | translate }}
\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n\\n \\n {{ 'add_routing_references' | translate }}\\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n

\\n 3\\n {{ 'pricings' | translate }}\\n

\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ 'pricing' | translate }}{{ item.label }}
{{ pricing.label }}\\n \\n \\n \\n \\n \\n
\\n
\\n {{ 'no_pricing_existing' | translate }}\\n
\\n
\\n\\n
\\n
\\n \\n 0\\\"\\n appOffClick\\n (offClick)=\\\"offClickAction($event)\\\"\\n >\\n \\n \\n {{ 'pricing_add' | translate }}\\n \\n
\\n
\\n
\\n \\n\\n \\n

{{ section?.pricingSectionName }}

\\n
    \\n \\n {{ pricing?.label }}\\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n \\n Tarifications ci-dessus exprimées en :\\n \\n {{\\n item.label\\n }}\\n \\n \\n
\\n
\\n \\n\\n\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{ 'fluid' | translate }}\\n \\n {{ 'contract_number' | translate }}\\n \\n \\n {{ 'provider' | translate }}\\n \\n {{ 'routingReferences' | translate }}{{ 'state' | translate }}\\n {{ 'period' | translate }}\\n \\n
\\n
\\n
{{ contract.reference }}{{ contract.provider }}{{ contract.routingReferences.length }}{{ contract.noticeState.msg }}\\n {{ getContractStartDate(contract) }} -\\n {{ getContractEndDate(contract) }}\\n \\n \\n
\\n
\\n
\\n\\n\\n \\n \\n \\n \\n\\n\"","export default \"
\\n
\\n
\\n
\\n\\n
\\n

{{ label }}

\\n\\n
\\n

{{ getFormatedValue(value) }}

\\n

{{ getFormatedValue(value) }} - {{ getFormatedValue(value2) }}

\\n

\\n {{ unit }}\\n {{ info }}\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n\\n
\\n

{{ subLabel }}

\\n

{{ label }}

\\n
\\n
\\n\\n
\\n

{{ getFormatedValue(value) }}

\\n

\\n {{ unit }}\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n\\n

{{ label }}

\\n

{{ value | formatNumber: '':digits }} {{ unit }}

\\n
\\n
\\n\"","export default \"
\\n
\\n\\n
\\n\\n
\\n {{ getFormatedValue(value) }} {{ unit }}\\n
\\n\\n
{{ label }}
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n\\n
\\n

{{ label }}

\\n\\n
\\n \\n {{ value | formatNumber: '':digits }} {{ unit | translate }}\\n \\n \\n - {{ subValue | formatNumber: '':digits }} {{ subUnit | translate }}\\n
\\n
\\n
\\n\"","export default \"
\\n\"","export default \"// TODO when moving filter categories in home\\n\"","export default \"\\n \\n
\\n
\\n

\\n {{ 'search' | translate }}\\n

\\n \\n
\\n
\\n\\n \\n
\\n

\\n {{ 'advanced_search' | translate }}\\n \\n

\\n
\\n\\n
\\n
\\n \\n
\\n
\\n

\\n {{ 'fluid' | translate }}\\n

\\n
\\n
\\n \\n
\\n {{ fluid.name }}\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n

\\n {{ 'period' | translate }}\\n

\\n
\\n
\\n
\\n {{ 'from' | translate }}\\n \\n
\\n
\\n {{ 'to' | translate }}\\n \\n
\\n
\\n

\\n \\n {{ filters.errorMsg }}\\n

\\n
\\n
\\n
\\n \\n
\\n
\\n

\\n {{ 'provider' | translate }}\\n

\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n

\\n {{ 'state' | translate }}\\n

\\n
\\n \\n \\n \\n \\n
\\n\\n
\\n
\\n

\\n {{ 'bill_state' | translate }}\\n

\\n
\\n \\n \\n \\n \\n
\\n\\n
\\n
\\n

 

\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n

\\n {{ filtersAvailable.failedVerifications.label | translate }}\\n \\n \\n \\n

\\n
\\n \\n \\n
\\n\\n
\\n
\\n

 

\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n\"","export default \"
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n\\n\\n\\n\\n
\\n
\\n
\\n

{{ filterManagementModalTitle }}

\\n \\n ×\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n
\\n

Aperçu

\\n \\n ×\\n \\n
\\n
\\n Liste des sites\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n
\\n

Enregistrer un nom de filtre

\\n \\n ×\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\"","export default \"
\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n 1\\\" class=\\\"remove\\\" (click)=\\\"removeRule(i)\\\">X\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
Catégories par type d'organisation
\\n 1\\\"\\n class=\\\"remove\\\"\\n (click)=\\\"onRuleCatPerOrgaRemoved(i, rule)\\\"\\n >X\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n OU\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n\\n\\n
\\n \\n
\\n\"","export default \"
\\n
\\n
\\n
\\n {{ item.title }}\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"\\n\"","export default \"
\\n \\n
\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n
\\n
\\n \\n
\\n
{{ 'to_filter' | translate }}
\\n \\n \\n
\\n
{{ 'export_td' | translate }}
\\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n

{{ getNameFromProvider() }}

\\n\\n \\n\\n
\\n
\\n

\\n {{ getItemDisplayName(searchItem) }}\\n

\\n\\n
\\n {{ getItemDisplayName(searchItem) }}\\n

{{ getItemSubDisplayName(searchItem) }}

\\n
\\n
\\n
Vous n'avez pas d'élément à sélectionner
\\n
\\n
\\n\"","export default \"\\n\"","export default \"
\\n
\\n \\n

Entité juridique

\\n\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n
\\n
\\n
{{ getEmptyFilterMessage() }}
\\n
\\n
\\n
\\n
\\n {{ getMaxElementsSelectedErrorMessage() }} {{ mainFilterSelected | translate }}\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n
\\n
\\n
\\n
{{ fluidTypesName | translate | uppercase }}
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
{{ 'period' | translate | uppercase }}
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
{{ 'perimeter' | translate | uppercase }}
\\n
\\n
\\n
\\n \\n {{ getPerimeterDisplayName(perimeter) }}\\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n
\\n
\\n
\\n
\\n
{{ multipleFluidTypesMessage }}
\\n
\\n
\\n
\\n
{{ missingFluidTypeMessage }}
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n

{{ getNameFromProvider() }}

\\n\\n \\n
\\n\"","export default \"
\\n \\n
\\n
{{ getElementText(tag) }}
\\n
{{ getElementSubText(tag) }}
\\n X\\n
\\n
\\n
\\n\"","export default \"
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n {{ element.displayName | uppercase }}\\n
\\n
\\n
\\n \\n\\n\"","export default \"
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\"","export default \"\\n\"","export default \"
\\n
    \\n
  • \\n
    \\n
    \\n
    {{ i.name | translate }}
    \\n
  • \\n
\\n
\\n\"","export default \"
\\n
\\n {{ 'load_curve_enedis_errors' | translate }}\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ error.name }} - {{ error.message }} \\n {{ error.count }} {{ (error.count > 1 ? 'days' : 'days') | translate }}\\n {{ 'load_curve_on_the_period' | translate | lowercase }} \\n {{ error.minDate | formatDate }} - {{ error.maxDate | formatDate }}
\\n
\\n\"","export default \"\\n
\\n
\\n {{ text }}\\n
\\n\\n \\n\\n
\\n {{ error }}\\n
\\n
\\n\\n \\n \\n {{ confirmBtnText }}\\n \\n\\n \\n {{ cancelBtnText }}\\n \\n
\\n\"","export default \"\\n
\\n
\\n {{ text }}\\n
\\n\\n
\\n {{ error }}\\n
\\n
\\n\\n \\n \\n {{ confirmBtnText }}\\n \\n\\n \\n {{ cancelBtnText }}\\n \\n
\\n\"","export default \"
\\n \\n
\\n\"","export default \"
\\n \\n
\\n\"","export default \"
\\n \\n
\\n\"","export default \"
1\\\">\\n \\n
\\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{ 'monitoring_dates' | translate }}\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
\\n {{ 'monitoring_nb_real' | translate }}\\n  = \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n  × \\n {{ 'dju_short' | translate }}\\n  + \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{ monitoringDJUsField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n {{ monitoringNBField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
\\n \\n {{ qHighSeasonField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n {{ qLowSeasonField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{ nHousingField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n {{ avgVolumeField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{ deltaTolerancePercentageField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{ profitSharingPercentageField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n {{ 'client' | translate }}\\n \\n {{ 'monitoring_operator' | translate }}\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{ penaltiesPercentageField.displayKey | translate }}\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n {{ 'client' | translate }}\\n \\n {{ 'monitoring_operator' | translate }}\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{ includedCostsField.displayKey | translate }}\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n \\n {{ monitoringTypeField.displayKey | translate }}\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n {{ monitoringNameField.displayKey | translate }}\\n \\n
\\n \\n
\\n
\\n \\n \\n \\n {{ monitoringCompanyField.displayKey | translate }}\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n {{ monitoringSiteField.displayKey | translate }}\\n \\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n \\n {{ monitoringRRefField.displayKey | translate }}\\n \\n
\\n \\n \\n
\\n
\\n \\n\\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n \\n {{ meteoStation.name }}, {{ 'base' | translate }} {{ form.controls.djuType.value | translate }}\\n {{ site.dju.method | titlecase }}\\n {{ djuSiteDisplayValue }}°C\\n \\n {{ 'station_not_found' | translate }}\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n

{{ 'scope' | translate | uppercase }}

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n

{{ 'data_sources' | translate | uppercase }}

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n

{{ 'contractual_data' | translate | uppercase }}

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n {{ (isEditing ? 'save' : 'monitoring_create') | translate }}\\n \\n \\n
\\n\"","export default \"
\\n
\\n

{{ 'monitoring_consumption_goal' | translate }}

\\n
\\n
\\n \\n\\n \\n
\\n
\\n

{{ 'monitoring_deviation' | translate }}

\\n
\\n
\\n \\n\\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ monitoring?.name }}\\n \\n \\n
\\n
\\n
\\n {{ site?.streetNumber }} {{ site?.streetName }} {{ site?.zipcode }} {{ site?.city }}\\n
\\n
\\n
\\n {{ meteoStation?.name }}, {{ 'dju_base' | translate }}\\n {{ monitoring.djuType | translate }}\\n {{ site?.dju.method | titlecase }}\\n {{ djuSiteDisplayValue }}°C\\n \\n
\\n
\\n
\\n \\n
\\n
\\n {{ 'export_action' | translate }}\\n
\\n \\n \\n {{ 'monitoring_readings' | translate }}\\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n {{ monitoring.periods.length }}\\n
\\n
\\n \\n
\\n {{ 'all_fp' | translate }}\\n
\\n \\n \\n {{ period.periodStart | date: 'dd/MM/yyyy':'UTC' }} -\\n {{ period.periodEnd | date: 'dd/MM/yyyy':'UTC' }}\\n \\n \\n {{ period.deviation | formatNumber: '':0 }}%\\n \\n
\\n \\n \\n
{{ 'monitoring_no_period' | translate }}
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n \\n \\n {{ selectedPeriod.periodStart | date: 'dd/MM/yyyy':'UTC' }} -\\n {{ selectedPeriod.periodEnd | date: 'dd/MM/yyyy':'UTC' }}\\n \\n \\n {{ globalDates.periodStart | date: 'dd/MM/yyyy':'UTC' }} -\\n {{ globalDates.periodEnd | date: 'dd/MM/yyyy':'UTC' }}\\n \\n \\n {{ 'monitoring_no_period_long' | translate }}\\n \\n
\\n
\\n \\n \\n \\n {{ displayModalKey | translate }}\\n \\n
\\n \\n \\n
\\n \\n

\\n {{ message }}\\n

\\n \\n \\n \\n \\n\\n\"","export default \"
\\n
\\n
\\n
\\n

\\n {{ title.displayKey | translate | uppercase }}\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ tile.displayKey | translate }}\\n
\\n
\\n
\\n
{{ tile.displayValue }}
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ tile.displayKey | translate }}\\n
\\n
\\n
\\n
{{ tile.displayValue }}
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ 'monitoring_please_create_first_monitoring' | translate }}\\n
\\n
\\n\"","export default \"
\\n \\n
\\n {{ 'monitoring_add' | translate }}\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n {{ monitoring.site?.complement }}\\n
\\n {{ monitoring.name }}\\n
\\n
\\n {{ getMessageNoMonitorings() | translate }}\\n\\n\"","export default \"
\\n
\\n \\n
\\n {{ 'monitoring_add_measuring_point' | translate }}\\n \\n
\\n
\\n \\n
\\n {{ monitoring.measuringPoints.length - index }}\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n\\n\"","export default \"
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n {{ monitoring.periods.length }}\\n
\\n
\\n \\n
\\n {{ 'all_fp' | translate }}\\n
\\n \\n \\n {{ period.periodStart | date: 'dd/MM/yyyy':'UTC' }} -\\n {{ period.periodEnd | date: 'dd/MM/yyyy':'UTC' }}\\n \\n \\n {{ period.deviation | formatNumber: '':0 }}%\\n \\n
\\n \\n \\n
{{ 'monitoring_no_period' | translate }}
\\n
\\n
\\n
\\n \\n
\\n \\n {{ selectedPeriod.periodStart | date: 'dd/MM/yyyy':'UTC' }} -\\n {{ selectedPeriod.periodEnd | date: 'dd/MM/yyyy':'UTC' }}\\n \\n \\n {{ globalDates.periodStart | date: 'dd/MM/yyyy':'UTC' }} -\\n {{ globalDates.periodEnd | date: 'dd/MM/yyyy':'UTC' }}\\n \\n \\n {{ 'monitoring_no_period_long' | translate }}\\n \\n
\\n
\\n
\\n \\n \\n
\\n {{ 'monitoring_add_index_reading' | translate }}\\n \\n \\n\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n {{ getVolumeUnitDisplayKey(indexReading.measuringPointId) | translate }}\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n

- {{ message }}

\\n
\\n
\\n
\\n\\n\"","export default \"
\\n
\\n \\n \\n
\\n
{{ tab.displayKey | translate }}
\\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n
{{ getSeasonDate(keyfigure.startDate) }}
\\n
\\n
{{ 'difference' | translate }}
\\n
{{ formatDevation(keyfigure.deviation) }}
\\n
\\n
\\n
\\n
\\n
\\n {{ keyfigure.countEfficient || 0 }}\\n {{ getEfficientPeriodsText(keyfigure.countEfficient) | translate }}\\n
\\n
\\n {{ formatProfit(keyfigure.profitsEfficient) }}\\n
\\n
\\n
\\n
\\n {{ keyfigure.countDrifting || 0 }}\\n {{ getDriftingPeriodsText(keyfigure.countDrifting) | translate }}\\n
\\n
\\n {{ formatProfit(keyfigure.profitsDrifting) }}\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n \\n\\n
\\n \\n \\n\\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n\\n
\\n
\\n {{ valueKey | formatNumber }}\\n {{ valueActiveText }}\\n ({{ valueKeyInactive | formatNumber }} {{ valueInactiveText }})\\n
\\n
{{ text }}
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n {{ site.date | formatDate: 'DD MMM à HH:mm' }}\\n
\\n\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
{{ site.complement || 'NC' }}
\\n\\n
\\n
{{ site.address }}
\\n
{{ site.zipcode }} {{ site.city }}
\\n
\\n
\\n
\\n
\\n
\\n\\n

Vous n'avez consulté aucun site dernièrement.

\\n\"","export default \"
\\n
\\n
\\n
\\n \\\"\\\"\\n
\\n
\\n
\\n\\n
\\n
{{ energyManager.firstname | titlecaseGA }} {{ energyManager.name | titlecaseGA }}
\\n
\\n
{{ energyManager.position }}
\\n
{{ energyManager.contact.phone }}
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n \\n \\n {{ page.page + 1 }}\\n
\\n\\n \\n
...
\\n
\\n \\n
\\n\\n\"","export default \"
\\n
\\n \\n
\\n\\n
\\n \\n \\n {{ page.page }}\\n
\\n\\n \\n
...
\\n
\\n \\n
\\n\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Nom du fichierNuméro du PatternRegex utiliséValeur extraiteAutre Regex
\\n # {{ i + 1 }}\\n {{ fileProperty.name }}{{ fileProperty.patternId }}\\n \\n {{ getValueExtract(fileProperty) }}{{ getPotentialValueExtract(fileProperty) }}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Mise à jour du pattern\\n \\n \\n \\n {{ 'pattern_disabled' | translate }}\\n \\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n Propriété\\n \\n \\n RegexValeur extraiteDictionnaireNombre de données extraites
{{ property.name }}\\n
\\n \\n \\n \\n \\n
\\n
{{ getValueExtract(property) }}\\n \\n \\n \\n {{ property.countExtract }}\\n \\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n Référence du contrat\\n {{ contract.reference }}\\n
\\n\\n \\n\\n
\\n Fournisseur\\n {{ contract.provider }}\\n
\\n\\n
\\n Référence d'acheminement\\n {{ routingReference }}\\n
\\n
\\n\"","export default \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","export default \"\\n \\n
\\n
{{ dataPropertyDisplay.translateKey | translate }}
\\n
\\n {{ getDataPropertyLastValue(dataPropertyDisplay.key) }} {{ dataPropertyDisplay.unit }}\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n {{ (site ? site.complement : null) || 'PDL Non Associé' }}\\n
\\n
\\n\\n \\n
\\n
{{ address }}
\\n
\\n\\n \\n
\\n {{\\n 'site_profil' | translate\\n }}\\n {{ 'billing' | translate }}\\n {{ 'load_curve' | translate }}\\n
\\n
\\n
\\n\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n
\\n
PDL
\\n
{{ data.reference }}
\\n
\\n\\n \\n\\n \\n
\\n \\n Etat du PDL\\n
\\n
\\n \\n {{ routingReferenceStatusText }}\\n \\n
\\n
\\n \\n \\n \\n\\n \\n
\\n
\\n \\n
\\n
{{ communicatingStatus.text }}
\\n
\\n\\n \\n
\\n
Numéro de contrat
\\n
{{ contract.reference }}
\\n
\\n\\n \\n
\\n
Fournisseur
\\n
{{ contract.provider }}
\\n
\\n\\n \\n
\\n
Période
\\n
\\n {{ getPdlContractDates(data, contract).dateStart | date: 'dd/MM/yyyy' }} -\\n {{ getPdlContractDates(data, contract).dateEnd | date: 'dd/MM/yyyy' }}\\n
\\n
\\n \\n Exporter : \\n
\\n
\\n
\\n \\n\\n\\n \\n \\n \\n\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n \\n \\n \\n \\n
PDL\\n Numéro de contrat\\n \\n Période\\n \\n Type\\n \\n Fournisseur\\n \\n Mes données\\n
\\n {{ pdl.routingReference }}\\n \\n {{ pdl.contract.reference }}\\n \\n {{ pdl.dateStart | date: 'dd/MM/yyyy' }}\\n -\\n {{ pdl.dateEnd | date: 'dd/MM/yyyy' }}\\n \\n
\\n
\\n {{ pdl.contract.provider }}\\n \\n
\\n \\n
\\n
\\n {{ contract.routingReference }}\\n \\n
\\n \\n
\\n
\\n {{ contract.contract.reference }}\\n \\n {{ contract.dateStart.substring(8, 10) }}/{{ contract.dateStart.substring(5, 7) }}/{{\\n contract.dateStart.substring(0, 4)\\n }}\\n -\\n {{ contract.dateEnd.substring(8, 10) }}/{{ contract.dateEnd.substring(5, 7) }}/{{\\n contract.dateEnd.substring(0, 4)\\n }}\\n \\n
\\n
\\n {{ contract.contract.provider }}\\n \\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Profil complété\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n Actif\\n \\n Entité\\n \\n \\n \\n \\n Code\\n \\n \\n \\n \\n Site\\n \\n \\n \\n \\n Adresse\\n
\\n \\n
\\n \\n
\\n
\\n
\\n {{ getCompanyToDisplay(site) }}\\n \\n {{ site.code }}\\n \\n {{ site.complement || 'NC' }}\\n \\n {{ getAddressToDisplay(site) }}\\n \\n {{ getSiteProfileCompletion(site) | number: '.0-0' }} %\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n
\\n {{ bill.periodLabel }}\\n
{{ row.name }}
{{ subLabel.name }}\\n {{ bill[row.billProperty][subLabel.key] }}\\n
\\n {{ row.name }}\\n {{ subLabel.name }}\\n {{ bill[row.billProperty][subLabel.key] }}\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n
\\n \\n Nom du fichier
\\n \\n \\n {{ file.filename }}
\\n
\\n\\n \\n\\n

Aucun fichier inconnu dans ce groupe d'uploads

\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
EnergieFournisseurType de contratNombre de factures
{{ contractType.energy }}{{ getProviderName(contractType) }}{{ getContractTypeName(contractType) }}{{ contractType.data.length }}\\n
\\n \\n {{ 'extract' | translate }}\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\\n\\n\"","export default \"\\n
\\n
\\n \\n \\n
\\n
\\n\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n
FichierPatternPropriétés
\\n #{{ i + 1 }}\\n {{ element.filename }}\\n \\n {{ getPatternDisplayName(element.pattern) }}\\n
\\n\\n\\n\\n\\n\\n
\\n
{{ propertyToDisplay }}
\\n
\\n
\\n \\n Editer la propriété\\n \\n
\\n
\\n
\\n
\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Nom du fichierTailleNombre de propriétésPropriétés manquantesEtatActions (Pour la sélection)
\\n \\n \\n \\n {{ file[0].filename }}\\n {{ file[0].size | formatFileSize }}{{ file[0].nbProperties.length }}\\n
\\n \\n {{ getMessage(file[0].uploadState) }}\\n
\\n
\\n
\\n \\n {{ 'extract' | translate }}\\n \\n
\\n \\n {{ dataForceTypeKeys[i] | translate }}\\n \\n
\\n \\n Facture n° {{ i + 1 }}{{ element.nbProperties.length }}{{ getNbMissingProperties(element) }}\\n
1\\\" class=\\\"column-content\\\">\\n {{\\n getMessage(element.state)\\n }}\\n
\\n \\n
\\n\\n \\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n Matériel de production\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
#EnergietypeRéf.PuissanceAnnée
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ i + 1 }}{{ info.energie }}{{ info.type }}{{ info.ref }}{{ info.p | formatNumber }}{{ info.year }}\\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n {{ getSiteSelectedAddressProperty('zipcode') }}\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n

{{ errorMessage }}

\\n
\\n
\\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n \\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n Liste des PDL associés au site :\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ entity.reference }}\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n {{ 'none' | translate }}\\n
\\n
\\n \\n
\\n Liste des véhicules associés au site :\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ entity.registrationNumber }}\\n
\\n
\\n \\n
\\n
\\n
\\n
{{ 'none' | translate }}
\\n \\n \\n\\n\"","export default \"
\\n
\\n Rue\\n {{ site.streetName }}\\n
\\n\\n
\\n Numéro de rue\\n {{ site.streetNumber }}\\n
\\n\\n
\\n Ville\\n {{ site.city }}\\n
\\n\\n
\\n Code postal\\n {{ site.zipcode }}\\n
\\n\\n
\\n Longitude\\n {{ site.longitude }}\\n
\\n\\n
\\n Latitude\\n {{ site.latitude }}\\n
\\n
\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
ActifPDLTypePonderationZoneValeur
\\n
\\n
\\n {{ sharedPDL.routingReference.reference }}\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
{{ zone.zone.name }}\\n \\n \\n {{ getValue(zone, sharedPDL) }}\\n \\n \\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n\\n
\\n
\\n {{ currentSelection.complement || 'NC' }}\\n
\\n\\n
\\n {{ currentSelection.streetNumber }} {{ currentSelection.streetName }} {{ currentSelection.zipcode }} {{ currentSelection.city }}\\n
\\n\\n \\n {{ 'site_profil' | translate }}\\n \\n \\n {{ 'load_curve' | translate }}\\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n
Progression
\\n
\\n \\n
\\n
{{ totalProgress | number: '.0-0' }}%
\\n
\\n
\\n
\\n
\\n {{ navItem.name }}\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n\"","export default \"\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n Glissez-déposez ici pour créer un nouveau site\\n
\\n
\\n\\n\\n
\\n
\\n \\n
\\n
\\n
\\n
{{ site.complement }}
\\n
Site sans nom
\\n
\\n
\\n
{{ site.streetNumber }} {{ site.streetName }}
\\n
{{ site.zipcode }} {{ site.city }}
\\n \\n Site non localisé\\n
\\n
\\n
\\n
\\n \\n
\\n {{\\n siteEntityDisplayInfo[site._id][fluid.value].count\\n }}\\n
\\n
\\n
\\n \\n \\n\\n
\\n
\\n \\n
\\n
\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Actif{{ column }}
\\n
\\n
{{ item.reference }}\\n
\\n Voir\\n\\n \\n \\n \\n\\n \\n \\n \\n
\\n
{{ contract.reference }}\\n {{ getItemContractDates(contract, item._id).dateStart | formatDate }} -\\n {{ getItemContractDates(contract, item._id).dateEnd | formatDate }}\\n \\n
\\n
{{ contract.provider }}{{ getCommonZones(item) }}\\n \\n Voir\\n \\n
\\n
\\n {{ item.registrationNumber }}\\n \\n \\n \\n \\n \\n
\\n
\\n {{ contract.reference }}\\n {{ contractCard.fuelCardNumber }}\\n {{ getItemContractDates(contract, contractCard.fuelCard).dateStart | formatDate }} -\\n {{ getItemContractDates(contract, contractCard.fuelCard).dateEnd | formatDate }}\\n \\n
\\n
{{ contract.provider }}\\n \\n Voir\\n \\n
\\n\\n\\n\\n
\\n
\\n
\\n

{{ 'vehicle_edit' | translate }}

\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\"","export default \"\\n
\\n \\n \\n
\\n\\n\\n
\\n \\n\\n \\n
\\n\\n\\n
\\n \\n\\n \\n
\\n\\n\\n
\\n \\n\\n \\n
\\n\\n\\n
\\n \\n\\n \\n
\\n\\n\\n
\\n \\n\\n \\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n \\n \\n \\n
\\n {{ fileLoaded.originalname }}\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n {{ config.title }} {{ i }}\\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\"","export default \"\\n\\n\\n\\n
\\n
\\n
\\n

{{ config.title | uppercase }}

\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\"","export default \"\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n {{ option.label }}\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n {{ option.label }}\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n
\\n {{ fileLoaded.originalname }}\\n \\n
\\n
\\n
\\n
\\n\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
TypeFournisseurNuméro contratNuméro PDLPériode
\\n \\n \\n
\\n
{{ contract.provider }}{{ contract.reference }}{{ pdl.reference }}\\n {{ getPdlContractDates(pdl, contract).dateStart | formatDate }} -\\n {{ getPdlContractDates(pdl, contract).dateEnd | formatDate }}\\n
\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NomFluidesPoints de livraison
{{ site.complement }}\\n
\\n \\n
\\n
\\n \\n
\\n
{{ site.routingReferencesNum.join(', ') }}
\\n {{ site.googleAddress }}\\n
\\n\\n\\n\"","export default \"
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n\"","export default \"\\n
\\n
\\n \\n\\n

\\n {{ data.label }}\\n

\\n\\n

\\n {{ data.subLabel }}\\n

\\n \\n
\\n\\n\"","export default \"\\n \\n \\n \\n\\n\"","export default \"\\n \\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n \\n \\n
\\n
\\n \\n
\\n
\\n
#{{ i + 1 }}
\\n
\\n
\\n {{ file.filename | removeFileExtension }}\\n
\\n
\\n
\\n {{ file.size | formatFileSize }}\\n
\\n
\\n
\\n \\n {{ getPercent(file) || 0 }} %\\n
\\n
\\n
\\n \\n {{ getMessage(file) }}\\n
\\n
\\n
\\n \\n {{ 'delete' | translate }}\\n \\n \\n {{ 'force_quality' | translate }}\\n \\n \\n {{ 're_extract' | translate }}\\n \\n
\\n
\\n\\n\\n\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n {{ getTotalNbFilesMsg() }}\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n {{ getTotalSuccessMsg() }}\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n {{ getTotalErrorsMsg() }}\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n {{ getTotalPendingMsg() }}\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n {{ getErrorGeolocMsg() }}\\n
\\n
\\n
\\n
\\n
\\n
\\n {{ getErrorDatesMsg() }}\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n {{ getErrorUploadMsg() }}\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n \\n L'immatriculation est la valeur de référence dans Citron® et ne peut pas être modifiée.\\n
\\n
\\n \\n \\n Nom du véhicule\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n Date d'entrée du véhicule dans le parc\\n
\\n
\\n \\n \\n Date de sortie du véhicule du parc\\n
\\n
\\n \\n \\n L/100km\\n
\\n
\\n \\n \\n L/100km\\n
\\n
\\n \\n \\n L/100km\\n
\\n
\\n \\n
\\n\\n
\\n
\\n

Sauvegarde et calcul des équivalents CO2 en cours.

\\n
\\n
\\n \\n
\\n
\\n\"","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, HostBinding, HostListener, OnInit, ViewContainerRef } from '@angular/core';\nimport { filter, map, mergeMap } from 'rxjs/operators';\n\nimport { ActivatedRoute, NavigationEnd, NavigationStart, Router } from '@angular/router';\n\ndeclare var $: any;\n\nimport { GlobalState } from './app.state';\nimport { ChartService } from './shared/services/chart/chart.service';\nimport { ConfigService } from './shared/services/config/config.service';\nimport { PreloaderService } from './shared/services/preloader/preloader.service';\nimport { SpinnerService } from './shared/services/spinner/spinner.service';\n\nimport * as Highcharts from 'highcharts/highstock';\nimport { ApiService } from './shared/services/api/api.service';\nimport { TitleService } from './shared/services/title/title.service';\n\nimport { environment } from '../environments/environment';\nimport { AccessGuard } from './shared/services/guards/access-guard.service';\nimport { SessionService } from './shared/services/session/session.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html', // we directly go to layout.component.html\n styleUrls: ['./app.component.scss'],\n providers: [],\n})\nexport class AppComponent implements OnInit {\n // App Left Sidebar Menu Open/Close Desktop\n @HostBinding('class.app_sidebar-menu-collapsed')\n get isApp_SidebarLeftCollapsed() {\n return this.config.appLayout.isApp_SidebarLeftCollapsed;\n }\n\n // Left Menu Sidebar Open/Close Tablet & Mobile\n @HostBinding('class.app_sidebar-left-open')\n get isApp_MobileSidebarLeftOpen() {\n return this.config.appLayout.isApp_MobileSidebarLeftOpen;\n }\n\n // App Right Sidebar Open/Close\n @HostBinding('class.sidebar-overlay-open')\n get isApp_SidebarRightOpen() {\n return this.config.appLayout.isApp_SidebarRightOpen;\n }\n\n // The constructor is called first time before the ngOnInit()\n // The constructor should only be used to initialize class members but shouldn't do actual \"work\".\n // So you should use constructor() to setup Dependency Injection and not much else.\n constructor(\n private _state: GlobalState,\n public config: ConfigService,\n private viewContainerRef: ViewContainerRef,\n private _spinner: SpinnerService,\n private apiService: ApiService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private titleService: TitleService,\n private chartService: ChartService,\n public sessionService: SessionService,\n private accessGuard: AccessGuard\n ) {}\n\n public setTitle(newTitle: string) {\n this.titleService.setTitle(newTitle);\n }\n\n // called after the constructor and called after the first ngOnChanges()\n // ngOnInit() is better place to \"start\" - it's where/when components' bindings are resolved.\n ngOnInit() {\n $(document).on('click', '[href=\"#\"]', e => e.preventDefault());\n // Listen for every router page change to update the title.\n // If event['title] is not defined, it will take the title already set for the page (displayed on the top of a page)\n // Or the subtitle if exists.\n // To define a specific title, change the route in the wanted module and add data: {title: \"MyTitle\"}.\n this.router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => this.activatedRoute),\n map(route => {\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n }),\n filter(route => route.outlet === 'primary'),\n mergeMap(route => route.data)\n )\n .subscribe({ next: event => this.setTitle(event['title']) });\n\n if (environment.isProduction) {\n this.router.events.subscribe({\n next: event => {\n if (event instanceof NavigationEnd) {\n (window as any).ga('set', 'page', event.urlAfterRedirects);\n (window as any).ga('send', 'pageview');\n }\n },\n });\n }\n\n // Set highcharts lang\n Highcharts.setOptions({\n lang: this.chartService.getHighchartLang(),\n });\n this.accessGuard.load();\n }\n\n checkAuth() {\n this.router.events.forEach(event => {\n if (event instanceof NavigationStart) {\n this.sessionService.checkVersion(environment.VERSION, true);\n\n const token = this.apiService.getToken();\n\n if (event.url === '/authentification' && token) {\n this.router.navigateByUrl('/accueil');\n } else if (event.url !== '/authentification' && !token) {\n this.router.navigateByUrl('/authentification');\n }\n }\n });\n }\n\n // check if menu should reset on resize\n @HostListener('window:resize')\n public onWindowResize(): void {\n if (this._shouldMenuReset()) {\n this.config.appLayout.isApp_SidebarLeftCollapsed = false;\n }\n }\n\n private _shouldMenuReset(): boolean {\n return window.innerWidth <= this.config.breakpoint.desktopLG;\n }\n\n // tslint:disable-next-line\n public ngAfterViewInit(): void {\n PreloaderService.load().then(values => {\n this._spinner.hide();\n });\n }\n}\n","// Required angular modules\nimport { HashLocationStrategy, LocationStrategy } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { ErrorHandler, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule, Title } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { SweetAlert2Module } from '@sweetalert2/ngx-sweetalert2';\n// App bootstrap\nimport { AppComponent } from './app.component';\nimport { AppState, InternalStateType } from './app.service';\nimport { GlobalState } from './app.state';\nimport { RollbarErrorHandler, rollbarFactory, RollbarService } from './rollbar';\n\n// Import all services defined in services module\nimport { ServicesModule } from './shared/services/services.module';\n\n// Import all modules shared by multiple components of application\nimport { SharedModule } from './shared/shared.module';\n\n// Import main routing module defining layout component as default route\nimport { AppRoutingModule } from './app.routing';\n\nimport { PipesModule } from './shared/pipes/pipes.module';\nimport { ApiService } from './shared/services/api/api.service';\n\n// Import Guards\nimport { AccessGuard } from './shared/services/guards/access-guard.service';\nimport { AuthGuard } from './shared/services/guards/auth-guard.service';\nimport { CanDeactivateGuard } from './shared/services/guards/can-deactivate-guard.service';\n\n// Import ErrorInterceptor\nimport { ErrorInterceptor } from './shared/services/api/error.interceptor';\n\n// Import question components for dynamic creation\nimport { FileQuestionComponent } from './shared/components/sites/questions/file-upload/file-upload.component';\nimport { GroupQuestionComponent } from './shared/components/sites/questions/group-collapse/group-collapse.component';\nimport { InputTextMultipleComponent } from './shared/components/sites/questions/input-text-multiple/input-text-multiple.component';\nimport { InputTextComponent } from './shared/components/sites/questions/input-text/input-text.component';\nimport { ModalQuestionComponent } from './shared/components/sites/questions/modal/modal.component';\nimport { SelectChoicesBlocComponent } from './shared/components/sites/questions/select-choices-bloc/select-choices-bloc.component';\nimport { SelectChoicesInputComponent } from './shared/components/sites/questions/select-choices-input/select-choices-input.component';\nimport { SelectChoicesComponent } from './shared/components/sites/questions/select-choices/select-choices.component';\nimport { SelectDropdownComponent } from './shared/components/sites/questions/select-dropdown/select-dropdown.component';\nimport { AnalyticsModule } from './shared/services/analytics/analytics.module';\n\nimport { environment } from '../environments/environment';\nimport { AnalyticsService } from './shared/services/analytics/analytics.service';\nimport { HotjarService } from './shared/services/analytics/hotjar/hotjar.service';\n\n// Application wide providers\nconst APP_PROVIDERS = [\n { provide: RollbarService, useFactory: rollbarFactory },\n { provide: ErrorHandler, useClass: RollbarErrorHandler },\n AppState,\n GlobalState,\n Title,\n ApiService,\n AuthGuard,\n AccessGuard,\n {\n provide: LocationStrategy,\n useClass: HashLocationStrategy,\n },\n CanDeactivateGuard,\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n];\n\nexport interface StoreType {\n state: InternalStateType;\n restoreInputValues: () => void;\n disposeOldHosts: () => void;\n}\n\n@NgModule({\n declarations: [AppComponent],\n imports: [\n BrowserModule,\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n BrowserAnimationsModule,\n ServicesModule,\n SharedModule.forRoot(),\n AppRoutingModule,\n PipesModule.forRoot(),\n SweetAlert2Module.forRoot(),\n AnalyticsModule.forRoot(environment.APP_ENV, environment.VERSION, {\n ...(location.host === 'energie.citron.io' ? { hotjarId: 3298685 } : {}),\n gaId: 'GTM-KKZ3GWT',\n }),\n ],\n providers: [APP_PROVIDERS],\n bootstrap: [AppComponent],\n entryComponents: [\n SelectChoicesComponent,\n SelectChoicesBlocComponent,\n InputTextComponent,\n SelectDropdownComponent,\n InputTextMultipleComponent,\n SelectChoicesInputComponent,\n ModalQuestionComponent,\n GroupQuestionComponent,\n FileQuestionComponent,\n ],\n})\nexport class AppModule {\n constructor(\n public appState: AppState,\n public analyticsService: AnalyticsService,\n public hotjarService: HotjarService\n ) {}\n}\n","import { NgModule } from '@angular/core';\nimport { ExtraOptions, RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n { path: '', loadChildren: () => import('./layout/layout.module').then(m => m.LayoutModule) },\n { path: 'authentification', loadChildren: () => import('./pages/signin/signin.module').then(m => m.SigninModule) },\n {\n path: 'reset-password',\n loadChildren: () => import('./pages/reset-password/reset-password.module').then(m => m.ResetPasswordModule),\n data: { activation: false },\n },\n {\n path: 'activation',\n loadChildren: () => import('./pages/reset-password/reset-password.module').then(m => m.ResetPasswordModule),\n data: { activation: true },\n },\n { path: '**', redirectTo: '404' },\n];\n/**\n * Router configuration object to define navigation behaviour.\n * scrollPositionRestoration set to 'enabled' creates a scroll history for backward navigation,\n * and ensures forward navigation scrolls to a provided anchor, or top of the view if not anchor is provided.\n */\nconst routerOptions: ExtraOptions = { scrollPositionRestoration: 'enabled' };\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, routerOptions)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import { Injectable } from '@angular/core';\n\nexport interface InternalStateType {\n [key: string]: any;\n}\n\n@Injectable()\nexport class AppState {\n _state: InternalStateType = {};\n\n constructor() {}\n\n // already return a clone of the current state\n get state() {\n return (this._state = this._clone(this._state));\n }\n\n // never allow mutation\n set state(value) {\n throw new Error('do not mutate the `.state` directly');\n }\n\n get(prop?: any) {\n // use our state getter for the clone\n const state = this.state;\n return state.hasOwnProperty(prop) ? state[prop] : state;\n }\n\n set(prop: string, value: any) {\n // internally mutate our state\n return (this._state[prop] = value);\n }\n\n private _clone(object: InternalStateType) {\n // simple object clone\n return JSON.parse(JSON.stringify(object));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class GlobalState {\n private _data = new Subject();\n private _dataStream = this._data.asObservable();\n private _subscriptions: Map void>> = new Map void>>();\n\n constructor() {\n this._dataStream.subscribe({ next: data => this._onEvent(data) });\n }\n\n notifyDataChanged(event, value) {\n const current = this._data[event];\n\n if (current !== value) {\n this._data[event] = value;\n\n this._data.next({\n event,\n data: this._data[event],\n });\n }\n }\n\n subscribe(event: string, callback: () => void) {\n const subscribers = this._subscriptions.get(event) || [];\n\n subscribers.push(callback);\n this._subscriptions.set(event, subscribers);\n }\n\n _onEvent(data: any) {\n const subscribers = this._subscriptions.get(data['event']) || [];\n\n subscribers.forEach(callback => {\n callback.call(null, data['data']);\n });\n }\n}\n","export default \".footer {\\n position: relative;\\n bottom: 0;\\n width: 100%;\\n height: 100px;\\n background-color: #3b474c;\\n padding-left: 215px;\\n}\\n.footer .up {\\n height: 80px;\\n text-align: center;\\n}\\n.footer .up img {\\n width: 50px;\\n height: 50px;\\n margin-top: 25px;\\n margin-bottom: 25px;\\n}\\n.footer .footer-bottom {\\n height: 120px;\\n text-align: center;\\n}\\n.footer .footer-bottom .logo {\\n margin: auto;\\n margin-top: 15px;\\n margin-bottom: 15px;\\n height: 90px;\\n width: 200px;\\n background-image: url('green_white.png');\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: cover;\\n}\\n.footer .networks {\\n height: 50px;\\n margin: auto;\\n width: -webkit-fit-content;\\n width: -moz-fit-content;\\n width: fit-content;\\n padding-top: 20px;\\n}\\n.footer .networks .icon {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n margin-left: 5px;\\n margin-right: 5px;\\n float: left;\\n background-color: white;\\n}\\n.footer .networks .linkedin {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_linkedin.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_linkedin.svg\\\");\\n}\\n.footer .networks .mail {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_mail.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_mail.svg\\\");\\n}\\n.footer .text {\\n width: -webkit-fit-content;\\n width: -moz-fit-content;\\n width: fit-content;\\n line-height: 50px;\\n height: 50px;\\n font-size: 12px;\\n color: white;\\n margin: auto;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2xheW91dC9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9sYXlvdXQvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EsYUFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7QUNGSjtBREdJO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0FDRFI7QURFUTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtBQ0FaO0FER0k7RUFDSSxhQUFBO0VBQ0Esa0JBQUE7QUNEUjtBREVRO0VBQ0ksWUFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLHdDQUFBO0VBQ0EsNEJBQUE7RUFDQSwyQkFBQTtFQUNBLHNCQUFBO0FDQVo7QURHSTtFQUNJLFlBQUE7RUFDQSxZQUFBO0VBQ0EsMEJBQUE7RUFBQSx1QkFBQTtFQUFBLGtCQUFBO0VBQ0EsaUJBQUE7QUNEUjtBREVRO0VFdkNKLFlGd0N5QjtFRXZDekIsV0Z1QytCO0VFdEMvQiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUZxQ1EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtBQ0laO0FERlE7RUFDSSxvRUFBQTtVQUFBLDREQUFBO0FDSVo7QURGUTtFQUNJLGdFQUFBO1VBQUEsd0RBQUE7QUNJWjtBRERJO0VBQ0ksMEJBQUE7RUFBQSx1QkFBQTtFQUFBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLFlBQUE7RUFDQSxZQUFBO0FDR1IiLCJmaWxlIjoic3JjL2FwcC9sYXlvdXQvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3NoYXJlZC9zdHlsZXMvbWl4aW5zJztcbkBpbXBvcnQgJy4uLy4uL3NoYXJlZC9zdHlsZXMvdmFyaWFibGVzLnNjc3MnO1xuXG4uZm9vdGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm90dG9tOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJGZvb3RlckhlaWdodCArIHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzYjQ3NGM7XG4gICAgcGFkZGluZy1sZWZ0OiAyMTVweDtcbiAgICAudXAge1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZvb3Rlci1ib3R0b20ge1xuICAgICAgICBoZWlnaHQ6IDEyMHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIC5sb2dvIHtcbiAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA5MHB4O1xuICAgICAgICAgICAgd2lkdGg6IDIwMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi8uLi8uLi9hc3NldHMvaW1nL2dyZWVuX3doaXRlLnBuZycpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm5ldHdvcmtzIHtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN2Z0ljb24oMzBweCwgMzBweCk7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIC5saW5rZWRpbiB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fbGlua2VkaW4uc3ZnJyk7XG4gICAgICAgIH1cbiAgICAgICAgLm1haWwge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX21haWwuc3ZnJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnRleHQge1xuICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xuICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgfVxufVxuIiwiLmZvb3RlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNiNDc0YztcbiAgcGFkZGluZy1sZWZ0OiAyMTVweDtcbn1cbi5mb290ZXIgLnVwIHtcbiAgaGVpZ2h0OiA4MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uZm9vdGVyIC51cCBpbWcge1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBtYXJnaW4tdG9wOiAyNXB4O1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuLmZvb3RlciAuZm9vdGVyLWJvdHRvbSB7XG4gIGhlaWdodDogMTIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5mb290ZXIgLmZvb3Rlci1ib3R0b20gLmxvZ28ge1xuICBtYXJnaW46IGF1dG87XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gIGhlaWdodDogOTBweDtcbiAgd2lkdGg6IDIwMHB4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1nL2dyZWVuX3doaXRlLnBuZ1wiKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuLmZvb3RlciAubmV0d29ya3Mge1xuICBoZWlnaHQ6IDUwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBwYWRkaW5nLXRvcDogMjBweDtcbn1cbi5mb290ZXIgLm5ldHdvcmtzIC5pY29uIHtcbiAgaGVpZ2h0OiAzMHB4O1xuICB3aWR0aDogMzBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBmbG9hdDogbGVmdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZm9vdGVyIC5uZXR3b3JrcyAubGlua2VkaW4ge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2xpbmtlZGluLnN2Z1wiKTtcbn1cbi5mb290ZXIgLm5ldHdvcmtzIC5tYWlsIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19tYWlsLnN2Z1wiKTtcbn1cbi5mb290ZXIgLnRleHQge1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGxpbmUtaGVpZ2h0OiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6IHdoaXRlO1xuICBtYXJnaW46IGF1dG87XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { ConfigService } from '../../shared/services/config/config.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n providers: [],\n})\nexport class FooterComponent implements OnInit {\n versionString: string = null;\n\n constructor(private sessionService: SessionService) {}\n\n ngOnInit() {\n const version = this.sessionService.getVersion();\n if (version) {\n this.versionString = `- ${version}`;\n }\n }\n}\n","export default \"#app_wrapper {\\n display: -webkit-box;\\n display: flex;\\n}\\n\\n#without-left {\\n padding: 0;\\n position: relative;\\n}\\n\\n#app_topnavbar-wrapper {\\n z-index: 1030;\\n left: 200px;\\n right: 0;\\n width: auto;\\n}\\n\\n.no-margin {\\n margin: 0;\\n}\\n\\n.container {\\n max-width: 100%;\\n width: 100%;\\n}\\n\\n#app_sidebar-left-navbar {\\n display: -webkit-box;\\n display: flex;\\n}\\n\\n.container-fluid home-container .content-container {\\n margin-left: 135px !important;\\n}\\n\\n#app-footer {\\n width: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7QUNESjs7QURHQTtFQUNJLFVBQUE7RUFDQSxrQkFBQTtBQ0FKOztBREVBO0VBQ0ksYUFBQTtFQUNBLFdBQUE7RUFDQSxRQUFBO0VBQ0EsV0FBQTtBQ0NKOztBRENBO0VBQ0ksU0FBQTtBQ0VKOztBREFBO0VBQ0ksZUFBQTtFQUNBLFdBQUE7QUNHSjs7QUREQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtBQ0lKOztBRERJO0VBQ0ksNkJBQUE7QUNJUjs7QURBQTtFQUNJLFdBQUE7QUNHSiIsImZpbGUiOiJzcmMvYXBwL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLy4uL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4jYXBwX3dyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG4jd2l0aG91dC1sZWZ0IHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbiNhcHBfdG9wbmF2YmFyLXdyYXBwZXIge1xuICAgIHotaW5kZXg6IDEwMzA7XG4gICAgbGVmdDogMjAwcHg7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IGF1dG87XG59XG4ubm8tbWFyZ2luIHtcbiAgICBtYXJnaW46IDA7XG59XG4uY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4jYXBwX3NpZGViYXItbGVmdC1uYXZiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG4uY29udGFpbmVyLWZsdWlkIGhvbWUtY29udGFpbmVyIHtcbiAgICAuY29udGVudC1jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTM1cHggIWltcG9ydGFudDtcbiAgICB9XG59XG5cbiNhcHAtZm9vdGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cbiIsIiNhcHBfd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbiN3aXRob3V0LWxlZnQge1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbiNhcHBfdG9wbmF2YmFyLXdyYXBwZXIge1xuICB6LWluZGV4OiAxMDMwO1xuICBsZWZ0OiAyMDBweDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiBhdXRvO1xufVxuXG4ubm8tbWFyZ2luIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuI2FwcF9zaWRlYmFyLWxlZnQtbmF2YmFyIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmNvbnRhaW5lci1mbHVpZCBob21lLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIge1xuICBtYXJnaW4tbGVmdDogMTM1cHggIWltcG9ydGFudDtcbn1cblxuI2FwcC1mb290ZXIge1xuICB3aWR0aDogMTAwJTtcbn0iXX0= */\"","import { Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core';\nimport { GlobalState } from '../app.state';\n\nimport { ConfigService } from '../shared/services/config/config.service';\n@Component({\n selector: 'app-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LayoutComponent implements OnInit {\n constructor(public config: ConfigService, private _elementRef: ElementRef, private _state: GlobalState) {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NavDropdownToggleDirective } from '../shared/directives/nav-dropdown-toggle.directive';\nimport { NavDropdownDirective } from '../shared/directives/nav-dropdown.directive';\nimport { ScrollbarDirective } from '../shared/directives/scrollbar.directive';\nimport { SharedModule } from '../shared/shared.module';\nimport { LayoutComponent } from './layout.component';\nimport { LayoutRoutes } from './layout.routes';\nimport { LeftNavbarComponent } from './left-navbar/left-navbar.component';\nimport { NavbarTopComponent } from './navbar-top/navbar-top.component';\n\n@NgModule({\n declarations: [\n LayoutComponent,\n LeftNavbarComponent,\n ScrollbarDirective,\n NavDropdownDirective,\n NavDropdownToggleDirective,\n NavbarTopComponent,\n ],\n imports: [LayoutRoutes, CommonModule, FormsModule, SharedModule.forRoot()],\n})\nexport class LayoutModule {}\n","import { RouterModule, Routes } from '@angular/router';\nimport { AuthGuard } from '../shared/services/guards/auth-guard.service';\nimport { CanDeactivateGuard } from '../shared/services/guards/can-deactivate-guard.service';\nimport { LayoutComponent } from './layout.component';\n\nconst LAYOUT_ROUTES: Routes = [\n {\n path: '',\n component: LayoutComponent,\n canActivate: [AuthGuard],\n canDeactivate: [CanDeactivateGuard],\n children: [\n {\n path: '',\n redirectTo: 'accueil',\n pathMatch: 'full',\n },\n {\n path: 'accueil',\n loadChildren: () => import('../pages/home/home.module').then(m => m.HomeModule),\n },\n {\n path: 'cartographie',\n loadChildren: () => import('../pages/cartography/cartography.module').then(m => m.CartographyModule),\n },\n\n /* ANALYSE DES DONNEES */\n {\n path: 'analyse/croisement',\n loadChildren: () =>\n import('../pages/analyse/cross-data/cross-data.module').then(m => m.CrossDataModule),\n },\n {\n path: 'analyse/comparaison',\n loadChildren: () => import('../pages/analyse/compare/compare.module').then(m => m.CompareModule),\n },\n\n /* COLLECTE */\n {\n path: 'collecte',\n loadChildren: () => import('../pages/collect/collect.module').then(m => m.CollectModule),\n },\n {\n path: 'collecte/:groupId',\n loadChildren: () => import('../pages/collect/collect.module').then(m => m.CollectModule),\n },\n {\n path: 'collecte/regex/upload/:uploadId',\n loadChildren: () =>\n import('../pages/fix-regex-upload/fix-regex-upload.module').then(m => m.FixRegexUploadModule),\n },\n {\n path: 'collecte/regex/upload/:uploadId/:chunkId',\n loadChildren: () =>\n import('../pages/fix-regex-upload/chunk/fix-regex-upload-chunk.module').then(\n m => m.FixRegexUploadChunkModule\n ),\n },\n {\n path: 'collecte/regex/propriete/:groupId/:property/:energy/:provider/:contractType',\n loadChildren: () =>\n import('../pages/fix-regex-property/fix-regex-property.module').then(m => m.FixRegexPropertyModule),\n },\n\n /* ENERGY */\n {\n path: 'energie',\n redirectTo: 'energie/pdl',\n },\n {\n path: 'energie/pdl',\n loadChildren: () => import('../pages/energy/sites-list/sites-list.module').then(m => m.SitesListModule),\n data: { fluidCategory: 'energy', page: 'energy' },\n },\n {\n path: 'energie/pdl/elec/:rfId',\n loadChildren: () => import('../pages/energy/pdl-view/elec/elec.module').then(m => m.ElecPdlViewModule),\n },\n {\n path: 'energie/pdl/gaz/:rfId',\n loadChildren: () => import('../pages/energy/pdl-view/gas/gas.module').then(m => m.GasPdlViewModule),\n },\n {\n path: 'energie/pdl/rcu/:rfId',\n loadChildren: () =>\n import('../pages/energy/pdl-view/heating/heating.module').then(m => m.HeatingPdlViewModule),\n },\n {\n path: 'energie/pdl/rfu/:rfId',\n loadChildren: () =>\n import('../pages/energy/pdl-view/cooling/cooling.module').then(m => m.CoolingPdlViewModule),\n },\n {\n path: 'energie/pdl/elec/:rfId/:contractId',\n loadChildren: () => import('../pages/energy/pdl-view/elec/elec.module').then(m => m.ElecPdlViewModule),\n },\n {\n path: 'energie/pdl/gaz/:rfId/:contractId',\n loadChildren: () => import('../pages/energy/pdl-view/gas/gas.module').then(m => m.GasPdlViewModule),\n },\n {\n path: 'energie/pdl/rcu/:rfId/:contractId',\n loadChildren: () =>\n import('../pages/energy/pdl-view/heating/heating.module').then(m => m.HeatingPdlViewModule),\n },\n {\n path: 'energie/pdl/rfu/:rfId/:contractId',\n loadChildren: () =>\n import('../pages/energy/pdl-view/cooling/cooling.module').then(m => m.CoolingPdlViewModule),\n },\n {\n path: 'energie/suivi',\n loadChildren: () => import('../pages/energy/followup/followup.module').then(m => m.FollowupModule),\n data: { fluidCategory: 'energy', page: 'energy' },\n },\n {\n path: ':fluidCategory/profil/:id',\n loadChildren: () => import('../pages/energy/profiles/profiles.module').then(m => m.ProfilesModule),\n },\n {\n path: 'energie/classement',\n loadChildren: () => import('../pages/energy/ranking/ranking.module').then(m => m.RankingModule),\n data: { fluidCategory: 'energy', page: 'energy' },\n },\n {\n path: 'energie/optimisation',\n loadChildren: () =>\n import('../pages/energy/optimization/optimization.module').then(m => m.OptimizationModule),\n },\n {\n path: ':fluidCategory/merge/:siteId',\n loadChildren: () => import('../pages/energy/merge/merge.module').then(m => m.MergeModule),\n },\n {\n path: ':fluidCategory/merge/rf/:routingReferenceId',\n loadChildren: () => import('../pages/energy/merge/merge.module').then(m => m.MergeModule),\n },\n {\n path: 'energie/repartition',\n loadChildren: () =>\n import('../pages/energy/repartition/repartition.module').then(m => m.RepartitionModule),\n },\n {\n path: 'energie/courbes-de-charge',\n loadChildren: () => import('../pages/energy/load-curve/load-curve.module').then(m => m.LoadCurveModule),\n },\n\n /* WATER */\n {\n path: 'eau',\n redirectTo: 'water/pdl',\n },\n {\n path: 'eau/pdl',\n loadChildren: () => import('../pages/energy/sites-list/sites-list.module').then(m => m.SitesListModule),\n data: { fluidCategory: 'water', page: 'water' },\n },\n {\n path: 'eau/pdl/:rfId',\n loadChildren: () =>\n import('../pages/energy/pdl-view/water/water.module').then(m => m.WaterPdlViewModule),\n },\n {\n path: 'eau/pdl/:rfId/:contractId',\n loadChildren: () =>\n import('../pages/energy/pdl-view/water/water.module').then(m => m.WaterPdlViewModule),\n },\n {\n path: 'eau/classement',\n loadChildren: () => import('../pages/energy/ranking/ranking.module').then(m => m.RankingModule),\n data: { fluidCategory: 'water', page: 'water' },\n },\n {\n path: 'eau/suivi',\n loadChildren: () => import('../pages/energy/followup/followup.module').then(m => m.FollowupModule),\n data: { fluidCategory: 'water', page: 'water' },\n },\n\n /* VEHICLES */\n {\n path: 'vehicules/flotte',\n loadChildren: () => import('../pages/energy/sites-list/sites-list.module').then(m => m.SitesListModule),\n data: { fluidCategory: 'vehicle', page: 'vehicles' },\n },\n {\n // TODO: see if we can emrge with energy FollowupModule\n path: 'vehicules/suivi',\n loadChildren: () => import('../pages/vehicles/followup/followup.module').then(m => m.FollowUpModule),\n },\n {\n path: 'vehicules/parc',\n loadChildren: () =>\n import('../pages/vehicles/park-monitoring/park-monitoring.module').then(\n m => m.ParkMonitoringModule\n ),\n },\n\n /* CONTRATS */\n {\n path: 'contrats',\n loadChildren: () => import('../pages/contracts/contracts.module').then(m => m.ContractsModule),\n },\n\n /* RSE */\n {\n path: 'rse',\n loadChildren: () => import('../pages/rse/rse.module').then(m => m.RseModule),\n },\n\n /* RULES */\n\n {\n path: 'veille',\n loadChildren: () => import('../pages/rules/rules.module').then(m => m.RulesModule),\n },\n\n /* MANAGERS */\n {\n path: 'managers',\n loadChildren: () => import('../pages/managers/managers.module').then(m => m.ManagersModule),\n },\n {\n path: 'managers/echange',\n loadChildren: () => import('../pages/managers/exchange/exchange.module').then(m => m.ExchangeModule),\n },\n {\n path: 'managers/devis',\n loadChildren: () => import('../pages/managers/devis/devis.module').then(m => m.DevisModule),\n },\n\n /* PROFILE */\n {\n path: 'profil',\n loadChildren: () => import('../pages/profile/profile.module').then(m => m.ProfileModule),\n },\n {\n path: 'profil/compte',\n loadChildren: () => import('../pages/profile/account/account.module').then(m => m.AccountModule),\n },\n {\n path: 'profil/em',\n loadChildren: () => import('../pages/profile/em/em.module').then(m => m.EmModule),\n },\n {\n path: 'profil/utilisateurs',\n loadChildren: () => import('../pages/profile/users/users.module').then(m => m.UsersModule),\n },\n {\n path: '404',\n loadChildren: () => import('../pages/404/not-found.module').then(m => m.NotFoundModule),\n },\n\n /* ADMIN */\n\n /* -- ENTREPRISES */\n {\n path: 'admin/entreprises',\n loadChildren: () =>\n import('../pages/admin/companies-home/companies-home.module').then(m => m.AdminCompaniesModule),\n },\n {\n path: 'admin/entreprise/:companyId',\n redirectTo: 'admin/entreprise/:companyId/profil',\n loadChildren: () => import('../pages/admin/company/company.module').then(m => m.CompanyModule),\n },\n {\n path: 'admin/entreprise/:id/uploads/:idUpload',\n loadChildren: () =>\n import('../pages/admin/identification-pattern/identification-pattern.module').then(\n m => m.IdentificationPatternModule\n ),\n },\n {\n path: 'admin/entreprise/:id/uploads/:idUpload/chunks/:idChunk',\n loadChildren: () =>\n import('../pages/admin/identification-pattern/identification-pattern.module').then(\n m => m.IdentificationPatternModule\n ),\n },\n {\n path: 'admin/entreprises/creer',\n loadChildren: () => import('../pages/admin/company/company.module').then(m => m.CompanyModule),\n },\n {\n path: 'admin/entreprise/:companyId/:tab',\n loadChildren: () => import('../pages/admin/company/company.module').then(m => m.CompanyModule),\n },\n\n /* -- UTILISATEURS */\n {\n path: 'admin/utilisateurs',\n loadChildren: () => import('../pages/admin/users-home/users-home.module').then(m => m.AdminUsersModule),\n },\n {\n path: 'admin/utilisateur/:userId',\n loadChildren: () => import('../pages/admin/user/user.module').then(m => m.UserModule),\n },\n {\n path: 'admin/utilisateurs/creer',\n loadChildren: () => import('../pages/admin/user/user.module').then(m => m.UserModule),\n },\n {\n path: 'admin/utilisateurs/creer/:companyId',\n loadChildren: () => import('../pages/admin/user/user.module').then(m => m.UserModule),\n },\n {\n path: 'admin/utilisateur/:userId/:tab',\n loadChildren: () => import('../pages/admin/user/user.module').then(m => m.UserModule),\n },\n\n /* SPECIFIC CLIENT */\n /* RESAH */\n {\n path: 'specific/resah/cotisation',\n loadChildren: () =>\n import('../pages/specific/resah/cotisation/cotisation.module').then(m => m.CotisationModule),\n },\n\n /* DOCUMENTS */\n {\n path: 'documents',\n loadChildren: () => import('../pages/documents/documents.module').then(m => m.DocumentsModule),\n },\n\n /* CAMPAIGNS */\n {\n path: 'cibles/campagnes',\n loadChildren: () => import('../pages/targets/campaigns/campaigns.module').then(m => m.CampaignsModule),\n },\n {\n path: 'cibles/suivis-exploitation',\n loadChildren: () =>\n import('../pages/targets/operating-monitoring/operating-monitoring.module').then(\n m => m.OperatingMonitoringModule\n ),\n },\n\n /* BILLS */\n {\n path: 'factures',\n loadChildren: () => import('../pages/bills/bills.module').then(m => m.BillsModule),\n },\n\n /* BILLS CONTROL */\n {\n path: 'controle/:tab',\n loadChildren: () =>\n import('../pages/bills-control/bills-control.module').then(m => m.BillsControlModule),\n },\n\n /* DJU */\n {\n path: 'dju',\n loadChildren: () => import('../pages/dju/dju.module').then(m => m.DjuModule),\n },\n\n /* ALERTS MANAGEMENT */\n {\n path: 'parametrage-alertes',\n loadChildren: () =>\n import('../pages/alerts-management/alerts-management.module').then(m => m.AlertsManagementModule),\n },\n ],\n },\n];\n\n// Keep export const instead of export default. Not supported for router to work it seems...\nexport const LayoutRoutes = RouterModule.forChild(LAYOUT_ROUTES);\n","export default \".citron-leftbar {\\n font-family: \\\"Montserrat\\\", sans-serif;\\n font-size: 13px;\\n position: fixed;\\n z-index: 1000;\\n box-shadow: 1px 0px 2px 0px rgba(101, 101, 101, 0.27);\\n height: 100%;\\n left: 0;\\n top: 0;\\n width: 200px;\\n -webkit-transition: all 0.3s;\\n transition: all 0.3s;\\n background-color: #2f3b40;\\n color: #fff;\\n}\\n.citron-leftbar .nav-left {\\n font-size: 20px;\\n}\\n.citron-leftbar .nav-left .img-logo {\\n position: absolute;\\n left: 30px;\\n height: 35px;\\n width: 30px;\\n margin-top: 17px;\\n background-color: white;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n -webkit-mask-image: url('picto_citron.svg');\\n mask-image: url('picto_citron.svg');\\n}\\n.citron-leftbar .nav-left .img-logo:hover {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n.citron-leftbar .nav-left .txt-logo {\\n margin-left: 50px;\\n line-height: 68px;\\n font-family: \\\"Open Sans\\\";\\n font-weight: bold;\\n}\\n.citron-leftbar .nav-left .txt-logo a,\\n.citron-leftbar .nav-left .txt-logo a:hover,\\n.citron-leftbar .nav-left .txt-logo a:active,\\n.citron-leftbar .nav-left .txt-logo a:visited {\\n color: #fff;\\n}\\n.citron-leftbar .list-button {\\n position: absolute;\\n left: 0;\\n right: 0;\\n list-style-type: none;\\n -webkit-padding-start: 0;\\n padding-left: 1px;\\n}\\n.citron-leftbar .list-button li {\\n cursor: pointer;\\n text-align: left;\\n margin-bottom: 1px;\\n position: relative;\\n}\\n.citron-leftbar .list-button li img {\\n height: 20px;\\n display: -webkit-box;\\n display: flex;\\n margin-left: auto;\\n margin-right: auto;\\n margin-bottom: 10px;\\n}\\n.citron-leftbar .list-button li .dropdown-sign {\\n line-height: 40px;\\n font-size: 30px;\\n height: 15px;\\n}\\n.citron-leftbar .list-button li .nav-button,\\n.citron-leftbar .list-button li .nav-button:active,\\n.citron-leftbar .list-button li .nav-button:focus {\\n color: #fff;\\n background-color: transparent;\\n border: none;\\n outline: 0;\\n cursor: pointer;\\n text-align: left;\\n position: relative;\\n top: 0;\\n bottom: 0;\\n left: 35px;\\n width: calc(100% - 25px);\\n z-index: 2;\\n height: 50px;\\n font-size: 12px;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n.citron-leftbar .list-button li .nav-button a,\\n.citron-leftbar .list-button li .nav-button:active a,\\n.citron-leftbar .list-button li .nav-button:focus a {\\n display: block;\\n width: 100%;\\n height: 100%;\\n padding: 15px 7px 2px;\\n}\\n.citron-leftbar .list-button li .nav-button a:link, .citron-leftbar .list-button li .nav-button a:visited,\\n.citron-leftbar .list-button li .nav-button:active a:link,\\n.citron-leftbar .list-button li .nav-button:active a:visited,\\n.citron-leftbar .list-button li .nav-button:focus a:link,\\n.citron-leftbar .list-button li .nav-button:focus a:visited {\\n color: inherit;\\n}\\n.citron-leftbar .list-button li .nav-button:hover {\\n color: #fff;\\n}\\n.citron-leftbar .list-button li .active {\\n color: #fff;\\n}\\n.citron-leftbar .list-button li .hover-machine {\\n border: none;\\n -webkit-transition: all 0.3s;\\n transition: all 0.3s;\\n position: absolute;\\n height: 50px;\\n width: 0;\\n z-index: 1;\\n}\\n.citron-leftbar .list-button li .icon-picto {\\n height: 25px;\\n width: 20px;\\n position: absolute;\\n left: 10px;\\n top: 12px;\\n background-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-position: center;\\n mask-position: center;\\n background-color: #fff;\\n}\\n.citron-leftbar .list-button li .icon-accueil {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_home.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_home.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-cartographie {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_cartographie.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_cartographie.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-analyse {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_analyse_donnees.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_analyse_donnees.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-energie {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_gestion_energie.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_gestion_energie.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-eau {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_gestion_eau.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_gestion_eau.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-vehicules {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_gestion_vehicules.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-left/citron_gestion_vehicules.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-documents {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pdf.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pdf.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-rse {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_leaf.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_leaf.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-veille {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_law.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_law.svg\\\");\\n}\\n.citron-leftbar .list-button li .icon-cibles {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_target.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_target.svg\\\");\\n}\\n.citron-leftbar .list-button .dropdown-li .nav-button::after {\\n -webkit-transition: 0.3s all;\\n transition: 0.3s all;\\n line-height: 12px;\\n top: 20px;\\n bottom: 20px;\\n content: \\\">\\\";\\n font-size: 10px;\\n color: #fff;\\n background-size: cover;\\n position: absolute;\\n right: 20px;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown {\\n -webkit-transition: 1s all;\\n transition: 1s all;\\n padding: 0;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown .nav-button {\\n left: 0;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown .nav-button .active-link {\\n color: white !important;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown .nav-button::after {\\n content: \\\"\\\";\\n display: none;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown li {\\n line-height: 12px;\\n font-size: 12px;\\n list-style-type: none;\\n padding-left: 6px;\\n padding-bottom: 10px;\\n cursor: pointer;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown li .nav-button {\\n height: auto;\\n color: #88919c;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown li .nav-button a {\\n padding-top: 1px;\\n}\\n.citron-leftbar .list-button .dropdown-li .dropdown li:hover .nav-button a:hover:not(.element-inactive) {\\n color: #fff;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive),\\n.citron-leftbar .list-button .active:not(.li-inactive) {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-accueil,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-accueil {\\n background-color: #f0a62a;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-cartographie,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-cartographie {\\n background-color: #89a630;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-analyse,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-analyse {\\n background-color: #70c283;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-energie,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-energie {\\n background-color: #d3bf96;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-eau,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-eau {\\n background-color: #4281b8;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-vehicules,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-vehicules {\\n background-color: #df7c3a;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-documents,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-documents {\\n background-color: #a7b29d;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-rse,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-rse {\\n background-color: #449d84;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-veille,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-veille {\\n background-color: #b53731;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .icon-cibles,\\n.citron-leftbar .list-button .active:not(.li-inactive) .icon-cibles {\\n background-color: #d3bf96;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .accueil,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .accueil,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .accueil,\\n.citron-leftbar .list-button .active:not(.li-inactive) .accueil,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .accueil,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .accueil {\\n color: #f0a62a !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .cartographie,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .cartographie,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .cartographie,\\n.citron-leftbar .list-button .active:not(.li-inactive) .cartographie,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .cartographie,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .cartographie {\\n color: #89a630 !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .analyse,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .analyse,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .analyse,\\n.citron-leftbar .list-button .active:not(.li-inactive) .analyse,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .analyse,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .analyse {\\n color: #70c283 !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .energie,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .energie,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .energie,\\n.citron-leftbar .list-button .active:not(.li-inactive) .energie,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .energie,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .energie {\\n color: #d3bf96 !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .eau,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .eau,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .eau,\\n.citron-leftbar .list-button .active:not(.li-inactive) .eau,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .eau,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .eau {\\n color: #4281b8 !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .vehicules,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .vehicules,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .vehicules,\\n.citron-leftbar .list-button .active:not(.li-inactive) .vehicules,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .vehicules,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .vehicules {\\n color: #df7c3a !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .documents,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .documents,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .documents,\\n.citron-leftbar .list-button .active:not(.li-inactive) .documents,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .documents,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .documents {\\n color: #a7b29d !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .rse,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .rse,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .rse,\\n.citron-leftbar .list-button .active:not(.li-inactive) .rse,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .rse,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .rse {\\n color: #449d84 !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .veille,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .veille,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .veille,\\n.citron-leftbar .list-button .active:not(.li-inactive) .veille,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .veille,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .veille {\\n color: #b53731 !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .cibles,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:link .cibles,\\n.citron-leftbar .list-button li:hover:not(.li-inactive) a:visited .cibles,\\n.citron-leftbar .list-button .active:not(.li-inactive) .cibles,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:link .cibles,\\n.citron-leftbar .list-button .active:not(.li-inactive) a:visited .cibles {\\n color: #d3bf96 !important;\\n}\\n.citron-leftbar .list-button li:hover:not(.li-inactive) .dropdown li,\\n.citron-leftbar .list-button .active:not(.li-inactive) .dropdown li {\\n background-color: transparent;\\n}\\n.citron-leftbar .list-button .active {\\n color: black;\\n}\\n.open-dropdown .nav-button::after {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n.citron-leftbar-open {\\n -webkit-transform: translateX(0);\\n transform: translateX(0);\\n}\\n.element-beta,\\n.element-inactive {\\n color: grey;\\n}\\n.element-beta:before,\\n.element-inactive:before {\\n content: \\\"A VENIR\\\";\\n position: absolute;\\n right: 20px;\\n top: 25px;\\n background-color: #2f3b40;\\n color: grey;\\n padding: 0 5px;\\n z-index: 3;\\n border-radius: 5px;\\n font-size: 8px;\\n border: 1px solid;\\n border-color: grey;\\n}\\n.element-beta:after,\\n.element-inactive:after {\\n display: none !important;\\n}\\n.element-beta.element-inactive-hidden:before,\\n.element-inactive.element-inactive-hidden:before {\\n display: none;\\n}\\n.element-beta:before {\\n content: \\\"BETA\\\";\\n}\\n.dropdown .nav-button .element-beta:before,\\n.dropdown .nav-button .element-inactive:before {\\n right: -20px;\\n top: 0;\\n}\\nspan.element-inactive:before {\\n right: 9px;\\n top: 3px;\\n padding: 1px 5px;\\n}\\n.nav-button a,\\n.nav-button a:link,\\n.nav-button a:visited {\\n -webkit-transition: unset;\\n transition: unset;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2xheW91dC9sZWZ0LW5hdmJhci9sZWZ0LW5hdmJhci5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL2xheW91dC9sZWZ0LW5hdmJhci9sZWZ0LW5hdmJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLHFDQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0VBQ0EscURBQUE7RUFDQSxZQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSxZQUFBO0VBQ0EsNEJBQUE7RUFBQSxvQkFBQTtFQUNBLHlCQ2FLO0VEWkwsV0FBQTtBRUZKO0FGSUk7RUFDSSxlQUFBO0FFRlI7QUZJUTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSx3QkFBQTtVQUFBLGdCQUFBO0VBQ0EsMkNBQUE7VUFBQSxtQ0FBQTtBRUZaO0FGR1k7RUFDSSw2Q0FBQTtVQUFBLHFDQUFBO0FFRGhCO0FGS1E7RUFDSSxpQkFBQTtFQUNBLGlCQUFBO0VBT0Esd0JBQUE7RUFDQSxpQkFBQTtBRVRaO0FGRVk7Ozs7RUFJSSxXQUFBO0FFQWhCO0FGT0k7RUFDSSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxRQUFBO0VBQ0EscUJBQUE7RUFDQSx3QkFBQTtFQUNBLGlCQUFBO0FFTFI7QUZPUTtFQUNJLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7QUVMWjtBRk9ZO0VBQ0ksWUFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtBRUxoQjtBRlFZO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0VBQ0EsWUFBQTtBRU5oQjtBRlNZOzs7RUFHSSxXQUFBO0VBQ0EsNkJBQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0Esd0JBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSxnREFBQTtBRVBoQjtBRlFnQjs7O0VBQ0ksY0FBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EscUJBQUE7QUVKcEI7QUZLb0I7Ozs7O0VBRUksY0FBQTtBRUF4QjtBRktZO0VBQ0ksV0FBQTtBRUhoQjtBRk1ZO0VBQ0ksV0FBQTtBRUpoQjtBRk9ZO0VBQ0ksWUFBQTtFQUNBLDRCQUFBO0VBQUEsb0JBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxRQUFBO0VBQ0EsVUFBQTtBRUxoQjtBRk9ZO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFBO0VBQ0Esd0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBQ0EsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLHNCQUFBO0FFTGhCO0FGT1k7RUFDSSxnRUFBQTtVQUFBLHdEQUFBO0FFTGhCO0FGT1k7RUFDSSxxRkFBQTtVQUFBLDZFQUFBO0FFTGhCO0FGT1k7RUFDSSx3RkFBQTtVQUFBLGdGQUFBO0FFTGhCO0FGT1k7RUFDSSx3RkFBQTtVQUFBLGdGQUFBO0FFTGhCO0FGT1k7RUFDSSxvRkFBQTtVQUFBLDRFQUFBO0FFTGhCO0FGT1k7RUFDSSwwRkFBQTtVQUFBLGtGQUFBO0FFTGhCO0FGT1k7RUFDSSwrREFBQTtVQUFBLHVEQUFBO0FFTGhCO0FGT1k7RUFDSSxnRUFBQTtVQUFBLHdEQUFBO0FFTGhCO0FGT1k7RUFDSSwrREFBQTtVQUFBLHVEQUFBO0FFTGhCO0FGT1k7RUFDSSxrRUFBQTtVQUFBLDBEQUFBO0FFTGhCO0FGU1k7RUFDSSw0QkFBQTtFQUFBLG9CQUFBO0VBQ0EsaUJBQUE7RUFDQSxTQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0VBQ0EsV0FBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0FFUGhCO0FGU1k7RUFDSSwwQkFBQTtFQUFBLGtCQUFBO0VBQ0EsVUFBQTtBRVBoQjtBRlFnQjtFQUNJLE9BQUE7QUVOcEI7QUZRb0I7RUFDSSx1QkFBQTtBRU54QjtBRlNnQjtFQUNJLFdBQUE7RUFDQSxhQUFBO0FFUHBCO0FGU2dCO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EsZUFBQTtBRVBwQjtBRlFvQjtFQUNJLFlBQUE7RUFDQSxjQUFBO0FFTnhCO0FGT3dCO0VBQ0ksZ0JBQUE7QUVMNUI7QUZZNEI7RUFDSSxXQUFBO0FFVmhDO0FGaUJROztFQUVJLDJDQUFBO0FFZlo7QUZnQlk7O0VBQ0kseUJDOU5OO0FDaU5WO0FGZVk7O0VBQ0kseUJDaE9EO0FDb05mO0FGY1k7O0VBQ0kseUJDak9OO0FDc05WO0FGYVk7O0VBQ0kseUJDbk9OO0FDeU5WO0FGWVk7O0VBQ0kseUJDMU5WO0FDaU5OO0FGV1k7O0VBQ0kseUJDdk9KO0FDK05aO0FGVVk7O0VBQ0kseUJDbE5KO0FDMk1aO0FGU1k7O0VBQ0kseUJDMU9WO0FDb09OO0FGUVk7O0VBQ0kseUJDNU9QO0FDdU9UO0FGT1k7O0VBQ0kseUJDek5QO0FDcU5UO0FGVWdCOzs7Ozs7RUFDSSx5QkFBQTtBRUhwQjtBRktnQjs7Ozs7O0VBQ0kseUJBQUE7QUVFcEI7QUZBZ0I7Ozs7OztFQUNJLHlCQUFBO0FFT3BCO0FGTGdCOzs7Ozs7RUFDSSx5QkFBQTtBRVlwQjtBRlZnQjs7Ozs7O0VBQ0kseUJBQUE7QUVpQnBCO0FGZmdCOzs7Ozs7RUFDSSx5QkFBQTtBRXNCcEI7QUZwQmdCOzs7Ozs7RUFDSSx5QkFBQTtBRTJCcEI7QUZ6QmdCOzs7Ozs7RUFDSSx5QkFBQTtBRWdDcEI7QUY5QmdCOzs7Ozs7RUFDSSx5QkFBQTtBRXFDcEI7QUZuQ2dCOzs7Ozs7RUFDSSx5QkFBQTtBRTBDcEI7QUZ0Q2dCOztFQUNJLDZCQUFBO0FFeUNwQjtBRnJDUTtFQUNJLFlBQUE7QUV1Q1o7QUZsQ0k7RUFDSSxnQ0FBQTtVQUFBLHdCQUFBO0FFcUNSO0FGbENBO0VBQ0ksZ0NBQUE7VUFBQSx3QkFBQTtBRXFDSjtBRm5DQTs7RUFFSSxXQUFBO0FFc0NKO0FGcENJOztFQUNJLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsU0FBQTtFQUNBLHlCQy9SQztFRGdTRCxXQUFBO0VBQ0EsY0FBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0FFdUNSO0FGcENJOztFQUNJLHdCQUFBO0FFdUNSO0FGbkNROztFQUNJLGFBQUE7QUVzQ1o7QUZqQ0E7RUFDSSxlQUFBO0FFb0NKO0FGN0JZOztFQUNJLFlBQUE7RUFDQSxNQUFBO0FFaUNoQjtBRjFCSTtFQUNJLFVBQUE7RUFDQSxRQUFBO0VBQ0EsZ0JBQUE7QUU2QlI7QUZ6Qkk7OztFQUdJLHlCQUFBO0VBQUEsaUJBQUE7QUU0QlIiLCJmaWxlIjoic3JjL2FwcC9sYXlvdXQvbGVmdC1uYXZiYXIvbGVmdC1uYXZiYXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uL3NoYXJlZC9zdHlsZXMvdmFyaWFibGVzLnNjc3MnO1xuXG4uY2l0cm9uLWxlZnRiYXIge1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGJveC1zaGFkb3c6IDFweCAwcHggMnB4IDBweCByZ2JhKDEwMSwgMTAxLCAxMDEsIDAuMjcpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogJG5hdmJhckxlZnRXaWR0aCArIHB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXZiYXI7XG4gICAgY29sb3I6ICNmZmY7XG5cbiAgICAubmF2LWxlZnQge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG5cbiAgICAgICAgLmltZy1sb2dvIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDMwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE3cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCcuLi8uLi8uLi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2l0cm9uLnN2ZycpO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYS1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50eHQtbG9nbyB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNTBweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA2OHB4O1xuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIGE6aG92ZXIsXG4gICAgICAgICAgICBhOmFjdGl2ZSxcbiAgICAgICAgICAgIGE6dmlzaXRlZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5saXN0LWJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFweDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZHJvcGRvd24tc2lnbiB7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5hdi1idXR0b24sXG4gICAgICAgICAgICAubmF2LWJ1dHRvbjphY3RpdmUsXG4gICAgICAgICAgICAubmF2LWJ1dHRvbjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMzVweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjVweCk7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggN3B4IDJweDtcbiAgICAgICAgICAgICAgICAgICAgJjpsaW5rLFxuICAgICAgICAgICAgICAgICAgICAmOnZpc2l0ZWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5uYXYtYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5ob3Zlci1tYWNoaW5lIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmljb24tcGljdG8ge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgbGVmdDogMTBweDtcbiAgICAgICAgICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi1hY2N1ZWlsIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9faG9tZS5zdmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pY29uLWNhcnRvZ3JhcGhpZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci1sZWZ0L2NpdHJvbl9jYXJ0b2dyYXBoaWUuc3ZnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi1hbmFseXNlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLWxlZnQvY2l0cm9uX2FuYWx5c2VfZG9ubmVlcy5zdmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pY29uLWVuZXJnaWUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItbGVmdC9jaXRyb25fZ2VzdGlvbl9lbmVyZ2llLnN2ZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmljb24tZWF1IHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLWxlZnQvY2l0cm9uX2dlc3Rpb25fZWF1LnN2ZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmljb24tdmVoaWN1bGVzIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLWxlZnQvY2l0cm9uX2dlc3Rpb25fdmVoaWN1bGVzLnN2ZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmljb24tZG9jdW1lbnRzIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fcGRmLnN2ZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmljb24tcnNlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fbGVhZi5zdmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pY29uLXZlaWxsZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2xhdy5zdmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pY29uLWNpYmxlcyB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3RhcmdldC5zdmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZHJvcGRvd24tbGkge1xuICAgICAgICAgICAgLm5hdi1idXR0b246OmFmdGVyIHtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIGFsbDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICAgICAgICAgICAgICB0b3A6IDIwcHg7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICc+JztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZHJvcGRvd24ge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IDFzIGFsbDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIC5uYXYtYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcblxuICAgICAgICAgICAgICAgICAgICAuYWN0aXZlLWxpbmsge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLm5hdi1idXR0b246OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgLm5hdi1idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM4ODkxOWM7XG4gICAgICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgLm5hdi1idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJjpub3QoLmVsZW1lbnQtaW5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpLFxuICAgICAgICAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgICAgICAuaWNvbi1hY2N1ZWlsIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjdWVpbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pY29uLWNhcnRvZ3JhcGhpZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcnRvZ3JhcGhpZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pY29uLWFuYWx5c2Uge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhbmFseXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmljb24tZW5lcmdpZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGVuZXJnaWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi1lYXUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlYXU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi12ZWhpY3VsZXMge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR2ZWhpY3VsZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi1kb2N1bWVudHMge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkb2N1bWVudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi1yc2Uge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi12ZWlsbGUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR2ZWlsbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi1jaWJsZXMge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjaWJsZXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYsXG4gICAgICAgICAgICBhOmxpbmssXG4gICAgICAgICAgICBhOnZpc2l0ZWQge1xuICAgICAgICAgICAgICAgIC5hY2N1ZWlsIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRhY2N1ZWlsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5jYXJ0b2dyYXBoaWUge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNhcnRvZ3JhcGhpZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuYW5hbHlzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYW5hbHlzZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuZW5lcmdpZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkZW5lcmdpZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuZWF1IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRlYXUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnZlaGljdWxlcyB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkdmVoaWN1bGVzICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5kb2N1bWVudHMge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGRvY3VtZW50cyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucnNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRyc2UgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnZlaWxsZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkdmVpbGxlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5jaWJsZXMge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNpYmxlcyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5kcm9wZG93biB7XG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG4ub3Blbi1kcm9wZG93biB7XG4gICAgLm5hdi1idXR0b246OmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgIH1cbn1cbi5jaXRyb24tbGVmdGJhci1vcGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG4uZWxlbWVudC1iZXRhLFxuLmVsZW1lbnQtaW5hY3RpdmUge1xuICAgIGNvbG9yOiBncmV5O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnQSBWRU5JUic7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgIHRvcDogMjVweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdmJhcjtcbiAgICAgICAgY29sb3I6IGdyZXk7XG4gICAgICAgIHBhZGRpbmc6IDAgNXB4O1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogOHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBncmV5O1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5lbGVtZW50LWluYWN0aXZlLWhpZGRlbiB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5lbGVtZW50LWJldGE6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnQkVUQSc7XG59XG5cbi5kcm9wZG93biB7XG4gICAgLm5hdi1idXR0b24ge1xuICAgICAgICAuZWxlbWVudC1iZXRhLFxuICAgICAgICAuZWxlbWVudC1pbmFjdGl2ZSB7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC0yMHB4O1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuc3Bhbi5lbGVtZW50LWluYWN0aXZlIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIHJpZ2h0OiA5cHg7XG4gICAgICAgIHRvcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAxcHggNXB4O1xuICAgIH1cbn1cbi5uYXYtYnV0dG9uIHtcbiAgICBhLFxuICAgIGE6bGluayxcbiAgICBhOnZpc2l0ZWQge1xuICAgICAgICB0cmFuc2l0aW9uOiB1bnNldDtcbiAgICB9XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiIsIi5jaXRyb24tbGVmdGJhciB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDEwMDA7XG4gIGJveC1zaGFkb3c6IDFweCAwcHggMnB4IDBweCByZ2JhKDEwMSwgMTAxLCAxMDEsIDAuMjcpO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDIwMHB4O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJmM2I0MDtcbiAgY29sb3I6ICNmZmY7XG59XG4uY2l0cm9uLWxlZnRiYXIgLm5hdi1sZWZ0IHtcbiAgZm9udC1zaXplOiAyMHB4O1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5uYXYtbGVmdCAuaW1nLWxvZ28ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDMwcHg7XG4gIGhlaWdodDogMzVweDtcbiAgd2lkdGg6IDMwcHg7XG4gIG1hcmdpbi10b3A6IDE3cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBtYXNrLWltYWdlOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2l0cm9uLnN2Z1wiKTtcbn1cbi5jaXRyb24tbGVmdGJhciAubmF2LWxlZnQgLmltZy1sb2dvOmhvdmVyIHtcbiAgYW5pbWF0aW9uOiBmYS1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcbn1cbi5jaXRyb24tbGVmdGJhciAubmF2LWxlZnQgLnR4dC1sb2dvIHtcbiAgbWFyZ2luLWxlZnQ6IDUwcHg7XG4gIGxpbmUtaGVpZ2h0OiA2OHB4O1xuICBmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4uY2l0cm9uLWxlZnRiYXIgLm5hdi1sZWZ0IC50eHQtbG9nbyBhLFxuLmNpdHJvbi1sZWZ0YmFyIC5uYXYtbGVmdCAudHh0LWxvZ28gYTpob3Zlcixcbi5jaXRyb24tbGVmdGJhciAubmF2LWxlZnQgLnR4dC1sb2dvIGE6YWN0aXZlLFxuLmNpdHJvbi1sZWZ0YmFyIC5uYXYtbGVmdCAudHh0LWxvZ28gYTp2aXNpdGVkIHtcbiAgY29sb3I6ICNmZmY7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMXB4O1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIGltZyB7XG4gIGhlaWdodDogMjBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLmRyb3Bkb3duLXNpZ24ge1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBoZWlnaHQ6IDE1cHg7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5uYXYtYnV0dG9uLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSAubmF2LWJ1dHRvbjphY3RpdmUsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5uYXYtYnV0dG9uOmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMzVweDtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDI1cHgpO1xuICB6LWluZGV4OiAyO1xuICBoZWlnaHQ6IDUwcHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5uYXYtYnV0dG9uIGEsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5uYXYtYnV0dG9uOmFjdGl2ZSBhLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSAubmF2LWJ1dHRvbjpmb2N1cyBhIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmc6IDE1cHggN3B4IDJweDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLm5hdi1idXR0b24gYTpsaW5rLCAuY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5uYXYtYnV0dG9uIGE6dmlzaXRlZCxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLm5hdi1idXR0b246YWN0aXZlIGE6bGluayxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLm5hdi1idXR0b246YWN0aXZlIGE6dmlzaXRlZCxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLm5hdi1idXR0b246Zm9jdXMgYTpsaW5rLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSAubmF2LWJ1dHRvbjpmb2N1cyBhOnZpc2l0ZWQge1xuICBjb2xvcjogaW5oZXJpdDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLm5hdi1idXR0b246aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLmFjdGl2ZSB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSAuaG92ZXItbWFjaGluZSB7XG4gIGJvcmRlcjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiA1MHB4O1xuICB3aWR0aDogMDtcbiAgei1pbmRleDogMTtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLmljb24tcGljdG8ge1xuICBoZWlnaHQ6IDI1cHg7XG4gIHdpZHRoOiAyMHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDEwcHg7XG4gIHRvcDogMTJweDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5pY29uLWFjY3VlaWwge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2hvbWUuc3ZnXCIpO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSAuaWNvbi1jYXJ0b2dyYXBoaWUge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci1sZWZ0L2NpdHJvbl9jYXJ0b2dyYXBoaWUuc3ZnXCIpO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSAuaWNvbi1hbmFseXNlIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItbGVmdC9jaXRyb25fYW5hbHlzZV9kb25uZWVzLnN2Z1wiKTtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLmljb24tZW5lcmdpZSB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLWxlZnQvY2l0cm9uX2dlc3Rpb25fZW5lcmdpZS5zdmdcIik7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5pY29uLWVhdSB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLWxlZnQvY2l0cm9uX2dlc3Rpb25fZWF1LnN2Z1wiKTtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLmljb24tdmVoaWN1bGVzIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItbGVmdC9jaXRyb25fZ2VzdGlvbl92ZWhpY3VsZXMuc3ZnXCIpO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaSAuaWNvbi1kb2N1bWVudHMge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3BkZi5zdmdcIik7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5pY29uLXJzZSB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fbGVhZi5zdmdcIik7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpIC5pY29uLXZlaWxsZSB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fbGF3LnN2Z1wiKTtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGkgLmljb24tY2libGVzIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b190YXJnZXQuc3ZnXCIpO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuZHJvcGRvd24tbGkgLm5hdi1idXR0b246OmFmdGVyIHtcbiAgdHJhbnNpdGlvbjogMC4zcyBhbGw7XG4gIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICB0b3A6IDIwcHg7XG4gIGJvdHRvbTogMjBweDtcbiAgY29udGVudDogXCI+XCI7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDIwcHg7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5kcm9wZG93bi1saSAuZHJvcGRvd24ge1xuICB0cmFuc2l0aW9uOiAxcyBhbGw7XG4gIHBhZGRpbmc6IDA7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5kcm9wZG93bi1saSAuZHJvcGRvd24gLm5hdi1idXR0b24ge1xuICBsZWZ0OiAwO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuZHJvcGRvd24tbGkgLmRyb3Bkb3duIC5uYXYtYnV0dG9uIC5hY3RpdmUtbGluayB7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuZHJvcGRvd24tbGkgLmRyb3Bkb3duIC5uYXYtYnV0dG9uOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5kcm9wZG93bi1saSAuZHJvcGRvd24gbGkge1xuICBsaW5lLWhlaWdodDogMTJweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogNnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuZHJvcGRvd24tbGkgLmRyb3Bkb3duIGxpIC5uYXYtYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBjb2xvcjogIzg4OTE5Yztcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmRyb3Bkb3duLWxpIC5kcm9wZG93biBsaSAubmF2LWJ1dHRvbiBhIHtcbiAgcGFkZGluZy10b3A6IDFweDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmRyb3Bkb3duLWxpIC5kcm9wZG93biBsaTpob3ZlciAubmF2LWJ1dHRvbiBhOmhvdmVyOm5vdCguZWxlbWVudC1pbmFjdGl2ZSkge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSksXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi1hY2N1ZWlsLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIC5pY29uLWFjY3VlaWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhNjJhO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi1jYXJ0b2dyYXBoaWUsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgLmljb24tY2FydG9ncmFwaGllIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg5YTYzMDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmljb24tYW5hbHlzZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi1hbmFseXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzcwYzI4Mztcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmljb24tZW5lcmdpZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi1lbmVyZ2llIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzYmY5Njtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmljb24tZWF1LFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIC5pY29uLWVhdSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MjgxYjg7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIC5pY29uLXZlaGljdWxlcyxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi12ZWhpY3VsZXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGY3YzNhO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi1kb2N1bWVudHMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgLmljb24tZG9jdW1lbnRzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E3YjI5ZDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmljb24tcnNlLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIC5pY29uLXJzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NDlkODQ7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIC5pY29uLXZlaWxsZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi12ZWlsbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjUzNzMxO1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAuaWNvbi1jaWJsZXMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgLmljb24tY2libGVzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzYmY5Njtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmFjY3VlaWwsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAuYWNjdWVpbCxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5hY2N1ZWlsLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIC5hY2N1ZWlsLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAuYWNjdWVpbCxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOnZpc2l0ZWQgLmFjY3VlaWwge1xuICBjb2xvcjogI2YwYTYyYSAhaW1wb3J0YW50O1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAuY2FydG9ncmFwaGllLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLmNhcnRvZ3JhcGhpZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5jYXJ0b2dyYXBoaWUsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgLmNhcnRvZ3JhcGhpZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLmNhcnRvZ3JhcGhpZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOnZpc2l0ZWQgLmNhcnRvZ3JhcGhpZSB7XG4gIGNvbG9yOiAjODlhNjMwICFpbXBvcnRhbnQ7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIC5hbmFseXNlLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLmFuYWx5c2UsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIGE6dmlzaXRlZCAuYW5hbHlzZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSAuYW5hbHlzZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLmFuYWx5c2UsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5hbmFseXNlIHtcbiAgY29sb3I6ICM3MGMyODMgIWltcG9ydGFudDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmVuZXJnaWUsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAuZW5lcmdpZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5lbmVyZ2llLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIC5lbmVyZ2llLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAuZW5lcmdpZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOnZpc2l0ZWQgLmVuZXJnaWUge1xuICBjb2xvcjogI2QzYmY5NiAhaW1wb3J0YW50O1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAuZWF1LFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLmVhdSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5lYXUsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgLmVhdSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLmVhdSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOnZpc2l0ZWQgLmVhdSB7XG4gIGNvbG9yOiAjNDI4MWI4ICFpbXBvcnRhbnQ7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIC52ZWhpY3VsZXMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAudmVoaWN1bGVzLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSBhOnZpc2l0ZWQgLnZlaGljdWxlcyxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSAudmVoaWN1bGVzLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAudmVoaWN1bGVzLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIGE6dmlzaXRlZCAudmVoaWN1bGVzIHtcbiAgY29sb3I6ICNkZjdjM2EgIWltcG9ydGFudDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmRvY3VtZW50cyxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgYTpsaW5rIC5kb2N1bWVudHMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIGE6dmlzaXRlZCAuZG9jdW1lbnRzLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIC5kb2N1bWVudHMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgYTpsaW5rIC5kb2N1bWVudHMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5kb2N1bWVudHMge1xuICBjb2xvcjogI2E3YjI5ZCAhaW1wb3J0YW50O1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAucnNlLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLnJzZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5yc2UsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgLnJzZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOmxpbmsgLnJzZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSBhOnZpc2l0ZWQgLnJzZSB7XG4gIGNvbG9yOiAjNDQ5ZDg0ICFpbXBvcnRhbnQ7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIC52ZWlsbGUsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAudmVpbGxlLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSBhOnZpc2l0ZWQgLnZlaWxsZSxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gLmFjdGl2ZTpub3QoLmxpLWluYWN0aXZlKSAudmVpbGxlLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIGE6bGluayAudmVpbGxlLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIGE6dmlzaXRlZCAudmVpbGxlIHtcbiAgY29sb3I6ICNiNTM3MzEgIWltcG9ydGFudDtcbn1cbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgLmNpYmxlcyxcbi5jaXRyb24tbGVmdGJhciAubGlzdC1idXR0b24gbGk6aG92ZXI6bm90KC5saS1pbmFjdGl2ZSkgYTpsaW5rIC5jaWJsZXMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIGxpOmhvdmVyOm5vdCgubGktaW5hY3RpdmUpIGE6dmlzaXRlZCAuY2libGVzLFxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiAuYWN0aXZlOm5vdCgubGktaW5hY3RpdmUpIC5jaWJsZXMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgYTpsaW5rIC5jaWJsZXMsXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgYTp2aXNpdGVkIC5jaWJsZXMge1xuICBjb2xvcjogI2QzYmY5NiAhaW1wb3J0YW50O1xufVxuLmNpdHJvbi1sZWZ0YmFyIC5saXN0LWJ1dHRvbiBsaTpob3Zlcjpub3QoLmxpLWluYWN0aXZlKSAuZHJvcGRvd24gbGksXG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmU6bm90KC5saS1pbmFjdGl2ZSkgLmRyb3Bkb3duIGxpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uY2l0cm9uLWxlZnRiYXIgLmxpc3QtYnV0dG9uIC5hY3RpdmUge1xuICBjb2xvcjogYmxhY2s7XG59XG5cbi5vcGVuLWRyb3Bkb3duIC5uYXYtYnV0dG9uOjphZnRlciB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbn1cblxuLmNpdHJvbi1sZWZ0YmFyLW9wZW4ge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi5lbGVtZW50LWJldGEsXG4uZWxlbWVudC1pbmFjdGl2ZSB7XG4gIGNvbG9yOiBncmV5O1xufVxuLmVsZW1lbnQtYmV0YTpiZWZvcmUsXG4uZWxlbWVudC1pbmFjdGl2ZTpiZWZvcmUge1xuICBjb250ZW50OiBcIkEgVkVOSVJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjBweDtcbiAgdG9wOiAyNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmYzYjQwO1xuICBjb2xvcjogZ3JleTtcbiAgcGFkZGluZzogMCA1cHg7XG4gIHotaW5kZXg6IDM7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgZm9udC1zaXplOiA4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBib3JkZXItY29sb3I6IGdyZXk7XG59XG4uZWxlbWVudC1iZXRhOmFmdGVyLFxuLmVsZW1lbnQtaW5hY3RpdmU6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZWxlbWVudC1iZXRhLmVsZW1lbnQtaW5hY3RpdmUtaGlkZGVuOmJlZm9yZSxcbi5lbGVtZW50LWluYWN0aXZlLmVsZW1lbnQtaW5hY3RpdmUtaGlkZGVuOmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5lbGVtZW50LWJldGE6YmVmb3JlIHtcbiAgY29udGVudDogXCJCRVRBXCI7XG59XG5cbi5kcm9wZG93biAubmF2LWJ1dHRvbiAuZWxlbWVudC1iZXRhOmJlZm9yZSxcbi5kcm9wZG93biAubmF2LWJ1dHRvbiAuZWxlbWVudC1pbmFjdGl2ZTpiZWZvcmUge1xuICByaWdodDogLTIwcHg7XG4gIHRvcDogMDtcbn1cblxuc3Bhbi5lbGVtZW50LWluYWN0aXZlOmJlZm9yZSB7XG4gIHJpZ2h0OiA5cHg7XG4gIHRvcDogM3B4O1xuICBwYWRkaW5nOiAxcHggNXB4O1xufVxuXG4ubmF2LWJ1dHRvbiBhLFxuLm5hdi1idXR0b24gYTpsaW5rLFxuLm5hdi1idXR0b24gYTp2aXNpdGVkIHtcbiAgdHJhbnNpdGlvbjogdW5zZXQ7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FeatureToggleService } from 'app/shared/services/feature-toggle/feature-toggle.service';\nimport { TitleService } from 'app/shared/services/title/title.service';\nimport { LinkItem, SubItem } from './left-navbar.interface';\n\n@Component({\n selector: 'app-left-navbar',\n templateUrl: './left-navbar.component.html',\n styleUrls: ['./left-navbar.component.scss'],\n})\nexport class LeftNavbarComponent implements OnInit {\n /**\n * Dropdown active name\n */\n private dropdownActive: string = null;\n\n /**\n * Links to display in navbar\n */\n public links: LinkItem[] = [\n {\n name: 'Accueil',\n href: '/accueil',\n dropdown: '',\n dropdownLi: [],\n color: 'accueil',\n available: true,\n },\n {\n name: 'Cartographie des sites',\n href: '/cartographie',\n dropdown: '',\n dropdownLi: [],\n color: 'cartographie',\n available: true,\n },\n {\n name: \"Gestion de l'énergie\",\n href: '/energie',\n color: 'energie',\n dropdown: 'dropdown-li',\n available: true,\n dropdownLi: [\n {\n name: 'Données des sites',\n href: '/pdl',\n parent: 'energie',\n available: true,\n },\n {\n name: 'Suivi temporel',\n href: '/suivi',\n parent: 'energie',\n available: true,\n },\n {\n name: 'Répartition des flux',\n href: '/repartition',\n parent: 'energie',\n available: true,\n },\n {\n name: 'Classement des sites',\n href: '/classement',\n parent: 'energie',\n available: true,\n },\n {\n name: 'Courbes de charge',\n href: '/courbes-de-charge',\n parent: 'energie',\n available: true,\n },\n ],\n },\n {\n name: \"Gestion de l'eau\",\n href: '/eau',\n color: 'eau',\n dropdown: 'dropdown-li',\n available: true,\n dropdownLi: [\n {\n name: 'Données des sites',\n href: '/pdl',\n parent: 'eau',\n available: true,\n },\n {\n name: 'Suivi temporel',\n href: '/suivi',\n parent: 'eau',\n available: true,\n },\n {\n name: 'Classement des sites',\n href: '/classement',\n parent: 'eau',\n available: true,\n },\n ],\n },\n {\n name: 'Gestion des véhicules',\n href: '/vehicules',\n color: 'vehicules',\n dropdown: 'dropdown-li',\n available: true,\n dropdownLi: [\n {\n name: 'Données des véhicules',\n href: '/flotte',\n parent: 'vehicules',\n available: true,\n },\n {\n name: 'Suivi des consommations',\n href: '/suivi',\n parent: 'vehicules',\n available: true,\n },\n {\n name: 'Suivi du parc',\n href: '/parc',\n parent: 'vehicules',\n available: true,\n },\n ],\n },\n {\n name: 'Analyse des données',\n href: '/analyse',\n dropdown: 'dropdown-li',\n available: true,\n dropdownLi: [\n {\n name: 'Croisement des données',\n href: '/croisement',\n parent: 'analyse',\n available: true,\n },\n {\n name: 'Comparaison temporelle',\n href: '/comparaison',\n parent: 'analyse',\n available: true,\n },\n ],\n color: 'analyse',\n },\n {\n name: 'Cibles',\n href: '/cibles',\n dropdown: 'dropdown-li',\n dropdownLi: [\n {\n name: 'Campagnes',\n href: '/campagnes',\n parent: 'cibles',\n available: true,\n },\n {\n name: \"Suivis d'exploitation\",\n href: '/suivis-exploitation',\n parent: 'cibles',\n available: true,\n featureKey: 'operating-monitoring.feature',\n },\n ],\n available: true,\n color: 'cibles',\n },\n {\n name: 'Gestion des documents',\n href: '/documents',\n dropdown: '',\n dropdownLi: [],\n available: true,\n color: 'documents',\n },\n ];\n\n constructor(\n private router: Router,\n private titleService: TitleService,\n private featureToggleService: FeatureToggleService\n ) {}\n\n ngOnInit() {\n // Check and set feature for each item of the navbar\n this.links.forEach(link => {\n this.checkAndSetFeature(link);\n link.dropdownLi.forEach(subItem => {\n this.checkAndSetFeature(subItem);\n });\n });\n }\n\n /**\n * Check and set availability based on feature\n * @param link - link item or subitem\n */\n private checkAndSetFeature(link: LinkItem | SubItem) {\n if (link.featureKey && link.available) {\n link.available = this.featureToggleService.isEnabled(link.featureKey);\n }\n }\n\n setDropdown(element: string) {\n this.dropdownActive = this.dropdownActive === element ? null : element;\n }\n\n getDropdown(element: string): boolean {\n return this.dropdownActive !== element;\n }\n\n ifDropdownOpen(element: string): string {\n if (this.dropdownActive !== element) {\n return '';\n }\n\n return 'open-dropdown';\n }\n\n getLinkClasses(link: LinkItem): string[] {\n return [\n link.color,\n link.dropdown,\n this.getActive(link.name),\n this.ifDropdownOpen(link.name),\n this.getAvailableClass(link),\n ];\n }\n\n getAvailableClass(link: LinkItem): string {\n if (!link.available) {\n return 'li-inactive';\n }\n\n return '';\n }\n\n getActive(element: string): string {\n if (this.titleService.getTitle(this.router.url) === element) {\n return 'active';\n }\n\n return '';\n }\n\n linkClicked(element: string) {\n // For now, when a link is clicked, just close active dropdown.\n // For sub menus, pass the parent dropdown name, to be sure it's expanded.\n if (element) {\n this.dropdownActive = element;\n } else {\n this.dropdownActive = null;\n }\n }\n}\n","export default \".navbar {\\n max-height: 65px;\\n margin: 0 !important;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n height: 100%;\\n}\\n\\n.nav-left {\\n padding-left: 15px !important;\\n color: white;\\n font-weight: bold;\\n font-size: 14px;\\n}\\n\\n.nav-left .subtitle {\\n font-size: 14px;\\n font-weight: lighter;\\n}\\n\\n/* main nav on the left: grid & bell icon + user + caret */\\n\\n.nav-right {\\n height: 100%;\\n padding-right: 20px !important;\\n}\\n\\n.nav-right .nav-link {\\n padding: 8px;\\n display: -webkit-box;\\n display: flex;\\n height: 100%;\\n cursor: default;\\n color: white;\\n}\\n\\n.nav-right .nav-link .icon-link-content {\\n align-self: center;\\n color: white;\\n}\\n\\n.nav-right .nav-link .icon-link-content .icon {\\n background-color: white;\\n height: 25px;\\n width: 25px;\\n mask-repeat: no-repeat;\\n -webkit-mask-repeat: no-repeat;\\n margin: 0;\\n}\\n\\n.nav-right .nav-link .icon-link-content .admin {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_grid.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_grid.svg\\\");\\n}\\n\\n.nav-right .nav-link .icon-link-content .bell {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_notification.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_notification.svg\\\");\\n}\\n\\n.nav-right .nav-link .icon-link-content .notif {\\n position: absolute;\\n top: 11px;\\n left: 7px;\\n background-color: #db4b47;\\n width: 20px;\\n height: 20px;\\n border-radius: 50%;\\n color: white;\\n font-size: 10px;\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.nav-right .nav-link .icon-link-content .notif span {\\n color: white;\\n top: -14px;\\n position: relative;\\n}\\n\\n.nav-right .nav-link .nav-link-text-content {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: center;\\n justify-content: center;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n\\n.nav-right .nav-link .nav-link-text-content .user-name {\\n font-weight: bold;\\n color: white;\\n}\\n\\n.nav-right .nav-link .nav-link-text-content .user-name:hover {\\n cursor: pointer;\\n}\\n\\n.nav-right .nav-link .nav-link-text-content .company-name {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n}\\n\\n.nav-right .nav-link .user-picture {\\n border-radius: 50%;\\n width: 50px;\\n margin-right: 10px;\\n}\\n\\n.nav-right .nav-link .user-picture:hover {\\n cursor: pointer;\\n}\\n\\n.nav-right .nav-link a.link-clean {\\n padding: 0 !important;\\n text-align: inherit !important;\\n line-height: 1.25rem !important;\\n font-size: 1rem !important;\\n}\\n\\n.nav-right .nav-link a.link-clean:hover, .nav-right .nav-link a.link-clean:active, .nav-right .nav-link a.link-clean:visited {\\n background: inherit !important;\\n}\\n\\n.nav-right .nav-link .text-content {\\n margin-right: 10px;\\n line-height: 1.3;\\n text-align: left;\\n}\\n\\n.nav-right .nav-link .text-content:hover {\\n cursor: pointer;\\n}\\n\\n.nav-right .notifications__list {\\n overflow-x: hidden;\\n width: 400px !important;\\n}\\n\\n.nav-right .notifications__list li {\\n padding: 0;\\n}\\n\\n.nav-right .notifications__list li:not(:first-child) {\\n border-top: 1px solid #dddfe2;\\n}\\n\\n.nav-right .notifications__list li:hover {\\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(29, 33, 41, 0.04)), to(rgba(29, 33, 41, 0.04)));\\n background-image: linear-gradient(rgba(29, 33, 41, 0.04), rgba(29, 33, 41, 0.04));\\n text-decoration: none;\\n}\\n\\n.nav-right .notifications__list li.notification--unread {\\n background-color: #edf2fa;\\n}\\n\\n.nav-right .notifications__list li .notifications__item {\\n padding: 10px 30px 5px 10px !important;\\n font-weight: normal !important;\\n}\\n\\n.nav-right .notifications__list li .notifications__readcol {\\n -webkit-box-align: end;\\n align-items: flex-end;\\n bottom: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: center;\\n justify-content: center;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.nav-right .notifications__list li .notifications__readcol .notifications__readcol-item {\\n margin: 0 12px;\\n -webkit-transition: margin-right 250ms;\\n transition: margin-right 250ms;\\n font-size: 12px;\\n}\\n\\n.nav-right .notifications__list li .notifications__readcol .notifications__readcol-archive {\\n position: absolute;\\n top: -3px;\\n right: 3px;\\n font-size: 11px;\\n}\\n\\n.nav-right .notifications__list li .notifications__readcol .notifications__readcol-item,\\n.nav-right .notifications__list li .notifications__readcol .notifications__readcol-archive {\\n color: #cacaca;\\n}\\n\\n.nav-right .notifications__list li .notifications__readcol .notifications__readcol-item:hover,\\n.nav-right .notifications__list li .notifications__readcol .notifications__readcol-archive:hover {\\n color: #b6b6b6;\\n}\\n\\n.nav-right .notifications__list li a .notifications__item-message {\\n font-size: 0.8rem !important;\\n padding: 0 0 3px 0 !important;\\n font-weight: bold;\\n}\\n\\n.nav-right .notifications__list li a .notifications__item-date {\\n font-size: 12px;\\n font-style: italic;\\n}\\n\\n.nav-right .notifications__list li .notifications__display-more {\\n text-align: center;\\n padding: 10px;\\n}\\n\\n.dropdown-menu {\\n padding: 0px;\\n max-height: 80vh;\\n overflow: auto;\\n}\\n\\n.dropdown-menu .active:hover {\\n cursor: pointer;\\n}\\n\\n.dropdown-menu .admin-panel__container {\\n margin: 0px 10px;\\n}\\n\\n.dropdown-menu .admin-panel__element-container {\\n -webkit-box-align: center;\\n align-items: center;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n text-align: center;\\n padding: 10px 5px;\\n position: relative;\\n}\\n\\n.dropdown-menu .admin-panel__element-container .inactive {\\n cursor: not-allowed;\\n}\\n\\n.dropdown-menu .admin-panel__element-container a,\\n.dropdown-menu .admin-panel__element-container a:link,\\n.dropdown-menu .admin-panel__element-container a:visited {\\n -webkit-transition: unset;\\n transition: unset;\\n}\\n\\n.dropdown-menu .admin-panel__element-container .tba {\\n content: \\\"A VENIR\\\";\\n position: absolute;\\n background-color: white;\\n opacity: 0.6;\\n font-weight: 700;\\n color: grey;\\n padding: 0 5px;\\n z-index: 1;\\n border-radius: 5px;\\n font-size: 8px;\\n border: 1px solid #a5b5cb;\\n cursor: not-allowed;\\n}\\n\\n.dropdown-menu .admin-panel__element-content {\\n -webkit-box-align: center;\\n align-items: center;\\n font-size: 12px !important;\\n font-weight: normal !important;\\n padding: 0 !important;\\n line-height: inherit !important;\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon {\\n background-color: #a5b5cb;\\n mask-repeat: round;\\n -webkit-mask-repeat: round;\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-alert {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_notification.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_notification.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-bills {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_controlefactures.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_controlefactures.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-faq {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_FAQ.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_FAQ.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-myaccount {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_moncompte.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_moncompte.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-em {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_mesEM.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_mesEM.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-collect {\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_upload.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_upload.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-companies {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_mesclients.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_mesclients.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-contracts {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_gestion_contrats.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_gestion_contrats.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-apps {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_apps_specifiques.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_apps_specifiques.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content .icon-dju {\\n mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_dju.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/navbar-top/citron_dju.svg\\\");\\n}\\n\\n.dropdown-menu .admin-panel__element-content img {\\n height: 35px;\\n width: 35px;\\n opacity: 0.8;\\n}\\n\\n.dropdown-menu ul {\\n padding: 0px;\\n}\\n\\n.dropdown-menu li {\\n padding-left: 10px;\\n padding-right: 10px;\\n padding-top: 6px;\\n}\\n\\n.dropdown-menu li .company-name {\\n font-size: 14px;\\n}\\n\\n.dropdown-menu li .logout {\\n font-size: 20px;\\n font-weight: bold;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n\\n.dropdown-menu li div.company-name {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.dropdown-menu li div.company-name i {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.dropdown-menu li div.logout {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n align-items: center;\\n cursor: pointer;\\n}\\n\\n.dropdown-menu li:first-child {\\n padding-top: 10px;\\n}\\n\\n.dropdown-menu li:last-child {\\n padding: 10px;\\n}\\n\\n.dropdown-menu li:last-child .icon {\\n margin-left: 0px;\\n}\\n\\n.dropdown-menu span {\\n font-size: 14px;\\n}\\n\\n.icon {\\n margin: 0px 10px;\\n}\\n\\n.icon:hover {\\n cursor: pointer;\\n}\\n\\n.dropdown-menu-companies {\\n width: 17rem;\\n}\\n\\n.dropdown-menu-companies .search {\\n display: -webkit-box;\\n display: flex;\\n}\\n\\n.dropdown-menu-companies .search input {\\n width: 100%;\\n height: 30px;\\n padding: 0px 5px;\\n border: 1px solid #d9d9d9;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.accueil:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.accueil:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.accueil:hover,\\n.admin-panel__element-container:not(.inactive):hover li.accueil:hover {\\n color: #f0a62a !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.accueil:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.accueil:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.accueil:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.accueil:hover img {\\n background-color: #f0a62a;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.cartographie:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.cartographie:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.cartographie:hover,\\n.admin-panel__element-container:not(.inactive):hover li.cartographie:hover {\\n color: #89a630 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.cartographie:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.cartographie:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.cartographie:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.cartographie:hover img {\\n background-color: #89a630;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.analyse:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.analyse:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.analyse:hover,\\n.admin-panel__element-container:not(.inactive):hover li.analyse:hover {\\n color: #70c283 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.analyse:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.analyse:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.analyse:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.analyse:hover img {\\n background-color: #70c283;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.collecte:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.collecte:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.collecte:hover,\\n.admin-panel__element-container:not(.inactive):hover li.collecte:hover {\\n color: #8dbe4a !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.collecte:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.collecte:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.collecte:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.collecte:hover img {\\n background-color: #8dbe4a;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.energie:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.energie:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.energie:hover,\\n.admin-panel__element-container:not(.inactive):hover li.energie:hover {\\n color: #d3bf96 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.energie:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.energie:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.energie:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.energie:hover img {\\n background-color: #d3bf96;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.eau:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.eau:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.eau:hover,\\n.admin-panel__element-container:not(.inactive):hover li.eau:hover {\\n color: #4281b8 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.eau:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.eau:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.eau:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.eau:hover img {\\n background-color: #4281b8;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.vehicules:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.vehicules:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.vehicules:hover,\\n.admin-panel__element-container:not(.inactive):hover li.vehicules:hover {\\n color: #df7c3a !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.vehicules:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.vehicules:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.vehicules:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.vehicules:hover img {\\n background-color: #df7c3a;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.contrats:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.contrats:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.contrats:hover,\\n.admin-panel__element-container:not(.inactive):hover li.contrats:hover {\\n color: #d8a63e !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.contrats:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.contrats:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.contrats:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.contrats:hover img {\\n background-color: #d8a63e;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.rse:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.rse:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.rse:hover,\\n.admin-panel__element-container:not(.inactive):hover li.rse:hover {\\n color: #449d84 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.rse:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.rse:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.rse:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.rse:hover img {\\n background-color: #449d84;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.veille:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.veille:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.veille:hover,\\n.admin-panel__element-container:not(.inactive):hover li.veille:hover {\\n color: #b53731 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.veille:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.veille:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.veille:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.veille:hover img {\\n background-color: #b53731;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.admin:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.admin:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.admin:hover,\\n.admin-panel__element-container:not(.inactive):hover li.admin:hover {\\n color: #db4b47 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.admin:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.admin:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.admin:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.admin:hover img {\\n background-color: #db4b47;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.specific:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.specific:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.specific:hover,\\n.admin-panel__element-container:not(.inactive):hover li.specific:hover {\\n color: #f2845c !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.specific:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.specific:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.specific:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.specific:hover img {\\n background-color: #f2845c;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.documents:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.documents:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.documents:hover,\\n.admin-panel__element-container:not(.inactive):hover li.documents:hover {\\n color: #a7b29d !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.documents:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.documents:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.documents:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.documents:hover img {\\n background-color: #a7b29d;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.cibles:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.cibles:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.cibles:hover,\\n.admin-panel__element-container:not(.inactive):hover li.cibles:hover {\\n color: #d3bf96 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.cibles:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.cibles:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.cibles:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.cibles:hover img {\\n background-color: #d3bf96;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.factures:hover,\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.controle:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.factures:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.controle:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.factures:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.controle:hover,\\n.admin-panel__element-container:not(.inactive):hover li.factures:hover,\\n.admin-panel__element-container:not(.inactive):hover li.controle:hover {\\n color: #d8a63e !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.factures:hover img,\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.controle:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.factures:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.controle:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.factures:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.controle:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.factures:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.controle:hover img {\\n background-color: #d8a63e;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.dju:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.dju:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.dju:hover,\\n.admin-panel__element-container:not(.inactive):hover li.dju:hover {\\n color: #28bae1 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.dju:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.dju:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.dju:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.dju:hover img {\\n background-color: #28bae1;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.parametrage-alertes:hover,\\n.dropdown-menu-companies:not(.inactive):hover li.parametrage-alertes:hover,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.parametrage-alertes:hover,\\n.admin-panel__element-container:not(.inactive):hover li.parametrage-alertes:hover {\\n color: #db4b47 !important;\\n}\\n\\n.dropdown-menu-companies:not(.inactive):hover a.admin-panel__element-content.parametrage-alertes:hover img,\\n.dropdown-menu-companies:not(.inactive):hover li.parametrage-alertes:hover img,\\n.admin-panel__element-container:not(.inactive):hover a.admin-panel__element-content.parametrage-alertes:hover img,\\n.admin-panel__element-container:not(.inactive):hover li.parametrage-alertes:hover img {\\n background-color: #db4b47;\\n}\\n\\n.navbar.accueil {\\n background-color: #f0a62a;\\n}\\n\\n.navbar.cartographie {\\n background-color: #89a630;\\n}\\n\\n.navbar.analyse {\\n background-color: #70c283;\\n}\\n\\n.navbar.collecte {\\n background-color: #8dbe4a;\\n}\\n\\n.navbar.energie {\\n background-color: #d3bf96;\\n}\\n\\n.navbar.error {\\n background-color: #db4b47;\\n}\\n\\nli.error:hover {\\n color: #db4b47;\\n}\\n\\n.navbar.eau {\\n background-color: #4281b8;\\n}\\n\\n.navbar.vehicules {\\n background-color: #df7c3a;\\n}\\n\\n.navbar.contrats {\\n background-color: #d8a63e;\\n}\\n\\n.navbar.rse {\\n background-color: #449d84;\\n}\\n\\n.navbar.veille {\\n background-color: #b53731;\\n}\\n\\n.navbar.admin {\\n background-color: #db4b47;\\n}\\n\\n.navbar.specific {\\n background-color: #f2845c;\\n}\\n\\n.navbar.documents {\\n background-color: #a7b29d;\\n}\\n\\n.navbar.cibles {\\n background-color: #d3bf96;\\n}\\n\\n.navbar.factures,\\n.navbar.controle {\\n background-color: #d8a63e;\\n}\\n\\n.navbar.dju {\\n background-color: #28bae1;\\n}\\n\\n.navbar.parametrage-alertes {\\n background-color: #db4b47;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2xheW91dC9uYXZiYXItdG9wL25hdmJhci10b3AuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2xheW91dC9uYXZiYXItdG9wL25hdmJhci10b3AuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL21peGlucy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTtFQUNJLGdCQUFBO0VBQ0Esb0JBQUE7RUFDQSxxQ0FBQTtFQUNBLFlBQUE7QUNISjs7QURNQTtFQUNJLDZCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtBQ0hKOztBRElJO0VBQ0ksZUFBQTtFQUNBLG9CQUFBO0FDRlI7O0FETUEsMERBQUE7O0FBQ0E7RUFDSSxZQUFBO0VBQ0EsOEJBQUE7QUNISjs7QURLSTtFQUNJLFlBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLFlBQUE7QUNIUjs7QURLUTtFQUNJLGtCQUFBO0VBQ0EsWUFBQTtBQ0haOztBREtZO0VBQ0ksdUJBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFRUpaLHNCRktZO0VFSlosOEJGSVk7RUFDQSxTQUFBO0FDRmhCOztBREtZO0VFZFIsb0VGZVk7RUVkWiw0RUZjWTtBQ0ZoQjs7QURLWTtFRWxCUiw0RUZtQlk7RUVsQlosb0ZGa0JZO0FDRmhCOztBREtZO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsU0FBQTtFQUNBLHlCR2pDUjtFSGtDUSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FDSGhCOztBREtnQjtFQUNJLFlBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7QUNIcEI7O0FEUVE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7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O0FGb1dmOztBRHFDWTs7OztFQUNJLHlCQUFBO0FDaENoQjs7QURpQ2dCOzs7O0VBQ0kseUJHMVlWO0FGOFdWOztBRGtDWTs7OztFQUNJLHlCQUFBO0FDN0JoQjs7QUQ4QmdCOzs7O0VBQ0kseUJHcFpUO0FGMlhYOztBRCtCWTs7OztFQUNJLHlCQUFBO0FDMUJoQjs7QUQyQmdCOzs7O0VBQ0kseUJHM1pWO0FGcVlWOztBRDRCWTs7OztFQUNJLHlCQUFBO0FDdkJoQjs7QUR3QmdCOzs7O0VBQ0kseUJHeFpkO0FGcVlOOztBRHlCWTs7OztFQUNJLHlCQUFBO0FDcEJoQjs7QURxQmdCOzs7O0VBQ0kseUJHM2FSO0FGMlpaOztBRHNCWTs7OztFQUNJLHlCQUFBO0FDakJoQjs7QURrQmdCOzs7O0VBQ0kseUJHbGJUO0FGcWFYOztBRG1CWTs7OztFQUNJLHlCQUFBO0FDZGhCOztBRGVnQjs7OztFQUNJLHlCRzFiZDtBRmdiTjs7QURnQlk7Ozs7RUFDSSx5QkFBQTtBQ1hoQjs7QURZZ0I7Ozs7RUFDSSx5QkdsY1g7QUYyYlQ7O0FEYVk7Ozs7RUFDSSx5QkFBQTtBQ1JoQjs7QURTZ0I7Ozs7RUFDSSx5Qkc1Ylo7QUZ3YlI7O0FEVVk7Ozs7RUFDSSx5QkFBQTtBQ0xoQjs7QURNZ0I7Ozs7RUFDSSx5QkdqY1Q7QUZnY1g7O0FET1k7Ozs7RUFDSSx5QkFBQTtBQ0ZoQjs7QURHZ0I7Ozs7RUFDSSx5Qkd6Y1I7QUYyY1o7O0FESVk7Ozs7RUFDSSx5QkFBQTtBQ0NoQjs7QURBZ0I7Ozs7RUFDSSx5QkdoZFg7QUZxZFQ7O0FER1k7Ozs7Ozs7O0VBQ0kseUJBQUE7QUNNaEI7O0FETGdCOzs7Ozs7OztFQUNJLHlCRzFkVDtBRndlWDs7QURSWTs7OztFQUNJLHlCQUFBO0FDYWhCOztBRFpnQjs7OztFQUNJLHlCR2plZDtBRmtmTjs7QURYWTs7OztFQUNJLHlCQUFBO0FDZ0JoQjs7QURmZ0I7Ozs7RUFDSSx5QkdwZlo7QUZ3Z0JSOztBRGJBO0VBQ0kseUJHcmhCTTtBRnFpQlY7O0FEYkE7RUFDSSx5Qkd4aEJXO0FGd2lCZjs7QURiQTtFQUNJLHlCRzFoQk07QUYwaUJWOztBRGJBO0VBQ0kseUJHL2hCTztBRitpQlg7O0FEYkE7RUFDSSx5QkdqaUJNO0FGaWpCVjs7QURiQTtFQUNJLHlCR25oQkk7QUZtaUJSOztBRFpJO0VBQ0ksY0d4aEJBO0FGdWlCUjs7QURYQTtFQUNJLHlCR25pQkU7QUZpakJOOztBRFhBO0VBQ0kseUJHampCUTtBRitqQlo7O0FEWEE7RUFDSSx5QkduakJPO0FGaWtCWDs7QURYQTtFQUNJLHlCR3RqQkU7QUZva0JOOztBRFhBO0VBQ0kseUJHempCSztBRnVrQlQ7O0FEWEE7RUFDSSx5Qkc5aUJJO0FGNGpCUjs7QURYQTtFQUNJLHlCRzlpQk87QUY0akJYOztBRFhBO0VBQ0kseUJHampCUTtBRitqQlo7O0FEWEE7RUFDSSx5QkduakJLO0FGaWtCVDs7QURYQTs7RUFFSSx5Qkd2akJPO0FGcWtCWDs7QURYQTtFQUNJLHlCR3pqQkU7QUZ1a0JOOztBRFhBO0VBQ0kseUJHdmtCSTtBRnFsQlIiLCJmaWxlIjoic3JjL2FwcC9sYXlvdXQvbmF2YmFyLXRvcC9uYXZiYXItdG9wLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi9zaGFyZWQvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MnO1xuXG4ubmF2YmFyIHtcbiAgICBtYXgtaGVpZ2h0OiAkbmF2YmFySGVpZ2h0ICsgcHg7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5uYXYtbGVmdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAkYWRkaXRpb25hbFBhZGRpbmcgKyBweCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgLnN1YnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBmb250LXdlaWdodDogbGlnaHRlcjtcbiAgICB9XG59XG5cbi8qIG1haW4gbmF2IG9uIHRoZSBsZWZ0OiBncmlkICYgYmVsbCBpY29uICsgdXNlciArIGNhcmV0ICovXG4ubmF2LXJpZ2h0IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcGFkZGluZy1yaWdodDogMjBweCAhaW1wb3J0YW50O1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuXG4gICAgICAgIC5pY29uLWxpbmstY29udGVudCB7XG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAgICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1yZXBlYXQobm8tcmVwZWF0KTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hZG1pbiB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fZ3JpZC5zdmcnKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5iZWxsIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtYXNrLWltYWdlKHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9ub3RpZmljYXRpb24uc3ZnJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubm90aWYge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDExcHg7XG4gICAgICAgICAgICAgICAgbGVmdDogN3B4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhZG1pbjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogLTE0cHg7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWxpbmstdGV4dC1jb250ZW50IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgIC51c2VyLW5hbWUge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbXBhbnktbmFtZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnVzZXItcGljdHVyZSB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGEubGluay1jbGVhbiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICAgJjphY3RpdmUsXG4gICAgICAgICAgICAmOnZpc2l0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50ZXh0LWNvbnRlbnQge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uc19fbGlzdCB7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgd2lkdGg6IDQwMHB4ICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICY6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkZmUyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjksIDMzLCA0MSwgMC4wNCksIHJnYmEoMjksIDMzLCA0MSwgMC4wNCkpO1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5ub3RpZmljYXRpb24tLXVucmVhZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VkZjJmYTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5vdGlmaWNhdGlvbnNfX2l0ZW0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMzBweCA1cHggMTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wge1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG5cbiAgICAgICAgICAgICAgICAubm90aWZpY2F0aW9uc19fcmVhZGNvbC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIDEycHg7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IG1hcmdpbi1yaWdodCAyNTBtcztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5ub3RpZmljYXRpb25zX19yZWFkY29sLWFyY2hpdmUge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogLTNweDtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDNweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5ub3RpZmljYXRpb25zX19yZWFkY29sLWl0ZW0sXG4gICAgICAgICAgICAgICAgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wtYXJjaGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjY2FjYWNhO1xuXG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNiNmI2YjY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIC5ub3RpZmljYXRpb25zX19pdGVtLW1lc3NhZ2Uge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAgM3B4IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm5vdGlmaWNhdGlvbnNfX2l0ZW0tZGF0ZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5vdGlmaWNhdGlvbnNfX2Rpc3BsYXktbW9yZSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kcm9wZG93bi1tZW51IHtcbiAgICBwYWRkaW5nOiAwcHg7XG4gICAgbWF4LWhlaWdodDogODB2aDtcbiAgICBvdmVyZmxvdzogYXV0bztcblxuICAgIC5hY3RpdmU6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLmFkbWluLXBhbmVsX19jb250YWluZXIge1xuICAgICAgICBtYXJnaW46IDBweCAxMHB4O1xuICAgIH1cblxuICAgIC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXIge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggNXB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmluYWN0aXZlIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBhLFxuICAgICAgICBhOmxpbmssXG4gICAgICAgIGE6dmlzaXRlZCB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB1bnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YmEge1xuICAgICAgICAgICAgY29udGVudDogJ0EgVkVOSVInO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgY29sb3I6IGdyZXk7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDVweDtcbiAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDhweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRuYXZiYXItdG9wO1xuICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50IHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50O1xuXG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXZiYXItdG9wO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1yZXBlYXQocm91bmQpO1xuICAgICAgICB9XG4gICAgICAgIC5pY29uLWFsZXJ0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hc2staW1hZ2UodXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX25vdGlmaWNhdGlvbi5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tYmlsbHMge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fY29udHJvbGVmYWN0dXJlcy5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tZmFxIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hc2staW1hZ2UodXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX0ZBUS5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tbXlhY2NvdW50IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hc2staW1hZ2UodXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX21vbmNvbXB0ZS5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tZW0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fbWVzRU0uc3ZnJykpO1xuICAgICAgICB9XG4gICAgICAgIC5pY29uLWNvbGxlY3Qge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fdXBsb2FkLnN2ZycpKTtcbiAgICAgICAgfVxuICAgICAgICAuaWNvbi1jb21wYW5pZXMge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fbWVzY2xpZW50cy5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tY29udHJhY3RzIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hc2staW1hZ2UodXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX2dlc3Rpb25fY29udHJhdHMuc3ZnJykpO1xuICAgICAgICB9XG4gICAgICAgIC5pY29uLWFwcHMge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fYXBwc19zcGVjaWZpcXVlcy5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tZGp1IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hc2staW1hZ2UodXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX2RqdS5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGhlaWdodDogMzVweDtcbiAgICAgICAgICAgIHdpZHRoOiAzNXB4O1xuICAgICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdWwge1xuICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiA2cHg7XG5cbiAgICAgICAgLmNvbXBhbnktbmFtZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmxvZ291dCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgZGl2LmNvbXBhbnktbmFtZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRpdi5sb2dvdXQge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcblxuICAgICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgIH1cbn1cblxuLmljb24ge1xuICAgIG1hcmdpbjogMHB4IDEwcHg7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllcyB7XG4gICAgd2lkdGg6IDE3cmVtO1xuXG4gICAgLnNlYXJjaCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMHB4IDVweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXJncmV5O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXMsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyIHtcbiAgICAmOm5vdCguaW5hY3RpdmUpOmhvdmVyIHtcbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmFjY3VlaWwsXG4gICAgICAgIGxpLmFjY3VlaWwge1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRhY2N1ZWlsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY3VlaWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNhcnRvZ3JhcGhpZSxcbiAgICAgICAgbGkuY2FydG9ncmFwaGllIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY2FydG9ncmFwaGllICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcnRvZ3JhcGhpZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuYW5hbHlzZSxcbiAgICAgICAgbGkuYW5hbHlzZSB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGFuYWx5c2UgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYW5hbHlzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNvbGxlY3RlLFxuICAgICAgICBsaS5jb2xsZWN0ZSB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbGxlY3RlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3RlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuZW5lcmdpZSxcbiAgICAgICAgbGkuZW5lcmdpZSB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGVuZXJnaWUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZW5lcmdpZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmVhdSxcbiAgICAgICAgbGkuZWF1IHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZWF1ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGVhdTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LnZlaGljdWxlcyxcbiAgICAgICAgbGkudmVoaWN1bGVzIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkdmVoaWN1bGVzICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHZlaGljdWxlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNvbnRyYXRzLFxuICAgICAgICBsaS5jb250cmF0cyB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbnRyYXRzICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbnRyYXRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQucnNlLFxuICAgICAgICBsaS5yc2Uge1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRyc2UgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcnNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQudmVpbGxlLFxuICAgICAgICBsaS52ZWlsbGUge1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR2ZWlsbGUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmVpbGxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuYWRtaW4sXG4gICAgICAgIGxpLmFkbWluIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYWRtaW4gIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWRtaW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5zcGVjaWZpYyxcbiAgICAgICAgbGkuc3BlY2lmaWMge1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzcGVjaWZpYyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzcGVjaWZpYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmRvY3VtZW50cyxcbiAgICAgICAgbGkuZG9jdW1lbnRzIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZG9jdW1lbnRzICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRvY3VtZW50cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNpYmxlcyxcbiAgICAgICAgbGkuY2libGVzIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY2libGVzICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNpYmxlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmZhY3R1cmVzLFxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY29udHJvbGUsXG4gICAgICAgIGxpLmZhY3R1cmVzLFxuICAgICAgICBsaS5jb250cm9sZSB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGZhY3R1cmVzICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZhY3R1cmVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuZGp1LFxuICAgICAgICBsaS5kanUge1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRkanUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGp1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQucGFyYW1ldHJhZ2UtYWxlcnRlcyxcbiAgICAgICAgbGkucGFyYW1ldHJhZ2UtYWxlcnRlcyB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGFsZXJ0cy1tYW5hZ2VtZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0cy1tYW5hZ2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm5hdmJhci5hY2N1ZWlsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjdWVpbDtcbn1cblxuLm5hdmJhci5jYXJ0b2dyYXBoaWUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJ0b2dyYXBoaWU7XG59XG5cbi5uYXZiYXIuYW5hbHlzZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFuYWx5c2U7XG59XG5cbi5uYXZiYXIuY29sbGVjdGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xsZWN0ZTtcbn1cblxuLm5hdmJhci5lbmVyZ2llIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZW5lcmdpZTtcbn1cblxuLm5hdmJhci5lcnJvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGVycm9yO1xufVxuXG5saS5lcnJvciB7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkZXJyb3I7XG4gICAgfVxufVxuXG4ubmF2YmFyLmVhdSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGVhdTtcbn1cblxuLm5hdmJhci52ZWhpY3VsZXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR2ZWhpY3VsZXM7XG59XG5cbi5uYXZiYXIuY29udHJhdHMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb250cmF0cztcbn1cblxuLm5hdmJhci5yc2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRyc2U7XG59XG5cbi5uYXZiYXIudmVpbGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmVpbGxlO1xufVxuXG4ubmF2YmFyLmFkbWluIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWRtaW47XG59XG5cbi5uYXZiYXIuc3BlY2lmaWMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzcGVjaWZpYztcbn1cblxuLm5hdmJhci5kb2N1bWVudHMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkb2N1bWVudHM7XG59XG5cbi5uYXZiYXIuY2libGVzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2libGVzO1xufVxuXG4ubmF2YmFyLmZhY3R1cmVzLFxuLm5hdmJhci5jb250cm9sZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZhY3R1cmVzO1xufVxuXG4ubmF2YmFyLmRqdSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRqdTtcbn1cblxuLm5hdmJhci5wYXJhbWV0cmFnZS1hbGVydGVzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnRzLW1hbmFnZW1lbnQ7XG59XG4iLCIubmF2YmFyIHtcbiAgbWF4LWhlaWdodDogNjVweDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZjtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubmF2LWxlZnQge1xuICBwYWRkaW5nLWxlZnQ6IDE1cHggIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLm5hdi1sZWZ0IC5zdWJ0aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXI7XG59XG5cbi8qIG1haW4gbmF2IG9uIHRoZSBsZWZ0OiBncmlkICYgYmVsbCBpY29uICsgdXNlciArIGNhcmV0ICovXG4ubmF2LXJpZ2h0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG59XG4ubmF2LXJpZ2h0IC5uYXYtbGluayB7XG4gIHBhZGRpbmc6IDhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5uYXYtcmlnaHQgLm5hdi1saW5rIC5pY29uLWxpbmstY29udGVudCB7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xufVxuLm5hdi1yaWdodCAubmF2LWxpbmsgLmljb24tbGluay1jb250ZW50IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDI1cHg7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFyZ2luOiAwO1xufVxuLm5hdi1yaWdodCAubmF2LWxpbmsgLmljb24tbGluay1jb250ZW50IC5hZG1pbiB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fZ3JpZC5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9ncmlkLnN2Z1wiKTtcbn1cbi5uYXYtcmlnaHQgLm5hdi1saW5rIC5pY29uLWxpbmstY29udGVudCAuYmVsbCB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fbm90aWZpY2F0aW9uLnN2Z1wiKTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX25vdGlmaWNhdGlvbi5zdmdcIik7XG59XG4ubmF2LXJpZ2h0IC5uYXYtbGluayAuaWNvbi1saW5rLWNvbnRlbnQgLm5vdGlmIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDExcHg7XG4gIGxlZnQ6IDdweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgYm9yZGVyOiBzb2xpZCAxcHg7XG4gIGJvcmRlci1jb2xvcjogd2hpdGU7XG59XG4ubmF2LXJpZ2h0IC5uYXYtbGluayAuaWNvbi1saW5rLWNvbnRlbnQgLm5vdGlmIHNwYW4ge1xuICBjb2xvcjogd2hpdGU7XG4gIHRvcDogLTE0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5uYXYtcmlnaHQgLm5hdi1saW5rIC5uYXYtbGluay10ZXh0LWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5uYXYtcmlnaHQgLm5hdi1saW5rIC5uYXYtbGluay10ZXh0LWNvbnRlbnQgLnVzZXItbmFtZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogd2hpdGU7XG59XG4ubmF2LXJpZ2h0IC5uYXYtbGluayAubmF2LWxpbmstdGV4dC1jb250ZW50IC51c2VyLW5hbWU6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmF2LXJpZ2h0IC5uYXYtbGluayAubmF2LWxpbmstdGV4dC1jb250ZW50IC5jb21wYW55LW5hbWUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuLm5hdi1yaWdodCAubmF2LWxpbmsgLnVzZXItcGljdHVyZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDUwcHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cbi5uYXYtcmlnaHQgLm5hdi1saW5rIC51c2VyLXBpY3R1cmU6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmF2LXJpZ2h0IC5uYXYtbGluayBhLmxpbmstY2xlYW4ge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGluaGVyaXQgIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7XG59XG4ubmF2LXJpZ2h0IC5uYXYtbGluayBhLmxpbmstY2xlYW46aG92ZXIsIC5uYXYtcmlnaHQgLm5hdi1saW5rIGEubGluay1jbGVhbjphY3RpdmUsIC5uYXYtcmlnaHQgLm5hdi1saW5rIGEubGluay1jbGVhbjp2aXNpdGVkIHtcbiAgYmFja2dyb3VuZDogaW5oZXJpdCAhaW1wb3J0YW50O1xufVxuLm5hdi1yaWdodCAubmF2LWxpbmsgLnRleHQtY29udGVudCB7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5uYXYtcmlnaHQgLm5hdi1saW5rIC50ZXh0LWNvbnRlbnQ6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmF2LXJpZ2h0IC5ub3RpZmljYXRpb25zX19saXN0IHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICB3aWR0aDogNDAwcHggIWltcG9ydGFudDtcbn1cbi5uYXYtcmlnaHQgLm5vdGlmaWNhdGlvbnNfX2xpc3QgbGkge1xuICBwYWRkaW5nOiAwO1xufVxuLm5hdi1yaWdodCAubm90aWZpY2F0aW9uc19fbGlzdCBsaTpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkZmUyO1xufVxuLm5hdi1yaWdodCAubm90aWZpY2F0aW9uc19fbGlzdCBsaTpob3ZlciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI5LCAzMywgNDEsIDAuMDQpLCByZ2JhKDI5LCAzMywgNDEsIDAuMDQpKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLm5hdi1yaWdodCAubm90aWZpY2F0aW9uc19fbGlzdCBsaS5ub3RpZmljYXRpb24tLXVucmVhZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGYyZmE7XG59XG4ubmF2LXJpZ2h0IC5ub3RpZmljYXRpb25zX19saXN0IGxpIC5ub3RpZmljYXRpb25zX19pdGVtIHtcbiAgcGFkZGluZzogMTBweCAzMHB4IDVweCAxMHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbn1cbi5uYXYtcmlnaHQgLm5vdGlmaWNhdGlvbnNfX2xpc3QgbGkgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wge1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbn1cbi5uYXYtcmlnaHQgLm5vdGlmaWNhdGlvbnNfX2xpc3QgbGkgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wtaXRlbSB7XG4gIG1hcmdpbjogMCAxMnB4O1xuICB0cmFuc2l0aW9uOiBtYXJnaW4tcmlnaHQgMjUwbXM7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5uYXYtcmlnaHQgLm5vdGlmaWNhdGlvbnNfX2xpc3QgbGkgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wtYXJjaGl2ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtM3B4O1xuICByaWdodDogM3B4O1xuICBmb250LXNpemU6IDExcHg7XG59XG4ubmF2LXJpZ2h0IC5ub3RpZmljYXRpb25zX19saXN0IGxpIC5ub3RpZmljYXRpb25zX19yZWFkY29sIC5ub3RpZmljYXRpb25zX19yZWFkY29sLWl0ZW0sXG4ubmF2LXJpZ2h0IC5ub3RpZmljYXRpb25zX19saXN0IGxpIC5ub3RpZmljYXRpb25zX19yZWFkY29sIC5ub3RpZmljYXRpb25zX19yZWFkY29sLWFyY2hpdmUge1xuICBjb2xvcjogI2NhY2FjYTtcbn1cbi5uYXYtcmlnaHQgLm5vdGlmaWNhdGlvbnNfX2xpc3QgbGkgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wtaXRlbTpob3Zlcixcbi5uYXYtcmlnaHQgLm5vdGlmaWNhdGlvbnNfX2xpc3QgbGkgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wgLm5vdGlmaWNhdGlvbnNfX3JlYWRjb2wtYXJjaGl2ZTpob3ZlciB7XG4gIGNvbG9yOiAjYjZiNmI2O1xufVxuLm5hdi1yaWdodCAubm90aWZpY2F0aW9uc19fbGlzdCBsaSBhIC5ub3RpZmljYXRpb25zX19pdGVtLW1lc3NhZ2Uge1xuICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwIDAgM3B4IDAgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubmF2LXJpZ2h0IC5ub3RpZmljYXRpb25zX19saXN0IGxpIGEgLm5vdGlmaWNhdGlvbnNfX2l0ZW0tZGF0ZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuLm5hdi1yaWdodCAubm90aWZpY2F0aW9uc19fbGlzdCBsaSAubm90aWZpY2F0aW9uc19fZGlzcGxheS1tb3JlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4uZHJvcGRvd24tbWVudSB7XG4gIHBhZGRpbmc6IDBweDtcbiAgbWF4LWhlaWdodDogODB2aDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uZHJvcGRvd24tbWVudSAuYWN0aXZlOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19jb250YWluZXIge1xuICBtYXJnaW46IDBweCAxMHB4O1xufVxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lciB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMTBweCA1cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXIgLmluYWN0aXZlIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXIgYSxcbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXIgYTpsaW5rLFxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lciBhOnZpc2l0ZWQge1xuICB0cmFuc2l0aW9uOiB1bnNldDtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXIgLnRiYSB7XG4gIGNvbnRlbnQ6IFwiQSBWRU5JUlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBvcGFjaXR5OiAwLjY7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiBncmV5O1xuICBwYWRkaW5nOiAwIDVweDtcbiAgei1pbmRleDogMTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBmb250LXNpemU6IDhweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2E1YjVjYjtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50IHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTViNWNiO1xuICBtYXNrLXJlcGVhdDogcm91bmQ7XG4gIC13ZWJraXQtbWFzay1yZXBlYXQ6IHJvdW5kO1xufVxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQgLmljb24tYWxlcnQge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX25vdGlmaWNhdGlvbi5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9ub3RpZmljYXRpb24uc3ZnXCIpO1xufVxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQgLmljb24tYmlsbHMge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX2NvbnRyb2xlZmFjdHVyZXMuc3ZnXCIpO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fY29udHJvbGVmYWN0dXJlcy5zdmdcIik7XG59XG4uZHJvcGRvd24tbWVudSAuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudCAuaWNvbi1mYXEge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX0ZBUS5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9GQVEuc3ZnXCIpO1xufVxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQgLmljb24tbXlhY2NvdW50IHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9tb25jb21wdGUuc3ZnXCIpO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fbW9uY29tcHRlLnN2Z1wiKTtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50IC5pY29uLWVtIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9tZXNFTS5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9tZXNFTS5zdmdcIik7XG59XG4uZHJvcGRvd24tbWVudSAuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudCAuaWNvbi1jb2xsZWN0IHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b191cGxvYWQuc3ZnXCIpO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fdXBsb2FkLnN2Z1wiKTtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50IC5pY29uLWNvbXBhbmllcyB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fbWVzY2xpZW50cy5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9tZXNjbGllbnRzLnN2Z1wiKTtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50IC5pY29uLWNvbnRyYWN0cyB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fZ2VzdGlvbl9jb250cmF0cy5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9nZXN0aW9uX2NvbnRyYXRzLnN2Z1wiKTtcbn1cbi5kcm9wZG93bi1tZW51IC5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50IC5pY29uLWFwcHMge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX2FwcHNfc3BlY2lmaXF1ZXMuc3ZnXCIpO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvbmF2YmFyLXRvcC9jaXRyb25fYXBwc19zcGVjaWZpcXVlcy5zdmdcIik7XG59XG4uZHJvcGRvd24tbWVudSAuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudCAuaWNvbi1kanUge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL25hdmJhci10b3AvY2l0cm9uX2RqdS5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9uYXZiYXItdG9wL2NpdHJvbl9kanUuc3ZnXCIpO1xufVxuLmRyb3Bkb3duLW1lbnUgLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQgaW1nIHtcbiAgaGVpZ2h0OiAzNXB4O1xuICB3aWR0aDogMzVweDtcbiAgb3BhY2l0eTogMC44O1xufVxuLmRyb3Bkb3duLW1lbnUgdWwge1xuICBwYWRkaW5nOiAwcHg7XG59XG4uZHJvcGRvd24tbWVudSBsaSB7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgcGFkZGluZy10b3A6IDZweDtcbn1cbi5kcm9wZG93bi1tZW51IGxpIC5jb21wYW55LW5hbWUge1xuICBmb250LXNpemU6IDE0cHg7XG59XG4uZHJvcGRvd24tbWVudSBsaSAubG9nb3V0IHtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uZHJvcGRvd24tbWVudSBsaSBkaXYuY29tcGFueS1uYW1lIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuLmRyb3Bkb3duLW1lbnUgbGkgZGl2LmNvbXBhbnktbmFtZSBpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5kcm9wZG93bi1tZW51IGxpIGRpdi5sb2dvdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmRyb3Bkb3duLW1lbnUgbGk6Zmlyc3QtY2hpbGQge1xuICBwYWRkaW5nLXRvcDogMTBweDtcbn1cbi5kcm9wZG93bi1tZW51IGxpOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nOiAxMHB4O1xufVxuLmRyb3Bkb3duLW1lbnUgbGk6bGFzdC1jaGlsZCAuaWNvbiB7XG4gIG1hcmdpbi1sZWZ0OiAwcHg7XG59XG4uZHJvcGRvd24tbWVudSBzcGFuIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uaWNvbiB7XG4gIG1hcmdpbjogMHB4IDEwcHg7XG59XG4uaWNvbjpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzIHtcbiAgd2lkdGg6IDE3cmVtO1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzIC5zZWFyY2gge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzIC5zZWFyY2ggaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwYWRkaW5nOiAwcHggNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xufVxuXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmFjY3VlaWw6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuYWNjdWVpbDpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmFjY3VlaWw6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmFjY3VlaWw6aG92ZXIge1xuICBjb2xvcjogI2YwYTYyYSAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5hY2N1ZWlsOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5hY2N1ZWlsOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmFjY3VlaWw6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5hY2N1ZWlsOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGE2MmE7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNhcnRvZ3JhcGhpZTpob3Zlcixcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jYXJ0b2dyYXBoaWU6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5jYXJ0b2dyYXBoaWU6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmNhcnRvZ3JhcGhpZTpob3ZlciB7XG4gIGNvbG9yOiAjODlhNjMwICFpbXBvcnRhbnQ7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNhcnRvZ3JhcGhpZTpob3ZlciBpbWcsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuY2FydG9ncmFwaGllOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNhcnRvZ3JhcGhpZTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmNhcnRvZ3JhcGhpZTpob3ZlciBpbWcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODlhNjMwO1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5hbmFseXNlOmhvdmVyLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmFuYWx5c2U6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5hbmFseXNlOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5hbmFseXNlOmhvdmVyIHtcbiAgY29sb3I6ICM3MGMyODMgIWltcG9ydGFudDtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuYW5hbHlzZTpob3ZlciBpbWcsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuYW5hbHlzZTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5hbmFseXNlOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuYW5hbHlzZTpob3ZlciBpbWcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzBjMjgzO1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5jb2xsZWN0ZTpob3Zlcixcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jb2xsZWN0ZTpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNvbGxlY3RlOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jb2xsZWN0ZTpob3ZlciB7XG4gIGNvbG9yOiAjOGRiZTRhICFpbXBvcnRhbnQ7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNvbGxlY3RlOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jb2xsZWN0ZTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5jb2xsZWN0ZTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmNvbGxlY3RlOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZGJlNGE7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmVuZXJnaWU6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuZW5lcmdpZTpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmVuZXJnaWU6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmVuZXJnaWU6aG92ZXIge1xuICBjb2xvcjogI2QzYmY5NiAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5lbmVyZ2llOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5lbmVyZ2llOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmVuZXJnaWU6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5lbmVyZ2llOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkM2JmOTY7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmVhdTpob3Zlcixcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5lYXU6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5lYXU6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmVhdTpob3ZlciB7XG4gIGNvbG9yOiAjNDI4MWI4ICFpbXBvcnRhbnQ7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmVhdTpob3ZlciBpbWcsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuZWF1OmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmVhdTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmVhdTpob3ZlciBpbWcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4MWI4O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC52ZWhpY3VsZXM6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkudmVoaWN1bGVzOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQudmVoaWN1bGVzOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS52ZWhpY3VsZXM6aG92ZXIge1xuICBjb2xvcjogI2RmN2MzYSAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC52ZWhpY3VsZXM6aG92ZXIgaW1nLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLnZlaGljdWxlczpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC52ZWhpY3VsZXM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS52ZWhpY3VsZXM6aG92ZXIgaW1nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RmN2MzYTtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY29udHJhdHM6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuY29udHJhdHM6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5jb250cmF0czpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuY29udHJhdHM6aG92ZXIge1xuICBjb2xvcjogI2Q4YTYzZSAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5jb250cmF0czpob3ZlciBpbWcsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuY29udHJhdHM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY29udHJhdHM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jb250cmF0czpob3ZlciBpbWcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDhhNjNlO1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5yc2U6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkucnNlOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQucnNlOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5yc2U6aG92ZXIge1xuICBjb2xvcjogIzQ0OWQ4NCAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5yc2U6aG92ZXIgaW1nLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLnJzZTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5yc2U6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5yc2U6aG92ZXIgaW1nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OWQ4NDtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQudmVpbGxlOmhvdmVyLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLnZlaWxsZTpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LnZlaWxsZTpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkudmVpbGxlOmhvdmVyIHtcbiAgY29sb3I6ICNiNTM3MzEgIWltcG9ydGFudDtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQudmVpbGxlOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS52ZWlsbGU6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQudmVpbGxlOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkudmVpbGxlOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiNTM3MzE7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmFkbWluOmhvdmVyLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmFkbWluOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuYWRtaW46aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmFkbWluOmhvdmVyIHtcbiAgY29sb3I6ICNkYjRiNDcgIWltcG9ydGFudDtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuYWRtaW46aG92ZXIgaW1nLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmFkbWluOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmFkbWluOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuYWRtaW46aG92ZXIgaW1nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0Nztcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuc3BlY2lmaWM6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuc3BlY2lmaWM6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5zcGVjaWZpYzpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuc3BlY2lmaWM6aG92ZXIge1xuICBjb2xvcjogI2YyODQ1YyAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5zcGVjaWZpYzpob3ZlciBpbWcsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuc3BlY2lmaWM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuc3BlY2lmaWM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5zcGVjaWZpYzpob3ZlciBpbWcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjI4NDVjO1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5kb2N1bWVudHM6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuZG9jdW1lbnRzOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuZG9jdW1lbnRzOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5kb2N1bWVudHM6aG92ZXIge1xuICBjb2xvcjogI2E3YjI5ZCAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5kb2N1bWVudHM6aG92ZXIgaW1nLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmRvY3VtZW50czpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5kb2N1bWVudHM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5kb2N1bWVudHM6aG92ZXIgaW1nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E3YjI5ZDtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY2libGVzOmhvdmVyLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmNpYmxlczpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmNpYmxlczpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuY2libGVzOmhvdmVyIHtcbiAgY29sb3I6ICNkM2JmOTYgIWltcG9ydGFudDtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY2libGVzOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jaWJsZXM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY2libGVzOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuY2libGVzOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkM2JmOTY7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmZhY3R1cmVzOmhvdmVyLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5jb250cm9sZTpob3Zlcixcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5mYWN0dXJlczpob3Zlcixcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jb250cm9sZTpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmZhY3R1cmVzOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY29udHJvbGU6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmZhY3R1cmVzOmhvdmVyLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jb250cm9sZTpob3ZlciB7XG4gIGNvbG9yOiAjZDhhNjNlICFpbXBvcnRhbnQ7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmZhY3R1cmVzOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuY29udHJvbGU6aG92ZXIgaW1nLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmZhY3R1cmVzOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5jb250cm9sZTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5mYWN0dXJlczpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5jb250cm9sZTpob3ZlciBpbWcsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmZhY3R1cmVzOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuY29udHJvbGU6aG92ZXIgaW1nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4YTYzZTtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuZGp1OmhvdmVyLFxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLmRqdTpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LmRqdTpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuZGp1OmhvdmVyIHtcbiAgY29sb3I6ICMyOGJhZTEgIWltcG9ydGFudDtcbn1cbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuZGp1OmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5kanU6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBhLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRlbnQuZGp1OmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkuZGp1OmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGJhZTE7XG59XG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LnBhcmFtZXRyYWdlLWFsZXJ0ZXM6aG92ZXIsXG4uZHJvcGRvd24tbWVudS1jb21wYW5pZXM6bm90KC5pbmFjdGl2ZSk6aG92ZXIgbGkucGFyYW1ldHJhZ2UtYWxlcnRlczpob3Zlcixcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LnBhcmFtZXRyYWdlLWFsZXJ0ZXM6aG92ZXIsXG4uYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGFpbmVyOm5vdCguaW5hY3RpdmUpOmhvdmVyIGxpLnBhcmFtZXRyYWdlLWFsZXJ0ZXM6aG92ZXIge1xuICBjb2xvcjogI2RiNGI0NyAhaW1wb3J0YW50O1xufVxuLmRyb3Bkb3duLW1lbnUtY29tcGFuaWVzOm5vdCguaW5hY3RpdmUpOmhvdmVyIGEuYWRtaW4tcGFuZWxfX2VsZW1lbnQtY29udGVudC5wYXJhbWV0cmFnZS1hbGVydGVzOmhvdmVyIGltZyxcbi5kcm9wZG93bi1tZW51LWNvbXBhbmllczpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5wYXJhbWV0cmFnZS1hbGVydGVzOmhvdmVyIGltZyxcbi5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250YWluZXI6bm90KC5pbmFjdGl2ZSk6aG92ZXIgYS5hZG1pbi1wYW5lbF9fZWxlbWVudC1jb250ZW50LnBhcmFtZXRyYWdlLWFsZXJ0ZXM6aG92ZXIgaW1nLFxuLmFkbWluLXBhbmVsX19lbGVtZW50LWNvbnRhaW5lcjpub3QoLmluYWN0aXZlKTpob3ZlciBsaS5wYXJhbWV0cmFnZS1hbGVydGVzOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG59XG5cbi5uYXZiYXIuYWNjdWVpbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGE2MmE7XG59XG5cbi5uYXZiYXIuY2FydG9ncmFwaGllIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg5YTYzMDtcbn1cblxuLm5hdmJhci5hbmFseXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzcwYzI4Mztcbn1cblxuLm5hdmJhci5jb2xsZWN0ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZGJlNGE7XG59XG5cbi5uYXZiYXIuZW5lcmdpZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkM2JmOTY7XG59XG5cbi5uYXZiYXIuZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xufVxuXG5saS5lcnJvcjpob3ZlciB7XG4gIGNvbG9yOiAjZGI0YjQ3O1xufVxuXG4ubmF2YmFyLmVhdSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MjgxYjg7XG59XG5cbi5uYXZiYXIudmVoaWN1bGVzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RmN2MzYTtcbn1cblxuLm5hdmJhci5jb250cmF0cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkOGE2M2U7XG59XG5cbi5uYXZiYXIucnNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OWQ4NDtcbn1cblxuLm5hdmJhci52ZWlsbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjUzNzMxO1xufVxuXG4ubmF2YmFyLmFkbWluIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0Nztcbn1cblxuLm5hdmJhci5zcGVjaWZpYyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMjg0NWM7XG59XG5cbi5uYXZiYXIuZG9jdW1lbnRzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E3YjI5ZDtcbn1cblxuLm5hdmJhci5jaWJsZXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDNiZjk2O1xufVxuXG4ubmF2YmFyLmZhY3R1cmVzLFxuLm5hdmJhci5jb250cm9sZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkOGE2M2U7XG59XG5cbi5uYXZiYXIuZGp1IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YmFlMTtcbn1cblxuLm5hdmJhci5wYXJhbWV0cmFnZS1hbGVydGVzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0Nztcbn0iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { HttpHeaders } from '@angular/common/http';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { Notification } from 'app/shared/models/notification.interface';\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { FileStorageService } from 'app/shared/services/files/file-storage.service';\nimport { NotificationsService } from 'app/shared/services/notifications/notifications.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { UserSessionService } from 'app/shared/services/session/user-session.service';\nimport { TitleService } from 'app/shared/services/title/title.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\nimport * as moment from 'moment';\nimport { BsDropdownDirective } from 'ngx-bootstrap/dropdown';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'app-navbar-top',\n templateUrl: './navbar-top.component.html',\n styleUrls: ['./navbar-top.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n providers: [],\n})\nexport class NavbarTopComponent implements OnInit {\n private defaultAvatarUrl = 'assets/img/backgrounds/default-avatar.jpg';\n\n notifications: Notification[] = [];\n notificationsDisplay: Notification[] = [];\n notificationsLimit = 10;\n\n adminPanel: any[] = [];\n\n urlUserPicture: SafeUrl = '';\n title: string;\n subtitle: string;\n user: any = {};\n company: any = {};\n userCompanies: any[];\n\n /*\n *Companies displayed after user input in the search field\n */\n public companiesDisplayed: any[] = [];\n\n /** Control to handle search input */\n public searchControl: FormControl = new FormControl('');\n\n constructor(\n private utils: UtilsService,\n private router: Router,\n private sessionService: SessionService,\n private titleService: TitleService,\n private fileStorageService: FileStorageService,\n private sanitizer: DomSanitizer,\n private companyService: CompaniesService,\n private usersService: UsersService,\n private notificationsService: NotificationsService,\n private userSessionService: UserSessionService\n ) {}\n\n ngOnInit() {\n this.setUser();\n this.setCompany();\n this.initUserSubscription();\n this.setCompaniesList();\n this.setAdminPanels();\n this.initNotifications();\n this.searchControl.valueChanges.subscribe({\n next: value => {\n this.onSearch(value);\n },\n });\n }\n\n public displaySearchCompany(): boolean {\n return this.userCompanies.length >= 5;\n }\n\n public onSearch(filter: string) {\n this.refreshDisplayedCompanies(filter);\n }\n\n public refreshDisplayedCompanies(filter: string) {\n this.companiesDisplayed = this.userCompanies.filter(company => this.filterCompany(company, filter));\n }\n\n private filterCompany(company: any, filter: string): boolean {\n if (!filter) {\n return true;\n }\n const stringToMatch = this.utils.removeAccentAndLowerCase(filter);\n const companyName = this.utils.removeAccentAndLowerCase(company.name);\n\n return companyName.includes(stringToMatch);\n }\n\n setAdminPanels() {\n if ([UserTypes.ENERGY_MANAGER, UserTypes.ADMIN].includes(this.user.type)) {\n this.adminPanel = this.getAdminPanelLinks();\n } else if (this.user.type === UserTypes.USER_ADMIN) {\n this.adminPanel = this.getUserAdminPanelLinks();\n } else {\n this.adminPanel = this.getUserPanelLinks();\n }\n\n this.adminPanel.push(\n {\n display: 'Gestion des contrats',\n url: '/contrats',\n available: true,\n iconClass: 'icon-contracts',\n },\n {\n display: 'Gestion des factures',\n url: '/factures',\n available: true,\n iconClass: 'icon-bills',\n },\n {\n display: 'Paramétrage des alertes',\n url: '/parametrage-alertes',\n available: true,\n iconClass: 'icon-alert',\n },\n {\n display: 'Contrôle des factures',\n url: '/controle/factures',\n available: true,\n iconClass: 'icon-bills',\n }\n );\n }\n\n getAdminPanelLinks() {\n return [\n {\n display: 'Mon compte',\n url: '/admin/utilisateur/' + this.user._id + '/profil',\n available: true,\n iconClass: 'icon-myaccount',\n },\n {\n display: 'Nos clients',\n url: '/admin/entreprises',\n available: true,\n iconClass: 'icon-companies',\n },\n {\n display: 'Nos utilisateurs',\n url: '/admin/utilisateurs',\n available: true,\n iconClass: 'icon-em',\n },\n {\n display: 'Collecte automatique',\n url: '/collecte',\n available: true,\n iconClass: 'icon-collect',\n },\n {\n display: 'Base de DJU',\n url: '/dju',\n available: true,\n iconClass: 'icon-dju',\n },\n ];\n }\n\n getUserAdminPanelLinks() {\n return [\n {\n display: 'Mon compte',\n url: '/admin/utilisateur/' + this.user._id + '/profil',\n available: true,\n iconClass: 'icon-myaccount',\n },\n {\n display: 'Nos entreprises',\n url: '/admin/entreprises',\n available: true,\n iconClass: 'icon-companies',\n },\n {\n display: 'Nos utilisateurs',\n url: '/admin/utilisateurs',\n available: true,\n iconClass: 'icon-em',\n },\n {\n display: 'Collecte automatique',\n url: '/collecte',\n available: true,\n iconClass: 'icon-collect',\n },\n ];\n }\n\n getUserPanelLinks() {\n return [\n {\n display: 'Mon compte',\n url: '/admin/utilisateur/' + this.user._id + '/profil',\n available: true,\n iconClass: 'icon-myaccount',\n },\n {\n display: 'Mes Energy-managers',\n url: '/admin/utilisateurs',\n available: true,\n iconClass: 'icon-em',\n },\n ];\n }\n\n initNotifications() {\n this.notificationsService.getNotifications().subscribe({\n next: notifications => {\n this.notifications = notifications;\n this.notificationsDisplay = [];\n const limit = Math.min(this.notifications.length, this.notificationsLimit);\n for (let i = 0; i < limit; i++) {\n this.notificationsDisplay.push(this.notifications[i]);\n }\n },\n });\n this.notificationsService.refresh();\n }\n\n setUser() {\n this.user = this.sessionService.getUser();\n }\n\n getUser() {\n return this.sessionService.getUser();\n }\n\n setCompany() {\n this.company = this.sessionService.getCompany();\n }\n\n getCompany() {\n return this.sessionService.getCompany();\n }\n\n async changeCompanySelected(companySelected: { [property: string]: any }) {\n this.sessionService.setCompany(companySelected);\n this.company = companySelected;\n\n // if the user is already on Home page --> specifies to reload all the page's components\n const url = this.router.url.substring(0, this.router.url.indexOf('?'));\n const queryParams = url === '/accueil' ? { refresh: true } : {};\n await this.redirectTo('/accueil', queryParams);\n this.notificationsService.refresh();\n }\n\n async redirectTo(url, queryParams) {\n return this.router.navigate([url], { queryParams });\n }\n\n async setUserImage() {\n if (this.user.img) {\n try {\n const url = await this.fileStorageService.getUrl(this.user.img);\n this.urlUserPicture = this.sanitizer.bypassSecurityTrustUrl(url);\n } catch (e) {\n this.urlUserPicture = this.defaultAvatarUrl;\n }\n } else {\n this.urlUserPicture = this.defaultAvatarUrl;\n }\n }\n\n private initUserSubscription() {\n this.userSessionService.getUserSession().subscribe({\n next: user => {\n if (user) {\n this.user = user;\n this.setUserImage();\n }\n },\n });\n }\n\n async logout() {\n try {\n // If an error occurs, we still want cache to be cleared and navigate to authentification\n await this.userSessionService.logout();\n } catch (e) {}\n this.sessionService.clearLocalStorage();\n await this.router.navigateByUrl('/authentification');\n // After logout, reload app to be sure components are reloaded\n window.location.reload();\n }\n\n getTitle() {\n this.title = this.titleService.getTitle(this.router.url);\n return this.title;\n }\n\n getSubtitle() {\n if (this.titleService.getSubtitle(this.router.url)) {\n this.subtitle = this.titleService.getSubtitle(this.router.url);\n // TODO subtitle with id\n this.subtitle = this.subtitle.replace(/\\//g, '');\n } else {\n this.subtitle = null;\n }\n return this.subtitle;\n }\n\n getTitleColor(): string {\n return this.titleService.getTitleColor(this.router.url);\n }\n\n setCompaniesList() {\n this.companyService.getUserCompanies().subscribe({\n next: companies => {\n this.userCompanies = companies;\n this.refreshDisplayedCompanies(this.searchControl.value);\n },\n });\n this.companyService.refreshUserCompaniesList();\n }\n\n sortListAlphabetically(companyA, companyB) {\n const a = companyA.name;\n const b = companyB.name;\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n isFavouriteCompany(company) {\n return this.user.favouriteCompany && this.user.favouriteCompany === company._id;\n }\n\n setClassStar(company) {\n return this.user.favouriteCompany && this.user.favouriteCompany === company._id\n ? 'icon zmdi zmdi-star'\n : 'icon zmdi zmdi-star-outline';\n }\n\n // click on the star\n setFavouriteCompany(event, company) {\n // Disable event propagation\n event.stopPropagation();\n\n // doesn't have one yet or another one\n if (!this.user.favouriteCompany || this.user.favouriteCompany !== company._id) {\n const oldFavouriteCompany = this.user.favouriteCompany;\n this.user.favouriteCompany = company._id;\n this.usersService.updateUser(this.user).then(\n user => {\n if (!user) {\n this.user.favouriteCompany = oldFavouriteCompany;\n }\n return Promise.resolve();\n },\n err => {\n this.user.favouriteCompany = oldFavouriteCompany;\n // err.error_code is set to error_updateUser\n return Promise.reject(err);\n }\n );\n }\n }\n\n setCompanyHoverClass(event, company) {\n if (event.type === 'mouseover') {\n event.srcElement.className = 'icon zmdi zmdi-star m-0';\n } else if (event.type === 'mouseleave' && !this.isFavouriteCompany(company)) {\n event.srcElement.className = 'icon zmdi zmdi-star-outline m-0';\n }\n }\n\n setAdminActiveClass(isAvailable) {\n return isAvailable ? ' active' : ' inactive';\n }\n\n setIconClass(item) {\n return 'icon ' + item.iconClass;\n }\n\n get userProfileLink() {\n return '/admin/utilisateur/' + this.user._id + '/profil';\n }\n\n get notificationsNotReadCount() {\n return this.notifications.filter(x => !x.read).length;\n }\n\n async notificationClick(dropdown: BsDropdownDirective, notification: Notification) {\n try {\n dropdown.hide();\n if (!notification.read && notification._id) {\n await this.notificationsService.setNotificationState(notification._id, true);\n notification.read = true;\n }\n } catch (e) {\n Swal.fire(`Impossible de changer l'état de la notification`, 'Merci de réessayer ultérieurement', 'error');\n }\n }\n\n /**\n * Toggle notification state (read/ not read)\n * @param {Notification} notification - notification to toggle read state from\n */\n async toggleNotificationState(notification: Notification) {\n try {\n const nextState = !notification.read;\n await this.notificationsService.setNotificationState(notification._id, nextState);\n notification.read = nextState;\n this.notificationsService.refresh();\n } catch (e) {\n Swal.fire(`Impossible de changer l'état de la notification`, 'Merci de réessayer ultérieurement', 'error');\n }\n }\n\n /**\n * Get notfication read button title key\n * @param {Notification} notification\n * @returns {string} translate key for title\n */\n getNotificationReadTitle(notification: Notification): string {\n return notification.read ? 'mark_as_not_read_f' : 'mark_as_read_f';\n }\n\n /**\n * Archive notification\n * @param {Notification} notification - notification to archive\n */\n async archiveNotification(notification: Notification) {\n try {\n if (!notification || !notification._id) {\n return;\n }\n await this.notificationsService.archiveNotification(notification._id);\n this.notificationsService.refresh();\n } catch (e) {\n Swal.fire(`Impossible d'archiver la notification`, 'Merci de réessayer ultérieurement', 'error');\n }\n }\n\n /**\n * Get notification display date from now\n * @param {Notification} notification\n * @returns {string} time formatted from now (eg. '1 hour ago')\n */\n getNotificationDate(notification: Notification): string {\n return moment(notification.notifiedAt).fromNow();\n }\n\n /**\n * Display more notifications, step of 10\n */\n displayMoreNotifications() {\n if (!this.canDisplayMore) {\n return;\n }\n const step = 10;\n\n const startIndex = this.notificationsLimit;\n const limit = Math.min(this.notifications.length, this.notificationsLimit + step);\n for (let i = startIndex; i < limit; i++) {\n this.notificationsDisplay.push(this.notifications[i]);\n }\n this.notificationsLimit = limit;\n }\n\n get canDisplayMore(): boolean {\n return this.notificationsDisplay.length < this.notifications.length;\n }\n}\n","export default \"h1 {\\n color: #adb9ca;\\n font-size: 3em;\\n}\\n\\nh1,\\nh2 {\\n margin: 40px 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzLzQwNC9ub3QtZm91bmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzLzQwNC9ub3QtZm91bmQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxjQUFBO0VBQ0EsY0FBQTtBQ0NKOztBREVBOztFQUVJLGNBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLzQwNC9ub3QtZm91bmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJoMSB7XG4gICAgY29sb3I6ICNhZGI5Y2E7XG4gICAgZm9udC1zaXplOiAzZW07XG59XG5cbmgxLFxuaDIge1xuICAgIG1hcmdpbjogNDBweCAwO1xufVxuIiwiaDEge1xuICBjb2xvcjogI2FkYjljYTtcbiAgZm9udC1zaXplOiAzZW07XG59XG5cbmgxLFxuaDIge1xuICBtYXJnaW46IDQwcHggMDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss'],\n providers: [],\n})\nexport class NotFoundComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n\n getBlocCss() {\n return {\n 'text-align': 'center',\n padding: '20px',\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { NotFoundComponent } from './not-found.component';\n\nconst NOTFOUND_ROUTE = [\n {\n path: '',\n component: NotFoundComponent,\n data: {\n title: '404',\n },\n },\n];\n\n@NgModule({\n declarations: [NotFoundComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(NOTFOUND_ROUTE)],\n})\nexport class NotFoundModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2FkbWluL2NvbXBhbmllcy1ob21lL2NvbXBhbmllcy1ob21lLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CompanyAdmin } from 'app/shared/models/company.interface';\nimport { KeyFigures } from 'app/shared/models/key-figure.interface';\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport Swal from 'sweetalert2';\nimport { AdminCompanyService } from '../company/company.service';\n\n@Component({\n selector: 'ga-admin-companies',\n templateUrl: './companies-home.component.html',\n styleUrls: ['./companies-home.component.scss'],\n providers: [],\n})\nexport class AdminCompaniesComponent implements OnInit {\n listCompanies: CompanyAdmin[] = [];\n listKeyFigures: KeyFigures[] = [];\n listSubTexts: Array<{\n label: string;\n property: string;\n }> = [];\n userSession: any;\n\n constructor(\n private adminCompanyService: AdminCompanyService,\n private companiesService: CompaniesService,\n private router: Router,\n private sessionService: SessionService,\n private usersService: UsersService\n ) {}\n\n ngOnInit() {\n this.userSession = this.sessionService.getUser();\n this.checkAccessToPage();\n\n this.initializeData();\n\n this.listSubTexts = [\n {\n label: 'Nombre de pdls',\n property: 'nbPdl',\n },\n ];\n }\n\n /**\n * Standard users don't have access to this page. Double check in addition to pages rights.\n */\n checkAccessToPage() {\n if (this.usersService.isUser(this.userSession)) {\n this.router.navigateByUrl('accueil');\n }\n }\n\n /**\n * Initialize data to display companies and keyfigures\n * @returns {Promise}\n */\n async initializeData(): Promise {\n // if user is super citron or energy manager -> don't filter, display all the companies\n // if user is type standard user or useradmin --> filter and display only the companies they belong to\n try {\n // Get companies\n const allCompanies = await this.companiesService.getVisibleCompaniesForUser();\n this.listCompanies = allCompanies ? allCompanies : [];\n this.listCompanies = this.listCompanies.sort(this.sortListAlphabetically);\n\n // Get keyfigures\n const allKeyFigures = await this.adminCompanyService.getAllKeyFigures();\n this.listKeyFigures = allKeyFigures ? allKeyFigures : [];\n\n this.initializeCompaniesList();\n } catch (err) {\n // er.error_code is set to error_getListCompanies\n this.getSwalMsg(err.errorCode);\n }\n }\n\n sortListAlphabetically(companyA, companyB) {\n const a = companyA.name;\n const b = companyB.name;\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n /**\n * Set companies number of PDLs and and logo\n */\n initializeCompaniesList() {\n this.listCompanies.forEach(company => {\n const keyFigure = this.listKeyFigures.find(companyKeyFig => companyKeyFig.companyId === company._id);\n company.nbPdl = keyFigure ? keyFigure.pdlActive : 0;\n });\n }\n\n // sweet alert\n getSwalMsg(msg_code) {\n const messages = {\n error_getListCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des enterprises.',\n 'error',\n ],\n error_getKeyFigures: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement du nombre de PDLs.',\n 'error',\n ],\n default: ['Toutes nos excuses', 'Une erreur est survenue. Veuillez réessayer ultérieurement.', 'error'],\n };\n if (!msg_code || messages[msg_code]) {\n msg_code = 'default';\n }\n\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { AdminCompaniesComponent } from './companies-home.component';\n\nconst ADMIN_ROUTE = [\n {\n path: '',\n component: AdminCompaniesComponent,\n canActivate: [AccessGuard],\n data: { page: 'admin' },\n },\n];\n\n@NgModule({\n declarations: [AdminCompaniesComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(ADMIN_ROUTE)],\n})\nexport class AdminCompaniesModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2FkbWluL2NvbXBhbnkvY29tcGFueS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Location } from '@angular/common';\nimport { Component, HostListener, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport Swal from 'sweetalert2';\n\n// services\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { AdminCompanyService } from './company.service';\n\n// interfaces\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { AdminTab } from 'app/shared/models/admin-tab.interface';\n\n@Component({\n selector: 'ga-company',\n templateUrl: './company.component.html',\n styleUrls: ['./company.component.scss'],\n providers: [],\n})\nexport class CompanyComponent implements OnInit {\n company: any = null;\n selectedTab: AdminTab = null;\n listTabs: AdminTab[] = [];\n\n isLoading = true;\n\n /**\n * Is company being deleted\n */\n isDeleting = false;\n\n userSession: any = null;\n\n constructor(\n private location: Location,\n private route: ActivatedRoute,\n private router: Router,\n private adminCompanyService: AdminCompanyService,\n private sessionService: SessionService,\n private usersService: UsersService,\n private companyService: CompaniesService\n ) {}\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.initData(params);\n });\n }\n\n async initData(params: object) {\n this.userSession = await this.sessionService.getUser();\n this.checkAccessToPage();\n\n let selectedTabKey = 'profil';\n\n if (params && params['companyId']) {\n await this.setCompany(params['companyId']);\n selectedTabKey = params['tab'];\n } else if (!this.usersService.hasRightToCreateCompany(this.userSession)) {\n // standard users can't access the creation page\n this.router.navigateByUrl('/admin/entreprises');\n }\n this.userSession.belongsToCompany = this.company\n ? this.company.users.includes(this.userSession._id.toString())\n : false;\n this.initTabs();\n this.selectTab(selectedTabKey);\n this.isLoading = false;\n }\n\n /**\n * Standard users don't have access to this page. Double check in addition to pages rights.\n */\n checkAccessToPage() {\n if (this.usersService.isUser(this.userSession)) {\n this.router.navigateByUrl('accueil');\n }\n }\n\n /**\n * Initialize the tabs with an array of AdminTabs.\n * Visibility and editing rights depend on the user's type and whether he belongs to the company or not.\n */\n initTabs() {\n /** Is session user ADMIN or belongs to the company as a USER_ADMIN or EM */\n const isAdminOrBelongs = this.usersService.isAdmin(this.userSession) || this.isEmOrUserAdminInCharge();\n /** Is session user ADMIN or belongs to the company as an EM */\n const isAdminOrEmBelonging = this.usersService.isAdmin(this.userSession) || this.isEmInCharge();\n /** Is session user from Citron */\n const isFromCitron = this.usersService.isFromCitron(this.userSession);\n\n this.listTabs = [\n { key: 'profil', name: 'profil', visible: true, canEdit: isAdminOrBelongs },\n { key: 'utilisateurs', name: 'utilisateurs', visible: true, canEdit: isAdminOrBelongs },\n { key: 'energy-managers', name: 'energy-managers', visible: true, canEdit: isAdminOrEmBelonging },\n { key: 'energy-viewers', name: 'energy-viewers', visible: isFromCitron, canEdit: isAdminOrEmBelonging },\n // { key: 'contacts', name: 'contacts', visible: isGa, canEdit: isAdminOrEmBelonging},\n { key: 'uploads', name: 'uploads', visible: isAdminOrEmBelonging, canEdit: true },\n { key: 'filiales', name: 'gestion des filiales', visible: isAdminOrBelongs, canEdit: true },\n { key: 'prestations', name: 'prestations', visible: false, canEdit: false },\n { key: 'pdls', name: 'attribution des PDLs', visible: isAdminOrBelongs, canEdit: true },\n { key: 'vehicules', name: 'attribution des véhicules', visible: isAdminOrBelongs, canEdit: true },\n {\n key: 'courbes-de-charge',\n name: 'attribution des courbes de charge',\n visible: isAdminOrEmBelonging,\n canEdit: true,\n },\n {\n key: 'fusion-des-pdls',\n name: 'Fusion des PDLs',\n visible: isAdminOrEmBelonging,\n canEdit: true,\n },\n ];\n }\n\n /**\n * Returns true if the user is an EM in charge of the company (associated to the company)\n * @return {boolean}\n */\n isEmInCharge(): boolean {\n return this.usersService.isEM(this.userSession) && this.userSession.belongsToCompany;\n }\n\n /**\n * Returns true if the user belongs to the company and is either an EM or USER_ADMIN\n * @return {boolean}\n */\n isEmOrUserAdminInCharge(): boolean {\n return (\n [UserTypes.USER_ADMIN, UserTypes.ENERGY_MANAGER].includes(this.userSession.type) &&\n this.userSession.belongsToCompany\n );\n }\n\n /**\n * Load the company info from its id in the URL params\n * @param {string} id - company's id to load\n * @return {Promise}\n */\n async setCompany(id: string) {\n try {\n const results = await Promise.all([\n this.adminCompanyService.getCompanyById(id),\n this.companyService.getBranches(id),\n ]);\n\n this.company = results[0].data;\n this.company.branches = results[1].data;\n } catch (err) {\n this.isLoading = false;\n // err.errorCode is set to error_loadCompany or error_loadBranches\n this.getSwalMsg(err.errorCode);\n await this.router.navigateByUrl('/admin/entreprises');\n }\n }\n\n /**\n * Set the correct tab based on URL\n * @param {string} tabKey - name in the url after the company's id, match a key in the tabs list\n */\n selectTab(tabKey: string) {\n this.selectedTab = this.listTabs.find(t => t.key === tabKey);\n\n // if the url is wrong, display profile + update url\n if (!this.selectedTab && this.company) {\n this.selectedTab = this.listTabs[0];\n this.location.go('/admin/entreprise/' + this.company._id + '/' + this.selectedTab.key);\n }\n }\n\n /**\n * Display a sweet alert based on the code sent\n * @param msg_code\n */\n getSwalMsg(msg_code) {\n const messages = {\n error_loadCompany: [\n 'Toutes nos exuses',\n \"Une erreur s'est produite lors du chargement de l'entreprise\",\n 'error',\n ],\n error_loadBranches: [\n 'Toutes nos exuses',\n \"Une erreur s'est produite lors du chargement des filiales\",\n 'error',\n ],\n error_default: ['Toutes nos exuses', \"Une erreur s'est produite lors du chargement de la page.\", 'error'],\n };\n\n if (!messages[msg_code]) {\n msg_code = 'error_default';\n }\n\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n\n getCompanyName(): string {\n return !this.isLoading ? this.companyDisplayName : '';\n }\n\n get companyDisplayName(): string {\n return this.company && this.company.name ? this.company.name : '';\n }\n\n /**\n * Check if user close page or change page\n * HostListener is for the browser window (close)\n * CanDesactivate is mandatory for the canDeactivateGuard\n */\n @HostListener('window:beforeunload')\n canDeactivate(): boolean {\n return !this.isDeleting;\n }\n\n /**\n * Set if company is beign deleted\n * @param {boolean} isDeleting\n */\n setDeleting(isDeleting: boolean) {\n this.isDeleting = isDeleting;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { CanDeactivateGuard } from '../../../shared/services/guards/can-deactivate-guard.service';\nimport { CompanyComponent } from './company.component';\n\nconst COMPANY_ROUTE = [\n {\n path: '',\n component: CompanyComponent,\n canActivate: [AccessGuard],\n canDeactivate: [CanDeactivateGuard],\n data: { page: 'admin' },\n },\n];\n\n@NgModule({\n declarations: [CompanyComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(COMPANY_ROUTE)],\n})\nexport class CompanyModule {}\n","import { HttpEvent, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KeyFigures } from 'app/shared/models/key-figure.interface';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { FileStorageService } from 'app/shared/services/files/file-storage.service';\nimport { PageService } from 'app/shared/services/page/page.service';\n\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class AdminCompanyService extends PageService {\n constructor(\n public apiService: ApiService,\n private sanitizer: DomSanitizer,\n private fileStorageService: FileStorageService\n ) {\n super(apiService);\n this.fake = false;\n }\n\n /**\n * Load the company from its id\n *\n * @param {string} id - id of the company to load\n * @returns {Promise<*>}\n */\n async getCompanyById(id: string): Promise {\n return this.get('/api/companies/crud/' + id);\n }\n\n // list all the organizations: Entreprise/Santé/Commune/Collectivité - Région/Collectivité - Département...\n getCompanyProperties(): Promise {\n return this.get('/api/sites/all/available/properties');\n }\n\n async updateCompany(company): Promise {\n try {\n const route = '/api/companies/crud/' + company._id;\n const response = await this.put(route, company, null, false);\n return response;\n } catch (err) {\n if (!err.errorCode) {\n err.errorCode = 'error_updateCompany';\n }\n throw err;\n }\n }\n\n getUploadPatternMissingList(company): any {\n return this.get('/api/uploads/company/' + company._id + '/pattern-missing').then(\n response => {\n if (response.code === 200) {\n return Promise.resolve(response.data);\n } else {\n const err = { error_code: 'error_getListUploads' };\n return Promise.reject(err);\n }\n },\n err => {\n err.error_code = 'error_getListUploads';\n return Promise.reject(err);\n }\n );\n }\n\n getUploadNoPatternsList(company): any {\n return this.get('/api/uploads/company/' + company._id + '/no-patterns').then(\n response => {\n if (response.code === 200) {\n return Promise.resolve(response.data);\n } else {\n const err = { error_code: 'error_getListUploads' };\n return Promise.reject(err);\n }\n },\n err => {\n err.error_code = 'error_getListUploads';\n return Promise.reject(err);\n }\n );\n }\n\n /**\n * Get keyfigures for all companies\n * @returns {Promise<*[]>} list of keyfigures\n */\n async getAllKeyFigures(): Promise {\n try {\n const response = await this.get('/api/keyfigures/all');\n return response.data;\n } catch (err) {\n err.errorCode = err.errorCode || 'error_getKeyFigures';\n return Promise.reject(err);\n }\n }\n\n async getLogoPathById(id: string): Promise {\n try {\n const url = await this.fileStorageService.getUrl(id);\n return this.sanitizer.bypassSecurityTrustUrl(url);\n } catch (e) {\n e.error_code = 'error_logo_url';\n throw e;\n }\n }\n\n /**\n * Create and save the company.\n * Set the session user as a company's user or viewer based on his type.\n * @param company\n * @return {Promise}\n */\n async createCompany(company): Promise {\n try {\n const route = '/api/companies/create';\n const res = await this.post(route, { company });\n return res.data;\n } catch (err) {\n if (!err.errorCode) {\n err.errorCode = 'error_createCompany';\n }\n throw err;\n }\n }\n\n /**\n * Upload and save picture in db + link its id to the company's logo / user's picture\n * @param {{fileObject: any, filename: string}} file - file to upload\n * @param {string} id - id of company/user\n * @param {\"company\"|\"user\"} model - model to upload to\n */\n uploadPicture(\n file: { fileObject: any; filename: string },\n id: string,\n model: 'company' | 'user'\n ): Observable> {\n const formData: FormData = new FormData();\n const fieldName = model === 'company' ? 'companyId' : 'id';\n const param = model === 'company' ? '' : `/${id}`;\n formData.append(fieldName, id);\n formData.append('file', file.fileObject, file.filename);\n const params: HttpParams = model === 'company' ? new HttpParams({ fromObject: { companyId: id } }) : null;\n const options = {\n reportProgress: true,\n headers: new HttpHeaders({\n Accept: 'application/json',\n Authorization: 'Basic ' + this.apiService.getToken(),\n }),\n params,\n };\n return this.apiService.upload(`/api/pictures/upload/${model}${param}`, formData, options);\n }\n\n /**\n * Delete company's logo\n * @param {string} companyId - company to delete the logo from\n * @returns {Promise<*>} company updated with logo removed\n */\n async deletePictureCompany(companyId: string): Promise {\n try {\n const route = `/api/pictures/company/${companyId}`;\n const res = await this.delete(route);\n return res.data;\n } catch (err) {\n err.error_code = 'error_deletePicture';\n return Promise.reject(err);\n }\n }\n\n deleteContactPermanently(contacToDelete): Promise {\n const route = '/api/contacts/crud/' + contacToDelete._id;\n return this.delete(route);\n }\n\n /**\n * Set the picture url inside a new field 'logoUrl' inside a User object or a Company Object\n * @param usersOrCompaniesList: list of companies or users\n * @param pictureField: 'logo' or 'img'\n */\n async setPictures(usersOrCompaniesList, pictureField) {\n // get an array with each user/company and its img url\n // Array<{_id: string, imgUrl: string|null}>\n const results = await this.getPictures(usersOrCompaniesList, pictureField);\n\n results.forEach(result => {\n const userOrComp = usersOrCompaniesList.find(u => u._id === result['_id']);\n userOrComp.logoUrl = result['imgUrl']; // userOrComp can't be null, if it isn't found, will be caught later but should never happen\n });\n return true;\n }\n\n /**\n * Returns an array with the picture's url of each company/user\n * @param usersOrCompaniesList\n * @param pictureField\n * @return {Promise<{_id: string, imgUrl: string|null}[]>}\n */\n async getPictures(usersOrCompaniesList, pictureField) {\n // set an array with each user/company and its img url (null if not found)\n // Array<{_id: string, imgUrl: string|null}>\n const userAndPictures = await Promise.all(\n usersOrCompaniesList.map(\n userOrComp => this.getImg(userOrComp, pictureField) // {Promise<{_id: string, imgUrl: string|null}>}\n )\n );\n return userAndPictures;\n }\n\n /**\n * Returns the picture's url with the id of the user/company\n * @param userOrComp\n * @param pictureField\n * @return {Promise<{_id: string, imgUrl: string|null}>}\n */\n getImg(userOrComp, pictureField): Promise {\n if (userOrComp[pictureField]) {\n return this.getLogoPathById(userOrComp[pictureField]).then(\n url => {\n return Promise.resolve({ _id: userOrComp._id, imgUrl: url });\n },\n err => {\n return Promise.resolve({ _id: userOrComp._id, imgUrl: null });\n }\n );\n } else {\n return Promise.resolve({ _id: userOrComp._id, imgUrl: null });\n }\n }\n\n async updateSite(siteId, data): Promise {\n return this.put('/api/sites/' + siteId + '/move-company', data);\n }\n\n async createContact(contact) {\n try {\n const route = '/api/contacts/crud';\n const res = await this.post(route, contact);\n if (res.code === 200) {\n return res.data;\n } else {\n const err = { errorCode: 'error_createNewContact' };\n throw err;\n }\n } catch (err) {\n err.errorCode = 'error_createNewCompany';\n throw err;\n }\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2FkbWluL2lkZW50aWZpY2F0aW9uLXBhdHRlcm4vaWRlbnRpZmljYXRpb24tcGF0dGVybi5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Company } from 'app/shared/models/company.interface';\nimport Swal from 'sweetalert2';\nimport { AdminCompanyService } from '../company/company.service';\nimport { AdminIdentificationPatternService } from '../identification-pattern/identification-pattern.service';\n\n@Component({\n selector: 'ga-indentification-pattern',\n templateUrl: './identification-pattern.component.html',\n styleUrls: ['./identification-pattern.component.scss'],\n providers: [],\n})\nexport class IdentificationPatternComponent implements OnInit {\n public company: Company = null;\n public identificationPattern: any = null;\n public textContent: any = null;\n public isloading = true;\n public uploadId: string = null;\n public chunkId: string = null;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private companyService: AdminCompanyService,\n private identificationPatternService: AdminIdentificationPatternService\n ) {}\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.uploadId = params['idUpload'];\n this.chunkId = params['idChunk'];\n if (params['idChunk'] && params['idUpload']) {\n this.initChunk(params);\n } else {\n this.initUpload(params);\n }\n });\n }\n\n /**\n * Init upload\n *\n * @param {Params} params\n */\n private async initUpload(params: Params) {\n await Promise.all([\n this.getUpload(params['idUpload']).then(textContent => {\n this.textContent = textContent;\n }),\n this.setCompany(params['id']),\n ]);\n }\n\n /**\n * init chunk\n *\n * @param {Params} params\n */\n private async initChunk(params: Params) {\n await Promise.all([\n this.getChunk(params['idUpload'], params['idChunk']).then(textContent => {\n this.textContent = textContent;\n }),\n this.setCompany(params['id']),\n ]);\n }\n\n /**\n * Get the text content of the specified chunk of the upload\n *\n * @param {string} id - id of the upload\n * @param {string} idChunk - id of the chunk\n * @returns {Promise<*>}\n */\n private async getChunk(id: string, idChunk: string): Promise {\n try {\n if (!id) {\n return null;\n }\n\n const upload = await this.identificationPatternService.getUploadChunkTextContentById(id, idChunk);\n return upload;\n } catch (err) {\n // err.errorCode is set to error_loadUpload\n this.getSwalMsg();\n }\n }\n\n /**\n * Get the text content of the specified upload\n *\n * @param {string} id - upload id\n * @returns {Promise<*>}\n */\n private async getUpload(id: string): Promise {\n try {\n if (!id) {\n return null;\n }\n\n const upload = await this.identificationPatternService.getUploadTextContentById(id);\n return upload;\n } catch (err) {\n // err.errorCode is set to error_loadUpload\n this.getSwalMsg();\n }\n }\n\n /**\n * Load the company info from its id in the URL params\n *\n * @param {string} id - company id\n * @returns Promise<{void | boolean}>\n */\n private async setCompany(id: string): Promise {\n try {\n if (id) {\n const result = await this.companyService.getCompanyById(id);\n this.company = result.data;\n this.isloading = false;\n }\n } catch (err) {\n // err.errorCode is set to error_loadCompany\n this.getSwalMsg();\n return this.router.navigateByUrl('/admin/entreprises/creer');\n }\n }\n\n /**\n * Set identification pattern\n *\n * @param {*} identificationPattern\n */\n public setIdentificationPattern(identificationPattern: any) {\n this.identificationPattern = identificationPattern;\n }\n\n /**\n * Fire sweet alert\n */\n private getSwalMsg() {\n Swal.fire(\n 'Toutes nos exuses',\n \"Une erreur s'est produite lors du chargement du pattern d'identification\",\n 'error'\n );\n }\n\n /**\n * Get title\n *\n * @returns {string}\n */\n public getTitle(): string {\n return 'Nouveau pattern d\\'identification';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { IdentificationPatternComponent } from './identification-pattern.component';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\n\nconst IDENTIFICATION_PATTERN_ROUTE = [\n {\n path: '',\n component: IdentificationPatternComponent,\n canActivate: [AccessGuard],\n data: { page: 'admin' },\n },\n];\n\n@NgModule({\n declarations: [IdentificationPatternComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(IDENTIFICATION_PATTERN_ROUTE)],\n})\nexport class IdentificationPatternModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\n@Injectable()\nexport class AdminIdentificationPatternService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n }\n\n /**\n * Create Identification Pattern\n *\n * @param {*} identificationPattern\n * @returns {Promise<*>}\n */\n async createIdentificationPattern(identificationPattern: any): Promise {\n try {\n const route = '/api/identification-patterns/crud/';\n const res = await this.post(route, identificationPattern);\n return res.data;\n } catch (err) {\n err.error_code = 'error_createNewIdentificationPattern';\n throw err;\n }\n }\n\n /**\n * Get the text content of the upload\n *\n * @param {string} id - id of the upload\n * @returns {Promise<*>}\n */\n async getUploadTextContentById(id: string): Promise {\n try {\n const res = await this.get('/api/uploads/text-content/' + id);\n return res.data;\n } catch (err) {\n err.error_code = 'error_loadUpload';\n throw err;\n }\n }\n\n /**\n * Get the text content of the specified chunk of the upload\n *\n * @param {string} id - id of the upload\n * @param {string} idChunk - id of the chunk\n * @returns {Promise<*>}\n */\n async getUploadChunkTextContentById(id: string, idChunk: string): Promise {\n try {\n const res = await this.get('/api/uploads/text-content/' + id + '/chunk/' + idChunk);\n return res.data;\n } catch (err) {\n err.error_code = 'error_loadUpload';\n throw err;\n }\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2FkbWluL3VzZXIvdXNlci5jb21wb25lbnQuc2NzcyJ9 */\"","import { Location } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { AdminTab } from 'app/shared/models/admin-tab.interface';\nimport { User } from 'app/shared/models/users.interface';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { TextService } from 'app/shared/services/utils/text.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-user',\n templateUrl: './user.component.html',\n styleUrls: ['./user.component.scss'],\n providers: [],\n})\nexport class UserComponent implements OnInit {\n user: User = null;\n userSession: any = null;\n engineer: any = null;\n selectedTab: AdminTab = null;\n tabs: AdminTab[] = [];\n\n isLoading = true;\n\n constructor(\n private location: Location,\n private route: ActivatedRoute,\n private router: Router,\n private sessionService: SessionService,\n private usersService: UsersService,\n private textService: TextService\n ) {}\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.initData(params);\n });\n }\n\n /**\n * Params from url\n * @param {Params} params - can contain the userId and the tab key\n */\n async initData(params: Params) {\n try {\n let selectedTabKey = 'profil';\n this.userSession = this.sessionService.getUser();\n if (params && params['userId']) {\n // 1. Get user from params\n const userFromParams = await this.usersService.getUserById(params['userId']);\n if (!userFromParams) {\n throw { errorCode: 'error_id_not_found' };\n }\n\n // 2. Check that the user session has the right to access the required user id\n // Load the session user info with his relations\n this.userSession = await this.usersService.getUserByIdWithRelationsAndContacts(\n this.userSession._id,\n null,\n 'users'\n );\n if (\n !this.isUserInSession(userFromParams._id) &&\n !this.userSession.relations.some(relation => relation._id.toString() === userFromParams._id) &&\n !this.usersService.isAdmin(this.userSession)\n ) {\n throw { errorCode: 'error_id_not_allowed' };\n }\n\n // 3. Params are correct, set the user\n this.user = userFromParams;\n\n selectedTabKey = params['tab'];\n } else if (!this.usersService.hasRightToCreate(this.userSession)) {\n // standard users can't access the creation page\n throw { errorCode: 'error_not_allowed' };\n }\n\n this.initTabs();\n this.selectTab(selectedTabKey);\n\n this.isLoading = false;\n } catch (err) {\n // err.errorCode can be set to error_getUserWithRelations, error_loadUser, error_id_not_found, error_id_not_allowed\n this.getSwalMsg(err.errorCode);\n this.router.navigateByUrl('/admin/utilisateurs');\n }\n }\n\n /**\n * Initialize the tabs with an array of AdminTabs.\n * Visibility and editing rights depend on the user's type and whether he belongs to the company or not.\n */\n initTabs() {\n const canEditProfileEngineerTab = this.canEditProfileTab();\n const canSeeAttributionSites = this.canSeeAttributionSites();\n const canEditAttributionSites = this.canEditAttributionSites();\n\n this.tabs = [\n { key: 'profil', name: 'profil', visible: true, canEdit: canEditProfileEngineerTab },\n {\n key: 'ingenieur',\n name: 'ingénieur',\n visible: this.usersService.isEM(this.user),\n canEdit: canEditProfileEngineerTab,\n },\n {\n key: 'attribution-des-sites',\n name: 'attribution des sites',\n visible: canSeeAttributionSites && canEditAttributionSites,\n canEdit: canEditAttributionSites,\n },\n ];\n }\n\n isCreating(): boolean {\n return !Boolean(this.user);\n }\n\n isUserInSession(userIdToCompare: string): boolean {\n return userIdToCompare === this.userSession._id.toString();\n }\n\n /**\n * Returns the right to edit the profile or engineer tab\n * @return {boolean}\n */\n canEditProfileTab(): boolean {\n // if it is a new user profile --> admin EM and superuser have access to it and can edit\n // if it's the profile of the user logged in -> can edit\n // if user = admin -> can edit\n // if user = energy manager -> can edit if he is one of his clients\n // if user = useradmin -> can edit if he is one of his standard users\n // if user = standard user -> can not edit\n\n return (\n this.isCreating() ||\n this.isUserInSession(this.user._id.toString()) ||\n this.usersService.isAdmin(this.userSession) ||\n (this.usersService.isEM(this.userSession) && this.usersService.isClient(this.user)) ||\n (this.usersService.isUserAdmin(this.userSession) && this.usersService.isUser(this.user))\n );\n }\n\n /**\n * Returns the right to edit the tab of sites attribution.\n * Returns false if it's during a creation.\n * Returns true if its an ADMIN or ENERGY_MANAGER\n * Returns true if it's a USER_ADMIN watching a standard user\n * @return {boolean}\n */\n canSeeAttributionSites(): boolean {\n return (\n !this.isCreating() &&\n (this.usersService.isFromCitron(this.userSession) ||\n (this.usersService.isUserAdmin(this.userSession) && this.usersService.isUser(this.user)))\n );\n }\n\n /**\n * Returns editing rights on the tab of sites attribution.\n * Specific rules are set for USER_ADMINS and EMs.\n * Standard users don't have access to that tab.\n * Admins can edit anytime.\n * @return {boolean}\n */\n canEditAttributionSites(): boolean {\n // if user = userAdmin -> can edit USERs\n // if user = energy manager -> can edit if he is one of his clients\n return (\n (this.usersService.isUserAdmin(this.userSession) && this.usersService.isUser(this.user)) ||\n (this.usersService.isEM(this.userSession) && this.usersService.isClient(this.user)) ||\n this.usersService.isAdmin(this.userSession)\n );\n }\n\n /**\n * Set the correct tab based on URL\n * @param {string} tabKey - name in the url after the user's id, match a key in the tabs list\n */\n selectTab(key: string) {\n this.selectedTab = this.tabs.find(t => t.key === key);\n\n // if the url is wrong, display profile + update url\n if ((!this.selectedTab || !this.selectedTab.visible) && this.user) {\n this.selectedTab = this.tabs[0];\n this.location.go('/admin/utilisateur/' + this.user._id + '/' + this.selectedTab.key);\n }\n }\n\n /**\n * Sweet alert based on the code sent\n * @param msg_code\n */\n getSwalMsg(msg_code) {\n const messages = {\n error_loadUser: ['Attention', \"L'utilisateur demandé est indisponible.\", 'warning'],\n error_getUserWithRelations: [\n 'Toutes nos exuses',\n \"Une erreur s'est produite lors du chargement du profil.\",\n 'error',\n ],\n error_not_allowed: [\n 'Toutes nos exuses',\n \"Vous n'avez pas les droits suffisants. Rapprochez-vous de votre Energy-Manager.\",\n 'warning',\n ],\n };\n\n // no default swal\n if (messages[msg_code]) {\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n }\n\n getUserName() {\n return !this.isLoading ? this.userDisplayName : '';\n }\n\n get userDisplayName() {\n if (this.user && this.user.firstname && this.user.name) {\n return this.textService.toTitleCase(this.user.firstname + ' ' + this.user.name);\n }\n return '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { UserComponent } from './user.component';\n\nconst COMPANY_ROUTE = [\n {\n path: '',\n component: UserComponent,\n canActivate: [AccessGuard],\n data: { page: 'admin' },\n },\n];\n\n@NgModule({\n declarations: [UserComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(COMPANY_ROUTE)],\n})\nexport class UserModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\n@Injectable()\nexport class AdminUserService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2FkbWluL3VzZXJzLWhvbWUvdXNlcnMtaG9tZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\nimport swal from 'sweetalert2';\n\n// Services\nimport { PaginationBackService } from 'app/shared/components/pagination/back/pagination-back.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport Swal from 'sweetalert2';\nimport { AdminCompanyService } from '../company/company.service';\n\n// Interfaces\nimport { PaginationUsers, QueryPaginationUser } from 'app/shared/models/pagination.interface';\nimport { UserPopulated } from 'app/shared/models/users.interface';\n\n@Component({\n selector: 'ga-admin-users',\n templateUrl: './users-home.component.html',\n styleUrls: ['./users-home.component.scss'],\n providers: [PaginationBackService],\n})\nexport class AdminUsersComponent implements OnInit {\n public listUsers: UserPopulated[] = [];\n public userSession: UserPopulated;\n public pagination: PaginationUsers = {\n navigation: {\n canDisplayAll: false,\n nbItemsPerPage: 10,\n },\n lastUser: {\n name: null,\n index: 0,\n },\n };\n private searchInput = '';\n public isLoading = false;\n\n constructor(\n private companyService: AdminCompanyService,\n private sessionService: SessionService,\n private usersService: UsersService,\n public paginationService: PaginationBackService\n ) {}\n\n ngOnInit() {\n this.userSession = Object.assign(this.sessionService.getUser(), {\n companies: [],\n contacts: [],\n position: '',\n process: null,\n relations: [],\n sitesRules: null,\n logoUrl: null,\n });\n }\n\n /**\n * Init the users list to display.\n * Init the pagination.\n */\n async setListAndPagination() {\n this.isLoading = true;\n\n try {\n const [, newNbUsers] = await Promise.all([this.setUsersList(), this.countNbUsersTotal()]);\n\n // update pagination with the new last user, and new current page, and number of pages\n this.paginationService.updateAfterSearch(newNbUsers);\n\n this.isLoading = false;\n } catch (err) {\n this.getSwalMsg(err.errorCode); // err.errorCode is set to error_getListUsers\n }\n }\n\n /**\n * Set the users list to display in the table.\n * @return {Promise}\n */\n async setUsersList(): Promise {\n const queryPagination: QueryPaginationUser = this.paginationService.getPaginationQueryUser(\n this.pagination.lastUser\n );\n this.listUsers = await this.usersService.getVisibleUsers(\n this.userSession._id,\n queryPagination,\n this.searchInput\n );\n\n /**\n * Populate the other fields we need:\n * - picture\n * - companies\n */\n const listWithImgAndCompanies = _.clone(this.listUsers); // need to clone so that the child component (user table) receives the change\n const results = await Promise.all([\n this.companyService.getPictures(this.listUsers, 'img'),\n this.getUsersCompanies(),\n ]);\n const picturesResult = results[0]; // Array<{_id: string, imgUrl: string}>\n const companiesResult = results[1]; // Array<{_id: string, companies: Array<{_id: string, name: string}>}>\n\n // 1. set pictures\n picturesResult.forEach(picResult => {\n const user = listWithImgAndCompanies.find(u => u._id.toString() === picResult['_id'].toString());\n user.logoUrl = picResult['imgUrl'];\n });\n\n // 2. set companies in user session + users list\n this.userSession.companies = companiesResult\n .find(result => result._id.toString() === this.userSession._id.toString())\n .companies.map(c => c.name);\n listWithImgAndCompanies.forEach(user => {\n const res = companiesResult.find(result => result._id.toString() === user._id.toString());\n user.companies = res.companies.map(c => c.name);\n });\n\n this.listUsers = listWithImgAndCompanies; // fire the event to the child component\n\n this.paginationService.updateLastUser(this.pagination.lastUser, this.listUsers);\n\n return this.listUsers;\n }\n\n /**\n * Returns an array with the companies (id + name) of each user\n * @return {Promise<{_id: string, companies: {_id: string, name:string}[]}[]>}\n */\n getUsersCompanies() {\n return this.usersService\n .getUsersCompanies(this.listUsers.concat(this.userSession).map(u => u._id))\n .catch(err => {\n this.getSwalMsg(err.errorCode);\n return Promise.resolve(err.data);\n });\n }\n\n /**\n * Init pagination object.\n * Load the entire list of users available to count users and compute the number of pages.\n * @return {Promise} the total number of users\n */\n async countNbUsersTotal() {\n const queryWithNoLimit: QueryPaginationUser = {\n lastUserName: null,\n lastUserIndex: 0,\n currentPageIndex: 0,\n selectedPageIndex: 0,\n nbItemsPerPage: 0, // when limit is 0 -> no limit applied\n };\n const allUsers = await this.usersService.getVisibleUsers(\n this.userSession._id,\n queryWithNoLimit,\n this.searchInput\n );\n return allUsers.length;\n }\n\n /**\n * Called when pagination is updated.\n * Load the updated sites.\n */\n async onPaginationChanged(event = { resetLastItem: false }) {\n if (event.resetLastItem) {\n this.paginationService.updateLastUser(this.pagination.lastUser, []);\n }\n await this.setListAndPagination();\n }\n\n /**\n * When a new input comes in from the search input.\n * Reload the list of users and pagination.\n * @param {string} input\n * @returns {void}\n */\n onSearchChanged(input: string): void {\n // If we're not still waiting for the previous input\n if (!this.isLoading) {\n this.searchInput = input;\n\n // reset pagination to first page\n this.paginationService.setFirstPageUser(this.pagination.lastUser);\n\n // get users to display with the new research value\n this.setListAndPagination();\n }\n }\n\n /**\n * Sweet alert when something went wrong.\n * @param {string} msg_code\n * @returns {void}\n */\n getSwalMsg(msg_code: string): void {\n const messages = {\n error_getListUsers: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des utlisateurs.',\n 'error',\n ],\n error_getListCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des entreprises.',\n 'error',\n ],\n };\n\n if (messages[msg_code]) {\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n } else {\n Swal.fire('Toutes nos excuses', 'Une erreur est survenue pendant le chargement de la page.', 'error');\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { AdminUsersComponent } from './users-home.component';\n\nconst ADMIN_ROUTE = [\n {\n path: '',\n component: AdminUsersComponent,\n },\n];\n\n@NgModule({\n declarations: [AdminUsersComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(ADMIN_ROUTE)],\n})\nexport class AdminUsersModule {}\n","export default \".modal-header .close {\\n padding: 0;\\n}\\n\\n.modal__container {\\n max-width: none;\\n}\\n\\n@media (min-width: 1200px) {\\n .modal__container {\\n width: 1200px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2FsZXJ0cy1tYW5hZ2VtZW50L2FsZXJ0cy1tYW5hZ2VtZW50LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9hbGVydHMtbWFuYWdlbWVudC9hbGVydHMtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFVBQUE7QUNDSjs7QURFQTtFQUNJLGVBQUE7QUNDSjs7QURFQTtFQUNJO0lBQ0ksYUFBQTtFQ0NOO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9hbGVydHMtbWFuYWdlbWVudC9hbGVydHMtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tb2RhbC1oZWFkZXIgLmNsb3NlIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4ubW9kYWxfX2NvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLm1vZGFsX19jb250YWluZXIge1xuICAgICAgICB3aWR0aDogMTIwMHB4O1xuICAgIH1cbn1cbiIsIi5tb2RhbC1oZWFkZXIgLmNsb3NlIHtcbiAgcGFkZGluZzogMDtcbn1cblxuLm1vZGFsX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLm1vZGFsX19jb250YWluZXIge1xuICAgIHdpZHRoOiAxMjAwcHg7XG4gIH1cbn0iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ScenarioFilter } from 'app/shared/components/alerts/management-filter/alerts-mgmt-filter.component';\nimport { Scenario, ScenarioDisplay } from 'app/shared/models/scenario.model';\nimport { AlertsService } from 'app/shared/services/alerts/alerts.service';\n\nimport { NotificationsService } from 'app/shared/services/notifications/notifications.service';\nimport * as _ from 'lodash';\nimport { ModalDirective } from 'ngx-bootstrap/modal';\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n\n@Component({\n selector: 'ga-alerts-mananagement',\n templateUrl: './alerts-management.component.html',\n styleUrls: ['./alerts-management.component.scss'],\n providers: [],\n})\nexport class AlertsManagementComponent implements OnInit {\n /**\n * List of all scenarios for the user and company\n */\n scenarios: ScenarioDisplay[] = [];\n\n /**\n * List of scenarios to display\n */\n scenariosDisplay: ScenarioDisplay[] = [];\n\n /**\n * Scenarios filters from filter component\n */\n scenarioFilter: ScenarioFilter = {\n scenario: null,\n status: null,\n };\n\n /**\n * Scenario object for modal\n */\n scenarioEdit: ScenarioDisplay;\n\n /**\n * Is scenario list loading\n */\n isLoading = false;\n\n /**\n * Does the scenario edition modal need to be in readonly\n */\n isScenarioReadOnly = false;\n\n /**\n * Creation/Edit modal\n */\n @ViewChild('modalEl', { static: true }) modal: ModalDirective;\n\n constructor(private alertsService: AlertsService, private notificationsService: NotificationsService) {}\n\n ngOnInit() {\n this.init();\n }\n\n private async init() {\n try {\n this.isLoading = true;\n const scenarios = await this.alertsService.getScenarios();\n this.scenarios = scenarios;\n this.filterList();\n } catch (err) {\n this.handleErrorMessage(err.errorCode);\n }\n this.isLoading = false;\n }\n\n /**\n * Filter list by filter event\n * @param {ScenarioFilter} filter\n */\n filterChange(filter: ScenarioFilter) {\n if (filter) {\n this.scenarioFilter = filter;\n this.filterList();\n }\n }\n\n /**\n * Filter scenario display list\n */\n private filterList() {\n this.scenariosDisplay = this.scenarios.filter(scenario => {\n if (this.scenarioFilter.scenario !== null) {\n return Boolean(this.scenarioFilter.scenario._id === scenario._id);\n }\n\n if (this.scenarioFilter.status !== null) {\n return Boolean(this.scenarioFilter.status === !scenario.flagMute);\n }\n\n return true;\n });\n }\n\n /** Error message management */\n /**\n * Open a swal with the error explained\n * @param {string} errorCode - error code\n */\n handleErrorMessage(errorCode: string) {\n let msg: [string, string, SweetAlertIcon];\n const mapping: { [key: string]: [string, string, SweetAlertIcon] } = {\n test: ['test', 'test', 'error'],\n };\n msg = mapping[errorCode];\n if (!msg) {\n msg = ['Une erreur est survenue', 'Merci de réessayer ultérieurement', 'error'];\n }\n Swal.fire(msg[0], msg[1], msg[2]);\n }\n\n /** Modal actions management */\n\n openCreate() {\n this.scenarioEdit = null;\n this.isScenarioReadOnly = false;\n this.modal.show();\n }\n\n openView(scenario: ScenarioDisplay) {\n this.scenarioEdit = _.cloneDeep(scenario);\n this.isScenarioReadOnly = true;\n this.modal.show();\n }\n\n openEdit(scenario: ScenarioDisplay) {\n this.scenarioEdit = _.cloneDeep(scenario);\n this.isScenarioReadOnly = false;\n this.modal.show();\n }\n\n onEditionDone(isSaved: boolean) {\n if (isSaved) {\n this.init();\n }\n this.modal.hide();\n }\n\n /**\n * Archive a list of scenarios\n * @param {string[]} scenarioIds - ids of the scenarios to archive\n */\n async archive(scenarioIds: string[]) {\n try {\n /**\n * Ask for confirmation\n */\n const result = await Swal.fire({\n title: 'Êtes-vous sûr ?',\n text: `Vous êtes sur le point de supprimer ${scenarioIds.length} alerte(s), et toutes les notifications associées.`,\n icon: 'warning',\n showCancelButton: true,\n cancelButtonText: 'Annuler',\n confirmButtonText: 'Supprimer',\n showLoaderOnConfirm: true,\n preConfirm: async () => {\n await Promise.all(\n scenarioIds.map(id => {\n return this.alertsService.archiveScenario(id);\n })\n );\n },\n allowOutsideClick: () => !Swal.isLoading(),\n });\n if (!result.value) {\n return;\n }\n this.notificationsService.refresh();\n this.init();\n } catch (e) {\n this.handleErrorMessage(e.errorCode);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AlertsManagementComponent } from './alerts-management.component';\n\nconst ALERTS_MANAGEMENT_ROUTE = [\n {\n path: '',\n component: AlertsManagementComponent,\n canActivate: [],\n data: {},\n },\n];\n\n@NgModule({\n declarations: [AlertsManagementComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(ALERTS_MANAGEMENT_ROUTE)],\n})\nexport class AlertsManagementModule {}\n","export default \".row-tiles {\\n margin-bottom: 30px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2FuYWx5c2UvY29tcGFyZS9jb21wYXJlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9hbmFseXNlL2NvbXBhcmUvY29tcGFyZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG1CQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9hbmFseXNlL2NvbXBhcmUvY29tcGFyZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5yb3ctdGlsZXMge1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG4iLCIucm93LXRpbGVzIHtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbn0iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport * as clone from 'clone';\nimport * as moment from 'moment';\n\n// services\nimport { BillsService } from 'app/shared/services/bills/bills.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { DjuService } from 'app/shared/services/dju/dju.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { HomeService } from '../../home/home.service';\nimport { CompareService } from './compare.service';\n\n// interfaces\nimport { QueryFilterRoutingRef } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { Dju } from 'app/shared/models/dju.interface';\nimport { Marker } from 'app/shared/models/marker.interface';\nimport { CompareBarChartData, CompareBarChartProperties, MonthData, YearData } from './compare.interface';\n\n// components\nimport { ChartBarToggleComponent } from 'app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component';\n\n@Component({\n selector: 'ga-compare',\n templateUrl: './compare.component.html',\n styleUrls: ['./compare.component.scss'],\n providers: [HomeService, CompareService],\n})\nexport class CompareComponent implements OnInit {\n // Map options\n mapOptions = {\n zoom: 8,\n lat: 49.894067,\n lng: 2.2957529999999906,\n height: 250,\n };\n\n markers: Marker[] = [];\n\n isLoading = false;\n filters: QueryFilterRoutingRef = null;\n\n // Filters\n markersFilter: QueryFilterRoutingRef = null;\n tilesFilter: QueryFilterRoutingRef = null;\n monthChartFilter: QueryFilterRoutingRef = null;\n yearChartFilter: QueryFilterRoutingRef = null;\n yearOverYearFilter: QueryFilterRoutingRef = null;\n\n totalConso = 0;\n totalCosts: {\n totalHTVA: number;\n totalTTC: number;\n } = {\n totalHTVA: 0,\n totalTTC: 0,\n };\n\n // bar chart year\n barProperties: CompareBarChartProperties = {\n isLoading: false,\n datasets: [],\n labels: [],\n colors: [],\n width: 1900,\n minHeight: 340,\n maxHeight: 340,\n options: [],\n legend: [],\n toggleTitles: [],\n downloadFileNames: ['', 'Coût mensuel HTVA sur la période (€)', 'Coût mensuel TTC sur la période (€)'],\n units: { bar: [] },\n };\n\n // bar chart year\n barYearProperties: CompareBarChartProperties = {\n isDjuActivated: true,\n isLoading: false,\n datasets: [],\n labels: [],\n colors: [],\n width: 810,\n minHeight: 340,\n maxHeight: 340,\n options: [],\n legend: [],\n toggleTitles: [],\n downloadFileNames: ['', 'Coût mensuel HTVA sur la période (€)', 'Coût mensuel TTC sur la période (€)'],\n units: { bar: [], line: [] },\n };\n\n barYearOverYearProperties: CompareBarChartProperties = {\n isDjuActivated: true,\n isLoading: false,\n datasets: [],\n labels: [],\n colors: [],\n width: 810,\n minHeight: 340,\n maxHeight: 340,\n options: [],\n legend: [],\n toggleTitles: [],\n downloadFileNames: ['', 'Coût mensuel HTVA sur la période (€)', 'Coût mensuel TTC sur la période (€)'],\n units: { bar: [], line: [] },\n };\n\n yearDatas: YearData[] = null;\n monthDatas: MonthData[] = null;\n yearDjus: Dju[] = null;\n monthDjus: Dju[] = null;\n yearOverYearDjus: Dju[] = null;\n\n @ViewChild('yearChart', { static: false }) yearChart: ChartBarToggleComponent;\n @ViewChild('yearOverYearChart', { static: false }) yearOverYearChart: ChartBarToggleComponent;\n\n constructor(\n private chartService: ChartService,\n private homeService: HomeService,\n private compareService: CompareService,\n private tilesService: TilesService,\n private djuService: DjuService,\n private billService: BillsService,\n private filterService: FilterService\n ) {}\n\n ngOnInit() {}\n\n public initDatas() {\n // Datas\n this.yearDatas = null;\n this.monthDatas = null;\n\n // Graph month\n this.barProperties.datasets = [[], [], []];\n this.barProperties.units = { bar: ['Kwhep', '€', '€'] };\n\n this.initYearGraph();\n this.initYearOverYearGraph();\n }\n\n public initYearGraph() {\n // Graph Year\n this.barYearProperties.datasets = [[], [], []];\n this.barYearProperties.units = { bar: ['Kwhep', '€', '€'], line: ['DJU', 'DJU', 'DJU'] };\n }\n\n public initYearOverYearGraph() {\n // Graph Year over Year\n this.barYearOverYearProperties.datasets = [[], [], []];\n this.barYearOverYearProperties.units = { bar: ['Kwhep', '€', '€'], line: ['DJU', 'DJU', 'DJU'] };\n }\n\n public handleMarkers(filters: QueryFilterRoutingRef) {\n this.compareService\n .handleMarkers(this.markersFilter)\n .then(markers => {\n if (this.filters === filters) {\n this.markers = markers;\n }\n })\n .catch(error => {\n this.markers = [];\n });\n }\n\n public isLoadingData(property): boolean {\n return Boolean(this[property].isLoading);\n }\n\n public hasData(property): boolean {\n return Boolean(this[property].datasets && this[property].datasets.length && this[property].datasets[0].length);\n }\n\n /**\n * Start the research with new criterias\n * @param {QueryFilter} filters from the filter component\n */\n public search(filters: QueryFilterRoutingRef) {\n this.barYearProperties.isLoading = true;\n this.barProperties.isLoading = true;\n this.barYearOverYearProperties.isLoading = true;\n this.filters = filters;\n\n this.initDatas();\n this.initFilters(filters).then(\n () => {\n // If the last request is the current request\n if (this.filters === filters) {\n // Get markers for the map\n this.handleMarkers(filters);\n\n return this.grabData().then(() => {\n // If the last request is the current one\n if (this.filters === filters) {\n // Grab datas & generate graphs\n this.handleTiles();\n this.handleBarChart();\n this.handleYearBarChart(this.barYearProperties.isDjuActivated);\n this.handleYearOverYearBarChart(this.barYearOverYearProperties.isDjuActivated);\n }\n });\n }\n },\n err => {\n this.barYearProperties.isLoading = false;\n this.barProperties.isLoading = false;\n this.barYearOverYearProperties.isLoading = false;\n }\n );\n }\n\n initFilters(filters: QueryFilterRoutingRef) {\n // init all filters\n this.markersFilter = Object.assign({}, filters);\n this.tilesFilter = Object.assign({}, filters);\n this.monthChartFilter = Object.assign({}, filters);\n this.yearChartFilter = Object.assign({}, filters);\n this.yearOverYearFilter = Object.assign({}, filters);\n\n // Get limits for each filters\n\n return Promise.all([\n this.compareService\n .getThreeYearsFiltersLimitDates(this.markersFilter)\n .then(dateLimits => {\n this.markersFilter.dateStart = dateLimits.dateStart;\n this.markersFilter.dateEnd = dateLimits.dateEnd;\n })\n .catch(error => {\n this.markersFilter.dateStart = null;\n this.markersFilter.dateEnd = null;\n }),\n this.compareService\n .getThreeYearsFiltersLimitDates(this.monthChartFilter)\n .then(dateLimits => {\n this.monthChartFilter.dateStart = dateLimits.dateStart;\n this.monthChartFilter.dateEnd = dateLimits.dateEnd;\n })\n .catch(error => {\n this.monthChartFilter.dateStart = null;\n this.monthChartFilter.dateEnd = null;\n }),\n this.compareService\n .getAvailableYearsFiltersLimitDates()\n .then(dateLimits => {\n this.yearChartFilter.dateStart = dateLimits.dateStart;\n this.yearChartFilter.dateEnd = dateLimits.dateEnd;\n })\n .catch(error => {\n this.yearChartFilter.dateStart = null;\n this.yearChartFilter.dateEnd = null;\n }),\n this.compareService\n .getTwentyFourMonthFiltersLimitDates(this.yearOverYearFilter)\n .then(dateLimits => {\n this.yearOverYearFilter.dateStart = dateLimits.dateStart;\n this.yearOverYearFilter.dateEnd = dateLimits.dateEnd;\n })\n .catch(error => {\n this.yearOverYearFilter.dateStart = null;\n this.yearOverYearFilter.dateEnd = null;\n }),\n ]);\n }\n\n grabData() {\n return Promise.all([\n this.homeService\n .getYearlyGlobalEnergyRepartition(this.yearChartFilter)\n .then(response => {\n this.yearDatas = response.data;\n })\n .catch(error => {\n this.yearDatas = [];\n }),\n this.homeService\n .getMonthlyGlobalEnergyRepartition(this.monthChartFilter)\n .then(response => {\n this.monthDatas = response.data;\n })\n .catch(error => {\n this.monthDatas = [];\n }),\n this.djuService\n .getDJUs(this.yearChartFilter)\n .then(response => {\n this.monthDjus = response;\n this.yearDjus = this.djuService.getYearDju(this.monthDjus);\n this.yearOverYearDjus = this.monthDjus;\n })\n .catch(error => {\n this.monthDjus = [];\n }),\n ]);\n }\n\n /**\n * Filter month data array with data between filter date start and date end\n * @param {MonthData[]} data\n * @param {QueryFilter} filters\n * @returns {MonthData[]} data filtered\n */\n filterMonthData(data: MonthData[], filters: QueryFilterRoutingRef): MonthData[] {\n return data.filter(item => {\n const currentDate = moment.utc();\n currentDate.month(item.month);\n currentDate.year(item.year);\n currentDate.startOf('month');\n\n const filterDateStart = moment.utc(filters.dateStart);\n const filterDateEnd = moment.utc(filters.dateEnd);\n return currentDate.isSameOrBefore(filterDateEnd) && currentDate.isSameOrAfter(filterDateStart);\n });\n }\n\n /**\n * Filter year data array with data between filter date start and date end\n * @param {YearData[]} data\n * @param {QueryFilter} filters\n * @returns {YearData[]} data filtered\n */\n filterYearData(data: YearData[], filters: QueryFilterRoutingRef): YearData[] {\n return data.filter(item => {\n const currentDate = moment.utc();\n currentDate.year(item.year);\n currentDate.startOf('year');\n\n const filterDateStart = moment.utc(filters.dateStart);\n const filterDateEnd = moment.utc(filters.dateEnd);\n return currentDate.isSameOrBefore(filterDateEnd) && currentDate.isSameOrAfter(filterDateStart);\n });\n }\n\n /**\n * Create the bar chart with year over year with data loading.\n * @param {boolean} isDjuActivated - true to activate the display of DJU, false otherwise\n */\n handleYearOverYearBarChart(isDjuActivated: boolean) {\n const data = this.filterMonthData(this.monthDatas, this.yearOverYearFilter);\n const yearOverYearFormatedConsumption = this.compareService.formatOneYearOverYearData(\n data,\n this.yearOverYearFilter,\n this.yearOverYearDjus\n );\n this.populateBarDataset(this.barYearOverYearProperties, yearOverYearFormatedConsumption, true);\n\n // Reload config for legend and labels\n this.getYearOverYearBarChartConfig(true);\n\n // Handle chart display\n this.onBarYearOverYearDjuChange(isDjuActivated);\n\n // End of the barChart loading\n this.barYearOverYearProperties.isLoading = false;\n }\n\n /**\n * Handle year over year chart bar dju change\n * @param {boolean} isDjuActivated - true to enable DJU, false otherwise\n */\n onBarYearOverYearDjuChange(isDjuActivated: boolean) {\n isDjuActivated = Boolean(isDjuActivated && this.monthDjus && this.monthDjus.length);\n this.barYearOverYearProperties.isDjuActivated = isDjuActivated;\n\n const djuLabel = 'djus';\n const kwhDjuButton = 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )';\n const energies = this.yearOverYearFilter.energies ? this.yearOverYearFilter.energies.split(',') : [];\n const legend = this.getChartLegends(energies);\n const legends = [legend, legend, legend];\n if (isDjuActivated) {\n legends.push(legend);\n }\n\n this.djuService.toggleDjuInDatasetAndChart(\n isDjuActivated,\n this.barYearOverYearProperties,\n djuLabel,\n legends,\n kwhDjuButton,\n this.yearOverYearChart\n );\n }\n\n /**\n * Handle year chart bar dju change\n * @param {boolean} isDjuActivated - true to enable DJU, false otherwise\n */\n onBarYearDjuChange(isDjuActivated: boolean) {\n isDjuActivated = Boolean(isDjuActivated && this.yearDjus && this.yearDjus.length);\n this.barYearProperties.isDjuActivated = isDjuActivated;\n\n const djuLabel = 'djus';\n const kwhDjuButton = 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )';\n const energies = this.yearChartFilter.energies ? this.yearChartFilter.energies.split(',') : [];\n const legend = this.getChartLegends(energies);\n const legends = [legend, legend, legend];\n if (isDjuActivated) {\n legends.push(legend);\n }\n\n this.djuService.toggleDjuInDatasetAndChart(\n isDjuActivated,\n this.barYearProperties,\n djuLabel,\n legends,\n kwhDjuButton,\n this.yearChart\n );\n }\n\n /**\n * Create the bar chart with year with data loading.\n * @param filters from the filter component for the search query.\n */\n handleYearBarChart(isDjuActivated: boolean) {\n const data = this.filterYearData(this.yearDatas, this.yearChartFilter);\n\n const yearlyFormatedConsumption = this.compareService.formatYearBarChartData(\n data,\n this.yearChartFilter,\n this.yearDjus\n );\n\n this.populateBarDataset(this.barYearProperties, yearlyFormatedConsumption, true);\n // Reload config for legend and labels\n this.getYearlyBarChartConfig(true);\n\n // Handle chart display\n this.onBarYearDjuChange(isDjuActivated);\n\n // End of the barChart loading\n this.barYearProperties.isLoading = false;\n }\n\n /**\n * Create the bar chart with data loading.\n * @param filters from the filter component for the search query.\n */\n handleBarChart() {\n const data = this.filterMonthData(this.monthDatas, this.monthChartFilter);\n const years = this.compareService.getYearsInMonthData(data); // chronological order [2016, 2017, 2018]\n\n // Response goes from dateEnd to dateStart, cut it into years array [ [2016], [2017], [2018] ]\n const yearlyFormatedConsumption = this.compareService.formateResponseInYearsArray(data);\n\n // For each year, format to monthly consumption. Stack = 0 on dateStart data, stack = n on dateEnd data\n yearlyFormatedConsumption.forEach((year, index) => {\n const monthlyFormatedConsumption = this.compareService.formatOneYearData(\n year,\n index,\n this.monthChartFilter\n );\n this.populateBarDataset(this.barProperties, monthlyFormatedConsumption);\n });\n\n // Reload config for legend and labels\n this.getMonthlyBarChartConfig(years);\n\n // End of the barChart loading\n this.barProperties.isLoading = false;\n }\n\n /**\n * Create the tiles.\n * @param filters from the filter component for the search query.\n */\n handleTiles() {\n const data = this.filterYearData(this.yearDatas, this.tilesFilter);\n this.totalConso = this.compareService.getTotalConso(data, this.tilesFilter);\n this.totalCosts = this.compareService.getTotalCost(data);\n }\n\n /**\n * Populate the barProperties data property\n * @param {CompareBarChartProperties} properties\n * @param {CompareBarChartData} dataOfOneYear all the datas concerned by one year.\n * @param {boolean} isDjuActivated\n */\n populateBarDataset(\n properties: CompareBarChartProperties,\n dataOfOneYear: CompareBarChartData,\n isDjuActivated?: boolean\n ) {\n // push the data object of each fluid\n for (let indexEnergy = 0; indexEnergy < dataOfOneYear.data.chart[0].length; indexEnergy++) {\n properties.datasets[0].push(dataOfOneYear.data.chart[0][indexEnergy]); // Consommation kWhep\n properties.datasets[1].push(dataOfOneYear.data.chart[1][indexEnergy]); // HTVA\n properties.datasets[2].push(dataOfOneYear.data.chart[2][indexEnergy]); // TTC\n }\n\n if (dataOfOneYear.labels && dataOfOneYear.labels.length) {\n properties.labels = dataOfOneYear.labels;\n }\n\n if (isDjuActivated) {\n // Dju data are always first in datasets\n const dataDjuPonderation = this.billService.getDjuPonderationByEnergy(properties.datasets[0]);\n properties.datasets.splice(1, 0, dataDjuPonderation);\n }\n }\n\n /**\n * Get and set config for the monthly comparison chart\n * @param {number[]} years - years to display\n */\n getMonthlyBarChartConfig(years: number[]) {\n const energies = this.monthChartFilter.energies ? this.monthChartFilter.energies.split(',') : [];\n const legend = this.getChartLegends(energies);\n\n // because of the toggle, we need to put three time the same legend and colors here\n this.barProperties.legend = [legend, legend, legend];\n this.barProperties.colors = this.chartService.getStackColors(this.barProperties);\n\n // Set unit for each tab of toggles\n this.barProperties.units.bar[0] = this.getCurrentUnit();\n this.barProperties.toggleTitles = [\n { name: 'CONSOMMATION (' + this.getCurrentUnit() + ')', display: true },\n { name: 'HTVA (€)', display: true },\n { name: 'TTC (€)', display: true },\n ];\n this.chartService.populateBarLineDatasetsWithUnits(this.barProperties.datasets, this.barProperties.units);\n\n this.barProperties.labels = this.compareService.getGraphAbscisseLabels(\n this.monthChartFilter.dateStart,\n this.monthChartFilter.dateEnd\n );\n\n const options = this.chartService.getConfig('groupable-stacked-bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('monthly', null, years, this.barProperties.datasets),\n });\n this.barProperties.options = [options, options, options];\n }\n\n /**\n * Get and set yearly bar chart config\n * @param {boolean} isDjuActivated - true if DJU activated, false otherwise\n */\n getYearlyBarChartConfig(isDjuActivated: boolean) {\n const energies = this.yearChartFilter.energies ? this.yearChartFilter.energies.split(',') : [];\n const legend = this.getChartLegends(energies);\n const years = this.compareService.getGraphYears(this.yearChartFilter.dateStart, this.yearChartFilter.dateEnd);\n\n // because of the toggle, we need to put three time the same legend and colors here\n this.barYearProperties.legend = [legend, legend, legend];\n this.barYearProperties.colors = this.chartService.getStackColors(this.barYearProperties);\n\n // Set unit for each tab of toggles\n this.barYearProperties.units.bar[0] = this.getCurrentUnit();\n this.barYearProperties.toggleTitles = [\n { name: 'CONSOMMATION (' + this.getCurrentUnit() + ')', display: true },\n { name: 'HTVA (€)', display: true },\n { name: 'TTC (€)', display: true },\n ];\n\n this.barYearProperties.labels = this.compareService.getGraphYears(\n this.yearChartFilter.dateStart,\n this.yearChartFilter.dateEnd\n );\n\n // const options = this.chartService.getConfig('groupable-stacked-bar',\n const options = this.chartService.getConfig(\n isDjuActivated ? 'mixed-groupable-stacked-bar' : 'groupable-stacked-bar',\n { tooltips: this.chartService.getTooltipHTMLConfig('yearly', null, years, this.barYearProperties.datasets) }\n );\n this.barYearProperties.options = [options, options, options];\n\n if (isDjuActivated && (this.getCurrentUnit() === 'kWhep' || this.getCurrentUnit() === 'kWh')) {\n this.barYearProperties.legend.splice(1, 0, this.getChartLegends(energies));\n // this.barYearProperties.colors.splice(1, 0, colors.slice(1));\n this.barYearProperties.units.bar.splice(1, 0, this.getCurrentUnit() + '/DJU');\n this.barYearProperties.units.line.splice(1, 0, 'DJU');\n this.barYearProperties.options.splice(\n 1,\n 0,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig(\n 'ng-chart-bar-line',\n this.getCurrentUnit() + '/DJU'\n ),\n })\n );\n this.barYearProperties.toggleTitles.splice(1, 0, {\n name: 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )',\n display: true,\n });\n this.barYearProperties.downloadFileNames.splice(\n 1,\n 0,\n 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )'\n );\n }\n\n this.chartService.populateBarLineDatasetsWithUnits(\n this.barYearProperties.datasets,\n this.barYearProperties.units\n );\n }\n\n /**\n * Get and set year over year bar chart config\n * @param {boolean} isDjuActivated - true if DJU activated, false otherwise\n */\n getYearOverYearBarChartConfig(isDjuActivated: boolean) {\n // Get exactly one year before dateEnd\n\n const energies = this.yearOverYearFilter.energies ? this.yearOverYearFilter.energies.split(',') : [];\n const legend = this.getChartLegends(energies);\n const years = this.compareService.getGraphYears(\n this.yearOverYearFilter.dateStart,\n this.yearOverYearFilter.dateEnd\n );\n\n // because of the toggle, we need to put three time the same legend and colors here\n this.barYearOverYearProperties.legend = [legend, legend, legend];\n this.barYearOverYearProperties.colors = this.chartService.getStackColors(this.barYearOverYearProperties);\n\n // Set unit for each tab of toggles\n this.barYearOverYearProperties.units.bar[0] = this.getCurrentUnit();\n this.barYearOverYearProperties.toggleTitles = [\n { name: 'CONSOMMATION (' + this.getCurrentUnit() + ')', display: true },\n { name: 'HTVA (€)', display: true },\n { name: 'TTC (€)', display: true },\n ];\n\n const options = this.chartService.getConfig(\n isDjuActivated ? 'mixed-groupable-stacked-bar' : 'groupable-stacked-bar',\n {\n tooltips: this.chartService.getTooltipHTMLConfig(\n 'yearOverYear',\n null,\n years,\n this.barYearOverYearProperties.datasets\n ),\n }\n );\n this.barYearOverYearProperties.options = [options, options, options];\n\n if (isDjuActivated && (this.getCurrentUnit() === 'kWhep' || this.getCurrentUnit() === 'kWh')) {\n this.barYearOverYearProperties.legend.splice(1, 0, this.getChartLegends(energies));\n // this.barYearOverYearProperties.colors.splice(1, 0, colors.slice(1));\n this.barYearOverYearProperties.units.bar.splice(1, 0, this.getCurrentUnit() + '/DJU');\n this.barYearOverYearProperties.units.line.splice(1, 0, 'DJU');\n this.barYearOverYearProperties.options.splice(\n 1,\n 0,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig(\n 'ng-chart-bar-line',\n this.getCurrentUnit() + '/DJU'\n ),\n })\n );\n this.barYearOverYearProperties.toggleTitles.splice(1, 0, {\n name: 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )',\n display: true,\n });\n this.barYearOverYearProperties.downloadFileNames.splice(\n 1,\n 0,\n 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )'\n );\n }\n\n this.chartService.populateBarLineDatasetsWithUnits(\n this.barYearOverYearProperties.datasets,\n this.barYearOverYearProperties.units\n );\n }\n\n public getCurrentUnit(): string {\n return this.filters && this.filters.energies && this.filters.energies.split(',').length > 1 ? 'kWhep' : 'kWh';\n }\n\n getTotalConso() {\n return this.totalConso;\n }\n\n /**\n * Get total cost HTML display inline\n */\n getTotalCost(): string {\n const totalHT = this.tilesService.getNumberToDisplay(this.totalCosts.totalHTVA, '€');\n const totalTTC = this.tilesService.getNumberToDisplay(this.totalCosts.totalTTC, '€');\n return `${totalHT} € HTVA - ${totalTTC} € TTC`;\n }\n\n getChartLegends(labels: string[]) {\n if (!labels) {\n return [];\n }\n\n return labels.map(label => this.chartService.getLegend(label));\n }\n\n getExportExcelUrl(type: string) {\n if (\n type &&\n this.monthChartFilter &&\n this.monthChartFilter.energies &&\n this.yearOverYearFilter &&\n this.yearChartFilter\n ) {\n const filters = clone(this.monthChartFilter);\n\n switch (type) {\n case 'month':\n filters.dateStart = this.monthChartFilter.dateStart;\n filters.dateEnd = this.monthChartFilter.dateEnd;\n break;\n case 'yearonyear':\n filters.dateStart = this.yearOverYearFilter.dateStart;\n filters.dateEnd = this.yearOverYearFilter.dateEnd;\n filters.dju = this.barYearOverYearProperties.isDjuActivated;\n break;\n case 'year':\n filters.dateStart = this.yearChartFilter.dateStart;\n filters.dateEnd = this.yearChartFilter.dateEnd;\n filters.dju = this.barYearProperties.isDjuActivated;\n break;\n default:\n return null;\n }\n\n const query = this.filterService.formatQueryToUrl(filters);\n const url = `/api/export/excel/compare-years/${type}${query}`;\n\n return url;\n }\n return null;\n }\n\n getExportName(txt: string) {\n const date = moment()\n .format('YYYYMMDD')\n .toString();\n return `${txt}-${date}.xlsx`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { CompareComponent } from './compare.component';\n\nconst COMPARE_ROUTE = [\n {\n path: '',\n component: CompareComponent,\n canActivate: [AccessGuard],\n data: { page: 'analyse' },\n },\n];\n\n@NgModule({\n declarations: [CompareComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(COMPARE_ROUTE)],\n})\nexport class CompareModule {}\n","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\n\n// services\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { EnergyService } from '../../../shared/services/energy/energy.service';\nimport { FilterService } from '../../../shared/services/filter/filter.service';\nimport { MapService } from '../../../shared/services/map/map.service';\nimport { PageService } from '../../../shared/services/page/page.service';\nimport { SitesService } from '../../../shared/services/sites/sites.service';\n\n// interfaces\nimport { QueryFilterRoutingRef } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { Dju } from 'app/shared/models/dju.interface';\nimport { Marker } from 'app/shared/models/marker.interface';\nimport {\n CompareBarChartData,\n CompareBarChartSerie,\n MonthData,\n MonthDataItem,\n MonthLabel,\n YearData,\n} from './compare.interface';\n\ninterface DataSumByEnergy {\n indexYearOverYear: number;\n items: MonthDataItem[];\n}\n\n@Injectable()\nexport class CompareService extends PageService {\n constructor(\n public apiService: ApiService,\n public energyService: EnergyService,\n public sitesService: SitesService,\n private filterService: FilterService,\n private mapService: MapService\n ) {\n super(apiService);\n }\n\n /**\n * Get sites' markers for the sites matching filters\n * @returns {Marker[]} markers\n */\n public async handleMarkers(filters: QueryFilterRoutingRef): Promise {\n const sites = await this.getSitesFromFilters(filters);\n return sites.map(site => {\n const marker: Marker = {\n lat: site.latitude,\n lng: site.longitude,\n config: 'site',\n data: this.mapService.getSiteDataForMarkersAddress(site),\n };\n return marker;\n });\n }\n\n /**\n * Get sites from filters\n * @param {QueryFilterRoutingRef} filters\n * @returns {Promise<*[]>} list of sites\n */\n private async getSitesFromFilters(filters: QueryFilterRoutingRef): Promise {\n const filteredSites = await this.sitesService.getSites(filters);\n return filteredSites.data;\n }\n\n /**\n * Process data to get the total of consumption\n * @param {YearData[]} data from the response : { year: 2018, items: [ { consumption : { quantity : 222 }}]}\n * @returns {number} Float total consumption\n */\n getTotalConso(data: YearData[], filters: QueryFilterRoutingRef): number {\n return data.reduce((memo, currentItem) => {\n currentItem.items.forEach(energy => {\n if (energy.consumption || energy.consumption.quantity) {\n if (this.isPrimaryEnergy(filters.energies)) {\n memo += this.energyService.convertEnergyKwhToKwhep(\n energy.energyType,\n energy.consumption.quantity\n );\n } else {\n memo += energy.consumption.quantity;\n }\n }\n });\n\n return memo;\n }, 0);\n }\n\n /**\n * Process data to get the total cost\n * @param {YearData[]} data from the response : { year: 2018, items: [ { consumption : { quantity : 222 }}]}\n * @returns {{ totalTTC: number, totalHTVA: number }\n */\n getTotalCost(responseData: YearData[]): { totalHTVA: number; totalTTC: number } {\n return responseData.reduce(\n (memo, currentItem) => {\n currentItem.items.forEach(energy => {\n if (energy.totalHT && energy.totalHT.amount) {\n memo.totalHTVA += energy.totalHT.amount;\n }\n if (energy.totalTTC && energy.totalTTC.amount) {\n memo.totalTTC += energy.totalTTC.amount;\n }\n });\n\n return memo;\n },\n {\n totalHTVA: 0,\n totalTTC: 0,\n }\n );\n }\n\n /**\n * Process data to return an array of all years found in the input data.\n * @param {MonthData[]} data from the API response : [ { year: 2018 , month: 0, items: [], ...}, { year: 2018 , month: 1, ...}]\n * @returns {number[]} Array of all years found in the response, in chronological order: [ 2016, 2017, 2018 ]\n */\n getYearsInMonthData(data: MonthData[]): number[] {\n return data.reduce((memo, currentItem) => {\n // If the year of the item already exists, push in the same array\n\n if (!memo.includes(currentItem.year)) {\n memo.unshift(currentItem.year);\n }\n\n return memo;\n }, []);\n }\n\n /**\n * Process data to create array of array\n * @param response from the response : [ { year: 2016 , month: 01, ...}, { year: 2016 , month: 02, ...}]\n * @returns {MonthData[][]} Array of month grouped by year and sorted by month\n */\n formateResponseInYearsArray(response: MonthData[]): MonthData[][] {\n return response.reduce((memo: any[], currentItem) => {\n // If the year of the item already exists, push in the same array\n\n const year = memo.find(yearArray => {\n return yearArray.find(item => {\n return currentItem.year === item.year;\n });\n });\n\n if (year && year.length) {\n year.push(currentItem);\n } else {\n memo.unshift([currentItem]);\n }\n\n return memo;\n }, []);\n }\n\n /**\n * Process data to create all months of consumption, grouped by year.\n * @param {YearData[]} data : data grouped by year\n * @param {QueryFilterRoutingRef} filters - filter used to aggregate the data (includes other fields not used here)\n * @param {Dju}[] - dju data per year & month\n * @returns {CompareBarChartData}\n */\n formatYearBarChartData(data: YearData[], filters: QueryFilterRoutingRef, yearDjus: Dju[]): CompareBarChartData {\n const response: CompareBarChartData = {\n data: {\n chart: [],\n },\n labels: [],\n };\n\n const dataPerEnergy = {\n ttc: {},\n ht: {},\n kWhep: {},\n };\n\n const indexYears = this.getGraphYearsIndex(filters.dateStart, filters.dateEnd);\n const labels = this.getGraphYears(filters.dateStart, filters.dateEnd);\n const nbYears = labels.length;\n\n data.forEach(databyYear => {\n // databyYear.year = parseInt(databyYear.year.toString(), 10);\n databyYear.items.forEach(energy => {\n for (const priceTypeOrConso in dataPerEnergy) {\n if (dataPerEnergy.hasOwnProperty(priceTypeOrConso)) {\n // Init all months values to O if the energy is not set.\n if (typeof dataPerEnergy[priceTypeOrConso][energy.energyType] === 'undefined') {\n dataPerEnergy[priceTypeOrConso][energy.energyType] = Array.apply(null, Array(nbYears)).map(\n Number.prototype.valueOf,\n 0\n );\n }\n\n // We get the price as we want HT or TTC\n let priceOrConso = null;\n\n switch (priceTypeOrConso) {\n case 'ht':\n priceOrConso = energy.totalHT.amount;\n break;\n\n case 'ttc':\n priceOrConso = energy.totalTTC.amount;\n break;\n\n case 'kWhep':\n // if we compare multiple fluids -> compare in Primary Energy kWhep\n if (this.isPrimaryEnergy(filters.energies)) {\n priceOrConso = this.energyService.convertEnergyKwhToKwhep(\n energy.energyType,\n energy.consumption.quantity\n );\n } else {\n priceOrConso = energy.consumption.quantity;\n }\n break;\n }\n\n // We add the price to energy values\n dataPerEnergy[priceTypeOrConso][energy.energyType][indexYears[databyYear.year]] += priceOrConso;\n }\n }\n });\n });\n\n // reconstruct DJUs when all the required years are not found\n let djusForChart = Array.from(yearDjus);\n\n if (nbYears !== yearDjus.length) {\n // initiliase DJUs for each year with value null\n djusForChart = Array.apply(null, Array(nbYears)).map(() => getDefaultDataDju());\n data.forEach(databyYear => {\n // set DJU for that year\n djusForChart[indexYears[databyYear.year]] = yearDjus.find(item => item.year === databyYear.year);\n });\n }\n function getDefaultDataDju() {\n return { cold: null, hot: null, date: null, month: null, year: null, station: null, _id: null };\n }\n\n // We have all the values HT and TTC by energies. We create the chart data from it\n // There is only one stack so index is 0\n const chart = this.formatDataEnergyToChartBarSerie(dataPerEnergy, 0, djusForChart);\n\n response.data.chart = [chart.kWhep, chart.ht, chart.ttc];\n response.labels = labels.map(toString);\n\n return response;\n }\n\n /**\n * Process data to create all months of consumption, grouped by year.\n * @param {MonthData[]} data - data of one year sorted by month\n * @param {number} stackIndex of the year : will be the column index (ex : index 1 is for 2016 and will always be the 2nd column)\n * @param {QueryFilterRoutingRef} filters contains all filters, including dateStart and dateEnd ]\n * @returns {CompareBarChartData} Data for chart\n */\n formatOneYearData(data: MonthData[], stackIndex: number, filters: QueryFilterRoutingRef): CompareBarChartData {\n const response: CompareBarChartData = {\n data: {\n chart: [],\n },\n labels: [],\n };\n\n const dataPerEnergy = {\n ttc: {},\n ht: {},\n kWhep: {},\n };\n\n const indexMonths = this.getGraphAbscisses(filters.dateStart, filters.dateEnd);\n const labels = this.getGraphAbscisseLabels(filters.dateStart, filters.dateEnd);\n const nbMonths = labels.length;\n\n data.forEach(databyMonth => {\n databyMonth.items.forEach(energy => {\n for (const priceTypeOrConso in dataPerEnergy) {\n if (!dataPerEnergy.hasOwnProperty(priceTypeOrConso)) {\n continue;\n }\n // Init all months values to O if the energy is not set.\n if (typeof dataPerEnergy[priceTypeOrConso][energy.energyType] === 'undefined') {\n dataPerEnergy[priceTypeOrConso][energy.energyType] = Array.apply(null, Array(nbMonths)).map(\n Number.prototype.valueOf,\n 0\n );\n }\n\n // We get the price as we want HT or TTC\n let priceOrConso = 0;\n\n switch (priceTypeOrConso) {\n case 'ht':\n priceOrConso = energy.totalHT.amount;\n break;\n\n case 'ttc':\n priceOrConso = energy.totalTTC.amount;\n break;\n\n case 'kWhep':\n // if we compare multiple fluids -> compare in Primary Energy kWhep\n if (this.isPrimaryEnergy(filters.energies)) {\n priceOrConso = this.energyService.convertEnergyKwhToKwhep(\n energy.energyType,\n energy.consumption.quantity\n );\n } else {\n priceOrConso = energy.consumption.quantity;\n }\n break;\n }\n\n // We add the price to energy values\n dataPerEnergy[priceTypeOrConso][energy.energyType][indexMonths[databyMonth.month]] = priceOrConso;\n }\n });\n });\n\n // We have all the values HT and TTC by energies. We create the chart data from it\n const chart = this.formatDataEnergyToChartBarSerie(dataPerEnergy, stackIndex, null);\n\n response.data.chart = [chart.kWhep, chart.ht, chart.ttc];\n response.labels = labels;\n\n return response;\n }\n\n /**\n * Prepare twelve month group\n * @param {QueryFilterRoutingRef} filters\n * @returns {MonthLabel[][]} Array of all group of years possible since dateStart on twelve month\n * ex. [ [ { month: 2, year: 2018, label: \"02-2018\"}, ..., { month: 1, year: 2019, label: \"01-2019\" } ],\n * [ { month: 3, year: 2018, label: \"03-2018\"}, ..., { month: 2, year: 2019, label: \"02-2019\" } ],\n * [ { month: 4, year: 2018, label: \"04-2018\"}, ..., { month: 3, year: 2019, label: \"03-2019\" } ],\n * [ { month: 5, year: 2018, label: \"05-2018\"}, ..., { month: 4, year: 2019, label: \"04-2019\" } ], ... ]\n */\n prepareTwelveMonthGroup(filters: QueryFilterRoutingRef): MonthLabel[][] {\n const yearOverYearGroup: MonthLabel[][] = [];\n\n // Build twelve group with\n for (let i = 0; i < 12; i++) {\n yearOverYearGroup[i] = [];\n\n for (let j = 0; j < 12; j++) {\n const dateStart = moment(filters.dateStart);\n\n dateStart.add(i, 'months');\n dateStart.add(j, 'months');\n\n const monthIndex = dateStart.month();\n const yearLabel = dateStart\n .year()\n .toString()\n .substring(2, 4);\n const year = dateStart.year();\n const month = monthIndex + 1;\n const displayMonth = month < 10 ? '0' + month : '' + month;\n const label = displayMonth + '/' + yearLabel;\n\n yearOverYearGroup[i][j] = {\n month: monthIndex,\n year,\n label,\n };\n }\n }\n\n return yearOverYearGroup;\n }\n\n /**\n * Group data by by and month corresponding to yearOverYearGroup grouping\n * @param {MonthLabel[][]} yearOverYearGroup Array of all group of years possible since dateStart on twelve month\n * @param {any[]} data 24 month of data (consumption of DJU)\n * @param {number} monthStartAt Offset for data which months do not starts at 0\n * @returns {MonthData[][]} Array of all group of years possible since dateStart on twelve month WITH DATA (items)\n * ex. [ [ { month: 3, year: 2018, items: []}, ..., {month: 2, year: 2019, items: []} ],\n * [ { month: 4, year: 2018, items: []}, ..., {month: 3, year: 2019, items: []} ],\n * [ { month: 5, year: 2018, items: []}, ..., {month: 4, year: 2019, items: []} ],\n * [ { month: 6, year: 2018, items: []}, ..., {month: 5, year: 2019, items: []} ],\n * [ { month: 7, year: 2018, items: []}, ..., {month: 6, year: 2019, items: []} ], ... ]\n */\n formatDataToGroup(yearOverYearGroup: MonthLabel[][], data: Dju[], monthStartAt: number): Dju[][];\n formatDataToGroup(yearOverYearGroup: MonthLabel[][], data: MonthData[], monthStartAt: number): MonthData[][];\n formatDataToGroup(\n yearOverYearGroup: MonthLabel[][],\n data: Array,\n monthStartAt: number\n ): Array> {\n if (!data || !data.length) {\n return [];\n }\n\n const yearOverYearGroupData = yearOverYearGroup.map(year => {\n const groupData = [];\n\n year.forEach(month => {\n const monthFound = data.find(item => {\n return item.month - monthStartAt === month.month && item.year === month.year;\n });\n\n groupData.push(monthFound);\n });\n return groupData;\n });\n\n return yearOverYearGroupData;\n }\n\n /**\n * formatDataSumByEnergy get 12 months grouped by energy\n * @param dataFormated Array of all group of years possible since dateStart on twelve month WITH DATA (items)\n * @returns {MonthData[][]} dataFormatedByEnergy\n * Ex. [ { yearOverYearIndex : 0, items :[ elec, gaz]}, { yearOverYearIndex : 1, items :[ elec, gaz]}, { yearOverYearIndex : 2, items :[ elec, gaz]} ]\n */\n formatDataSumByEnergy(dataFormated: MonthData[][]): DataSumByEnergy[] {\n return dataFormated.map((year, indexYear) => {\n const init: DataSumByEnergy = {\n indexYearOverYear: indexYear,\n items: [],\n };\n return year.reduce((memo: DataSumByEnergy, currentMonth) => {\n if (currentMonth) {\n memo.items = this.mergeItems(memo.items, currentMonth.items);\n }\n return memo;\n }, init);\n });\n }\n\n /**\n * Get DJU's sum by data grouping (used for year over year)\n * @param {Dju[][]} dataFormated - dju grouped\n * @returns {{indexYearOverYear: number, hot: number, cold: number}[]}\n */\n formatDjusSumByGroup(dataFormated: Dju[][]): Array<{ indexYearOverYear: number; hot: number; cold: number }> {\n return dataFormated.map((year, indexYear) => {\n const init = {\n indexYearOverYear: indexYear,\n hot: 0,\n cold: 0,\n };\n return year.reduce((memo, currentMonth) => {\n if (currentMonth) {\n memo.hot += currentMonth.hot;\n memo.cold += currentMonth.cold;\n }\n\n return memo;\n }, init);\n });\n }\n\n /**\n * Deep copy item\n * @param {} item\n * @returns {T}\n */\n getItemCopy(item: T): T {\n return _.cloneDeep(item);\n }\n\n /**\n * Merge month data items\n * @param {MonthDataItem[]} itemsBase\n * @param {MonthDataItem[]} itemsToMerge\n * @returns {MonthDataItem[]}\n */\n mergeItems(itemsBase: MonthDataItem[], itemsToMerge: MonthDataItem[]): MonthDataItem[] {\n if (!itemsBase || !itemsBase.length) {\n return itemsToMerge.map(itemToMerge => {\n return this.getItemCopy(itemToMerge);\n });\n }\n itemsToMerge.map(itemToMerge => {\n const energyItem = itemsBase.find(itemBase => {\n return itemBase.energyType === itemToMerge.energyType;\n });\n\n // If energy not existing yet, add it\n if (!energyItem) {\n itemsBase.push(this.getItemCopy(itemToMerge));\n } else {\n // Update all sumable\n energyItem.co2 += itemToMerge.co2;\n energyItem.consumption.quantity += itemToMerge.consumption.quantity;\n energyItem.totalHT.amount += itemToMerge.totalHT.amount;\n energyItem.totalTTC.amount += itemToMerge.totalTTC.amount;\n }\n });\n\n return itemsBase;\n }\n\n /**\n * Get labels for year over year charts\n * @param {MonthLabel[][]} twelveMonths\n * @returns {string[]} labels\n */\n getLabels(twelveMonths: MonthLabel[][]): string[] {\n return twelveMonths.reduce((memo: string[], currentYearOverYear) => {\n const firstItemOfYearOverYear = currentYearOverYear[0].label;\n const lastItemOfYearOverYear = currentYearOverYear[11].label;\n const label = firstItemOfYearOverYear + '-' + lastItemOfYearOverYear;\n memo.push(label);\n return memo;\n }, []);\n }\n\n /**\n * Process data to create sliping year charts.\n * @param {MonthData[]} data\n * @param {QueryFilterRoutingRef} filters\n * @param {Dju} yearOverYearDjus - dju grouped by year and month\n * @returns {CompareBarChartData} data formatted for chart\n */\n formatOneYearOverYearData(\n data: MonthData[],\n filters: QueryFilterRoutingRef,\n yearOverYearDjus: Dju[]\n ): CompareBarChartData {\n const response: CompareBarChartData = {\n data: {\n chart: [],\n },\n labels: [],\n };\n\n const dataPerEnergy = {\n ttc: {},\n ht: {},\n kWhep: {},\n };\n\n const twelveMonthGroup = this.prepareTwelveMonthGroup(filters);\n const labels = this.getLabels(twelveMonthGroup);\n const dataFormated = this.formatDataToGroup(twelveMonthGroup, data, 0);\n const djuFormated = this.formatDataToGroup(twelveMonthGroup, yearOverYearDjus, 1);\n const djuSumYearOverYear = this.formatDjusSumByGroup(djuFormated);\n const dataSumByEnergy = this.formatDataSumByEnergy(dataFormated);\n\n dataSumByEnergy.forEach((databyYearOverYear, indexYear) => {\n databyYearOverYear.items.forEach(energy => {\n for (const priceTypeOrConso in dataPerEnergy) {\n if (!dataPerEnergy.hasOwnProperty(priceTypeOrConso)) {\n continue;\n }\n // Init all months values to O if the energy is not set.\n if (typeof dataPerEnergy[priceTypeOrConso][energy.energyType] === 'undefined') {\n dataPerEnergy[priceTypeOrConso][energy.energyType] = Array.apply(null, Array(12)).map(\n Number.prototype.valueOf,\n 0\n );\n }\n\n // We get the price as we want HT or TTC\n let priceOrConso = 0;\n\n switch (priceTypeOrConso) {\n case 'ht':\n priceOrConso = energy.totalHT.amount;\n break;\n\n case 'ttc':\n priceOrConso = energy.totalTTC.amount;\n break;\n\n case 'kWhep':\n // if we compare multiple fluids -> compare in Primary Energy kWhep\n if (this.isPrimaryEnergy(filters.energies)) {\n priceOrConso = this.energyService.convertEnergyKwhToKwhep(\n energy.energyType,\n energy.consumption.quantity\n );\n } else {\n priceOrConso = energy.consumption.quantity;\n }\n break;\n }\n\n // We add the price to energy values\n dataPerEnergy[priceTypeOrConso][energy.energyType][indexYear] = priceOrConso;\n }\n });\n });\n\n // We have all the values HT and TTC by energies. We create the chart data from it\n const chart = this.formatDataEnergyToChartBarSerie(dataPerEnergy, 0, djuSumYearOverYear);\n\n response.data.chart = [chart.kWhep, chart.ht, chart.ttc];\n response.labels = labels;\n return response;\n }\n\n private isPrimaryEnergy(energiesSelected: string): boolean {\n return energiesSelected.split(',').length > 1 ? true : false;\n }\n\n /**\n * Get all index of each month\n * @param {string} dateStart - date of beginning of the chart\n * @param {string} dateEnd - date of end of chart\n * @param {boolean} sortMonth - sort month from oldest to most recent\n * @returns {{[month: string]: number}} Array of all month contain in chart\n *\n * For the bar chart, we need to know all concerned month indexs\n * months are sorted from first in year to last in year\n *\n * {\n * 9 : 0,\n * 10 : 1,\n * 11 : 2,\n * 12 : 3\n * }\n *\n */\n getGraphAbscisses(dateStart: string, dateEnd: string, sortMonth: boolean = true): { [month: string]: number } {\n const start = moment.utc(dateStart).startOf('month');\n const end = moment.utc(dateEnd).startOf('month');\n\n const months: number[] = [];\n\n // Get all months\n for (const startDate = start.clone(); startDate.isSameOrBefore(end); startDate.add(1, 'months')) {\n if (!months.includes(startDate.month())) {\n months.push(startDate.month());\n }\n }\n\n if (sortMonth) {\n // Sort month in croissant order\n months.sort((a, b) => {\n return a - b;\n });\n }\n\n // Return associated index\n return months.reduce((memo, currentItem, index) => {\n memo[currentItem] = index;\n return memo;\n }, {});\n }\n\n /**\n * Get all label for the abscisse\n * @param {string} dateStart - date of beginning of the chart\n * @param {string} dateEnd - date of end of chart\n * @returns {string[]} Array of all month contain in chart\n */\n getGraphAbscisseLabels(\n dateStart: string,\n dateEnd: string,\n sortMonth: boolean = true,\n format: string = 'MMMM'\n ): string[] {\n const monthsIndex = this.getGraphAbscisses(dateStart, dateEnd, sortMonth);\n const months = Object.keys(monthsIndex);\n\n // For each month return the name\n return months.map(month => {\n return moment()\n .month(month)\n .format(format);\n });\n }\n\n /**\n * Get 36 months bounds before dateEnd (3 years)\n * @param {QueryFilterRoutingRef} filters\n * @returns {Promise<{dateEnd: string, dateStart: string}>} Object with dateStart and dateEnd bounds of all years contained in chart\n */\n async getThreeYearsFiltersLimitDates(\n filters: QueryFilterRoutingRef\n ): Promise<{ dateEnd: string; dateStart: string }> {\n const dateStart = moment\n .utc(filters.dateEnd)\n .startOf('year')\n .subtract(2, 'years');\n const dateEnd = moment.utc(filters.dateEnd).startOf('month');\n\n return {\n dateEnd: dateEnd.format('YYYY-MM'),\n dateStart: dateStart.format('YYYY-MM'),\n };\n }\n\n /**\n * Get 12 months bounds before dateEnd\n * @param {QueryFilterRoutingRef} filters date of beginning of the chart\n * @returns {Promise<{dateEnd: string, dateStart: string}>} Object with dateStart and dateEnd bounds of all years contained in chart\n */\n async getTwentyFourMonthFiltersLimitDates(\n filters: QueryFilterRoutingRef\n ): Promise<{ dateEnd: string; dateStart: string }> {\n const dateStart = moment\n .utc(filters.dateEnd)\n .startOf('month')\n .subtract(23, 'months');\n const dateEnd = moment.utc(filters.dateEnd).startOf('month');\n\n return {\n dateEnd: dateEnd.format('YYYY-MM'),\n dateStart: dateStart.format('YYYY-MM'),\n };\n }\n\n /**\n * Get date filters limit dates based on available years. Dates at format YYYY-MM.\n * @returns {Promise<{dateStart: string, dateEnd: string}>}\n */\n async getAvailableYearsFiltersLimitDates(): Promise<{ dateStart: string; dateEnd: string }> {\n const availableYears = await this.filterService.getYearsWithData();\n availableYears.sort((a, b) => {\n return Number(a.value) - Number(b.value);\n });\n const earlyYear = availableYears && availableYears.length ? availableYears[0].value : moment.utc().year();\n const lastYear =\n availableYears && availableYears.length\n ? availableYears[availableYears.length - 1].value\n : moment.utc().year();\n const dateStart = moment\n .utc()\n .year(Number(earlyYear))\n .startOf('year');\n const dateEnd = moment\n .utc()\n .month(11)\n .year(Number(lastYear))\n .startOf('month');\n\n return {\n dateEnd: dateEnd.format('YYYY-MM'),\n dateStart: dateStart.format('YYYY-MM'),\n };\n }\n\n /**\n * Get all years within dateStart and dateEnd\n * @param {string} dateStart date of beginning of the chart\n * @param {string} dateEnd date of end of chart\n * @returns {number[]} Array of all years contain in chart\n */\n getGraphYears(dateStart: string, dateEnd: string): number[] {\n const start = moment.utc(dateStart).startOf('year');\n const end = moment.utc(dateEnd).startOf('year');\n const years = [];\n\n // Get all years\n for (const startDate = start.clone(); startDate.isSameOrBefore(end); startDate.add(1, 'years')) {\n if (!years.includes(startDate.year())) {\n years.push(startDate.year());\n }\n }\n\n return years;\n }\n\n /**\n * Get graph years index\n * @param {string} dateStart\n * @param {string} dateEnd\n * @returns {{[year: number]: number}}\n */\n getGraphYearsIndex(dateStart: string, dateEnd: string): { [year: number]: number } {\n const years = this.getGraphYears(dateStart, dateEnd);\n // Sort month in croissant order\n years.sort((a, b) => {\n return a - b;\n });\n\n return years.reduce((memo, currentItem, index) => {\n memo[currentItem] = index;\n return memo;\n }, {});\n }\n\n /**\n * Process formated data by energy to have chart datas\n * @param dataPerEnergy { elec : { ttc, ht, kwep }, water: { ttc, ht, kwep}}\n * @param stackIndex is the current year index, in the chart it is a column\n * @param {{hot: number, cold: number}[]} djus - list of djus sorted by year\n * @returns {kWhep: CompareChartBarData[], ht: CompareChartBarData[], ttc: CompareChartBarData[]} object with all dataset for the chart included in it\n */\n formatDataEnergyToChartBarSerie(\n dataPerEnergy: { [type: string]: any },\n stackIndex: number,\n djus: Array<{ hot: number; cold: number }>\n ): {\n kWhep: CompareBarChartSerie[];\n ht: CompareBarChartSerie[];\n ttc: CompareBarChartSerie[];\n } {\n const chart = {\n kWhep: [],\n ht: [],\n ttc: [],\n };\n\n // We have all the values HT and TTC by energies. We create the chart data from it\n for (const priceTypeOrConso in dataPerEnergy) {\n if (dataPerEnergy.hasOwnProperty(priceTypeOrConso)) {\n let idStackFilter = 0; // needed for the legend of the stack bar\n\n for (const energyName in dataPerEnergy[priceTypeOrConso]) {\n if (dataPerEnergy[priceTypeOrConso].hasOwnProperty(energyName)) {\n // Check if needed to had\n chart[priceTypeOrConso].push({\n data: dataPerEnergy[priceTypeOrConso][energyName],\n label: energyName,\n stack: stackIndex, // = site n° / categorie n° / place n°\n idStackFilter,\n yAxisID: 'y-axis-0',\n type: 'bar',\n });\n\n // Check if need to had unit\n idStackFilter++;\n } else {\n // TODO: Check Needed (Else to keep old behavior)\n idStackFilter++;\n }\n }\n\n if (djus) {\n let hotDjus = [];\n\n // Here add dju years\n if (djus.length) {\n hotDjus = djus\n .filter(dju => dju !== undefined)\n .map(year => {\n return year.hot;\n });\n }\n chart[priceTypeOrConso].unshift({\n data: hotDjus,\n label: 'djus',\n stack: stackIndex, // = site n° / categorie n° / place n°\n idStackFilter,\n yAxisID: 'y-axis-1',\n type: 'line',\n });\n }\n }\n }\n\n return chart;\n }\n}\n","export default \".disabled {\\n cursor: not-allowed !important;\\n}\\n.disabled:hover {\\n background-color: white;\\n border: solid #70c283 1px;\\n color: #607188;\\n}\\n.icon-container {\\n line-height: 40px;\\n}\\n.icon-toggle {\\n margin: 5px;\\n font-size: 20px;\\n}\\n.chart-filter {\\n background-color: #fafafa;\\n border-bottom: 2px solid #ebebeb;\\n border-right: 2px solid #ebebeb;\\n}\\n.chart-filter .form-control {\\n font-size: 12px;\\n margin: 0 !important;\\n}\\n.chart-filter.hidden {\\n visibility: hidden;\\n}\\n.chart-filter .form-filter-container {\\n padding: 15px 16px;\\n}\\n.chart-filter .form-filter-title {\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n font-weight: bold;\\n padding-bottom: 10px;\\n font-size: 12px;\\n word-wrap: break-word;\\n}\\n.graph-half {\\n padding: 40px 0 0 0;\\n}\\n.graph-half ga-highchart-scatter-plot {\\n height: 100%;\\n display: -webkit-box;\\n display: flex;\\n}\\n.graph-full {\\n padding: 0 5px;\\n}\\n.graph-full ga-highchart-scatter-plot {\\n height: auto;\\n display: -webkit-box;\\n display: flex;\\n}\\n.em-info {\\n padding: 25px 0;\\n font-size: 14px;\\n}\\n.em-info .info {\\n padding: 15px;\\n}\\n.chart {\\n padding-right: 0;\\n}\\n:host ::ng-deep .highcharts-tooltip span .tooltip__container {\\n max-height: 220px;\\n overflow-y: auto;\\n padding: 3px;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n font-size: 12px;\\n}\\n:host ::ng-deep .highcharts-tooltip span .tooltip__values {\\n padding: 6px 0 3px 0;\\n}\\n:host ::ng-deep .highcharts-tooltip span .tooltip__zone-name {\\n padding-right: 6px;\\n}\\n:host ::ng-deep .highcharts-tooltip span .tooltip__table {\\n font-weight: lighter;\\n}\\n:host ::ng-deep .highcharts-tooltip span .tooltip__series-name {\\n list-style-type: circle;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2FuYWx5c2UvY3Jvc3MtZGF0YS9jcm9zcy1kYXRhLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9hbmFseXNlL2Nyb3NzLWRhdGEvY3Jvc3MtZGF0YS5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSw4QkFBQTtBQ0RKO0FERUk7RUFDSSx1QkFBQTtFQUNBLHlCQUFBO0VBQ0EsY0VtQks7QURuQmI7QURJQTtFQUNJLGlCQUFBO0FDREo7QURHQTtFQUNJLFdBQUE7RUFDQSxlQUFBO0FDQUo7QURHQTtFQUNJLHlCQUFBO0VBQ0EsZ0NBQUE7RUFDQSwrQkFBQTtBQ0FKO0FERUk7RUFDSSxlQUFBO0VBQ0Esb0JBQUE7QUNBUjtBREdJO0VBQ0ksa0JBQUE7QUNEUjtBRElJO0VBQ0ksa0JBQUE7QUNGUjtBREtJO0VBQ0ksZ0RBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EsZUFBQTtFQUNBLHFCQUFBO0FDSFI7QURPQTtFQUNJLG1CQUFBO0FDSko7QURNSTtFQUNJLFlBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7QUNKUjtBRFFBO0VBQ0ksY0FBQTtBQ0xKO0FET0k7RUFDSSxZQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0FDTFI7QURTQTtFQUNJLGVBQUE7RUFDQSxlQUFBO0FDTko7QURRSTtFQUNJLGFBQUE7QUNOUjtBRFVBO0VBQ0ksZ0JBQUE7QUNQSjtBRFlRO0VBQ0ksaUJBQUE7RUFDQSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxxQ0FBQTtFQUNBLGVBQUE7QUNUWjtBRFlRO0VBQ0ksb0JBQUE7QUNWWjtBRGFRO0VBQ0ksa0JBQUE7QUNYWjtBRGNRO0VBQ0ksb0JBQUE7QUNaWjtBRGVRO0VBQ0ksdUJBQUE7QUNiWiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2FuYWx5c2UvY3Jvc3MtZGF0YS9jcm9zcy1kYXRhLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMnO1xuXG4uZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIGJvcmRlcjogc29saWQgJGFuYWx5c2UgMXB4O1xuICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxufVxuXG4uaWNvbi1jb250YWluZXIge1xuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xufVxuLmljb24tdG9nZ2xlIHtcbiAgICBtYXJnaW46IDVweDtcbiAgICBmb250LXNpemU6IDIwcHg7XG59XG5cbi5jaGFydC1maWx0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlYmViZWI7XG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2ViZWJlYjtcblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICYuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cblxuICAgIC5mb3JtLWZpbHRlci1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAxNXB4IDE2cHg7XG4gICAgfVxuXG4gICAgLmZvcm0tZmlsdGVyLXRpdGxlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIH1cbn1cblxuLmdyYXBoLWhhbGYge1xuICAgIHBhZGRpbmc6IDQwcHggMCAwIDA7XG5cbiAgICBnYS1oaWdoY2hhcnQtc2NhdHRlci1wbG90IHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbn1cblxuLmdyYXBoLWZ1bGwge1xuICAgIHBhZGRpbmc6IDAgNXB4O1xuXG4gICAgZ2EtaGlnaGNoYXJ0LXNjYXR0ZXItcGxvdCB7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG59XG5cbi5lbS1pbmZvIHtcbiAgICBwYWRkaW5nOiAyNXB4IDA7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuXG4gICAgLmluZm8ge1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgIH1cbn1cblxuLmNoYXJ0IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuXG46aG9zdCA6Om5nLWRlZXAgLmhpZ2hjaGFydHMtdG9vbHRpcCB7XG4gICAgc3BhbiB7XG4gICAgICAgIC50b29sdGlwX19jb250YWluZXIge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMjIwcHg7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgcGFkZGluZzogM3B4O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50b29sdGlwX192YWx1ZXMge1xuICAgICAgICAgICAgcGFkZGluZzogNnB4IDAgM3B4IDA7XG4gICAgICAgIH1cblxuICAgICAgICAudG9vbHRpcF9fem9uZS1uYW1lIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50b29sdGlwX190YWJsZSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbGlnaHRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC50b29sdGlwX19zZXJpZXMtbmFtZSB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGNpcmNsZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5kaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbn1cbi5kaXNhYmxlZDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IHNvbGlkICM3MGMyODMgMXB4O1xuICBjb2xvcjogIzYwNzE4ODtcbn1cblxuLmljb24tY29udGFpbmVyIHtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG59XG5cbi5pY29uLXRvZ2dsZSB7XG4gIG1hcmdpbjogNXB4O1xuICBmb250LXNpemU6IDIwcHg7XG59XG5cbi5jaGFydC1maWx0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ViZWJlYjtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2ViZWJlYjtcbn1cbi5jaGFydC1maWx0ZXIgLmZvcm0tY29udHJvbCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG59XG4uY2hhcnQtZmlsdGVyLmhpZGRlbiB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5jaGFydC1maWx0ZXIgLmZvcm0tZmlsdGVyLWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDE1cHggMTZweDtcbn1cbi5jaGFydC1maWx0ZXIgLmZvcm0tZmlsdGVyLXRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbi5ncmFwaC1oYWxmIHtcbiAgcGFkZGluZzogNDBweCAwIDAgMDtcbn1cbi5ncmFwaC1oYWxmIGdhLWhpZ2hjaGFydC1zY2F0dGVyLXBsb3Qge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5ncmFwaC1mdWxsIHtcbiAgcGFkZGluZzogMCA1cHg7XG59XG4uZ3JhcGgtZnVsbCBnYS1oaWdoY2hhcnQtc2NhdHRlci1wbG90IHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4uZW0taW5mbyB7XG4gIHBhZGRpbmc6IDI1cHggMDtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLmVtLWluZm8gLmluZm8ge1xuICBwYWRkaW5nOiAxNXB4O1xufVxuXG4uY2hhcnQge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuXG46aG9zdCA6Om5nLWRlZXAgLmhpZ2hjaGFydHMtdG9vbHRpcCBzcGFuIC50b29sdGlwX19jb250YWluZXIge1xuICBtYXgtaGVpZ2h0OiAyMjBweDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogM3B4O1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbjpob3N0IDo6bmctZGVlcCAuaGlnaGNoYXJ0cy10b29sdGlwIHNwYW4gLnRvb2x0aXBfX3ZhbHVlcyB7XG4gIHBhZGRpbmc6IDZweCAwIDNweCAwO1xufVxuOmhvc3QgOjpuZy1kZWVwIC5oaWdoY2hhcnRzLXRvb2x0aXAgc3BhbiAudG9vbHRpcF9fem9uZS1uYW1lIHtcbiAgcGFkZGluZy1yaWdodDogNnB4O1xufVxuOmhvc3QgOjpuZy1kZWVwIC5oaWdoY2hhcnRzLXRvb2x0aXAgc3BhbiAudG9vbHRpcF9fdGFibGUge1xuICBmb250LXdlaWdodDogbGlnaHRlcjtcbn1cbjpob3N0IDo6bmctZGVlcCAuaGlnaGNoYXJ0cy10b29sdGlwIHNwYW4gLnRvb2x0aXBfX3Nlcmllcy1uYW1lIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBjaXJjbGU7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Column, Option } from 'app/shared/components/analyse/axis-selection/axis-selection.component';\nimport {\n PropertyDescription,\n StatisticsComponent,\n} from 'app/shared/components/analyse/statistics/statistics.component';\nimport { HighchartScatterPlotComponent } from 'app/shared/components/charts/highchart-scatter-plot/highchart-scatter-plot.component';\nimport { QueryFilterRoutingRef } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { CompanyRoles } from 'app/shared/constants/company-roles-list.constants';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { ScatterPlotPoint, ScatterPlotSerie } from 'app/shared/models/charts/chart-serie.interface';\nimport { ScatterPlotProperties } from 'app/shared/models/charts/charts.interface';\nimport { SiteRoutingRefContractConso } from 'app/shared/models/site.interface';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { EnergyDataService } from 'app/shared/services/energy/energy-data.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\nimport { AdminCompanyService } from '../../admin/company/company.service';\nimport { CrossDataService } from './cross-data.service';\n\ninterface AxisOption extends Option {\n unit: string;\n unitType: string;\n}\n\ninterface QueryFilter extends QueryFilterRoutingRef {\n legacyData: string;\n}\n\n@Component({\n selector: 'ga-cross-data',\n templateUrl: './cross-data.component.html',\n styleUrls: ['./cross-data.component.scss'],\n providers: [CrossDataService],\n})\nexport class CrossDataComponent implements OnInit {\n // sites data (triple key object): site / contract / n°PDL\n dataSitesRfcContract: SiteRoutingRefContractConso[] = [];\n sitesProperties: any = {};\n company = null;\n specificCriteria = ['buildingsurface', 'nbpeopleonsite'];\n displayZones = false;\n\n // chart\n scatterPlotProperties: ScatterPlotProperties;\n chartSeries: ScatterPlotSerie[] = []; // data set inside options.series\n chartVisiblePoints: ScatterPlotPoint[] = []; // points filtered from the zoom action on chart\n @ViewChild('chart', { static: false }) chart: HighchartScatterPlotComponent;\n\n isLoadingData = false;\n isLoadingAxes = false;\n\n // statistics\n isShowingStatistics = true;\n @ViewChild(StatisticsComponent, { static: false }) statisticsComponent: StatisticsComponent;\n\n // axes selection\n axesOptions: Array>;\n\n // sites filter\n filters: QueryFilter;\n isFilterCollapsed = false;\n\n // colors filter\n colorfilterKey: string = null; // default is none\n filterColorsOptions: Array<{ label: string; value: string }>;\n\n constructor(\n private crossDataService: CrossDataService,\n private chartService: ChartService,\n private energieService: EnergyService,\n private sitesService: SitesService,\n private sessionService: SessionService,\n private companyService: AdminCompanyService,\n private energyDataService: EnergyDataService\n ) {}\n\n ngOnInit() {\n this.isLoadingData = true;\n this.isLoadingAxes = true;\n\n this.initChartProperties();\n this.company = this.sessionService.getCompany();\n this.setAxesOptions();\n this.setFormOptions();\n\n if (this.company) {\n this.crossDataService\n .getCompanyUsers(this.company._id, UserTypes.ENERGY_MANAGER, CompanyRoles.USERS)\n .then(res => {\n this.company.users = res;\n this.companyService.setPictures(this.company.users, 'img');\n })\n .catch(error => {\n this.company.users = [];\n });\n } else {\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement de votre entreprise',\n 'error'\n );\n }\n }\n\n initChartProperties() {\n this.scatterPlotProperties = {\n title: 'Croisement des données',\n legend: [],\n options: {},\n };\n }\n\n /**\n * Set the available options for the axis.\n */\n setAxesOptions() {\n this.isLoadingAxes = true;\n\n // get columns already selected if axis not undefined\n const selectedX =\n this.axesOptions &&\n this.axesOptions.find(column => column.key === 'x').options.find(opt => opt.selected).key;\n const selectedY =\n this.axesOptions &&\n this.axesOptions.find(column => column.key === 'y').options.find(opt => opt.selected).key;\n\n const x: Column = { key: 'x', name: 'Abscisses', options: [] };\n const y: Column = { key: 'y', name: 'Ordonnées', options: [] };\n this.axesOptions = [y, x];\n\n this.setDefaultAxesOptions();\n this.setSpecificAxesOptions();\n this.preselectAxes({ selectedX, selectedY });\n\n this.isLoadingAxes = false;\n }\n\n /**\n * Set the default axis options common for both x and y:\n * - cost TTC\n * - cost HT\n * - quantity\n * - cost TTC/kwh\n * - cost HT/kWh\n */\n setDefaultAxesOptions(): void {\n // kWhep if multiple energies selected\n const energies = this.filters && this.filters.energies ? this.filters.energies.split(',') : [];\n const consoUnit = energies.length > 1 ? 'kWhep' : 'kWh';\n\n this.axesOptions.forEach(axe => {\n axe.options.push(\n {\n key: 'totalTTC',\n unit: '€',\n legend: '€ TTC',\n selected: false,\n unitType: 'money',\n },\n {\n key: 'totalHT',\n unit: '€',\n legend: '€ HT',\n selected: false,\n unitType: 'money',\n },\n {\n key: 'quantity',\n unit: consoUnit,\n legend: consoUnit,\n selected: false,\n unitType: 'fluid',\n },\n {\n key: 'ratio_totalTTC_quantity',\n unit: 'c€/' + consoUnit,\n legend: 'c€ TTC/' + consoUnit,\n selected: false,\n unitType: 'ratio',\n },\n {\n key: 'ratio_totalHT_quantity',\n unit: 'c€/' + consoUnit,\n legend: 'c€ HT/' + consoUnit,\n selected: false,\n unitType: 'ratio',\n }\n );\n });\n }\n\n /**\n * Preselect options in axes.\n * Quantity for x, ratio € / qty for y\n */\n preselectAxes({ selectedX = 'quantity', selectedY = 'ratio_totalTTC_quantity' }): void {\n const axeX = this.axesOptions.find(column => column.key === 'x');\n const axeY = this.axesOptions.find(column => column.key === 'y');\n\n axeX.options.find(opt => opt.key === selectedX).selected = true;\n axeY.options.find(opt => opt.key === selectedY).selected = true;\n }\n\n /**\n * Set specific options for the legacy data (surface, number of people on site).\n * Each legacy data has 3 options:\n * - legacy data\n * - ratio conso / legacy data\n * - ratio cost / legacy data\n */\n setSpecificAxesOptions(): void {\n const energies = this.filters && this.filters.energies ? this.filters.energies.split(',') : [];\n const consoUnit = energies.length > 1 ? 'kWhep' : 'kWh';\n\n // this array will be set by the user preferences in the Legacy Data part\n const specificOptions = [\n {\n key: 'buildingsurface',\n unit: 'm²',\n ratiounit: 'm²',\n legend: 'm²',\n },\n {\n key: 'nbpeopleonsite',\n unit: 'personnes',\n ratiounit: 'personne',\n legend: 'Effectif',\n },\n ];\n\n // for each legacy data, add it as a button choice, and add 3 ratio : kWh c€ HT c€ TTC\n this.axesOptions.forEach(axis => {\n specificOptions.forEach(option => {\n const value_option: AxisOption = {\n key: option.key,\n unit: option.unit,\n legend: option.legend,\n selected: false,\n unitType: 'legacydata',\n };\n\n const ratio_qty_option: AxisOption = {\n key: 'ratio_quantity_' + option.key,\n unit: consoUnit + '/' + option.ratiounit,\n legend: consoUnit + '/' + option.ratiounit,\n selected: false,\n unitType: 'ratio',\n };\n\n const ratio_TTC_option: AxisOption = {\n key: 'ratio_totalTTC_' + option.key,\n unit: '€/' + option.ratiounit,\n legend: '€ TTC/' + option.ratiounit,\n selected: false,\n unitType: 'ratio',\n };\n\n const ratio_HT_option: AxisOption = {\n key: 'ratio_totalHT_' + option.key,\n unit: '€/' + option.ratiounit,\n legend: '€ HT/' + option.ratiounit,\n selected: false,\n unitType: 'ratio',\n };\n\n axis.options.push(value_option, ratio_qty_option, ratio_TTC_option, ratio_HT_option);\n });\n });\n }\n\n /**\n * Get the properties description needed by the Statistics component to compute values from points.\n * @returns {PropertyDescription[]}\n */\n getStatisticsProperties(): PropertyDescription[] {\n const selection = this.getAxesSelection();\n return [\n { key: 'y', unit: selection.y.unit, unitType: selection.y.unitType },\n { key: 'x', unit: selection.x.unit, unitType: selection.x.unitType },\n ];\n }\n\n /**\n * Return the selected option from axis x and y\n * @returns {x: AxisOption, y: AxisOption} selected option from both axes\n */\n getAxesSelection(): { x: AxisOption; y: AxisOption } {\n return {\n x: this.axesOptions.find(axe => axe.key === 'x').options.find(opt => opt.selected),\n y: this.axesOptions.find(axe => axe.key === 'y').options.find(opt => opt.selected),\n };\n }\n\n /**\n * Set the available form options.\n * Default is none selected.\n * Form options depend on the company's organization (entreprise or other).\n */\n setFormOptions(): void {\n // Default is none, appears at first position\n this.filterColorsOptions = [\n {\n label: 'Aucun',\n value: null,\n },\n ];\n\n // Entreprise\n if (this.company.organization === '1') {\n this.filterColorsOptions.push(\n {\n label: 'Régions',\n value: 'region',\n },\n {\n label: 'Natures',\n value: 'nature',\n }\n );\n } else {\n // Santé / Commune / Collectivité / Syndic de copropriété / Association\n this.filterColorsOptions.push(\n {\n label: 'Régions',\n value: 'region',\n },\n {\n label: 'Natures',\n value: 'nature',\n },\n {\n label: 'Catégories',\n value: 'category',\n },\n {\n label: 'Sous-catégories',\n value: 'subcategory',\n },\n {\n label: 'Complément',\n value: 'complement',\n }\n );\n }\n }\n\n /**\n * @returns {boolean} true if the chart has some data to display\n */\n public hasDataForChart(): boolean {\n return this.chartSeries && this.chartSeries.some(dataSet => Boolean(dataSet.data && dataSet.data.length));\n }\n\n /**\n * Start the research with new criterias\n * @param {QueryFilter} filters from the filter component\n */\n public async search(filters): Promise {\n this.isLoadingData = true;\n this.filters = filters;\n this.displayZones = this.filters.sites || this.filters.categories ? true : false;\n\n this.filters.legacyData = this.specificCriteria.toString();\n\n // need to reset the unit in axe options in case filter.energy has changed (kWh -> kWhep)\n // keep the old selection if there was one\n this.setAxesOptions();\n\n try {\n this.sitesProperties = await this.crossDataService.getSitesProperties();\n this.dataSitesRfcContract = await this.energyDataService.getCommonConsumptionPerSite(this.filters);\n\n this.setPropertiesNames();\n\n this.scatterPlotProperties.options = this.chartService.getHighchartScatterPlotConfig();\n\n this.handleScatterPlotChart();\n this.computeStatistics(this.chartSeries);\n } catch (err) {\n this.isLoadingData = false;\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite lors du chargement des données de vos sites\",\n 'error'\n );\n }\n }\n\n /**\n * Flatten the points inside the given series.\n * Changing the points will automatically launch the statistics computation inside the statistics components.\n * @param {ScatterPlotSerie[]} series holding the points from which statitics are computed.\n */\n computeStatistics(series: ScatterPlotSerie[]) {\n this.chartVisiblePoints = _.flatten(series.map(serie => serie.data));\n }\n\n /**\n * Set categories, subcategories and complements names inside sites and zones.\n */\n setPropertiesNames(): void {\n this.dataSitesRfcContract.forEach(site => {\n this.sitesService.setSiteProperties(site, this.sitesProperties);\n });\n }\n\n /**\n * Handle scatter plot chart\n * 1. gather the data of every contract & rfc for each site\n * 2. gather the sites per color filter selected (default = 'region')\n * 3. formate data for the scatter chart\n * 4. compute statitistics\n * 5. use data and statitics to compute tooltips\n */\n handleScatterPlotChart() {\n const dataPerSite = this.aggregatePerSite();\n\n this.isShowingStatistics = this.hasMultiplePoints(dataPerSite);\n\n const sitesFilteredForColor = this.aggregatePerFilterColor();\n\n this.formateDataForSerie(dataPerSite, sitesFilteredForColor);\n\n this.createChartTooltips();\n this.createChartClickEvent();\n\n this.isLoadingData = false;\n }\n\n /**\n * Group the sites ids per form filter (color).\n * Ex: {\n Ile-de-France: [\n \"5a7f351d71468150e94de227\",\n \"59bba6cf5099a902a3ba82b2\",\n \"59bba71c5099a902a3baffd0\",\n ],\n Bretagne : [\n \"5a7f351d71468456494de224\",\n \"59bba6cf5099a902a3ba82b8\",\n \"59bba71c5099a902a3baffd4\",\n ],\n ...\n }\n * @returns { [key: string]: string[] }\n */\n aggregatePerFilterColor() {\n const sitesFilteredForColor = {};\n\n if (this.colorfilterKey) {\n this.dataSitesRfcContract.forEach(site => {\n const filter = site[this.colorfilterKey] ? site[this.colorfilterKey] : 'NC';\n\n if (!sitesFilteredForColor.hasOwnProperty(filter)) {\n sitesFilteredForColor[filter] = [];\n }\n\n if (!sitesFilteredForColor[filter].includes(site._id.siteId)) {\n sitesFilteredForColor[filter].push(site._id.siteId);\n }\n });\n }\n\n return sitesFilteredForColor;\n }\n\n /*\n {\n 5a7f351d71468150e94de227: {\n name: 'Gymnase Saint-Charles'\n quantity: 436943,\n totalHT: 242,\n totalTTC: 1144\n },\n ...\n }\n */\n /**\n * Aggregate data per site from the triple key consumption array: site / contract / routing ref\n * @return {name: string, quantity: number,totalHT: number, totalTTC: number}\n */\n aggregatePerSite() {\n const dataPerSite = {};\n\n this.dataSitesRfcContract.forEach(site => {\n if (!site.info.diviser) {\n if (site.conso && Object.keys(site.conso).length !== 0) {\n for (const key in site.conso) {\n if (site.conso.hasOwnProperty(key)) {\n this.addDataToSite(dataPerSite, key, site.conso[key], site);\n }\n }\n }\n } else if (site.info.diviser && site.conso && Object.keys(site.conso).length !== 0) {\n // site is divided in zones but that PDL doesn't belong to any zone\n for (const key in site.conso) {\n if (site.conso.hasOwnProperty(key)) {\n this.addDataToSite(dataPerSite, key, site.conso[key], site);\n }\n }\n } else if (site.info.diviser && site.batiments.length) {\n site.batiments.forEach(zone => {\n if (zone.routingReferencesConso) {\n zone.routingReferencesConso.forEach(rfc => {\n if (rfc.conso && Object.keys(rfc.conso).length !== 0) {\n for (const key in rfc.conso) {\n if (rfc.conso.hasOwnProperty(key)) {\n this.addDataToSite(dataPerSite, key, rfc.conso[key], site, zone);\n }\n }\n }\n });\n }\n });\n }\n });\n return dataPerSite;\n }\n\n addDataToSite(dataPerSite, key, conso, site, zone = null) {\n const siteId = site._id.siteId;\n const siteName = site.name;\n const siteFilter = site[this.colorfilterKey];\n\n if (dataPerSite.hasOwnProperty(siteId)) {\n this.setSiteOrZoneConso(key, conso, dataPerSite[siteId]);\n if (zone) {\n this.setSiteOrZoneConso(key, conso, dataPerSite[siteId].batiments[zone._id]);\n }\n } else {\n dataPerSite[siteId] = this.initializeSiteOrZoneData(siteName, siteFilter);\n // for each axe option\n this.specificCriteria.forEach(legacyData => {\n this.initializeLegacyData(dataPerSite[siteId], legacyData, site);\n });\n\n if (site.info.diviser && site.batiments.length) {\n dataPerSite[siteId].batiments = {};\n site.batiments.forEach(bat => {\n dataPerSite[siteId].batiments[bat._id] = this.initializeSiteOrZoneData(\n bat.name,\n bat[this.colorfilterKey]\n );\n // for each axe option\n this.specificCriteria.forEach(legacyData => {\n this.initializeLegacyData(dataPerSite[siteId].batiments[bat._id], legacyData, bat); // add the zone's legacy data to the zone info\n dataPerSite[siteId][legacyData] += dataPerSite[siteId].batiments[bat._id][legacyData]; // add the zone's legacy data to the site's legacy data\n });\n });\n }\n\n this.addDataToSite(dataPerSite, key, conso, site, zone);\n }\n }\n\n setSiteOrZoneConso(key, conso, dataPerSiteOrZone) {\n const energiesAccepted = this.energieService.getAllEnergies();\n // quantity & ratios\n if (energiesAccepted.includes(key)) {\n let quantity = 0;\n if (this.filters.energies && this.filters.energies.split(',').length > 1) {\n quantity = this.energieService.convertEnergyKwhToKwhep(key, conso.quantity);\n } else {\n quantity = conso.quantity;\n }\n\n // add quantity\n dataPerSiteOrZone.quantity += quantity;\n\n // add total HT\n dataPerSiteOrZone.totalHT += conso.totalHT;\n\n // add total TTC\n dataPerSiteOrZone.totalTTC += conso.totalTTC;\n\n // update c€/kwh\n // id quantity is 0, ratio remains 0 - will start being updated once the first quantity is found\n if (dataPerSiteOrZone.quantity) {\n dataPerSiteOrZone.ratio_totalTTC_quantity =\n (dataPerSiteOrZone.totalTTC / dataPerSiteOrZone.quantity) * 100;\n dataPerSiteOrZone.ratio_totalHT_quantity =\n (dataPerSiteOrZone.totalHT / dataPerSiteOrZone.quantity) * 100;\n }\n\n // update ratio for each specific legacy data (axe option) with new totalTTC totalHT quantity\n this.specificCriteria.forEach(legacyData => {\n if (dataPerSiteOrZone[legacyData]) {\n // ratio /kwh\n const ratioNameQty = 'ratio_quantity_' + legacyData;\n dataPerSiteOrZone[ratioNameQty] = dataPerSiteOrZone.quantity / dataPerSiteOrZone[legacyData];\n\n // ratio /c€ TTC\n const ratioNameTTC = 'ratio_totalTTC_' + legacyData;\n dataPerSiteOrZone[ratioNameTTC] = dataPerSiteOrZone.totalTTC / dataPerSiteOrZone[legacyData];\n\n // ratio /c€ HT\n const ratioNameHT = 'ratio_totalHT_' + legacyData;\n dataPerSiteOrZone[ratioNameHT] = dataPerSiteOrZone.totalHT / dataPerSiteOrZone[legacyData];\n }\n });\n }\n }\n\n initializeSiteOrZoneData(name, filterName) {\n return {\n name,\n quantity: 0,\n totalHT: 0,\n totalTTC: 0,\n ratio_totalTTC_quantity: 0,\n ratio_totalHT_quantity: 0,\n filter: filterName || 'NC',\n };\n }\n\n initializeLegacyData(dataPerSiteOrZone, legacyData, siteOrZone) {\n const ratioNames = [];\n ratioNames.push('ratio_quantity_' + legacyData, 'ratio_totalTTC_' + legacyData, 'ratio_totalHT_' + legacyData);\n\n // initialize the site's legacy data : this data won't change, every rfc has the site's value\n dataPerSiteOrZone[legacyData] = siteOrZone[legacyData] ? Number(siteOrZone[legacyData][0].value) : 0;\n\n // ratio initialized with 0, will be updated when the site's total conso and cost are updated (kWh/m2)\n ratioNames.forEach(ratioName => {\n dataPerSiteOrZone[ratioName] = 0;\n });\n }\n\n // returns true when there are more than one site, or if there is only one site with multiple zones\n hasMultiplePoints(dataPerSite) {\n // only one point when there is only one site without any zone\n return Boolean(\n Object.keys(dataPerSite).length &&\n (Object.keys(dataPerSite).length > 1 || dataPerSite[Object.keys(dataPerSite)[0]].batiments)\n );\n }\n\n formateDataForSerie(dataPerSite, sitesFilteredForColor) {\n const regionColors = [\n '253, 204, 45', // SECOND_YELLOW\n '252, 168, 40, 0.8', // yellow\n '82, 184, 153', // SECOND_TURQUOISE\n '35, 157, 132, 0.5', // green\n '223, 124, 58', // ORANGE\n '219, 75, 71', // red admin\n '172, 204, 236', // LIGHT_BLUE\n '105, 158, 210', // SECOND_BLUE\n '16, 78, 139', // DARK_BLUE1\n '117, 97, 194, 0.5', // PURPLE\n '91, 75, 162', // SECOND_PURPLE\n '123, 138, 138', // GREY\n ];\n\n const selection = this.getAxesSelection();\n\n const unitX = selection.x.unit;\n const unitY = selection.y.unit;\n\n const unitTypeX = selection.x.unitType;\n const unitTypeY = selection.y.unitType;\n\n const x = selection.x.key;\n const y = selection.y.key;\n\n const legendX = selection.x.legend;\n const legendY = selection.y.legend;\n\n this.scatterPlotProperties.options.yAxis.title.text = legendY;\n this.scatterPlotProperties.options.xAxis.title.text = legendX;\n\n const optionsSeries = [];\n this.scatterPlotProperties.legend = [];\n\n if (this.colorfilterKey) {\n let colorIndex = 0;\n Object.keys(sitesFilteredForColor).forEach(filter => {\n optionsSeries.push(\n this.createSerie(\n sitesFilteredForColor[filter],\n dataPerSite,\n x,\n y,\n unitX,\n unitY,\n filter,\n regionColors[colorIndex],\n unitTypeX,\n unitTypeY\n )\n );\n colorIndex = colorIndex === regionColors.length - 1 ? 0 : colorIndex + 1;\n });\n } else {\n optionsSeries.push(\n this.createSerie(\n Object.keys(dataPerSite),\n dataPerSite,\n x,\n y,\n unitX,\n unitY,\n null,\n regionColors[0],\n unitTypeX,\n unitTypeY\n )\n );\n }\n\n this.chartSeries = optionsSeries;\n }\n\n createSerie(sitesId, dataPerSite, x, y, unitX, unitY, filterName, filterColor, unitTypeX, unitTypeY) {\n const serieData = [];\n\n // add sites data\n sitesId.forEach(siteId => {\n // sites without any consumption weren't added to sitesFilteredForColor\n if (dataPerSite[siteId]) {\n // displayZones = true when each zone has its own point on the chart\n if (this.displayZones && dataPerSite[siteId].batiments) {\n Object.keys(dataPerSite[siteId].batiments).forEach(zoneId => {\n serieData.push({\n name: dataPerSite[siteId].name,\n zone: 'Zone : ' + dataPerSite[siteId].batiments[zoneId].name,\n x: dataPerSite[siteId].batiments[zoneId][x],\n y: dataPerSite[siteId].batiments[zoneId][y],\n id: siteId, // site id for the redirection to the site profile when click on the graph point\n });\n });\n } else {\n // the site has 0 zero zone or the zones are merged on the site's point\n const serie = {\n name: dataPerSite[siteId].name,\n x: dataPerSite[siteId][x],\n y: dataPerSite[siteId][y],\n id: siteId,\n };\n\n // if the site has zones, their name and consumption will be displayed inside the tooltip\n if (dataPerSite[siteId].batiments) {\n serie['batiments'] = [];\n Object.keys(dataPerSite[siteId].batiments).forEach(zoneId => {\n serie['batiments'].push({\n name: dataPerSite[siteId].batiments[zoneId].name,\n x: dataPerSite[siteId].batiments[zoneId][x],\n y: dataPerSite[siteId].batiments[zoneId][y],\n });\n });\n }\n\n serieData.push(serie);\n }\n }\n });\n\n // create legend\n this.scatterPlotProperties.legend.push({\n name: filterName || 'Tous les sites',\n color: filterColor,\n });\n\n // the scatter plot object expected from highchart for each serie\n return {\n data: serieData,\n color: `rgba(${filterColor})`,\n unitX,\n unitY,\n unitTypeX,\n unitTypeY,\n name: filterName || 'Tous les sites',\n };\n }\n\n /**\n * Handle a change in the axis selection.\n * Grab new data for all sites.\n * Reset zoom and launch statistics computation.\n */\n onAxeChanged() {\n if (this.chart) {\n this.isLoadingData = true;\n\n this.handleScatterPlotChart();\n\n // reset zoom if needed to display all points + reset visible points for statistics\n if (_.get(this.chart, 'chart.resetZoomButton')) {\n this.chart.chart.resetZoomButton.element.onclick();\n }\n\n this.computeStatistics(this.chartSeries);\n }\n }\n\n isCollapsed() {\n return this.isFilterCollapsed;\n }\n\n addHiddenClass() {\n return this.isFilterCollapsed ? 'hidden' : '';\n }\n\n toggleCollapse() {\n this.isFilterCollapsed = !this.isFilterCollapsed;\n // if the chart doesn't have data, don't try to redraw it, it doesn't exist yet\n if (this.chart) {\n this.chart.redrawChart();\n }\n }\n\n getChartContainerClass() {\n return this.isCollapsed() ? 'col-md-12 graph-full' : 'col-md-10 graph-half';\n }\n\n getChartColumnSize() {\n // if the chart has data : col-md-10 for chart & col-md-2 for statistics\n // if no data: col-md-12 for chart & no statistics\n return !this.isLoadingData && this.hasDataForChart() ? 'col-md-10' : 'col-md-12';\n }\n\n hasEnergyManager() {\n return !this.isLoadingData && this.company && this.company.users && this.company.users.length;\n }\n\n /**\n * Create a tooltip for each site\n * Specific cases:\n * - if the site has zones, display their own names and conso\n * - if multiple sites share the same point (x, y), aggregate their name\n * - if multiple sites share the same point (x, y), but come from different series (ex: regions), display the region's name before the site's names list\n */\n createChartTooltips(): void {\n const that = this;\n this.scatterPlotProperties.options.plotOptions.scatter.tooltip.pointFormatter = function() {\n const series = [];\n\n // if there are multiple series with a site having the same (x,y)\n // -> display the serie's name and the sites' name below\n\n // check if any other point in any serie has the same (x, y)\n this.series.chart.xAxis[0].series.forEach(serie => {\n const points = [];\n\n serie.data.forEach(point => {\n if (point.x === this.x && point.y === this.y) {\n points.push({\n name: point.name,\n zone: point.options.zone, // exists if the point is the zone's point (don't know why 'zone' is in 'options' whereas 'batiments' is not\n batiments: point.batiments, // exists if the site has some zones but they are merged on the site's point\n });\n }\n });\n\n /**\n * if other points were found in this serie with the same (x, y), note the serie's name and sites' names\n * $series for the point (x: 0, y: 10) can look like\n * [ {\n * name: 'Ile-de-France',\n * points: [\n * {\n * name : \"Crèche de Belleville\",\n * batiments: null\n * },\n * {\n * name : \"Ecole primaire Saint Jean\",\n * batiments: [...]\n * }\n * ]\n * }\n * ]\n */\n if (points.length) {\n series.push({\n name: serie.name,\n points,\n });\n }\n });\n\n const unitX = this.series.userOptions.unitX;\n const unitY = this.series.userOptions.unitY;\n\n const unitTypeX = this.series.userOptions.unitTypeX;\n const unitTypeY = this.series.userOptions.unitTypeY;\n\n const mean = that.statisticsComponent.statistics.mean;\n\n let markup = `
`;\n\n series.forEach(serie => {\n serie.points = serie.points.sort(sortListAlphabetically);\n\n // if different series had sites for the same (x,y) (ex: Ile-de-France, Auvergne, Corse)\n // --> display the serie's names (Ile-de-France, Auvergne, Corse) because the point color on the graph only refers to the first serie (ex: Ile-de-France)\n if (series.length > 1) {\n markup += `
${serie.name}

`;\n }\n\n serie.points.forEach(site => {\n markup += `
${site.name}
`;\n markup += site.zone ? `
${site.zone}
` : '';\n\n // if the site has zones, add them to the tooltip in a table, between the site's name and the site's global conso\n if (site.batiments) {\n markup += `
\n \n \n \n \n \n \n `;\n site.batiments.forEach(zone => {\n // if mean is 0, the point's value is 0 and its difference with the mean is 0%\n const ratioZoneMeanX = mean.x ? ((zone.x - mean.x) / mean.x) * 100 : 0;\n const ratioZoneMeanY = mean.y ? ((zone.y - mean.y) / mean.y) * 100 : 0;\n\n if (that.isShowingStatistics) {\n markup += `\n \n \n \n \n `;\n } else {\n markup += `\n \n \n \n \n `;\n }\n });\n\n markup += `
${zone.name}\n ${that.chartService.getNumberToDisplay(zone.y, unitY, unitTypeY)} \n (${that.chartService.getNumberToDisplay(ratioZoneMeanY, '%')})\n \n ${that.chartService.getNumberToDisplay(zone.x, unitX, unitTypeX)} \n (${that.chartService.getNumberToDisplay(ratioZoneMeanX, '%')}) \n
${zone.name}${that.chartService.getNumberToDisplay(\n zone.y,\n unitY,\n unitTypeY\n )}${that.chartService.getNumberToDisplay(\n zone.x,\n unitX,\n unitTypeX\n )}
`;\n }\n });\n });\n\n function sortListAlphabetically(siteA, siteB) {\n return siteA.name > siteB.name ? 1 : siteA.name < siteB.name ? -1 : 0;\n }\n\n const ratioMeanX = mean.x ? ((this.x - mean.x) / mean.x) * 100 : 0;\n const ratioMeanY = mean.y ? ((this.y - mean.y) / mean.y) * 100 : 0;\n\n if (that.isShowingStatistics) {\n return (\n markup +\n `\n
\n
\n ${that.chartService.getNumberToDisplay(this.y, unitY, unitTypeY)} \n (${that.chartService.getNumberToDisplay(ratioMeanY, '%')})*\n
\n
\n ${that.chartService.getNumberToDisplay(this.x, unitX, unitTypeX)} \n (${that.chartService.getNumberToDisplay(ratioMeanX, '%')})*\n
\n
\n\n
* écart par rapport à la moyenne en %
\n `\n );\n } else {\n return (\n markup +\n `\n
\n
${that.chartService.getNumberToDisplay(this.y, unitY, unitTypeY)}
\n
${that.chartService.getNumberToDisplay(this.x, unitX, unitTypeX)}
\n
\n `\n );\n }\n };\n }\n\n // redirection on the site's profile when clicking on a graph point\n createChartClickEvent() {\n this.scatterPlotProperties.options.plotOptions.series = {\n turboThreshold: 0,\n cursor: 'pointer',\n point: {\n events: {\n click() {\n location.href = '#/energie/profil/' + this.options.id;\n },\n },\n },\n };\n }\n\n /**\n * Handle a change in the format selection\n */\n onFormatChanged() {\n if (this.hasDataForChart()) {\n this.handleScatterPlotChart();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { SharedModule } from '../../../shared/shared.module';\nimport { CrossDataComponent } from './cross-data.component';\n\nconst MONITORING_ROUTE = [\n {\n path: '',\n component: CrossDataComponent,\n canActivate: [AccessGuard],\n data: { page: 'analyse' },\n },\n];\n\n@NgModule({\n declarations: [CrossDataComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(MONITORING_ROUTE)],\n})\nexport class CrossDataModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { CompaniesService } from '../../../shared/services/companies/companies.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\n@Injectable()\nexport class CrossDataService extends PageService {\n constructor(public apiService: ApiService, private companiesService: CompaniesService) {\n super(apiService);\n }\n\n /**\n * Return the company's available properties.\n */\n async getSitesProperties(): Promise {\n const res = await this.get('/api/sites/company/available/properties');\n return res.data;\n }\n\n getCompanyUsers(companyId, userTypesAllowed = null, companyRolesAllowed = null) {\n return this.companiesService.getCompanyUsers(companyId, userTypesAllowed, companyRolesAllowed);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2JpbGxzLWNvbnRyb2wvYmlsbHMtY29udHJvbC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BillsControlTab } from 'app/shared/components/bills/bills-control/bills-control-tabs/bills-control-tabs.interface';\nimport { UsersService } from 'app/shared/services/users/users.service';\n@Component({\n selector: 'app-bills-control',\n templateUrl: './bills-control.component.html',\n styleUrls: ['./bills-control.component.scss'],\n})\nexport class BillsControlComponent implements OnInit {\n selectedTab: BillsControlTab = null;\n tabs: BillsControlTab[] = [];\n\n isLoading = true;\n\n constructor(public route: ActivatedRoute, public router: Router, private usersService: UsersService) {}\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.initData(params);\n });\n }\n\n initData(params) {\n if (params && params['tab']) {\n const selectedTabKey = params['tab'];\n\n this.isLoading = false;\n\n this.initTabs();\n\n this.selectTab(selectedTabKey);\n }\n }\n\n /**\n * Initialize the tabs with an array of AdminTabs.\n * Visibility and editing rights depend on the user's type and whether he belongs to the company or not.\n */\n initTabs() {\n this.tabs = [\n {\n key: 'factures',\n name: 'contrôle des factures',\n featureKey: 'bills-controls.controls',\n canUserView: true,\n },\n {\n key: 'completude-donnees',\n name: 'complétude des données',\n featureKey: 'bills-controls.completeness',\n canUserView: this.usersService.isSessionUserFromCitron(),\n },\n ];\n }\n\n /**\n * Set the correct tab based on URL\n * @param {string} tabKey - name in the url after the user's id, match a key in the tabs list\n */\n selectTab(tabKey: string) {\n this.selectedTab = this.tabs.find(t => t.key === tabKey);\n\n // If the url is wrong, redirect to homepage\n if (!this.selectedTab) {\n this.router.navigate(['/accueil']);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { BillsControlComponent } from './bills-control.component';\n\nconst BILLS_CONTROL_ROUTE = [\n {\n path: '',\n component: BillsControlComponent,\n canActivate: [],\n },\n];\n\n@NgModule({\n imports: [CommonModule, SharedModule, RouterModule.forChild(BILLS_CONTROL_ROUTE)],\n declarations: [BillsControlComponent],\n})\nexport class BillsControlModule {}\n","export default \".filters {\\n padding: 1rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2JpbGxzL2JpbGxzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9iaWxscy9iaWxscy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLGFBQUE7QUNGSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2JpbGxzL2JpbGxzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbi5maWx0ZXJzIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuIiwiLmZpbHRlcnMge1xuICBwYWRkaW5nOiAxcmVtO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\n\n// interfaces\nimport { FiltersAvailable, Option, QueryFilter } from 'app/shared/models/bills-contracts-filter.interface';\nimport { BillPopulated } from 'app/shared/models/bills.interface';\nimport { Pagination, QueryPagination } from 'app/shared/models/pagination.interface';\n\n// services\nimport { PaginationBackService } from 'app/shared/components/pagination/back/pagination-back.service';\nimport { BillsListService } from 'app/shared/services/bills-list/bills-list.service';\nimport { BillsVerificationsService } from 'app/shared/services/bills/bills-verifications.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\n\n@Component({\n selector: 'ga-bills',\n templateUrl: './bills.component.html',\n styleUrls: ['./bills.component.scss'],\n providers: [PaginationBackService],\n})\nexport class BillsComponent implements OnInit {\n /**\n * Bills to display\n */\n public bills: BillPopulated[] = [];\n\n /**\n * Is currenlty loading bills\n */\n public isLoadingBills = true;\n\n /**\n * Pagination\n */\n private pagination: Pagination = {\n lastItem: {\n _id: null,\n index: 0,\n },\n };\n\n /**\n * Filters configuration\n */\n public filtersAvailable: FiltersAvailable;\n\n /**\n * Is currenlty loading filter values\n */\n public isLoadingFilters = true;\n\n /**\n * Filter query built from the selected filter values\n */\n public filters: QueryFilter;\n\n /**\n * @type {boolean} - isBranchesLoaded is used to set filters available values from requested company and its branches\n */\n private isBranchesLoaded = false;\n\n constructor(\n private energyService: EnergyService,\n private filterService: FilterService,\n private sessionService: SessionService,\n private paginationService: PaginationBackService,\n private billsListService: BillsListService,\n private billsVerificationsService: BillsVerificationsService\n ) {}\n\n ngOnInit(): void {\n this.initData();\n }\n\n async initData() {\n try {\n await this.initFilters();\n } catch (err) {\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des factures. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n throw JSON.stringify(err);\n }\n }\n\n /**\n * Set the list of bills displayed, using filters & pagination.\n * @return {Promise}\n */\n async setBills(): Promise {\n try {\n // set loading and empty pagination during loading\n this.isLoadingBills = true;\n\n const result = await this.getBills();\n\n initCollapse(result.results);\n this.bills = result.results;\n\n // update pagination with the new total number of elements\n this.paginationService.updateLastItem(this.pagination.lastItem, this.bills);\n this.paginationService.updateAfterSearch(result.total);\n\n // stop loading\n this.isLoadingBills = false;\n } catch (e) {\n this.bills = [];\n\n // reset pagination to first page for an empty array\n this.paginationService.emptyPagination();\n this.isLoadingBills = false;\n\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des factures. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n throw JSON.stringify(e);\n }\n\n function initCollapse(billsUploads: BillPopulated[]) {\n billsUploads.forEach((bill: BillPopulated) => {\n bill.isExpanded = false;\n });\n }\n }\n\n /**\n * Get data to bills uploads to display for filters and pagination.\n */\n async getBills(): Promise<{\n results: BillPopulated[];\n total: number;\n }> {\n const queryPagination: QueryPagination = this.paginationService.getPaginationQuery(this.pagination.lastItem);\n const result = await this.billsListService.getUploadsBillsPopulated(this.filters, queryPagination);\n this.billsListService.formatBillsUpload(result.results);\n return result;\n }\n\n /**\n * Called when pagination is updated (selected page or nb of items per pages).\n * Load the updated bills.\n */\n async onPaginationChanged(event = { resetLastItem: false }) {\n if (event.resetLastItem) {\n this.paginationService.updateLastItem(this.pagination.lastItem, []);\n }\n await this.setBills();\n }\n\n /**\n * ************ FILTERS ************\n */\n\n async initFilters() {\n await this.setFilters();\n this.isLoadingFilters = false;\n }\n\n /**\n * Called when filter has changed. Fill the table with new values for the new filters.\n * @param {{start: string; end: string; query: string, fluids?: string[], providers: string[]}} filters\n * @return {Promise}\n */\n async onFilterChanged(filters: QueryFilter): Promise {\n this.filters = filters;\n\n const loadBranches = _.get(this.filters, 'includeBranches', false);\n if ((loadBranches && !this.isBranchesLoaded) || (!loadBranches && this.isBranchesLoaded)) {\n this.isBranchesLoaded = !this.isBranchesLoaded;\n await this.setFilters({ loadBranches });\n }\n\n // reset pagination to first page\n this.paginationService.setFirstPage();\n // Reset last item\n this.pagination.lastItem = { _id: null, index: 0 };\n\n // get data for new filter values\n await this.setBills();\n }\n\n /**\n * set filters\n * @param {{loadBranches: boolean}} param\n */\n async setFilters(param: { loadBranches: boolean } = { loadBranches: false }) {\n const currentCompany = this.sessionService.getCompany();\n\n const [fluids, years, providers] = await Promise.all([\n this.energyService.getFluidsAvailable(currentCompany._id, param),\n this.filterService.getYearsWithData(true, param),\n this.filterService.getContractProviders(currentCompany._id, param),\n ]);\n\n let yearsMin = null;\n let yearsMax = null;\n if (years && years.length) {\n yearsMin = years[0].value;\n yearsMax = years[years.length - 1].value;\n } else {\n const currentYear = new Date().getFullYear();\n yearsMin = currentYear.toFixed(0);\n yearsMax = currentYear.toFixed(0);\n }\n\n // set selected fluids compared to available fluids\n if (this.filters && this.filters.fluids) {\n this.filters.fluids = _.intersection(this.filters.fluids, fluids);\n }\n\n // set selected providers compared to available providers\n if (this.filters && this.filters.providers) {\n this.filters.providers = _.intersection(this.filters.providers, providers.data);\n }\n\n this.filtersAvailable = {\n searchValue: {\n enabled: true,\n placeholder: 'N° de facture / n° de PDL / immatriculation',\n },\n years: {\n enabled: true,\n yearsMin,\n yearsMax,\n setDefault: true,\n allowMissingBound: false,\n },\n fluids: {\n enabled: true,\n values: fluids,\n },\n providers: {\n enabled: true,\n values: providers.data,\n },\n branches: {\n enabled: true,\n },\n failedVerifications: {\n label: 'extraction_verifications',\n placeholder: 'Type de contrôles',\n enabled: true,\n values: this.getFormatedExtractionVerifications(),\n tooltip:\n 'Ce filtre permet d’afficher uniquement les factures présentant une erreur sur l’un des types de contrôles sélectionnés',\n },\n };\n }\n\n /**\n * get extraction verifications - grouped by category - and format them to display as select options groups in a filter\n * @returns {{[group: string]: Option[]}} An array of select options grouped by category\n */\n getFormatedExtractionVerifications(): { [group: string]: Option[] } {\n // Fetch verificationConfigs grouped by verification group\n const groupedConfigs = this.billsVerificationsService.getGroupedVerificationConfigs();\n const formattedVerifications: { [group: string]: Option[] } = {};\n\n // Iterating over each verification config to format it as a select Option\n Object.keys(groupedConfigs).forEach(groupName => {\n formattedVerifications[groupName] = groupedConfigs[groupName].map(config => {\n return {\n value: config.key,\n name: config.message,\n };\n });\n });\n\n return formattedVerifications;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { BillsComponent } from './bills.component';\n\nconst BILLS_ROUTE = [\n {\n path: '',\n component: BillsComponent,\n canActivate: [AccessGuard],\n },\n];\n\n@NgModule({\n declarations: [BillsComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(BILLS_ROUTE)],\n})\nexport class BillsModule {}\n","export default \".margin-bottom {\\n margin-bottom: 25px;\\n}\\n\\n.data-tiles-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n flex-wrap: wrap;\\n width: 100%;\\n padding: 12px 6px;\\n}\\n\\n.data-tile {\\n cursor: pointer;\\n margin: 0 5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2NhcnRvZ3JhcGh5L2NhcnRvZ3JhcGh5LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9jYXJ0b2dyYXBoeS9jYXJ0b2dyYXBoeS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG1CQUFBO0FDQ0o7O0FERUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtFQUNBLGVBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7QUNDSjs7QURFQTtFQUNJLGVBQUE7RUFDQSxhQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9jYXJ0b2dyYXBoeS9jYXJ0b2dyYXBoeS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tYXJnaW4tYm90dG9tIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uZGF0YS10aWxlcy1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTJweCA2cHg7XG59XG5cbi5kYXRhLXRpbGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW46IDAgNXB4O1xufVxuIiwiLm1hcmdpbi1ib3R0b20ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uZGF0YS10aWxlcy1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC13cmFwOiB3cmFwO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTJweCA2cHg7XG59XG5cbi5kYXRhLXRpbGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbjogMCA1cHg7XG59Il19 */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Site } from './cartography.interface';\nimport { CartographyService } from './cartography.service';\n\nimport { DataSearchListComponent } from 'app/shared/components/cartography/data-search-list/data-search-list.component';\nimport { SiteDisplay } from 'app/shared/components/cartography/data-search-list/data-search-list.interface';\nimport { Marker } from 'app/shared/models/marker.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { CartographyTile, TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { FilterQuery } from '../../shared/components/common/filter/filter.component';\n\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport * as moment from 'moment';\n\n@Component({\n selector: 'ga-cartography',\n templateUrl: './cartography.component.html',\n styleUrls: ['./cartography.component.scss'],\n providers: [CartographyService],\n})\nexport class CartographyComponent implements OnInit {\n public sites: SiteDisplay[] = [];\n public markers: Marker[] = [];\n public dataTiles: CartographyTile[] = [];\n\n public filterName = 'cartographie';\n public filterSubtitle = \"Personnalisez l'affichage de vos contrats\";\n\n /** Energy Tile that is currently selected */\n private selectedTile: CartographyTile = null;\n /** Fluid type that is currently being filtered */\n private selectedFluid: string = null;\n\n /**\n * Options object for map component\n * Params: zoom, lat, lng, height\n */\n public mapOptions = {\n zoom: 8,\n lat: 49.894067,\n lng: 2.2957529999999906,\n height: 600,\n };\n\n private queryExport: FilterQuery;\n private loading = true;\n @ViewChild(DataSearchListComponent, { static: false })\n private listComponent: DataSearchListComponent;\n\n /**\n * Current company selected\n */\n public company: string = null;\n\n constructor(\n private sessionService: SessionService,\n private cartographyService: CartographyService,\n private tilesService: TilesService,\n private mapService: MapService,\n private energyService: EnergyService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n // At init, the filter already emit a search event, so no need to do it twice\n ngOnInit() {}\n\n /**\n * Initialise a search of the sites matching current filters,\n * accessible from the filter component\n * @param {FilterQuery} filters\n */\n public search(filters: FilterQuery) {\n this.getSites(filters);\n }\n\n /**\n * Process a new search of the sites matching current filters. Update sites.\n * @param {FilterQuery} filters\n * @param {string} filters.regions - area to filter the sites on\n * @param {string} filters.energies - fluid to filter the sites on\n * @param {string} filters.companies - company to filter the sites on (in the case of holding vs branches)\n */\n private async getSites(filters: FilterQuery): Promise {\n // update export query filters from current ones\n this.queryExport = filters;\n\n // Remove'energies' param from filters to get all sites,\n // in order to count PDLs, without modifying original filters.\n const newFilters: FilterQuery = { ...filters };\n\n if (newFilters.energies) {\n this.selectedFluid = newFilters.energies.toString();\n delete newFilters.energies;\n } else if (this.selectedFluid) {\n // No fluid in query params but a fluid was previously selected : deselect it\n this.selectedFluid = null;\n }\n\n if (newFilters && newFilters.companies) {\n this.company = newFilters.companies.toString();\n }\n\n // Perform the sites research with filters\n const sites: Site[] = await this.cartographyService.getSites(newFilters);\n\n this.processSites(sites);\n\n if (this.listComponent) {\n this.listComponent.refreshList(this.sites);\n }\n this.loading = false;\n }\n\n /**\n * Update the counts of routing references of the given fluid.\n * Update total count and the site's count.\n * @param {string} energy\n * @param {{[fluid:string] : number}} totalCount\n * @param {{[fluid:string] : number}} siteCount\n */\n updateCountsForEnergy(\n energy: string,\n totalCount: { [fluid: string]: number },\n siteCount: { [fluid: string]: number }\n ) {\n if (siteCount.hasOwnProperty(energy) && totalCount.hasOwnProperty(energy)) {\n siteCount[energy]++;\n totalCount[energy]++;\n }\n }\n\n /**\n * 1. Count PDLs for all sites and filter sites if a filter is active.\n * 2. Process data to display for each site: address, basic info\n * 3. Update markers.\n * 4. Sort alphabtelically on sites' complement or name.\n * 5. Update fluid tiles with the number of routing references / vehicles.\n * @param {Site[]} sites\n */\n processSites(sites: Site[]) {\n this.markers = [];\n\n /**\n * 1. Count PDLs for all sites and filter sites array if a filter is active\n */\n const total: { [fluid: string]: number } = {};\n const active: { [fluid: string]: number } = {};\n this.energyService.getAllFluids().forEach(fluid => (total[fluid] = active[fluid] = 0));\n\n // Use array.reduce to filter out unwanted sites\n this.sites = sites.reduce((memo: SiteDisplay[], site: Site) => {\n const countSiteFluids: { [fluid: string]: number } = {};\n\n this.energyService.getAllFluids().forEach(fluid => (countSiteFluids[fluid] = 0));\n\n /** Boolean checking if site has entity (RRef/Vehicle) of the fluid type that is being filtered */\n let hasFilteredEntity = false;\n\n site.routingReferences.forEach(rf => {\n if (rf) {\n // If an energy filter is active, check if site has PDLs of that energy type\n if (this.selectedFluid && this.selectedFluid === rf.energyType) {\n hasFilteredEntity = true;\n }\n\n // Update energy count\n this.updateCountsForEnergy(rf.energyType, total, countSiteFluids);\n if (rf.status && rf.status.active) {\n active[rf.energyType]++;\n }\n }\n });\n site.vehicles.forEach(veh => {\n if (veh) {\n // If an fuel filter is active, check if site has vehicle\n if (this.selectedFluid && this.selectedFluid === 'fuel') {\n hasFilteredEntity = true;\n }\n\n // Update fuel count\n this.updateCountsForEnergy('fuel', total, countSiteFluids);\n // Vehicle with date out in the futur and date in in the past are considered as active\n const now = moment();\n const dateInCheck = Boolean(!veh.dateIn || moment(veh.dateIn).isSameOrBefore(now));\n const dateOutCheck = Boolean(!veh.dateOut || moment(veh.dateOut).isSameOrAfter(now));\n if (dateInCheck && dateOutCheck) {\n active.fuel++;\n }\n }\n });\n\n // If no fluid filter is active or if the site has entities that passed the filter\n if (!this.selectedFluid || (this.selectedFluid && hasFilteredEntity)) {\n /**\n * 2. Process address, info on each site.\n */\n // address & name\n const streetNumber = site.streetNumber || '';\n const zipcode = site.zipcode || '';\n const address = site.city ? `${streetNumber} ${site.streetName} ${zipcode} ${site.city}` : '';\n const name = site.name;\n\n // create info to display for the site.\n const info: SiteDisplay = {\n complement: site.complement || 'NC',\n address,\n name,\n vehicles: site.vehicles,\n routingReferences: site.routingReferences,\n id: site._id,\n infoFluids: countSiteFluids,\n code: site.code,\n };\n\n /**\n * 3. Update markers\n */\n this.updateMarkers(site, info);\n // Add site to filtered site array\n memo.push(info);\n }\n\n return memo;\n }, []);\n\n /**\n * 4. Sort alphabtelically on sites' complement or name\n */\n this.sites.sort((a, b) => {\n const valA = a.complement || a.name ? a.complement || a.name : '';\n const valB = b.complement || b.name ? b.complement || b.name : '';\n return valA.localeCompare(valB);\n });\n\n /**\n * 5. Update tiles\n */\n this.processDataTiles(total, active);\n }\n\n /**\n * Create tiles from total\n * @param {{[fluid: string]: number}} total - number of routing references / vehicles found per fluid\n * @param {{[fluid: string]: number}} active - number of active routing references / vehicles found per fluid\n * @returns {CartographyTile[]} tiles for the fluids having data\n */\n processDataTiles(total: { [fluid: string]: number }, active: { [fluid: string]: number }) {\n this.dataTiles = Object.keys(total)\n .filter(fluid => total[fluid] !== 0) // create tile when count is > 0\n .map(fluid => this.tilesService.generateCartoTile(fluid, total[fluid], active[fluid], this.selectedFluid));\n\n // Check if a tile is selected and store its reference\n this.selectedTile = this.dataTiles.find(tile => tile.selected);\n }\n\n /**\n * Update markers info from sites\n * @param {Site} site\n * @param {any} info\n */\n updateMarkers(site: Site, info: any) {\n const siteForMarker = this.mapService.getSiteDataForMarkersAddress(site);\n siteForMarker['infoFluids'] = info.infoFluids;\n\n const energies = this.energyService.getAllEnergies();\n const liquids = this.energyService.getAllLiquids();\n\n const hasOnlyWater =\n !energies.some(x => Boolean(info.infoFluids[x])) && liquids.some(x => Boolean(info.infoFluids[x]));\n this.markers.push({\n lat: site.latitude,\n lng: site.longitude,\n config: 'carto',\n data: siteForMarker,\n type: hasOnlyWater ? 'water' : 'elec',\n });\n }\n\n /**\n * Get url for export, null if query is undefined.\n */\n getExportRRefBySiteUrl(): string | null {\n if (this.queryExport) {\n let url = `/api/export/excel/sites?energies=`;\n url += this.queryExport.energies ? `${this.queryExport.energies}` : '';\n url += this.queryExport.regions ? `®ions=${this.queryExport.regions}` : '';\n url += `&companies=${this.queryExport.companies || this.sessionService.getCompany()._id}`;\n return url;\n }\n return null;\n }\n\n /**\n * Get url for export, null if query is undefined.\n */\n getExportLegacyDataBySiteUrl(): string | null {\n if (this.queryExport) {\n let url = `/api/export/excel/sites/legacy-data?energies=`;\n url += this.queryExport.energies ? `${this.queryExport.energies}` : '';\n url += this.queryExport.regions ? `®ions=${this.queryExport.regions}` : '';\n url += `&companies=${this.queryExport.companies || this.sessionService.getCompany()._id}`;\n return url;\n }\n return null;\n }\n\n /**\n * Get clean name for export with current date at the end '-YYYYMMDD'\n * @param {string} txt\n */\n getExportName(txt: string): string {\n const date = moment()\n .format('YYYYMMDD')\n .toString();\n return `${txt}-${date}.xlsx`;\n }\n\n /**\n * Return the right to display table: if nothing loading and sites found.\n */\n canShowTable(): boolean {\n return Boolean(!this.loading && this.sites && this.sites.length);\n }\n\n /**\n * Handles the selection and deselection of an energy Tile,\n * and restarts the cartography filtering process.\n * @param {CartographyTile} clickedTile Fluid Tile that is being clicked\n */\n async handleTileSelection(clickedTile: CartographyTile): Promise {\n clickedTile.selected = !clickedTile.selected;\n\n // If clicked Tile is different from previously selected tile, deselect the previous one\n if (this.selectedTile && this.selectedTile.type !== clickedTile.type) {\n this.selectedTile.selected = false;\n }\n\n if (clickedTile.selected) {\n this.selectedTile = clickedTile;\n } else {\n this.selectedTile = null;\n this.selectedFluid = null;\n }\n\n // changes the route without moving from the current view or triggering a navigation event\n await this.router.navigate([], {\n relativeTo: this.route,\n queryParams: { en: this.selectedTile ? this.selectedTile.type : null },\n queryParamsHandling: 'merge',\n skipLocationChange: false,\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { CartographyComponent } from './cartography.component';\n\nconst CARTOGRAPHY_ROUTE = [\n {\n path: '',\n component: CartographyComponent,\n canActivate: [AccessGuard],\n data: { redirectionForbiddenUrl: '/accueil' },\n },\n];\n\n@NgModule({\n declarations: [CartographyComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(CARTOGRAPHY_ROUTE)],\n})\nexport class CartographyModule {}\n","import { Injectable } from '@angular/core';\nimport { FilterQuery } from 'app/shared/components/common/filter/filter.component';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { Site } from './cartography.interface';\n\n@Injectable()\nexport class CartographyService extends PageService {\n constructor(public apiService: ApiService, private sessionService: SessionService) {\n super(apiService);\n this.fake = false;\n }\n\n /**\n * Return sites filtered from filters.\n * @param {FilterQuery} filters\n * @param {string} filters.regions - area to filter the sites on\n * @param {string} filters.energies - fluid to filter the sites on\n * @param {string} filters.companies - companies to filter the sites on (in the case of holding vs branches)\n * @param {string} filters.companyId - company to filter sites on if companies not set\n */\n async getSites(filters: FilterQuery = {}): Promise {\n try {\n const companyId: string = filters['companyId'] || this.sessionService.getCompany()._id;\n const sites = await this.post(`/api/companies/${companyId}/sites`, filters);\n return sites.data;\n } catch (e) {\n e.error_code = 'error_load_sites';\n throw e;\n }\n }\n}\n","export default \".btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.citron-btn {\\n font-size: 14px;\\n padding: 10px 16px;\\n margin: 0 5px 0 5px;\\n}\\n\\n.citron-btn:disabled {\\n cursor: not-allowed !important;\\n background: #dddddd;\\n}\\n\\n.bloc-autocomplete .border-right {\\n border-right: 1px solid lightgrey;\\n}\\n\\n.waiting {\\n cursor: wait;\\n}\\n\\n.group__loader {\\n margin-top: 10px;\\n}\\n\\n.select-group-row {\\n font-size: 0.875rem;\\n}\\n\\n.extract_selection {\\n display: -webkit-box;\\n display: flex;\\n padding: 10px 8px;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n\\n.filters-section {\\n display: -webkit-box;\\n display: flex;\\n margin: 0.5rem 0.5rem 0.5rem 20px;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.filters-section label {\\n font-size: 0.75rem;\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\\n.filters-section select,\\n.filters-section input {\\n font-size: 12px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2NvbGxlY3QvY29sbGVjdC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvY29sbGVjdC9jb2xsZWN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtBQ0RKOztBRElBO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7QUNESjs7QURHSTtFQUNJLDhCQUFBO0VBQ0EsbUJBQUE7QUNEUjs7QURNSTtFQUNJLGlDQUFBO0FDSFI7O0FET0E7RUFDSSxZQUFBO0FDSko7O0FET0E7RUFDSSxnQkFBQTtBQ0pKOztBRE9BO0VBQ0ksbUJBakNJO0FDNkJSOztBRE9BO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsaUJBQUE7RUFDQSxxQkFBQTtVQUFBLHlCQUFBO0FDSko7O0FET0E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxpQ0FBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7QUNKSjs7QURLSTtFQUNJLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtBQ0hSOztBREtJOztFQUVJLGVBQUE7QUNIUiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2NvbGxlY3QvY29sbGVjdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiRzaXplMTogMC44NzVyZW07XG5cbi5idG4tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIG1hcmdpbjogMCA1cHggMCA1cHg7XG5cbiAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZGRkZGRkO1xuICAgIH1cbn1cblxuLmJsb2MtYXV0b2NvbXBsZXRlIHtcbiAgICAuYm9yZGVyLXJpZ2h0IHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgbGlnaHRncmV5O1xuICAgIH1cbn1cblxuLndhaXRpbmcge1xuICAgIGN1cnNvcjogd2FpdDtcbn1cblxuLmdyb3VwX19sb2FkZXIge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG59XG5cbi5zZWxlY3QtZ3JvdXAtcm93IHtcbiAgICBmb250LXNpemU6ICRzaXplMTtcbn1cblxuLmV4dHJhY3Rfc2VsZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBhZGRpbmc6IDEwcHggOHB4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi5maWx0ZXJzLXNlY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luOiAwLjVyZW0gMC41cmVtIDAuNXJlbSAyMHB4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBsYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgIH1cbiAgICBzZWxlY3QsXG4gICAgaW5wdXQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxufVxuIiwiLmJ0bi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBtYXJnaW46IDAgNXB4IDAgNXB4O1xufVxuLmNpdHJvbi1idG46ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG59XG5cbi5ibG9jLWF1dG9jb21wbGV0ZSAuYm9yZGVyLXJpZ2h0IHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgbGlnaHRncmV5O1xufVxuXG4ud2FpdGluZyB7XG4gIGN1cnNvcjogd2FpdDtcbn1cblxuLmdyb3VwX19sb2FkZXIge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuXG4uc2VsZWN0LWdyb3VwLXJvdyB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5leHRyYWN0X3NlbGVjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDEwcHggOHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uZmlsdGVycy1zZWN0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luOiAwLjVyZW0gMC41cmVtIDAuNXJlbSAyMHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG4uZmlsdGVycy1zZWN0aW9uIGxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDFyZW07XG59XG4uZmlsdGVycy1zZWN0aW9uIHNlbGVjdCxcbi5maWx0ZXJzLXNlY3Rpb24gaW5wdXQge1xuICBmb250LXNpemU6IDEycHg7XG59Il19 */\"","import { AutoCompleteItem } from 'app/shared/components/common/ultra-simple-autocomplete/ultra-simple-autocomplete.interface';\nimport { InputModalComponent } from 'app/shared/components/modals/input-modal/input-modal.component';\nimport { UnknownFile } from 'app/shared/components/regex/not-find-table/not-find-table.interface';\nimport { UploadsMapping } from 'app/shared/components/regex/recap-files/recap-files.interface';\nimport { UploadFilesTileComponent } from 'app/shared/components/upload/upload-files-tile/upload-files-tile.component';\nimport { ExtractErrorList } from 'app/shared/constants/extract-error-list.constants';\nimport { UploadErrorList } from 'app/shared/constants/upload-error-list.constants';\nimport { UploadStateList } from 'app/shared/constants/upload-state-list.constants';\nimport { ErrorUploadObject } from 'app/shared/models/error-upload-object.interface';\nimport {\n ContractUploadsGroup,\n File,\n ForceType,\n Upload,\n UploadChunkRecap,\n UploadFile,\n} from 'app/shared/models/upload-file.interface';\nimport { UploadGroup } from 'app/shared/models/upload-group.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { NotificationsService } from 'app/shared/services/notifications/notifications.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport * as BlueBird from 'bluebird';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\n\nimport { Location } from '@angular/common';\nimport { HttpEventType } from '@angular/common/http';\nimport { Component, EventEmitter, HostListener, OnInit, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { selectedFilesToExtractFileParams as getSelectedFiles } from './collect.helper';\nimport { ExtractFileParams, Loading, StateTile } from './collect.interface';\nimport { CollectService } from './collect.service';\n\nconst globalStates = {\n NOTHING: 'nothing',\n DOING: 'doing',\n DONE: 'done',\n};\n\n@Component({\n selector: 'ga-collect',\n templateUrl: './collect.component.html',\n styleUrls: ['./collect.component.scss'],\n providers: [CollectService],\n})\nexport class CollectComponent implements OnInit {\n @ViewChild('upload', { static: true }) private uploadComponent: UploadFilesTileComponent;\n @ViewChild('groupModal', { static: true }) private groupModal: InputModalComponent;\n @ViewChild('groupEditModal', { static: true }) private groupEditModal: InputModalComponent;\n @ViewChild('groupDeleteModal', { static: true }) private groupDeleteModal: InputModalComponent;\n @ViewChild('groupReExtractModal', { static: true }) private groupReExtractModal: InputModalComponent;\n\n files: Upload[] = [];\n group: any;\n dataArray: ContractUploadsGroup[] = [];\n unknownFiles: UnknownFile[] = [];\n groupList: UploadGroup[] = [];\n /**\n * List of items matching search (for upload search to set group)\n */\n public searchUploadList: AutoCompleteItem[] = [];\n actualState = '';\n isPageDisabled = false;\n isDragAndDropDisabled = false;\n isExtractSelectionDisabled = true;\n temporaryFiles: File[] = [];\n selectedGroupType: any = {};\n indexSelectedGroupType = 0;\n indexSelectedFile = -1;\n\n patternsPropertiesData: any[] = [];\n recapFilesData: UploadChunkRecap[][] = [];\n energyType = '';\n\n // modal values\n modalError = '';\n modalValue = '';\n modalEditError = '';\n modalDeleteError = '';\n modalReExtractError = '';\n filterType = 'all';\n filteredFiles = [];\n filteredRecapFilesData = [];\n filteredPatternsPropertiesData = [];\n filteredDataArray = [];\n\n uploadTilesData: {\n [state: string]: StateTile;\n } = {\n [globalStates.NOTHING]: {\n label: 'Glissez et déposez vos fichiers',\n subLabel: \"On s'occupe de tout !\",\n imgUrl: '/assets/img/pictos-svg/picto_citron.svg',\n },\n [globalStates.DOING]: {\n label: 'Extraction des données en cours',\n subLabel: \"et si vous profitiez d'une pause pendant ce temps ?\",\n imgUrl: '/assets/img/pictos-svg/picto_juicer_1.svg',\n },\n [globalStates.DONE]: {\n label: \"C'est déja terminé !\",\n subLabel: \"Vous pouvez voir l'ensemble de vos données sur les autres pages de la plateforme\",\n imgUrl: '/assets/img/pictos-svg/picto_lemonade_1.svg',\n },\n };\n\n tableState: any = {\n property: {\n isOpen: true,\n },\n recap: {\n isOpen: true,\n },\n };\n\n loading: Loading = {\n tableProperties: false,\n tableRecap: false,\n group: false,\n };\n /** default identification pattern that will be set to chunk if it doesn't have any */\n private readonly jsonIdentificationPatternDefault = {\n _id: 'NC',\n provider: {\n name: 'NC',\n },\n contractType: {\n name: 'NC',\n },\n energyType: 'unknown',\n };\n\n @HostListener('window:beforeunload', ['$event']) beforeUnloadHandler(event) {\n // TODO : nice alert\n return confirm('Confirm refresh');\n }\n\n constructor(\n private collectService: CollectService,\n private energyService: EnergyService,\n private route: ActivatedRoute,\n private router: Router,\n private location: Location,\n private notificationService: NotificationsService,\n private translateService: TranslateService\n ) {}\n ngOnInit() {\n this.loading.tableProperties = true;\n // collecte/groupId?index=2\n this.route.queryParams.subscribe(queryParams => {\n if (!queryParams.hasOwnProperty('index')) {\n this.indexSelectedGroupType = 0;\n } else if (queryParams.index !== this.indexSelectedGroupType) {\n this.indexSelectedGroupType = Number(queryParams.index);\n }\n });\n\n // handles the collect page data when the URL is changed\n this.route.params.subscribe(params => {\n // change of groupId in URL or no groupId in URL\n if (!this.group || this.group._id !== params.groupId) {\n this.reinitData();\n this.lookIntoGroup(params.groupId);\n } else {\n // select data related to the provider group and refresh the blocks data\n this.selectGroupType(this.indexSelectedGroupType);\n }\n });\n }\n\n /**\n * Search group Id and load its data\n * @param {string} groupId - group id to load\n * @returns {Promise}\n */\n async lookIntoGroup(groupId: string): Promise {\n this.loading.group = true;\n try {\n const hasGroupInList = this.groupList.some(group => group._id === groupId);\n\n if (!hasGroupInList) {\n // the group has just been created -> add the new group to this.groupList\n await this.resetGroupList();\n }\n if (groupId) {\n await this.setGroup(groupId);\n }\n this.loading.group = false;\n } catch (error) {\n this.loading.group = false;\n Swal.fire('Une erreur est survenue', 'Impossible de récupérer le groupe.', 'error');\n }\n }\n\n /**\n * Load and set selected group data\n * @todo check use of launch extract parameter, seems to be useless\n * @param {string} groupId - group id\n * @param {boolean} launchExtract - launch extract\n * @returns {Promise<*>}\n */\n async setGroup(groupId: string, launchExtract: boolean = false): Promise {\n // this.group = undefined if we come from the collect page without any group selected #/collecte\n // groupId !== this.group._id if we come from another group #/collecte/123456\n if (!this.group || groupId !== this.group._id) {\n this.group = this.groupList.find(group => group._id === groupId);\n\n if (this.group) {\n // indexSelectedGroupType comes from the optional URL parameter or is null\n // launchExtract is false if the group has just been created\n return this.getUploadsByGroup(launchExtract);\n }\n } else {\n // indexSelectedGroupType = the provider group type index\n this.selectGroupType(this.indexSelectedGroupType);\n }\n return;\n }\n\n /**\n * Navigate to the group selection page or a specific group page.\n * @param {string?} groupId - id of the group to navigate to\n */\n changeRouteUrl(groupId: string = null) {\n if (groupId) {\n this.router.navigate(['/collecte/' + groupId]);\n } else {\n this.router.navigate(['/collecte']);\n }\n }\n\n /**\n * Search upload and update list\n * @param {string} search\n */\n public async searchUpload(search: string) {\n try {\n // Search for uploads matching\n const uploads = await this.collectService.searchUpload(search);\n // Set group id as item id as when an item is selected, group will be set\n this.searchUploadList = uploads.map(x => ({ value: x.group, label: x.originalname }));\n // If none found, display no upload found message\n if (this.searchUploadList.length === 0) {\n this.searchUploadList = [{ value: null, label: this.translateService._('no_upload_found') }];\n }\n } catch (e) {\n // Display that an error occured\n this.searchUploadList = [{ value: null, label: this.translateService._('error_loading') }];\n }\n }\n\n /**\n * Handle upload selection\n * @param {AutoCompleteItem} item\n */\n public selectSearchUpload(item: AutoCompleteItem) {\n if (item && item.value) {\n // Set selected group\n this.changeRouteUrl(item.value);\n }\n }\n\n /**\n * Empty block components\n */\n reinitData() {\n this.dataArray = [];\n this.selectedGroupType = {};\n this.files = [];\n this.recapFilesData = [];\n this.patternsPropertiesData = [];\n this.unknownFiles = [];\n this.filteredFiles = [];\n this.filteredPatternsPropertiesData = [];\n this.filteredRecapFilesData = [];\n this.filteredDataArray = [];\n }\n\n // called from the modal to create a new upload group\n createGroupUpload(name): Promise {\n return this.collectService\n .createGroup(name)\n .then(response => {\n this.group = response.data;\n this.groupList = this.groupList.concat(this.group);\n this.reinitData();\n this.indexSelectedGroupType = 0;\n\n this.addFiles(this.temporaryFiles).then(() => {\n this.changeRouteUrl(this.group._id);\n });\n })\n .catch(err => {\n const openModalData: any = {\n value: name,\n };\n\n if (err.code === 422) {\n openModalData.error = 'Un groupe avec ce nom existe déjà';\n } else {\n openModalData.error = \"Une erreur est survenue, le groupe n'a pas pu être enregistré\";\n }\n\n this.openGroupModal(openModalData);\n });\n }\n\n /**\n * Update the current group name\n * @return {Promise}\n */\n async editGroupUpload(name): Promise {\n try {\n this.group = await this.collectService.updateGroup(this.group._id, name);\n this.groupList = this.groupList\n .map(item => {\n if (item._id === this.group._id) {\n return this.group;\n }\n\n return item;\n })\n .sort(this.groupListSorter);\n } catch (err) {\n const openModalData: { value: string; error: string } = {\n value: name,\n error: \"Une erreur est survenue, le groupe n'a pas pu être enregistré\",\n };\n\n if (err.code === 422) {\n openModalData.error = 'Un groupe avec ce nom existe déjà';\n }\n\n this.openGroupEditModal(openModalData);\n }\n }\n\n /**\n * Delete the current upload group with all the uploads' data.\n * @return {Promise}\n */\n async deleteGroupUpload(): Promise {\n try {\n this.isPageDisabled = true;\n const response = await this.collectService.deleteGroup(this.group._id);\n\n this.group = null;\n this.groupList = this.groupList.filter(item => {\n return item._id === response.data._id;\n });\n\n // Réinit data status\n this.reinitData();\n this.isPageDisabled = false;\n\n // Refresh notifications > number of uploads in error\n this.notificationService.refresh();\n\n // Go on the main collect url\n this.changeRouteUrl();\n } catch (err) {\n this.isPageDisabled = false;\n this.openGroupDeleteModal({ error: \"Une erreur est survenue, le groupe n'a pas pu être supprimé\" });\n }\n }\n\n /**\n * Re-extract all uploads of a upload groups\n */\n async reExtractGroupUpload(): Promise {\n try {\n this.isPageDisabled = true;\n // reset all uploads to be UNTOUCHED\n const result = await this.collectService.resetGroup(this.group._id);\n // TODO: Implement error handling as result sends 2 tables : success and error.\n\n // Refesh the data on the page after reset\n this.reinitData();\n await this.getUploadsByGroup();\n\n for (let i = 0, iLen = result.success.length; i < iLen; i++) {\n const uploadId: string = result.success[i];\n try {\n // extract upload\n const res = await this.collectService.extractFile(uploadId);\n this.updateExtractionReportData(res.data);\n } catch (error) {}\n }\n this.isPageDisabled = false;\n // Refresh the data on the page after re-extract\n this.reinitData();\n await this.getUploadsByGroup();\n } catch (err) {\n this.isPageDisabled = false;\n this.openGroupReExtractModal({ error: 'Une erreur est survenue.' });\n }\n }\n\n /**\n * Reset upload groups list. Sort groups alphabetically.\n */\n async resetGroupList(): Promise {\n try {\n const groups = await this.collectService.getGroupsByCompany();\n this.groupList = groups.sort(this.groupListSorter);\n } catch (e) {\n this.groupList = [];\n Swal.fire('Toutes nos excuses', 'Une erreur est survenue lors de la récupération des groupes', 'error');\n }\n }\n\n /**\n * Sort the elements by alphabetical order on name\n */\n groupListSorter(a: UploadGroup, b: UploadGroup): number {\n if (a && a.name && b && b.name) {\n return a.name.localeCompare(b.name);\n }\n if (a && a.name) {\n return -1;\n }\n return 1;\n }\n\n createExtractInitFunction(uploadObject: Upload, launchExtract, extractSelectedGroupType) {\n return function() {\n return new Promise(resolve => {\n // if file has a state then has never been extracted (UNTOUCHED) --> need to do it again\n // if no provider group type was specified in the URL parameter (extractSelectedGroupType === null)\n if (\n launchExtract &&\n extractSelectedGroupType === null &&\n UploadStateList[uploadObject.state] === UploadStateList.UNTOUCHED\n ) {\n const file = this.files.find(elem => elem.id === uploadObject._id);\n file.uploadId = file.id;\n this.extractFile(file).then(result => {\n resolve(result);\n });\n } else {\n resolve(null);\n }\n });\n };\n }\n\n updateValuesByFilterState() {\n if (this.filterType === 'errored') {\n this.filteredFiles = this.getErrorFiles();\n this.filteredRecapFilesData = this.getErroredRecapFilesData();\n this.filteredPatternsPropertiesData = this.getErroredPatternsPropertiesData();\n this.filteredDataArray = this.getErroredDataArray();\n } else {\n this.filteredFiles = this.files;\n this.filteredRecapFilesData = this.recapFilesData;\n this.filteredPatternsPropertiesData = this.patternsPropertiesData;\n this.filteredDataArray = this.dataArray.slice();\n }\n }\n getErrorFiles() {\n return this.files.filter(file => file.state !== 'jobs_done');\n }\n\n getErroredRecapFilesData() {\n return this.recapFilesData.filter(file => {\n return file.find(chunk => {\n return chunk.state !== 'JOBS_DONE';\n });\n });\n }\n\n getErroredPatternsPropertiesData() {\n return this.patternsPropertiesData.filter(pattern => pattern.hasPropertiesNotFound);\n }\n\n getErroredDataArray() {\n const result = this.dataArray.map(contractUploadGroup => {\n const clone = { ...contractUploadGroup };\n clone.data = contractUploadGroup.data.filter(chunk => chunk.error);\n return clone;\n });\n return result;\n }\n\n /**\n * Get uploads by group\n * @param launchExtract - true to launch extract\n * @param extractSelectedGroupType\n */\n async getUploadsByGroup(launchExtract: boolean = false, extractSelectedGroupType = null): Promise {\n try {\n const uploads = await this.collectService.getUploadsByGroup(this.group._id);\n\n if (uploads.length) {\n // Refresh component extract report and Recap File\n uploads.forEach((uploadObject: Upload) => {\n /** If an upload is being extracted, disable all extraction on page */\n if (UploadStateList[uploadObject.state] === UploadStateList.IN_PROGRESS) {\n this.isPageDisabled = true;\n }\n\n // update this.files for blocks \"Etat de l'extraction\" & \"Rapport d'extraction\"\n this.updateExtractionReportData(uploadObject);\n\n // update unknown files for Bloc 1 : Unknown files\n // update dataArray for Bloc 2 : Contracts types\n this.updateUnknownFilesAndProvidersTableData(uploadObject);\n });\n // Update dataArray forceType\n this.updateDataArrayForceType();\n\n const serialFunctions = BlueBird.resolve(\n uploads.map(uploadObject => {\n return this.createExtractInitFunction(\n uploadObject,\n launchExtract,\n extractSelectedGroupType\n ).bind(this);\n })\n );\n\n await serialFunctions.mapSeries(this.iterator);\n if (this.dataArray.length) {\n // indexSelectedGroupType = the provider group type index\n this.selectGroupType(this.indexSelectedGroupType);\n }\n }\n } catch (err) {\n Swal.fire('Toutes nos excuses', 'Une erreur est survenue lors de la récupération des fichiers', 'error');\n }\n }\n\n /**\n * Lauchn extract on selected group type\n * @param {boolean} forceExtract\n */\n async launchExtractOnSelectedGroupType(forceExtract: boolean = false) {\n const dataSelected = this.dataArray[this.indexSelectedGroupType];\n\n const result = await Swal.fire({\n title: '',\n text:\n 'Etes-vous sûr(e) de réextraire tous les fichiers du contrat ' +\n dataSelected.contractType.name +\n ' de ' +\n dataSelected.provider.name +\n ' ?',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Oui',\n cancelButtonText: 'Non',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n });\n if (result.value) {\n const filesToExtract = this.formatContractFilesToExtract(dataSelected.forceType);\n await this.extractSelectedFiles(filesToExtract, forceExtract);\n }\n }\n\n extractGroupType(index: number, forceExtract = false) {\n if (this.indexSelectedGroupType !== index) {\n this.changeGroupTypeSelected(index);\n }\n\n this.launchExtractOnSelectedGroupType(forceExtract);\n }\n\n handleUnkwownFile(upload: Upload) {\n if (!this.unknownFiles.find(x => x.id === upload._id)) {\n this.unknownFiles.push({\n id: upload._id,\n filename: upload.originalname,\n size: upload.size,\n uploadState: upload.state,\n });\n }\n }\n\n /**\n * upload with chunks : add data to blocks \"Unkwown files\" + \"Contract types\"\n */\n handleUploadWithChunks(upload: Upload) {\n // add the chunk data to the contract type data\n upload.chunks.forEach(chunk => {\n // Set a default identification patern to chunk if it doesn't have one\n if (!chunk.identificationPattern) {\n chunk.identificationPattern = this.jsonIdentificationPatternDefault;\n }\n // check if the contract type has already been found\n const concatEnergyProviderContractType = this.getContractTypeName(chunk);\n\n if (\n this.dataArray.findIndex(\n elem => elem.groupContractProviderEnergy === concatEnergyProviderContractType\n ) === -1\n ) {\n // add the contract type if it's a new one\n this.addContractType(chunk, concatEnergyProviderContractType);\n }\n\n this.addChunkDataToContractType(chunk, upload, concatEnergyProviderContractType);\n });\n }\n\n /**\n * Update `dataArray` force type for each element\n */\n private updateDataArrayForceType() {\n this.dataArray.forEach(elem => {\n elem.forceType = this.collectService.getForceTypeFromStates(elem.data, true);\n });\n }\n\n /**\n * Add contract type for bloc 'Données extraites de x fichier'.\n * Also used for all blocs after (when a contract is selected, change the rest)\n * @param {Upload} upload - upload to add the contract from\n * @param {string} concatEnergyProviderContractType - concatenation of strings fluid provider and contract type to create a unique identifier\n */\n addContractType(upload: Upload, concatEnergyProviderContractType: string) {\n this.dataArray.push({\n groupContractProviderEnergy: concatEnergyProviderContractType,\n energy: this.energyService.energyFullText(upload.identificationPattern.energyType),\n energyType: upload.identificationPattern.energyType,\n provider: upload.identificationPattern.provider,\n contractType: upload.identificationPattern.contractType,\n count: 0,\n error: false,\n data: [],\n forceType: null,\n });\n this.updateValuesByFilterState();\n }\n\n private addChunkDataToContractType(chunk: any, upload: Upload, concatEnergyProviderContractType: string) {\n const contractType = this.dataArray.find(\n elem => elem.groupContractProviderEnergy === concatEnergyProviderContractType\n );\n\n // the chunk/upload might be extracted a second time, in which case we remove the old one\n const indexToRemove = contractType.data.findIndex(elem => elem.id === chunk.checksum);\n if (indexToRemove !== -1) {\n contractType.data.splice(indexToRemove, 1);\n contractType.count -= 1;\n }\n\n const energyType: string = this.getEnergyType(chunk);\n const isClosestPatternExisting = chunk.clothestPattern && chunk.clothestPattern[energyType];\n\n // add the chunk to the contract type data\n contractType.data.push({\n uploadId: upload._id,\n chunkId: chunk._id,\n id: chunk.checksum, // TODO: change the name to checksum but it's used for the extract so CAREFUL\n filename: upload.originalname,\n size: upload.size,\n identificationPattern: chunk.identificationPattern,\n state: chunk.state,\n missingProperties: chunk.missingProperties,\n requiredProperties: isClosestPatternExisting ? chunk.clothestPattern[energyType].requiredProperties : null,\n patternId: isClosestPatternExisting ? chunk.clothestPattern[energyType]._id : null,\n stack: chunk.stack,\n error: chunk.error,\n uploadState: upload.state,\n });\n\n contractType.count += 1;\n }\n\n /**\n * Return the group key of the given upload: fluid, provider and contract type name concatenated as a key id\n * @param {Upload} upload\n * @returns {string} concatenated keys\n */\n getContractTypeName(upload: Upload): string {\n if (!upload.identificationPattern || typeof upload.identificationPattern !== 'object') {\n return 'NCNCNC';\n }\n\n const energy = this.energyService.energyFullText(upload.identificationPattern.energyType);\n const provider = upload.identificationPattern.provider.name;\n const contractType = upload.identificationPattern.contractType.name;\n\n return energy + provider + contractType;\n }\n\n /**\n * Handle uploads without chunks to update `dataArray` for Bloc 2 : Contracts types\n */\n private handleUploadWithoutChunk(upload: Upload) {\n if (!upload.identificationPattern) {\n upload.identificationPattern = this.jsonIdentificationPatternDefault;\n }\n\n // check if the contract type has already been found\n const concatEnergyProviderContractType = this.getContractTypeName(upload);\n\n if (\n this.dataArray.findIndex(elem => elem.groupContractProviderEnergy === concatEnergyProviderContractType) ===\n -1\n ) {\n // add the contract type if it's a new one\n this.addContractType(upload, concatEnergyProviderContractType);\n }\n\n // -- addChunkDataToContractType\n const contractType = this.dataArray.find(\n elem => elem.groupContractProviderEnergy === concatEnergyProviderContractType\n );\n\n // the upload might be extracted a second time, in which case we remove the old one\n const indexToRemove = contractType.data.findIndex(elem => elem._id === upload._id);\n if (indexToRemove !== -1) {\n contractType.data.splice(indexToRemove, 1);\n contractType.count -= 1;\n }\n\n // TODO refacto - récupérer que les éléments utiles de l'upload sous le même format que les chunks\n // redundant but makes things easier in subcomponenent to differenciate files with and without chunks\n /*{\n uploadId: upload._id,\n chunkId: fileChunk._id,\n id: fileChunk.checksum,\n filename: upload.filename,\n size: upload.size,\n identificationPattern: fileChunk.identificationPattern,\n state: fileChunk.state,\n missingProperties: fileChunk.missingProperties,\n requiredProperties: (fileChunk.clothestPattern) ? fileChunk.clothestPattern[fileChunk.identificationPattern.energyType].requiredProperties : null,\n patternId: (fileChunk.clothestPattern) ? fileChunk.clothestPattern[fileChunk.identificationPattern.energyType]._id : null,\n stack: fileChunk.state\n }*/\n upload.uploadId = upload._id;\n upload.chunkId = null;\n upload.filename = upload.originalname;\n\n const energyType: string = this.getEnergyType(upload);\n\n const isClosestPatternExisting = upload.clothestPattern && upload.clothestPattern[energyType];\n upload.requiredProperties = isClosestPatternExisting\n ? upload.clothestPattern[energyType].requiredProperties\n : null;\n upload.patternId = isClosestPatternExisting ? upload.clothestPattern[energyType]._id : null;\n upload.uploadState = upload.state;\n\n contractType.data.push(upload);\n contractType.count += 1;\n }\n\n /**\n * Returns energyType of an upload or a chunk according to it's identificationPattern.\n * If identificationPattern is null then find it on the clothestPattern.\n * @param {any} uploadOrChunk - either a chunk or an upload\n * @returns {string} energyType\n */\n private getEnergyType(uploadOrChunk: any): string {\n // handles if identifactionPatterns has been delete from database\n if (uploadOrChunk.identificationPattern.energyType === 'unknown') {\n if (uploadOrChunk.clothestPattern) {\n for (const param in uploadOrChunk.clothestPattern) {\n if (param) {\n return param;\n }\n }\n }\n }\n return uploadOrChunk.identificationPattern.energyType;\n }\n\n /**\n * update unknown files for Bloc 1 : Unknown files\n * update dataArray for Bloc 2 : Contracts types\n */\n private updateUnknownFilesAndProvidersTableData(upload: Upload) {\n if (!upload.identificationPattern && upload.state === 'PATTERN_MISSING') {\n // identification pattern missing -> upload goes to unkwown files table\n this.handleUnkwownFile(upload);\n } else if (upload.identificationPattern && upload.identificationPattern.isMultiChunk) {\n // sort the chunk by contract type and add their data to the corresponding contract type data\n this.handleUploadWithChunks(upload);\n } else {\n // upload without chunk\n this.handleUploadWithoutChunk(upload);\n }\n }\n\n // update files for block \"Extraction report\"\n updateExtractionReportData(upload: Upload) {\n const file = this.files.find(elem => elem.id === upload._id);\n\n if (!file) {\n const formatedFile: Upload = {\n id: upload._id,\n filename: upload.originalname,\n identificationPattern: upload.identificationPattern,\n size: upload.size,\n group: upload.group,\n percent: 0,\n state: UploadStateList[upload.state],\n stack: upload.stack,\n file: upload.file,\n };\n\n this.files.push(formatedFile);\n } else {\n file.state = UploadStateList[upload.state];\n file.stack = upload.stack;\n file.identificationPattern = upload.identificationPattern;\n }\n this.updateValuesByFilterState();\n }\n\n changeGroupTypeSelected(index: number) {\n this.indexSelectedFile = null; // deselect file above if one was selected\n this.selectGroupType(index);\n }\n\n selectGroupType(index: number) {\n // if the index comes from url parameter but doesn't exist ( could be modified by hand in the URL and be wrong)\n this.indexSelectedGroupType = this.filteredDataArray[index] ? index : 0;\n this.selectedGroupType = this.filteredDataArray[this.indexSelectedGroupType];\n\n this.location.go('collecte/' + this.getGroupId() + '?index=' + this.indexSelectedGroupType); // change the URL without charging it\n\n // selectedGroupType is null if it's a brand new group\n if (this.selectedGroupType) {\n this.refreshDataOnGoupTypeSelected();\n }\n }\n\n /**\n * Refresh\n */\n refreshDataOnGoupTypeSelected() {\n this.energyType = this.selectedGroupType.energyType;\n\n this.makeRecapFilesData();\n this.makePatternsPropertiesData();\n this.updateValuesByFilterState();\n }\n\n selectFileExtractionStates(index) {\n this.indexSelectedFile = index;\n\n const contractGroupIndex = this.dataArray.findIndex(contractTypeGroup => {\n const hasUploadWithId = contractTypeGroup.data.find(f => f.uploadId === this.files[index].id.toString());\n return hasUploadWithId ? true : false;\n });\n\n // if selected a multi file & all the chunks are unknown OR selected an unknown file -> index =-1\n if (contractGroupIndex !== -1) {\n this.selectGroupType(contractGroupIndex);\n }\n }\n\n /**\n * Aggregate the contract chunks per upload filename\n */\n makeRecapFilesData(): void {\n const tmpFiles: { [filename: string]: UploadChunkRecap[] } = {};\n\n this.selectedGroupType.data.forEach((upload, i) => {\n const filename = upload.filename || 'Fichier ' + (i + 1);\n\n if (typeof tmpFiles[filename] === 'undefined') {\n tmpFiles[filename] = [];\n }\n\n tmpFiles[filename].push({\n filename,\n missingProperties: upload.missingProperties,\n size: upload.size,\n state: upload.state,\n nbProperties: this.getRequiredProperties(upload),\n checked: false,\n stack: upload.stack,\n uploadId: upload.uploadId,\n chunkId: upload.chunkId,\n uploadState: upload.uploadState,\n error: upload.error,\n });\n });\n\n this.recapFilesData = Object.keys(tmpFiles).map(index => {\n return tmpFiles[index];\n });\n this.updateValuesByFilterState();\n }\n\n getRequiredProperties(file): string[] {\n // chunkFile\n if (file.requiredProperties) {\n return file.requiredProperties;\n } else if (\n file.clothestPattern &&\n file.identificationPattern &&\n file.clothestPattern[file.identificationPattern.energyType] &&\n file.clothestPattern[file.identificationPattern.energyType].requiredProperties\n ) {\n return file.clothestPattern[file.identificationPattern.energyType].requiredProperties;\n }\n return [];\n }\n\n makePatternsPropertiesData() {\n const notDisplayedStates = ['ARCHIVED'];\n\n this.patternsPropertiesData = this.selectedGroupType.data.reduce((memo: any[], file, i: number) => {\n if (!notDisplayedStates.includes(file.state)) {\n const filename = file.filename || 'Fichier ' + (i + 1);\n\n let hasPropertiesNotFound = false;\n\n const fileProperties: Array<{ name: string; found: number }> = this.getRequiredProperties(file)\n .map(property => {\n let propertyFound = 1;\n\n if (file.missingProperties && file.missingProperties.includes(property)) {\n propertyFound = 0;\n hasPropertiesNotFound = true;\n }\n\n return {\n name: property,\n found: propertyFound,\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n\n const patternName = file.identificationPattern.contractTypePattern;\n\n memo.push({\n filename,\n pattern: {\n name: patternName,\n id: file.patternId,\n },\n properties: fileProperties,\n hasPropertiesNotFound,\n uploadId: file.uploadId,\n chunkId: file.chunkId,\n });\n }\n return memo;\n }, []);\n\n this.loading.tableProperties = false;\n }\n\n // if the user forgot to create / select a group before drag@dropping files\n openGroupModal({ error = '', value = '' } = { error: '', value: '' }) {\n this.modalError = error;\n this.modalValue = value;\n\n // this calls the show method inside the InputModalComponent (methods that show the modal itself)\n this.groupModal.show();\n }\n\n openGroupEditModal({ error = '' } = { error: '' }) {\n this.modalEditError = error;\n\n // this calls the show method inside the InputModalComponent (methods that show the modal itself)\n this.groupEditModal.show();\n }\n\n openGroupDeleteModal({ error = '' } = {}) {\n this.modalDeleteError = error;\n\n // this calls the show method inside the InputModalComponent (methods that show the modal itself)\n this.groupDeleteModal.show();\n }\n\n openGroupReExtractModal({ error = '' } = {}) {\n this.modalReExtractError = error;\n\n this.groupReExtractModal.show();\n }\n /*\n update this.files for bloc \"Extraction report\"\n\tformatedFile = {\n id: '',\n filename: file.filename,\n size: file.size,\n state: '',\n percent: 0,\n group: this.group._id,\n // file Object containing raw data\n fileObject: file,\n stack: null\n };\n\ttheses files comes from drag drop upload or input file\n\t*/\n\n async addFiles(files: File[]): Promise {\n try {\n if (!files) {\n Swal.fire('Attention', 'Seuls les fichiers PDF sont acceptés.', 'warning');\n return Promise.resolve();\n }\n\n // if the user forgot to create / select a group before drag@adding files\n if (!this.group) {\n this.temporaryFiles = files;\n this.openGroupModal();\n return;\n }\n\n if (!files) {\n return;\n }\n\n this.temporaryFiles = [];\n\n this.isPageDisabled = true;\n this.isDragAndDropDisabled = true;\n\n const serialFunctions = BlueBird.resolve(\n files.map(f => this.createUploadAndExtractSerialFunction(f).bind(this))\n );\n const results = await serialFunctions.mapSeries(this.iterator);\n this.removeFilesNotUploaded();\n this.isPageDisabled = false;\n this.isDragAndDropDisabled = false;\n return this.generateReportExtractionError(results);\n } catch (e) {\n this.isPageDisabled = false;\n this.isDragAndDropDisabled = false;\n // TODO Display specific error message\n Swal.fire('Toutes nos excuses', 'Une erreur est survenue, veuillez réessayer plus tard', 'error');\n }\n }\n\n iterator(f) {\n return f();\n }\n\n removeFilesNotUploaded(): void {\n this.files = this.files.filter(upload => upload.state !== UploadStateList.UPLOAD_ERROR);\n }\n\n /**\n * Generate report in a swal to display the names of the files having their removal failed\n * @param {UnknownFile[]} files - files that failed to be removed\n */\n generateReportMultiRemoval(files: UnknownFile[]): void {\n if (!files.length) {\n return;\n }\n\n // Generate error report with file name\n let html = '';\n html += '
    ';\n\n files.forEach(file => {\n html += '
  • ' + file.filename + '
  • ';\n });\n html += '
';\n\n // Display error report\n Swal.fire({\n html: \"
Certains fichiers n'ont pas pu être supprimés
\" + html,\n icon: 'error',\n });\n }\n\n /**\n * Generate report in a swal to display the filenames grouped by type of error\n * @param {ErrorUploadObject[]} resultsExtract - extraction results - one per upload, failed or successful\n */\n generateReportExtractionError(resultsExtract: ErrorUploadObject[]): Promise {\n // Generate html report\n if (resultsExtract && resultsExtract.length && resultsExtract.some(result => !result || !result.success)) {\n const errors = this.groupErrors(resultsExtract);\n // Generate error report with file name\n let html = '';\n Object.keys(errors).forEach(key => {\n html += '

' + errors[key].name + '

';\n html += '
    ';\n if (errors[key].items) {\n errors[key].items.forEach(item => {\n html += '
  • ' + item + '
  • ';\n });\n }\n html += '
';\n });\n\n // Display error report\n Swal.fire({\n html: \"

Rapport d'erreurs


\" + html,\n icon: 'error',\n });\n return Promise.resolve();\n }\n return Promise.resolve();\n }\n\n /**\n * Group filenames per errorCode\n * @param {ErrorUploadObject[]} resultsExtract\n * @returns {name: string, items: string[]} filenames grouped per error msg\n */\n groupErrors(resultsExtract: ErrorUploadObject[]): { name: string; items: string[] } {\n const errors: any = {};\n for (let i = 0, len = resultsExtract.length; i < len; i++) {\n const result = resultsExtract[i];\n if (result && !result.success) {\n if (!errors[result.errorCode]) {\n errors[result.errorCode] = {\n name: this.getError(result.errorCode),\n items: [],\n };\n }\n\n if (resultsExtract[i].file) {\n const name = resultsExtract[i].file.filename || resultsExtract[i].file.fileObject.name;\n errors[result.errorCode].items.push(name);\n }\n }\n }\n return errors;\n }\n\n createUploadAndExtractSerialFunction(file: File) {\n return function() {\n return new Promise((resolve, reject) => {\n const uploadFile: UploadFile = {\n id: '',\n filename: file.filename,\n size: file.size,\n state: '',\n percent: 0,\n group: this.group._id,\n fileObject: file, // file Object containing raw data\n stack: null,\n };\n this.files.push(uploadFile);\n return this.uploadAndExtractFile(uploadFile).then(response => {\n resolve(response);\n });\n });\n };\n }\n\n /**\n * Extract selected files\n * @param uploadsSelected - uploads selected array\n * @param forceExtract - true to force\n */\n async extractSelectedFiles(uploadsSelected: UploadsMapping[], forceExtract: boolean = false): Promise {\n this.isPageDisabled = true;\n const results = [];\n for (let i = 0, len = uploadsSelected.length; i < len; i++) {\n const uploadObject = uploadsSelected[i];\n const result = await this.extractUploadOrChunk(uploadObject[Object.keys(uploadObject)[0]], forceExtract);\n results.push(result);\n }\n this.isPageDisabled = false;\n this.updateValuesByFilterState();\n return this.generateReportExtractionError(results);\n }\n\n /**\n * Extract an upload or a specific chunk\n * @param {UploadChunkRecap[]} upload - upload or chunk\n * @param {boolean} forceExtract\n * @returns {Promise} function to extract the upload or chunk\n */\n async extractUploadOrChunk(upload: UploadChunkRecap[], forceExtract: boolean): Promise {\n // An upload without chunk was selected\n if (!upload[0].chunkId) {\n const response = await this.extractFile((upload[0] as unknown) as Upload, forceExtract);\n return response;\n } else {\n const response = await this.extractChunks(upload[0].uploadId, upload, forceExtract);\n return response;\n }\n }\n\n /**\n * Format uploads for extraction (launch extract for an entire contract type's data)\n * Filter only uploads and chunks not being extracted yet.\n */\n private formatContractFilesToExtract(forceType: ForceType): Array<{ [uploadId: string]: UploadChunkRecap[] }> {\n const formatedArray: Array<{ [uploadId: string]: UploadChunkRecap[] }> = [];\n\n let upload: { [uploadId: string]: UploadChunkRecap[] } = {};\n /** Keep only the chunks matching force type and not already extracted */\n const uploadsFiltered = this.recapFilesData\n .map(uploadChunks =>\n uploadChunks.filter(\n chunk =>\n chunk.state !== 'JOBS_DONE' && this.collectService.isStateMatchingForce(chunk.state, forceType)\n )\n )\n .filter(x => x.length); // Filter to prevent extracting all chunks of an upload\n uploadsFiltered.forEach(uploadChunks => {\n uploadChunks.forEach(chunk => {\n upload = formatedArray.find(elem => elem.hasOwnProperty(chunk.uploadId));\n\n if (!upload) {\n upload = {};\n upload[chunk.uploadId] = [];\n formatedArray.push(upload);\n }\n upload[chunk.uploadId].push(chunk);\n });\n });\n\n return formatedArray;\n }\n\n /**\n * Remove multiple files one after the other and update blocks tables accordingly\n * @param {UploadFile[]} files - files to remove\n */\n async removeMultipleFiles(files: UploadFile[]): Promise {\n if (files.length === 1) {\n return this.removeSimpleFile(files[0]); // to have the correct report displayed\n }\n\n this.isPageDisabled = true;\n\n // clone is important as files are being removed from the array inside the for loop\n const filesToRemove = _.clone(files);\n const errorFiles = [];\n\n // remove files from db and from tables one by one\n for (const file of filesToRemove) {\n try {\n await this.removeFile(file);\n } catch (e) {\n errorFiles.push(file);\n }\n }\n\n if (errorFiles.length) {\n this.generateReportMultiRemoval(errorFiles);\n } else {\n Swal.fire('Supprimés', 'Tous les fichiers ont bien été supprimés.', 'success');\n }\n this.isPageDisabled = false;\n this.notificationService.refresh();\n }\n\n /**\n * Remove a file and update blocks tables accordingly\n * @param {UploadFile} fileToRemove - file to remove\n */\n async removeSimpleFile(fileToRemove: UploadFile): Promise {\n this.isPageDisabled = true;\n try {\n await this.removeFile(fileToRemove);\n this.isPageDisabled = false;\n this.notificationService.refresh();\n Swal.fire('Supprimé', 'Le fichier a bien été supprimé.', 'success');\n } catch (err) {\n this.isPageDisabled = false;\n Swal.fire('Toutes nos excuses', 'Une erreur est survenue lors de la suppression du fichier', 'error');\n }\n }\n\n /**\n * Remove the required upload and its data.\n * @param {UploadFile} fileToRemove\n */\n async removeFile(fileToRemove: UploadFile): Promise {\n const res = await this.collectService.removeFile(fileToRemove);\n if (res.code !== 200) {\n throw new Error('remove-file-failed');\n }\n\n // update blocks components\n this.removeFileFromBlocksData(fileToRemove);\n }\n\n /**\n * Remove a file and update the blocks 'Extraction report' & 'Extraction states'\n * @param fileToRemove\n */\n removeFileFromBlocksData(fileToRemove: UploadFile) {\n // Update blocks 'Extraction report' & 'Extraction states'\n this.files = this.files.filter(f => f.id !== fileToRemove.id.toString());\n this.indexSelectedFile = null; // deselect file in 'Extraction states' if one was selected\n\n // look inside Bloc 1 : Unknown files\n const unknownFileIndex = this.unknownFiles.findIndex(f => f.id === fileToRemove.id.toString());\n\n // if it's an unknown file\n if (unknownFileIndex !== -1) {\n this.unknownFiles.splice(unknownFileIndex, 1);\n } else {\n // if it's a file uploaded --> delete in cascade in other block components\n\n // Bloc 2 : Contracts types\n const contractGroup = this.dataArray.find(contractTypeGroup => {\n const hasUploadWithId = contractTypeGroup.data.find(f => f.uploadId === fileToRemove.id.toString());\n return hasUploadWithId ? true : false;\n });\n contractGroup.data = contractGroup.data.filter(f => f.uploadId !== fileToRemove.id);\n contractGroup.count = contractGroup.data.length;\n\n // if the file deleted is not the last one from the provider group type\n if (contractGroup.count !== 0) {\n // Bloc 3 : Files recap\n this.recapFilesData = this.recapFilesData.filter(f => f[0].filename !== fileToRemove.filename);\n\n // Bloc 4 : Properties & Patterns\n this.patternsPropertiesData = this.patternsPropertiesData.filter(\n f => f.filename !== fileToRemove.filename\n );\n } else {\n // if the file deleted is the last one from the provider group type\n\n // Bloc 2 : Contracts types - delete the provider group\n this.dataArray = this.dataArray.filter(\n group => group.groupContractProviderEnergy !== contractGroup.groupContractProviderEnergy\n );\n // if its provider group wasn't the only one in the upload group -> set selected index on another provider group and reload blocks\n if (this.files.length) {\n this.selectGroupType(0);\n } else {\n // if it was the only provider group, empty block components\n this.reinitData();\n }\n }\n }\n }\n\n clickOnFileInput(e) {\n this.uploadComponent.clickOnInput();\n }\n\n /**\n * Get upload tile data to display (drag & drop area)\n */\n getUploadTilesData(): { label: string; subLabel: string; imgUrl: string } {\n let state: string;\n\n if (!this.files.length) {\n state = globalStates.NOTHING;\n } else {\n const isExtracting = this.files.some(file => {\n return file.state === UploadStateList.UPLOADING || file.state === UploadStateList.IN_PROGRESS;\n });\n\n if (isExtracting) {\n state = globalStates.DOING;\n } else {\n state = globalStates.DONE;\n }\n }\n\n this.actualState = state;\n return this.uploadTilesData[state];\n }\n\n private uploadAndExtractFile(upload: Upload): Promise {\n upload.state = UploadStateList.UPLOADING;\n\n return new Promise(resolve => {\n return this.collectService.uploadFile(upload, this.group._id).subscribe(\n event => {\n if (event.type === HttpEventType.UploadProgress) {\n upload.percent = Math.round((50 * event.loaded) / event.total);\n } else if (event.type === HttpEventType.Response) {\n upload.id = event.body['data']._id;\n upload.state = UploadStateList.UNTOUCHED;\n\n this.extractFile(upload).then((result: ErrorUploadObject) => {\n resolve(result);\n });\n this.updateValuesByFilterState();\n }\n },\n err => {\n const error: ErrorUploadObject = err.error;\n upload.state = UploadStateList.UPLOAD_ERROR;\n Object.assign(error, { file: upload });\n resolve(error);\n }\n );\n });\n }\n\n /**\n * Reextract an upload.\n * @param {Upload} upload\n */\n async reextractFile(upload: Upload): Promise<{ success: boolean; file: Upload }> {\n const uploadId = upload.id;\n const oldState = this.files.find(file => file.id === uploadId).state;\n\n // display file as \"being extracted\" inside blocks 'Recapitulatif fichiers' & 'Etat de l'extraction'\n this.refreshExtractionStates(uploadId, UploadStateList.IN_PROGRESS);\n this.refreshRecapFiles(uploadId, UploadStateList.IN_PROGRESS);\n\n // prevents the user from adding any new file or clicking on any button\n this.isPageDisabled = true;\n\n try {\n await this.collectService.reextractFile(uploadId);\n\n // If data is extracted, refresh page content\n await Promise.all([this.getUploadsByGroup(false), this.notificationService.refresh()]);\n this.isPageDisabled = false;\n\n return {\n success: true,\n file: upload,\n };\n } catch (err) {\n this.isPageDisabled = false;\n this.refreshExtractionStates(uploadId, oldState);\n this.refreshRecapFiles(uploadId, oldState);\n\n const error = Object.assign({}, err, { file: upload });\n await this.generateReportExtractionError([error]);\n return error;\n }\n }\n\n updateExtractSelectionButton(isEnabled: boolean) {\n this.isExtractSelectionDisabled = !isEnabled;\n }\n\n /**\n * Extract all selected files with paralel requests\n */\n extractSelection(forceSelection: boolean): void {\n const selection = getSelectedFiles(this.recapFilesData);\n if (selection.length === 0) {\n Swal.fire('', 'Aucune facture sélectionnée', 'error');\n } else {\n const extraction = selection\n .filter(\n file =>\n !forceSelection ||\n file.state.toLowerCase() === UploadErrorList.QUALITY_CHECK_FAILED.toLowerCase()\n )\n .map(file => this.extractOneSelectedFile(file, forceSelection ? ForceType.QUALITY : null));\n\n Promise.all(extraction).then(data => this.generateReportExtractionError(data));\n }\n }\n\n /**\n * Extract files from multiselected files and refresh blocks ExtractionStates & RecapFiles\n * @param {ExtractFileParams} uploadParams\n * @return {Promise}\n */\n async extractOneSelectedFile(\n uploadParams: ExtractFileParams,\n forceType: ForceType = null\n ): Promise {\n const { uploadId, chunksIdSelected, fileName } = uploadParams;\n\n const oldState = this.files.find(file => file.id === uploadId).state;\n\n // display file as \"being extracted\" inside block Etat de l'extraction'\n this.refreshExtractionStates(uploadId, UploadStateList.IN_PROGRESS);\n\n // display chunk and file as \"being extracted\" inside block 'Recapitulatif fichiers'\n const chunkStates = {};\n chunksIdSelected.forEach(chunkId => {\n chunkStates[chunkId] = UploadStateList.IN_PROGRESS;\n });\n this.refreshRecapFiles(uploadId, UploadStateList.IN_PROGRESS);\n this.refreshChunksInRecapFiles(uploadId, chunkStates);\n\n this.isPageDisabled = true;\n\n try {\n const response = await this.collectService.extractFile(uploadId, chunksIdSelected, forceType);\n this.isPageDisabled = false;\n\n if (response.data) {\n // If data is extracted, refresh page content\n await Promise.all([this.getUploadsByGroup(false), this.notificationService.refresh()]);\n return {\n success: true,\n file: { filename: fileName },\n };\n }\n } catch (err) {\n this.isPageDisabled = false;\n\n this.refreshExtractionStates(uploadId, oldState);\n this.refreshRecapFiles(uploadId, oldState);\n\n const error = Object.assign({}, err, { file: { filename: fileName } });\n return error;\n }\n }\n\n /**\n * Extract files and refresh blocks ExtractionStates & RecapFiles\n * @param {Upload} upload\n * @param {boolean} forceExtract\n * @param {boolean} disableView - if true prevents the user from adding any new file or clicking on any button. Default to false.\n * @return {Promise}\n */\n async extractFile(\n upload: Upload,\n forceExtract: boolean = false,\n disableView: boolean = false\n ): Promise {\n const uploadId = upload.id || upload.uploadId; // depends if extract is launched after upload or from button 'Extract'\n\n const oldState = this.files.find(file => file.id === uploadId).state;\n\n // display file as \"being extracted\" inside blocks 'Recapitulatif fichiers' & 'Etat de l'extraction'\n this.refreshExtractionStates(uploadId, UploadStateList.IN_PROGRESS);\n this.refreshRecapFiles(uploadId, UploadStateList.IN_PROGRESS);\n\n if (disableView) {\n this.isPageDisabled = true;\n }\n try {\n const forceType = this.collectService.getForceType(oldState, forceExtract);\n const response = await this.collectService.extractFile(uploadId, [], forceType);\n if (disableView) {\n this.isPageDisabled = false;\n }\n if (response.data) {\n // If data is extracted, refresh page content\n await Promise.all([this.getUploadsByGroup(false), this.notificationService.refresh()]);\n return {\n success: true,\n file: upload,\n };\n }\n } catch (err) {\n if (disableView) {\n this.isPageDisabled = false;\n }\n\n this.refreshExtractionStates(uploadId, oldState);\n this.refreshRecapFiles(uploadId, oldState);\n\n const error = Object.assign({}, err, { file: upload });\n return error;\n }\n }\n\n /**\n * Returns the appropriate message from a given errorCode\n * @param {string} errorCode\n * @returns {string} msg\n */\n getError(errorCode: string): string {\n switch (errorCode) {\n case ExtractErrorList.UPLOAD_ALREADY_EXTRACTED:\n return \"L'extract a déjà été effectué sur ce(s) fichier(s)\";\n case ExtractErrorList.CHUNKS_ALREADY_EXTRACTED:\n return \"L'extract a déjà été effectué sur le(s) fichier(s) sélectionné(s)\";\n case ExtractErrorList.NEED_FORCE_GEOLOC:\n return 'Sur un fichier ayant une adresse introuvable, vous devez forcer la géolocalisation';\n case ExtractErrorList.UPLOAD_CANT_FORCE_GEOLOC:\n return 'Sur un fichier ayant une adresse valide, vous ne pouvez pas forcer la géolocalisation';\n case ExtractErrorList.CHUNKS_CANT_FORCE_GEOLOC:\n return 'Sur des factures ayant une adresse valide, vous ne pouvez pas forcer la géolocalisation';\n case ExtractErrorList.WRONG_UPLOADID:\n return 'Le(s) fichier(s) est(sont) introuvable(s) ou est(s) en erreur';\n case ExtractErrorList.MISSING_IDENTIFICATION_PATTERNS:\n return \"Les patterns d'identification n'ont pas pu être chargés.\";\n case ExtractErrorList.WRONG_COMPANYID:\n return \"L'id de l'entreprise est introuvable.\";\n case ExtractErrorList.WRONG_USERID:\n return \"L'id de l'utilisateur est introuvable.\";\n case ExtractErrorList.CHUNKS_DIFFERENT_UPLOAD:\n return \"Certains chunks n'appartiennent pas à l'upload sélectionné\";\n\n case UploadErrorList.ALREADY_UPLOADED:\n return 'Le(s) fichier(s) a(ont) déjà été uploadé(s)';\n case UploadErrorList.MISSING_UPLOAD_GROUP:\n return 'Le groupe de fichiers est introuvable';\n case UploadErrorList.MISSING_GEOLOC:\n return \"L'adresse est introuvable\";\n case UploadErrorList.MISSING_DATE:\n return 'La date de début et/ou fin est introuvable pour ce(s) fichier(s)';\n case UploadErrorList.PDF_TEXT_EXTRACTION_IMPOSSIBLE:\n return \"Le contenu texte du fichier n'a pas pu être extrait\";\n case UploadErrorList.ALREADY_EXTRACTING:\n return \"Fichier déjà en cours d'extraction\";\n case UploadErrorList.EMPTY_FILE:\n return 'Le fichier est vide';\n case UploadErrorList.REGEX_TIMEOUT:\n return 'Une Regex a pris trop de temps';\n default:\n return 'Erreur inconnue';\n }\n }\n\n /**\n * Extract upload with a selection of chunks\n * @param uploadId - id of upload to extract\n * @param chunksSelected - list of chunks to extract\n * @param forceExtract - true to force, false otherwise\n */\n private async extractChunks(\n uploadId: string,\n chunksSelected: UploadChunkRecap[] = [],\n forceExtract = false\n ): Promise {\n const oldChunksStates: { [chunkId: string]: string } = {};\n const newChunkStates: { [chunkId: string]: string } = {};\n const oldUploadState = this.files.find(file => file.id === uploadId).state;\n\n const chunkIds = [];\n // Get force type from chunks selected\n const forceType = this.collectService.getForceTypeFromStates(chunksSelected, forceExtract);\n chunksSelected.forEach(chunk => {\n if (this.collectService.isStateMatchingForce(chunk.state, forceType)) {\n chunkIds.push(chunk.chunkId);\n // Set states for display\n oldChunksStates[chunk.chunkId] = chunk.state;\n newChunkStates[chunk.chunkId] = UploadStateList.IN_PROGRESS;\n }\n });\n\n // refresh block 'Recapitulatif fichiers' & 'Etat de l'extraction'\n this.refreshExtractionStates(uploadId, UploadStateList.IN_PROGRESS);\n this.refreshChunksInRecapFiles(uploadId, newChunkStates);\n\n this.isPageDisabled = true;\n\n try {\n const response = await this.collectService.extractFile(uploadId, chunkIds, forceType);\n this.isPageDisabled = false;\n\n if (response.data) {\n await this.getUploadsByGroup(false);\n return {\n success: true,\n file: response.data,\n };\n } else {\n return {\n success: false,\n file: response.data,\n };\n }\n } catch (err) {\n this.isPageDisabled = false;\n\n if (err.code) {\n // refresh block 'Recapitulatif fichiers' & 'Etat de l'extraction'\n this.refreshChunksInRecapFiles(uploadId, oldChunksStates);\n this.refreshExtractionStates(uploadId, oldUploadState);\n\n Object.assign(err, { file: chunksSelected[0] });\n\n return err;\n }\n return err;\n }\n }\n\n /**\n * Set new state on the upload inside the extraction state block\n * @param {string} uploadId\n * @param {string} state\n */\n refreshExtractionStates(uploadId: string, state: string): void {\n const file_extractionStateBlock = this.files.find(file => file.id === uploadId);\n file_extractionStateBlock.state = state;\n }\n\n /**\n * Set new state on the upload /chunk inside the file recap block 'Recapitulatif Fichiers'\n * @param {string} uploadId\n * @param {string} state\n */\n refreshRecapFiles(uploadId, state) {\n // [[filename: .., uploadId: ..]] --> upload without chunk\n // [[filename: .., uploadId: .., chunkId], --> upload with 3 chunks\n // [filename: .., uploadId: .., chunkId],\n // [filename: .., uploadId: .., chunkId],\n // ]\n const files = this.recapFilesData.find(f => f.find(chunkOrUpload => chunkOrUpload.uploadId === uploadId));\n if (files) {\n files.forEach(chunkOrUpload => (chunkOrUpload.state = state));\n files.forEach(chunkOrUpload => (chunkOrUpload.uploadState = state));\n }\n }\n\n /**\n * Refresh chunks in recapFiles\n * @param uploadId\n * @param chunkStatesByIds\n */\n private refreshChunksInRecapFiles(uploadId: string, chunkStatesByIds: { [chunkId: string]: string }) {\n const files = this.recapFilesData.find(f => f.find(chunk => chunk.uploadId === uploadId));\n if (files) {\n // [{filename: .., uploadId: .., chunkId}, --> upload with 3 chunks\n // {filename: .., uploadId: .., chunkId},\n // {filename: .., uploadId: .., chunkId},\n // ]\n\n files.forEach(chunk => {\n if (chunkStatesByIds.hasOwnProperty(chunk.chunkId)) {\n chunk.state = chunkStatesByIds[chunk.chunkId];\n chunk.uploadState = chunkStatesByIds[chunk.chunkId];\n }\n });\n }\n }\n\n isPatternsPropertiesTableLoading() {\n return this.loading.tableProperties;\n }\n\n patternsPropertiesTableHasData() {\n return this.patternsPropertiesData && this.patternsPropertiesData.length;\n }\n\n isRecapTableLoading() {\n return this.loading.tableRecap;\n }\n\n recapTableHasData() {\n return this.recapFilesData && this.recapFilesData.length;\n }\n\n hasSelectedGroup() {\n return this.selectedGroupType && this.selectedGroupType.energy;\n }\n\n getRecapTableTitle() {\n const currentEnergyType = this.selectedGroupType.energy;\n const currentProvider = this.selectedGroupType.provider ? this.selectedGroupType.provider.name : 'NC';\n const currentContractType = this.selectedGroupType.contractType\n ? this.selectedGroupType.contractType.name\n : 'NC';\n\n return `Récapitulatif des fichiers : ${currentEnergyType} ${currentProvider} ${currentContractType}`;\n }\n\n getExtractDataBlocTitle() {\n const nbTotalFiles = this.dataArray.reduce((totalFiles, item) => {\n return totalFiles + item.data.reduce(files => ++files, 0);\n }, 0);\n\n return nbTotalFiles > 1\n ? `Données extraites de ${nbTotalFiles} fichiers`\n : `Données extraites de ${nbTotalFiles} fichier`;\n }\n\n getExtractDataBlockWidth() {\n return this.unknownFiles.length ? 'col-md-8' : 'col-md-12';\n }\n\n getGroupId() {\n if (this.group && this.group._id) {\n return this.group._id;\n } else {\n return null;\n }\n }\n\n getUnknwownFilesTitle() {\n return this.unknownFiles.length > 1\n ? this.unknownFiles.length + ' documents inconnus'\n : this.unknownFiles.length + ' document inconnu';\n }\n\n /**\n * Disable the drag&drop zone when files are being extracted, or if any action disabled the whole page\n * @return {boolean}\n */\n isDropZoneDisabled() {\n return this.isPageDisabled || this.isDragAndDropDisabled;\n }\n}\n","import { UploadChunkRecap } from 'app/shared/models/upload-file.interface';\n\nimport { ExtractFileParams } from './collect.interface';\n\n/**\n * @description Maps selected files to extract params for api call\n * @param selectedFiles an array of chunk/files arrays from selected files\n * @return params to call ExtractFile\n */\nexport function selectedFilesToExtractFileParams(selectedFiles: UploadChunkRecap[][]): ExtractFileParams[] {\n const extractFileParams = [];\n\n selectedFiles.forEach(file => {\n if (!file[0] || !file[0].uploadId) {\n return;\n }\n const params = {\n uploadId: file[0].uploadId,\n chunksIdSelected: [],\n fileName: file[0].filename,\n state: file[0].state,\n };\n // An upload without chunk was selected\n if (!file[0].chunkId && file[0].checked) {\n extractFileParams.push(params);\n } else {\n const selectedChunksIds = file.filter(chunk => chunk.checked).map(chunk => chunk.chunkId);\n if (selectedChunksIds.length > 0) {\n (params.chunksIdSelected = selectedChunksIds), extractFileParams.push(params);\n }\n }\n });\n\n return extractFileParams;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { CollectComponent } from './collect.component';\n\nconst COLLECT_ROUTE = [\n {\n path: '',\n component: CollectComponent,\n canActivate: [AccessGuard],\n data: { page: 'collect' },\n },\n];\n\n@NgModule({\n declarations: [CollectComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(COLLECT_ROUTE)],\n})\nexport class CollectModule {}\n","import { UploadErrorList } from 'app/shared/constants/upload-error-list.constants';\nimport { FeatureToggleService } from 'app/shared/services/feature-toggle/feature-toggle.service';\nimport { Observable } from 'rxjs';\n\nimport { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { BillPopulated } from 'app/shared/models/bills.interface';\nimport { UploadStateList } from '../../shared/constants/upload-state-list.constants';\nimport { ForceType, Upload, UploadFile } from '../../shared/models/upload-file.interface';\nimport { UploadGroup } from '../../shared/models/upload-group.interface';\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\nimport { SessionService } from '../../shared/services/session/session.service';\nimport { UploadSearchResult } from './collect.interface';\n\n@Injectable()\nexport class CollectService extends PageService {\n /**\n * Info types\n */\n public infoType = {\n ERROR: 'error',\n WARNING: 'warning',\n SUCCESS: 'success',\n INFO: 'info',\n };\n\n /**\n * States info\n */\n public stateInfo: {\n [key: string]: {\n type: string;\n message: string;\n percent: number;\n };\n } = {\n [UploadStateList.UPLOADING]: this.createStateInfo(this.infoType.INFO, 'Envoi du document en cours'),\n UPLOADING: this.createStateInfo(this.infoType.INFO, 'Envoi du document en cours'),\n [UploadStateList.UNTOUCHED]: this.createStateInfo(this.infoType.SUCCESS, 'Document uploadé', 50),\n UNTOUCHED: this.createStateInfo(this.infoType.SUCCESS, 'Document uploadé', 50),\n [UploadStateList.UPLOAD_ERROR]: this.createStateInfo(\n this.infoType.ERROR,\n \"Erreur lors de l'envoi du document\",\n 0\n ),\n UPLOAD_ERROR: this.createStateInfo(this.infoType.ERROR, \"Erreur lors de l'envoi du document\", 0),\n [UploadStateList.IN_PROGRESS]: this.createStateInfo(this.infoType.INFO, 'Extraction des données en cours', 50),\n IN_PROGRESS: this.createStateInfo(this.infoType.INFO, 'Extraction des données en cours', 50),\n [UploadStateList.PATTERN_MISSING]: this.createStateInfo(this.infoType.ERROR, 'Document inconnu', 50),\n PATTERN_MISSING: this.createStateInfo(this.infoType.ERROR, 'Document inconnu', 50),\n [UploadStateList.NO_PATTERNS]: this.createStateInfo(this.infoType.ERROR, 'Document inconnu', 50),\n NO_PATTERNS: this.createStateInfo(this.infoType.ERROR, 'Document inconnu', 50),\n [UploadStateList.ERROR]: this.createStateInfo(this.infoType.ERROR, \"Erreur lors de l'extraction\", 50),\n ERROR: this.createStateInfo(this.infoType.ERROR, \"Erreur lors de l'extraction\", 50),\n [UploadStateList.PROPERTY_MISSING]: this.createStateInfo(this.infoType.WARNING, 'Propriétés manquantes', 50),\n PROPERTY_MISSING: this.createStateInfo(this.infoType.WARNING, 'Propriétés manquantes', 50),\n [UploadStateList.MULTI_UNCOMPLETED]: this.createStateInfo(\n this.infoType.WARNING,\n 'Propriétés manquantes - MULTI ',\n 50\n ),\n MULTI_UNCOMPLETED: this.createStateInfo(this.infoType.WARNING, 'Propriétés manquantes - MULTI ', 50),\n [UploadStateList.JOBS_DONE]: this.createStateInfo(this.infoType.SUCCESS, 'Document ajouté', 100),\n JOBS_DONE: this.createStateInfo(this.infoType.SUCCESS, 'Document ajouté', 100),\n [UploadStateList.HAS_CHUNKS_NO_PATTERNS]: this.createStateInfo(\n this.infoType.ERROR,\n 'Type de facture inconnu - MULTI ',\n 50\n ),\n [UploadStateList.ARCHIVED]: this.createStateInfo(this.infoType.INFO, 'Document archivé', 100),\n ARCHIVED: this.createStateInfo(this.infoType.INFO, 'Document archivé', 100),\n\n [UploadErrorList.MISSING_GEOLOC]: this.createStateInfo(this.infoType.ERROR, \"L'adresse est introuvable\"),\n [UploadErrorList.MISSING_DATE]: this.createStateInfo(\n this.infoType.ERROR,\n 'La date de début et/ou fin est introuvable'\n ),\n [UploadErrorList.SAVING_VALIDATION]: this.createStateInfo(\n this.infoType.ERROR,\n `La facture n'est pas valide: élément(s) manquant(s) ou incorrect(s)`\n ),\n [UploadErrorList.SAVING_UNKNOWN]: this.createStateInfo(\n this.infoType.ERROR,\n `Erreur inconnue lors de la sauvegarde de la facture`\n ),\n [UploadErrorList.PRODUCT_NOT_FOUND]: this.createStateInfo(\n this.infoType.ERROR,\n `Le(s) produit(s) extrait(s) ne peut(vent) pas être identifié(s)`\n ),\n QUALITY_CHECK_FAILED: this.createStateInfo(this.infoType.ERROR, `Extraction incomplète`, 50),\n [UploadErrorList.QUALITY_CHECK_FAILED]: this.createStateInfo(\n this.infoType.ERROR,\n `Echec du contrôle de l'extraction`,\n 50\n ),\n };\n\n /**\n * Infos color and icon mapping\n */\n public infos = {\n [this.infoType.ERROR]: {\n color: '#be0712',\n icon: 'fa-exclamation-circle',\n },\n [this.infoType.WARNING]: {\n color: '#eb7d3c',\n icon: 'fa-exclamation-triangle',\n },\n [this.infoType.SUCCESS]: {\n color: '#5BAF4D',\n icon: 'fa-check-square',\n },\n [this.infoType.INFO]: {\n color: '#5790af',\n icon: 'fa-info-circle',\n },\n };\n\n /**\n * Mapping between force types and the states of uploads/chunks that can be forced for each one.\n */\n public forceTypeStates = {\n [ForceType.EXTRACT]: [UploadStateList.MULTI_UNCOMPLETED, UploadStateList.PROPERTY_MISSING],\n [ForceType.QUALITY]: [UploadStateList.QUALITY_CHECK_FAILED],\n };\n\n constructor(\n public apiService: ApiService,\n public sessionService: SessionService,\n private readonly featureToggleService: FeatureToggleService\n ) {\n super(apiService);\n this.fake = false;\n }\n\n createGroup(groupName) {\n const body = {\n name: groupName,\n company: this.sessionService.getCompanyId(),\n };\n\n const url = `/api/upload-groups/crud/`;\n\n return this.post(url, JSON.stringify(body));\n }\n\n /**\n * Upload a new name for a given group\n * @return {Promise}\n */\n async updateGroup(groupId: number, groupName: string): Promise {\n const body = {\n name: groupName,\n company: this.sessionService.getCompanyId(),\n };\n\n const url = `/api/upload-groups/crud/${groupId}`;\n const response = await this.put(url, body);\n\n return response.data;\n }\n\n deleteGroup(groupId) {\n const url = `/api/upload-groups/crud/${groupId}`;\n\n return this.delete(url);\n }\n\n /**\n * Get upload groups for the current connected company.\n * @returns {Promise}\n */\n async getGroupsByCompany(): Promise {\n const response = await this.get('/api/upload-groups/company/' + this.sessionService.getCompanyId());\n return response.data;\n }\n\n getUploadsByCompany() {\n return this.get('/api/uploads/company/' + this.sessionService.getCompanyId());\n }\n\n /**\n * Get uploads by group\n * @param groupId - id of group\n */\n async getUploadsByGroup(groupId: string): Promise {\n const url = `/api/uploads/group/${groupId}`;\n const response = await this.post(url, {});\n const { uploads, identificationPatterns, clothestPatterns } = response.data;\n this.populateIdentificationAndClothestPattern(uploads, identificationPatterns, clothestPatterns);\n return uploads;\n }\n\n /**\n * Populated upload with identification pattern and clothest pattern\n */\n private populateIdentificationAndClothestPattern(\n uploads: Upload[],\n identificationPatterns: any[],\n clothestPatterns: any[]\n ) {\n if (!uploads || !uploads.length || !identificationPatterns || !identificationPatterns.length) {\n return;\n }\n const identificationPatternsById = this.transformArrayToObjectById(identificationPatterns, '_id');\n const clothestPatternsById = this.transformArrayToObjectById(clothestPatterns, '_id');\n\n for (let i = 0, iLen = uploads.length; i < iLen; i++) {\n const upload = uploads[i];\n if (upload.chunks && upload.chunks.length) {\n for (let j = 0, jLen = upload.chunks.length; j < jLen; j++) {\n const chunk = upload.chunks[j];\n this.setIdentificationAndClothestPattern(chunk, identificationPatternsById, clothestPatternsById);\n }\n }\n this.setIdentificationAndClothestPattern(upload, identificationPatternsById, clothestPatternsById);\n }\n }\n\n /**\n * Transform an array of object to an object with {object[key] : object,}\n */\n private transformArrayToObjectById(array: any[], key: string): any {\n const objectById = {};\n for (let i = 0, iLen = array.length; i < iLen; i++) {\n const element = array[i];\n objectById[element[key]] = element;\n }\n return objectById;\n }\n\n /**\n * Sets identification pattern and clothest pattern of upload or chunk from identificationPatternsById and clothestPatternsById\n */\n private setIdentificationAndClothestPattern(\n chunk: Upload | any,\n identificationPatternsById: any,\n clothestPatternsById: any\n ) {\n if (chunk.identificationPattern) {\n chunk.identificationPattern = identificationPatternsById[chunk.identificationPattern];\n }\n if (chunk.clothestPattern) {\n const fluids = Object.keys(chunk.clothestPattern);\n for (let i = 0, iLen = fluids.length; i < iLen; i++) {\n const fluid = fluids[i];\n chunk.clothestPattern[fluid] = clothestPatternsById[chunk.clothestPattern[fluid]];\n }\n }\n }\n\n isBill(file: UploadFile | BillPopulated): file is BillPopulated {\n return (file as BillPopulated).upload !== undefined;\n }\n\n removeFile(file: UploadFile | BillPopulated): Promise {\n const fileId = this.isBill(file) ? file.upload : file.id;\n const url = `/api/uploads/crud/${fileId}`;\n return this.delete(url);\n }\n\n /**\n * Reset all uploads by group\n * @param {string} groupId - id of group\n */\n async resetGroup(\n groupId: string\n ): Promise<{ success: string[]; error: Array<{ uploadId: string; originalname: string; error: string }> }> {\n const urlBase = this.featureToggleService.isEnabled('upload-reset-by-group.newRoutes')\n ? '/api/upload-management/group/reset'\n : '/api/uploads/group/reset';\n const response = await this.patch(`${urlBase}/${groupId}`, null);\n return response.data;\n }\n\n async reextractFile(uploadId: string): Promise {\n const urlBase = this.featureToggleService.isEnabled('upload-reExtraction.newRoutes')\n ? '/api/upload-management'\n : '/api/uploads';\n return this.patch(`${urlBase}/re-extract/${uploadId}`, null);\n }\n\n /**\n * Extract the upload (specific chunks if given). Force the extraction if required.\n * @param {string} uploadId\n * @param {string[]} chunksIdSelected\n * @param {ForceType} forceType\n */\n extractFile(uploadId: string, chunksIdSelected: string[] = [], forceType: ForceType = null): Promise {\n const urlBase = this.featureToggleService.isEnabled('upload-extraction.newRoutes')\n ? '/api/upload-management/extract'\n : `/api/uploads/${forceType ? 'force-' : ''}extract`;\n\n const url = `${urlBase}/${uploadId}`;\n\n const body = {\n companyId: this.sessionService.getCompanyId(),\n chunksId: chunksIdSelected,\n forceType,\n };\n\n return this.post(url, body);\n }\n\n uploadFile(file, groupId): Observable {\n const formData: FormData = new FormData();\n\n formData.append('file', file.fileObject, file.filename);\n formData.append('companyId', this.sessionService.getCompanyId());\n formData.append('groupId', groupId);\n\n const options = {\n reportProgress: true,\n headers: new HttpHeaders({\n Accept: 'application/json',\n Authorization: 'Basic ' + this.apiService.getToken(),\n }),\n };\n const url = this.featureToggleService.isEnabled('upload-import.newRoutes')\n ? '/api/upload-management/import'\n : '/api/uploads/upload';\n return this.apiService.upload(url, formData, options);\n }\n\n fakeData(route) {\n let response;\n\n switch (route) {\n default:\n response = {};\n break;\n }\n\n return response;\n }\n\n private createStateInfo(\n type: string,\n message: string,\n percent: number = null\n ): { type: string; message: string; percent: number } {\n return {\n type,\n message,\n percent,\n };\n }\n\n /**\n * Search upload\n * @param {string} search\n */\n public async searchUpload(search: string): Promise {\n const response = await this.get(`/api/uploads/search`, null, { search });\n return response.data;\n }\n\n /**\n * Get force type based on state\n * @param state\n * @param forceExtract\n */\n public getForceType(state: string, forceExtract: boolean): ForceType {\n let forceType: ForceType = null;\n if (forceExtract) {\n forceType = this.getForceTypeFromState(state, forceType);\n // If force type still null, it means that there is a bug and state is not forcable\n if (forceType === null) {\n throw new Error('state not matching force');\n }\n }\n return forceType;\n }\n\n /**\n * Get force type from state based on a given current force type.\n * It privileges force type earlier in workflow (eg. n quality and 1 extract => extract)\n * @param state - chunk or upload state\n * @param currentForce - current force type (for a list of uploads/chunks)\n */\n public getForceTypeFromState(state: string, currentForce: ForceType): ForceType {\n if (this.forceTypeStates[ForceType.EXTRACT].includes(state.toLowerCase())) {\n return ForceType.EXTRACT;\n }\n if (this.forceTypeStates[ForceType.QUALITY].includes(state.toLowerCase()) && currentForce === null) {\n return ForceType.QUALITY;\n }\n return currentForce;\n }\n\n /**\n * Get force types from states of elements having a state field.\n * @param elements\n * @param forceExtract\n */\n public getForceTypeFromStates(elements: Array<{ state: string }>, forceExtract: boolean): ForceType {\n let forceType = null;\n if (!forceExtract) {\n return forceType;\n }\n elements.forEach(elem => {\n // set force type\n forceType = this.getForceTypeFromState(elem.state, forceType);\n });\n return forceType;\n }\n\n /**\n * Check if upload/chunk state is matching force compatible states.\n * Returns true if not forcing\n * @param state\n * @param force\n */\n public isStateMatchingForce(state: string, force: ForceType): boolean {\n if (!force) {\n return true;\n }\n if (!this.forceTypeStates[force]) {\n return false;\n }\n return this.forceTypeStates[force].includes(state.toLowerCase());\n }\n}\n","export default \".filters {\\n padding: 1rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2NvbnRyYWN0cy9jb250cmFjdHMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2NvbnRyYWN0cy9jb250cmFjdHMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxhQUFBO0FDRkoiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9jb250cmFjdHMvY29udHJhY3RzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbi5maWx0ZXJzIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuIiwiLmZpbHRlcnMge1xuICBwYWRkaW5nOiAxcmVtO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { PaginationBackService } from 'app/shared/components/pagination/back/pagination-back.service';\nimport { FiltersAvailable, QueryFilter } from 'app/shared/models/bills-contracts-filter.interface';\nimport { Pagination, QueryPagination, QuerySort } from 'app/shared/models/pagination.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\nimport { ContractDisplay } from './contracts.interface';\nimport { ContractsService } from './contracts.service';\n\ninterface Loading {\n filters: boolean;\n contracts: boolean;\n}\n\n@Component({\n selector: 'ga-contracts',\n templateUrl: './contracts.component.html',\n styleUrls: ['./contracts.component.scss'],\n providers: [ContractsService, PaginationBackService],\n})\nexport class ContractsComponent implements OnInit {\n companyId: string;\n\n contracts: ContractDisplay[] = [];\n\n loading: Loading = {\n filters: true,\n contracts: true,\n };\n\n /**\n * Options available inside the filter elements\n * Not to be confused with the selected elements from the filter, these are hold by 'QueryFilter'\n */\n filtersAvailable: FiltersAvailable;\n\n queryFilter: QueryFilter;\n\n /**\n * @type {boolean} - isBranchesLoaded is used to set filters available values from requested company and its branches\n */\n private isBranchesLoaded = false;\n\n pagination: Pagination = {\n lastItem: {\n _id: null,\n index: 0,\n },\n };\n\n constructor(\n private contractsService: ContractsService,\n private sessionService: SessionService,\n private paginationService: PaginationBackService,\n private energyService: EnergyService,\n private filterService: FilterService\n ) {}\n\n async ngOnInit(): Promise {\n this.paginationService.sort = {\n asc: true,\n field: 'reference',\n };\n await this.loadData();\n }\n\n /**\n * Load filter\n */\n async loadData(): Promise {\n try {\n await this.initFilter();\n } catch (err) {\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des factures. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n throw JSON.stringify(err);\n }\n }\n\n /**\n * ------\n * Initialization of the filter\n * ------\n */\n async initFilter(): Promise {\n await this.setFilters();\n this.loading.filters = false;\n return;\n }\n\n /**\n * ------\n * Initialization of the contracts\n * ------\n */\n\n /**\n * Load the company's contracts sorted and respecting the current pagination\n * Set their notice state from their dates\n */\n async loadContracts(): Promise {\n try {\n // 1. create the pagination query from current pagination elements\n const queryPagination: QueryPagination = this.paginationService.getPaginationQuery(\n this.pagination.lastItem\n );\n\n // 2. get contracts\n const res = await this.contractsService.getContractsFromPagination(\n this.companyId,\n this.queryFilter,\n queryPagination,\n this.paginationService.sort\n );\n\n // 3. set the notice state on each contract\n this.contracts = res.results.map(contract => {\n const c: ContractDisplay = this.contractsService.initNoticeState(contract);\n return c;\n });\n\n // 4. reload pagination elements from the new set of contracts\n this.paginationService.updateLastItem(this.pagination.lastItem, this.contracts);\n this.paginationService.updateAfterSearch(res.total);\n\n this.loading.contracts = false;\n\n return;\n } catch (e) {\n this.contracts = [];\n\n // reset pagination to first page for an empty array\n this.paginationService.emptyPagination();\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des contrats. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n\n this.loading.contracts = false;\n return;\n }\n }\n\n /**\n * ------\n * Filters interactions\n * ------\n */\n\n /**\n * Handle a change inside the filter.\n * Reload contracts with new query.\n * @param {QueryFilter} queryFilter\n */\n async onFilterChanged(queryFilter: QueryFilter) {\n this.queryFilter = queryFilter;\n\n const loadBranches = _.get(this.queryFilter, 'includeBranches', false);\n if ((loadBranches && !this.isBranchesLoaded) || (!loadBranches && this.isBranchesLoaded)) {\n this.isBranchesLoaded = !this.isBranchesLoaded;\n await this.setFilters({ loadBranches });\n }\n\n this.paginationService.setFirstPage();\n // Reset last item\n this.pagination.lastItem = { _id: null, index: 0 };\n\n await this.loadContracts();\n }\n\n /**\n * -----\n * Table interactions\n * -----\n */\n\n /**\n * @returns {boolean} true when contracts are loaded and at least one contract is found\n */\n hasContracts(): boolean {\n return Boolean(!this.loading.contracts && this.contracts && this.contracts.length);\n }\n\n /**\n * Returns true when contracts are done loading.\n * @return {boolean}\n */\n canShowContractsTable(): boolean {\n return this.contracts && !this.loading.contracts;\n }\n\n /**\n * Called when pagination is updated (selected page or nb of items per pages)\n * or when a contract has been edited\n * Reload the contracts accordingly\n */\n reloadContractsList($event = { resetLastItem: false }) {\n if ($event.resetLastItem) {\n this.paginationService.updateLastItem(this.pagination.lastItem, []);\n }\n this.loadContracts();\n }\n\n /**\n * Called when sort has changed on contracts table\n * Reload the contracts accordingly\n * @returns {Promise}\n */\n async onSortChanged(): Promise {\n this.paginationService.setFirstPage();\n this.pagination.lastItem = { _id: null, index: 0 };\n return this.loadContracts();\n }\n\n /**\n * set filters\n * @param {{loadBranches: boolean}} param\n */\n async setFilters(param: { loadBranches: boolean } = { loadBranches: false }) {\n this.companyId = this.sessionService.getCompanyId();\n\n const [fluids, years, providers] = await Promise.all([\n this.energyService.getFluidsAvailable(this.companyId, param),\n this.filterService.getYearsWithData(true, param),\n this.filterService.getContractProviders(this.companyId, param),\n ]);\n\n // set selected fluids compared to available fluids\n if (this.queryFilter && this.queryFilter.fluids) {\n this.queryFilter.fluids = _.intersection(this.queryFilter.fluids, fluids);\n }\n\n // set selected providers compared to available providers\n if (this.queryFilter && this.queryFilter.providers) {\n this.queryFilter.providers = _.intersection(this.queryFilter.providers, providers.data);\n }\n\n let yearsMin = null;\n let yearsMax = null;\n if (years && years.length) {\n yearsMin = years[0].value;\n yearsMax = years[years.length - 1].value;\n } else {\n const currentYear = new Date().getFullYear();\n yearsMin = currentYear.toFixed(0);\n yearsMax = currentYear.toFixed(0);\n }\n\n const contractStates = this.contractsService.getNoticeStatesFilter();\n\n this.filtersAvailable = {\n searchValue: {\n enabled: true,\n placeholder: 'N° de contrat',\n },\n years: {\n enabled: true,\n yearsMin,\n yearsMax,\n setDefault: false,\n allowMissingBound: true,\n },\n fluids: {\n enabled: true,\n values: fluids,\n },\n providers: {\n enabled: true,\n values: providers.data,\n },\n contractStates: {\n enabled: true,\n values: contractStates,\n },\n branches: {\n enabled: true,\n },\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { ContractsComponent } from './contracts.component';\n\nconst CONTRACTS_ROUTE = [\n {\n path: '',\n component: ContractsComponent,\n canActivate: [AccessGuard],\n },\n];\n\n@NgModule({\n declarations: [ContractsComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(CONTRACTS_ROUTE)],\n})\nexport class ContractsModule {}\n","import { Injectable } from '@angular/core';\n\nimport * as moment from 'moment';\n// services\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\n\n// interfaces\nimport { QueryFilter } from 'app/shared/models/bills-contracts-filter.interface';\nimport {\n Contract,\n ContractLight,\n ContractPopulated,\n NoticeState,\n NoticeStateName,\n} from 'app/shared/models/contract.interface';\nimport { QueryPagination, QuerySort } from 'app/shared/models/pagination.interface';\nimport * as clone from 'clone';\nimport { ContractDisplay, ContractPopulatedDisplayOld } from './contracts.interface';\n\n@Injectable()\nexport class ContractsService extends PageService {\n /*\n 6 states possible:\n - loading\n - before notice date\n - between notice and end date\n - NC\n - dates in error\n - completed\n * */\n public noticeStatesColors: NoticeState[] = [\n {\n name: 'inProgress',\n color: 'green',\n msg: 'En cours',\n priority: 2,\n },\n {\n name: 'incoming',\n color: 'green',\n msg: 'A venir',\n priority: 2,\n },\n {\n name: 'onNotice',\n color: 'orange',\n msg: 'En préavis',\n priority: 3,\n },\n {\n name: 'nc',\n color: 'red',\n msg: 'NC (date non renseignée)',\n priority: 4,\n },\n {\n name: 'error',\n color: 'red',\n msg: 'Erreur (date renseignée erronée)',\n priority: 4,\n },\n {\n name: 'completed',\n color: 'grey',\n msg: 'Terminé',\n priority: 1,\n },\n {\n name: 'loading',\n color: 'grey',\n msg: 'Chargement...',\n priority: 1,\n },\n ];\n\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n /***** API *****/\n\n /**\n * Returns the contracts of the company matching filters, pagination & sort\n * Get the overall contracts number, and the specific contracts to display matching pagination\n * @param {string} companyId\n * @param {QueryFilter} filter\n * @param {QueryPagination} pagination\n * @param {QuerySort} sort\n * @returns {Promise<{total: number, results: ContractLight[]}>}\n */\n async getContractsFromPagination(\n companyId: string,\n filter: QueryFilter,\n pagination: QueryPagination,\n sort: QuerySort\n ): Promise<{ total: number; results: ContractLight[] }> {\n const res = await this.post('/api/contracts/list', {\n companyId,\n filters: filter,\n pagination,\n sort,\n });\n\n return { total: res.data.total, results: res.data.results };\n }\n\n async updateContract(contract: ContractPopulated): Promise {\n try {\n const route = '/api/contracts/crud/' + contract._id;\n const response = await this.put(route, contract, null, true);\n if (response.data.matchedCount === 1) {\n return response;\n } else {\n const err = { error_code: 'error_updateContract' };\n return Promise.reject(err);\n }\n } catch (err) {\n err.error_code = 'error_updateContract';\n return Promise.reject(err);\n }\n }\n\n /**\n * Return the contract of the company with the aggregation of all the required properties existing in its bill\n * @param {string} contractId\n * @return {Promise}\n */\n async getContractWithProperties(contractId: string): Promise {\n try {\n const res = await this.get('/api/contracts/' + contractId + '/properties');\n return res.data;\n } catch (err) {\n err.error_code = 'error_getContract';\n return Promise.reject(err);\n }\n }\n\n /**\n * Return a contract with each routingReference populated with its sites\n * @param {string} contractId\n * @return {Promise}\n */\n async getContractWithSitesPerRf(contractId: string): Promise {\n try {\n const res = await this.get('/api/contracts/' + contractId + '/sites');\n return res.data;\n } catch (err) {\n err.error_code = 'error_getContract';\n return Promise.reject(err);\n }\n }\n\n /********** Functions shared **********/\n\n /** 5 states possible:\n - before notice date\n - between notice and end date\n - NC\n - dates in error\n - completed\n * */\n initNoticeState(contract: Contract): ContractDisplay {\n const c: ContractDisplay = clone(contract);\n c.noticeState = this.getNoticeStateByName('nc');\n\n if (contract.infos) {\n const start = contract.infos.dateStart;\n const end = contract.infos.dateEnd;\n const notice = contract.infos.dateNotice;\n\n // nc > start and end not defined\n if (contract.infos && start && end) {\n // error : if start > end\n // error : error : if notice is not set as start < notice < end\n const startBeforeEnd: boolean = moment(start).isBefore(moment(end));\n const noticeBetweenStartAndEnd: boolean =\n moment(start).isBefore(moment(notice)) && moment(notice).isBefore(moment(end));\n\n if (!startBeforeEnd || (notice && !noticeBetweenStartAndEnd)) {\n c.noticeState = this.getNoticeStateByName('error');\n } else {\n // incoming: now < start\n if (moment().isBefore(start)) {\n c.noticeState = this.getNoticeStateByName('incoming');\n }\n // inProgress : start < now < end\n if (moment().isAfter(start) && moment().isBefore(end)) {\n c.noticeState = this.getNoticeStateByName('inProgress');\n }\n // onNotice: notice < now < end\n if (notice && moment().isAfter(notice) && moment().isBefore(end)) {\n c.noticeState = this.getNoticeStateByName('onNotice');\n } else if (moment().isAfter(end)) {\n // completed: contract is completed\n c.noticeState = this.getNoticeStateByName('completed');\n }\n }\n }\n }\n return c;\n }\n\n getNoticeStateByName(name: NoticeStateName): NoticeState {\n return this.noticeStatesColors.find(state => state.name === name);\n }\n\n /**\n * Get notice states to be displayed in filters\n * @returns {NoticeState[]}\n */\n public getNoticeStatesFilter(): NoticeState[] {\n const notInclude = ['error', 'loading'];\n return this.noticeStatesColors.filter(x => !notInclude.includes(x.name));\n }\n}\n","export default \".search-address__label {\\n margin: 0;\\n}\\n\\n.location-station__title,\\n.export-filter__title {\\n font-weight: bold;\\n}\\n\\n.export-filter__title {\\n margin-bottom: 0.25rem;\\n}\\n\\n.date-icon {\\n width: 24px;\\n}\\n\\n.citron-icon {\\n height: 40px;\\n width: 32px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-position-y: 4px;\\n}\\n\\n.form-check {\\n padding-left: 2rem;\\n}\\n\\n.location-station__placeholder {\\n text-align: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2RqdS9kanUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2RqdS9kanUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxTQUFBO0FDQ0o7O0FERUE7O0VBRUksaUJBQUE7QUNDSjs7QURFQTtFQUNJLHNCQUFBO0FDQ0o7O0FERUE7RUFDSSxXQUFBO0FDQ0o7O0FERUE7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtFQUFBO1VBQUEsMERBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBQ0EsNEJBQUE7QUNDSjs7QURFQTtFQUNJLGtCQUFBO0FDQ0o7O0FERUE7RUFDSSxrQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvZGp1L2RqdS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zZWFyY2gtYWRkcmVzc19fbGFiZWwge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmxvY2F0aW9uLXN0YXRpb25fX3RpdGxlLFxuLmV4cG9ydC1maWx0ZXJfX3RpdGxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmV4cG9ydC1maWx0ZXJfX3RpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xufVxuXG4uZGF0ZS1pY29uIHtcbiAgICB3aWR0aDogMjRweDtcbn1cblxuLmNpdHJvbi1pY29uIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2NpdHJvbi5zdmcnKTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbi15OiA0cHg7XG59XG5cbi5mb3JtLWNoZWNrIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDJyZW07XG59XG5cbi5sb2NhdGlvbi1zdGF0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLnNlYXJjaC1hZGRyZXNzX19sYWJlbCB7XG4gIG1hcmdpbjogMDtcbn1cblxuLmxvY2F0aW9uLXN0YXRpb25fX3RpdGxlLFxuLmV4cG9ydC1maWx0ZXJfX3RpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5leHBvcnQtZmlsdGVyX190aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG5cbi5kYXRlLWljb24ge1xuICB3aWR0aDogMjRweDtcbn1cblxuLmNpdHJvbi1pY29uIHtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogMzJweDtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19jaXRyb24uc3ZnXCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAtd2Via2l0LW1hc2stcG9zaXRpb24teTogNHB4O1xufVxuXG4uZm9ybS1jaGVjayB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cblxuLmxvY2F0aW9uLXN0YXRpb25fX3BsYWNlaG9sZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\n\nimport { Marker } from 'app/shared/models/marker.interface';\nimport { MeteoStation } from 'app/shared/models/meteo-station.interface';\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { DjuService, Location } from './dju.service';\n\nimport { DatePipe } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { saveAs } from 'file-saver';\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n@Component({\n selector: 'ga-dju',\n templateUrl: './dju.component.html',\n styleUrls: ['./dju.component.scss'],\n providers: [DjuService, DatePipe],\n})\nexport class DjuComponent implements OnInit {\n /**\n * Map options\n */\n mapOptions = {\n zoom: 5,\n lat: 47,\n lng: 2.29,\n height: 250,\n };\n\n /**\n * Markers for the map\n */\n markers: Marker[] = [];\n\n /**\n * Value in search field\n */\n searchValue = '';\n\n /**\n * Location found for the user search\n */\n location: Location;\n\n /**\n * Closest meteo station from the location\n */\n station: MeteoStation;\n\n /**\n * DJU dates available. We mainly use datesSelected but keep bounds in memory.\n */\n datesAvailable: {\n start: Date;\n end: Date;\n };\n\n /**\n * DJU dates selected for export\n */\n datesSelected: {\n start: string;\n end: string;\n } = {\n start: null,\n end: null,\n };\n\n /**\n * Are location, station and dates loading\n */\n isLoading = false;\n\n /**\n * Is currently exporting\n */\n isExporting = false;\n\n /**\n * DJU possible grouping values for export\n */\n djuGroupValues: Array<{\n value: 'daily' | 'monthly' | 'yearly';\n name: string;\n }> = [\n {\n value: 'daily',\n name: 'daily',\n },\n {\n value: 'monthly',\n name: 'monthly',\n },\n {\n value: 'yearly',\n name: 'yearly',\n },\n ];\n\n /**\n * DJU selected grouping value\n */\n groupSelected = 'daily';\n\n constructor(\n private djuService: DjuService,\n private exportService: ExportService,\n private usersService: UsersService,\n private router: Router,\n private datePipe: DatePipe,\n private translate: TranslateService\n ) {}\n\n ngOnInit() {\n if (!this.usersService.isSessionUserFromCitron()) {\n this.router.navigate(['/404']);\n }\n }\n\n /**\n * Launch new address search and set location, station and markers.\n */\n async searchAddress() {\n this.isLoading = true;\n const query = this.searchValue;\n try {\n const data = await this.djuService.searchStation(query);\n\n this.location = data.location;\n this.station = data.station;\n this.datesAvailable = {\n start: new Date(data.dates.start),\n end: new Date(data.dates.end),\n };\n // Set as start date the beginning of date end's year\n const dateYearStart = new Date(this.datesAvailable.end.getFullYear(), 0, 1);\n this.datesSelected = {\n start: this.formatDate(dateYearStart),\n end: this.formatDate(this.datesAvailable.end),\n };\n\n this.updateMarkers();\n } catch (err) {\n this.handleErrorSwal(err.errorCode);\n }\n this.isLoading = false;\n }\n\n /**\n * Update location and station markers\n */\n private updateMarkers() {\n const locationMarker: Marker = {\n lat: this.location.latitude,\n lng: this.location.longitude,\n config: 'dju',\n data: {\n title: this.locationAddressDisplay,\n },\n type: 'defaultOne',\n };\n const stationMarker: Marker = {\n lat: this.station.location.coordinates[1],\n lng: this.station.location.coordinates[0],\n config: 'dju',\n data: {\n title: `Station météo ${this.station.name}`,\n },\n type: 'onNotice',\n };\n this.markers = [locationMarker, stationMarker];\n }\n\n /**\n * Export DJU action\n */\n exportDju() {\n if (\n !this.isExporting &&\n this.station &&\n this.datesSelected &&\n this.datesSelected.start &&\n this.datesSelected.end &&\n this.groupSelected\n ) {\n this.getExportFileAndSave(\n this.station,\n this.datesSelected.start,\n this.datesSelected.end,\n this.groupSelected\n );\n }\n }\n\n /**\n * Get and download requested DJU export file\n */\n getExportFileAndSave(station: MeteoStation, start: string, end: string, grouping: string) {\n this.isExporting = true;\n const route = '/api/export/excel/djus';\n const params = {\n station: station._id,\n start,\n end,\n group: grouping,\n };\n\n const name = `DJU_${station.name}_${start}_${end}_${this.translate._(grouping)}.xlsx`;\n this.exportService.getFile(route, params).subscribe(\n file => {\n saveAs(file, name);\n this.isExporting = false;\n },\n err => {\n this.isExporting = false;\n this.handleErrorSwal('export_error');\n }\n );\n }\n\n /**\n * Update date selected\n * @param {string} value - A string that represents a valid date (format YYYY-MM-DD), otherwise it is empty.\n * @param {\"start\"|\"end\"} date - selected date to set\n */\n onDateChange(value: string, date: 'start' | 'end') {\n if (value) {\n this.datesSelected[date] = value;\n }\n }\n\n /**\n * @returns {boolean} true if location, station and dates found and ready for display\n */\n get isLocationStationDatesFound(): boolean {\n return Boolean(this.location && this.station && this.datesAvailable);\n }\n\n /**\n * @return {boolean} true if date selected ready for use (= defined), false otherwise\n */\n get isDateSelectedDefined(): boolean {\n return Boolean(this.datesSelected && this.datesSelected.start && this.datesSelected.end);\n }\n\n /**\n * Get location address for display\n */\n get locationAddressDisplay(): string {\n if (!this.location) {\n return '';\n }\n const streetNumber = this.location.streetNumber ? `${this.location.streetNumber}, ` : '';\n const zipcode = this.location.zipcode ? this.location.zipcode : '';\n return `${streetNumber}${this.location.streetName}, ${zipcode} ${this.location.city}`;\n }\n\n /**\n * Get location img source\n */\n get locationImgSrc(): string {\n return 'assets/img/carto/geolocation_small.png';\n }\n\n /**\n * Get station img source\n */\n get stationImgSrc(): string {\n return 'assets/img/carto/geolocation_small_orange.png';\n }\n\n /**\n * Get date img source\n */\n get datesImgSrc(): string {\n return 'assets/img/icons/calendar.png';\n }\n\n /**\n * Format date to string at format YYYY-MM-DD\n * @param {Date} date - date to format\n * @returns {string} date formatted\n */\n private formatDate(date: Date): string {\n return this.datePipe.transform(date, 'yyyy-MM-dd');\n }\n\n /**\n * Handle error display by opening an error/warning swal\n * @param {string} errorCode - error code\n */\n private handleErrorSwal(errorCode: string) {\n const mapping: { [key: string]: [string, string, SweetAlertIcon] } = {\n address_not_found: ['Adresse introuvable', 'Veuillez essayer une autre adresse', 'warning'],\n station_not_found: ['Station météo introuvable', 'Veuillez essayer une autre adresse', 'error'],\n djus_not_found: ['Aucun DJU trouvé pour la station météo', 'Veuillez essayer ultérieurement', 'error'],\n error_search_station: ['Impossible de trouver la station', 'Une erreur inconnue est survenue', 'error'],\n export_error: [\n 'Toutes nos excuses',\n \"Une erreur s'est produite lors de l'export de données. Merci de réessayer.\",\n 'error',\n ],\n };\n const defaultErr: [string, string, SweetAlertIcon] = [\n 'Toutes nos excuses',\n \"Une erreur inconnue s'est produite. Merci de réessayer ultérieurement.\",\n 'error',\n ];\n const item = mapping[errorCode] ? mapping[errorCode] : defaultErr;\n Swal.fire(item[0], item[1], item[2]);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { DjuComponent } from './dju.component';\n\nconst DJU_ROUTE = [\n {\n path: '',\n component: DjuComponent,\n canActivate: [],\n },\n];\n\n@NgModule({\n declarations: [DjuComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(DJU_ROUTE)],\n})\nexport class DjuModule {}\n","import { Injectable } from '@angular/core';\nimport { MeteoStation } from 'app/shared/models/meteo-station.interface';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { PageService } from 'app/shared/services/page/page.service';\n\nexport interface MeteoStationSearch {\n dates: {\n start: string;\n end: string;\n };\n location: Location;\n station: MeteoStation;\n}\n\nexport interface Location {\n name: string;\n streetNumber?: string;\n streetName: string;\n zipcode?: string;\n city: string;\n longitude: number;\n latitude: number;\n}\n\n@Injectable()\nexport class DjuService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n async searchStation(query: string): Promise {\n const res = await this.get(`/api/meteo-stations/search?s=${query}`);\n return res.data;\n }\n}\n","export default \".page-container.documents {\\n max-height: calc(100vh - 100px);\\n overflow-x: hidden;\\n}\\n\\n.files-table {\\n width: 100%;\\n background-color: white;\\n font-size: 14px;\\n}\\n\\n.action-btn {\\n cursor: pointer;\\n}\\n\\n#file-upload {\\n display: none;\\n}\\n\\n.icon-color {\\n color: #a7b29d;\\n}\\n\\n.row-file {\\n cursor: default;\\n}\\n\\n.row-navigation {\\n max-height: calc(100vh - 297px);\\n min-height: calc(100vh - 297px);\\n overflow-y: auto;\\n overflow-x: hidden;\\n}\\n\\n.dragging {\\n -webkit-transition: opacity 0.5s ease-in-out;\\n transition: opacity 0.5s ease-in-out;\\n opacity: 0.5;\\n}\\n\\n.no-dragging {\\n -webkit-transition: opacity 0.5s ease-in-out;\\n transition: opacity 0.5s ease-in-out;\\n}\\n\\n.information-container {\\n background-color: white;\\n margin-bottom: 1rem;\\n height: 100%;\\n}\\n\\n.information-container .title {\\n font-size: 14px;\\n font-weight: 700;\\n margin: 8px;\\n}\\n\\n.information-container .subtitle {\\n font-size: 14px;\\n margin: 8px;\\n}\\n\\n.breadcrumb {\\n font-size: 100%;\\n margin-top: calc(1rem - 10px);\\n}\\n\\n.breadcrumb li:not(:last-child):hover {\\n cursor: pointer;\\n}\\n\\n.breadcrumb li:not(:last-child):hover span {\\n text-decoration: underline;\\n}\\n\\n.clear-search {\\n cursor: pointer;\\n}\\n\\n.search-input {\\n border: none;\\n padding: 12px 10px;\\n font-size: 14px;\\n -webkit-transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);\\n transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);\\n}\\n\\n.search-input:active, .search-input:focus {\\n background-color: white;\\n}\\n\\n.search-input:hover, .search-input:active, .search-input:focus {\\n box-shadow: 0 14px 26px -12px rgba(255, 255, 255, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(255, 255, 255, 0.2);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2RvY3VtZW50cy9kb2N1bWVudHMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2RvY3VtZW50cy9kb2N1bWVudHMuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksK0JBQUE7RUFFQSxrQkFBQTtBQ0ZKOztBREtBO0VBQ0ksV0FBQTtFQUNBLHVCQUFBO0VBQ0EsZUFBQTtBQ0ZKOztBRElBO0VBQ0ksZUFBQTtBQ0RKOztBRElBO0VBQ0ksYUFBQTtBQ0RKOztBRElBO0VBQ0ksY0VRUTtBRFRaOztBRElBO0VBQ0ksZUFBQTtBQ0RKOztBRElBO0VBQ0ksK0JBQUE7RUFDQSwrQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7QUNESjs7QURJQTtFQUNJLDRDQUFBO0VBSUEsb0NBQUE7RUFDQSxZQUFBO0FDREo7O0FESUE7RUFDSSw0Q0FBQTtFQUlBLG9DQUFBO0FDREo7O0FESUE7RUFDSSx1QkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtBQ0RKOztBREdJO0VBQ0ksZUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtBQ0RSOztBREdJO0VBQ0ksZUFBQTtFQUNBLFdBQUE7QUNEUjs7QURLQTtFQUNJLGVBQUE7RUFPQSw2QkFBQTtBQ1JKOztBREVJO0VBQ0ksZUFBQTtBQ0FSOztBRENRO0VBQ0ksMEJBQUE7QUNDWjs7QURLQTtFQUNJLGVBQUE7QUNGSjs7QURLQTtFQUNJLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFXQSxrSEFBQTtFQUFBLDBHQUFBO0FDWko7O0FERUk7RUFFSSx1QkFBQTtBQ0RSOztBREdJO0VBR0kscUlBQUE7QUNIUiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2RvY3VtZW50cy9kb2N1bWVudHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzJztcblxuLnBhZ2UtY29udGFpbmVyLmRvY3VtZW50cyB7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDEwMHB4KTtcbiAgICAvL292ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xufVxuXG4uZmlsZXMtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbn1cbi5hY3Rpb24tYnRuIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbiNmaWxlLXVwbG9hZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmljb24tY29sb3Ige1xuICAgIGNvbG9yOiAkZG9jdW1lbnRzO1xufVxuXG4ucm93LWZpbGUge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLnJvdy1uYXZpZ2F0aW9uIHtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjk3cHgpO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyOTdweCk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbi5kcmFnZ2luZyB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gICAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcbiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuICAgIG9wYWNpdHk6IDAuNTtcbn1cblxuLm5vLWRyYWdnaW5nIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcbiAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcbiAgICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuICAgIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG59XG5cbi5pbmZvcm1hdGlvbi1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgLnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtYXJnaW46IDhweDtcbiAgICB9XG4gICAgLnN1YnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBtYXJnaW46IDhweDtcbiAgICB9XG59XG5cbi5icmVhZGNydW1iIHtcbiAgICBmb250LXNpemU6IDEwMCU7XG4gICAgbGk6bm90KDpsYXN0LWNoaWxkKTpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBtYXJnaW4tdG9wOiBjYWxjKDFyZW0gLSAxMHB4KTtcbn1cblxuLmNsZWFyLXNlYXJjaCB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uc2VhcmNoLWlucHV0IHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMTJweCAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgfVxuICAgICY6aG92ZXIsXG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMTRweCAyNnB4IC0xMnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MiksIDAgNHB4IDIzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksXG4gICAgICAgICAgICAwIDhweCAxMHB4IC01cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIH1cbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIGJhY2tncm91bmQtY29sb3IgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuIiwiLnBhZ2UtY29udGFpbmVyLmRvY3VtZW50cyB7XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDBweCk7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuLmZpbGVzLXRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5hY3Rpb24tYnRuIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4jZmlsZS11cGxvYWQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uaWNvbi1jb2xvciB7XG4gIGNvbG9yOiAjYTdiMjlkO1xufVxuXG4ucm93LWZpbGUge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5yb3ctbmF2aWdhdGlvbiB7XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyOTdweCk7XG4gIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyOTdweCk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuLmRyYWdnaW5nIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gIC1tb3otdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcbiAgb3BhY2l0eTogMC41O1xufVxuXG4ubm8tZHJhZ2dpbmcge1xuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcbiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gIC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xufVxuXG4uaW5mb3JtYXRpb24tY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGhlaWdodDogMTAwJTtcbn1cbi5pbmZvcm1hdGlvbi1jb250YWluZXIgLnRpdGxlIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDhweDtcbn1cbi5pbmZvcm1hdGlvbi1jb250YWluZXIgLnN1YnRpdGxlIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW46IDhweDtcbn1cblxuLmJyZWFkY3J1bWIge1xuICBmb250LXNpemU6IDEwMCU7XG4gIG1hcmdpbi10b3A6IGNhbGMoMXJlbSAtIDEwcHgpO1xufVxuLmJyZWFkY3J1bWIgbGk6bm90KDpsYXN0LWNoaWxkKTpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5icmVhZGNydW1iIGxpOm5vdCg6bGFzdC1jaGlsZCk6aG92ZXIgc3BhbiB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uY2xlYXItc2VhcmNoIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uc2VhcmNoLWlucHV0IHtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAxMnB4IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cbi5zZWFyY2gtaW5wdXQ6YWN0aXZlLCAuc2VhcmNoLWlucHV0OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uc2VhcmNoLWlucHV0OmhvdmVyLCAuc2VhcmNoLWlucHV0OmFjdGl2ZSwgLnNlYXJjaC1pbnB1dDpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyNnB4IC0xMnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MiksIDAgNHB4IDIzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgOHB4IDEwcHggLTVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { HttpEventType, HttpResponse } from '@angular/common/http';\nimport { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\nimport * as moment from 'moment';\nimport { from, Subject } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { InputModalComponent } from 'app/shared/components/modals/input-modal/input-modal.component';\nimport { FormatFileSizePipe } from 'app/shared/pipes/format-file-size.pipe';\nimport { FilesTypeService } from 'app/shared/services/files/files-type.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\nimport { FileStorageService } from 'app/shared/services/files/file-storage.service';\nimport { filter, mergeMap, tap } from 'rxjs/operators';\nimport { DocumentsService } from './documents.service';\nimport { UploadSnackbarComponent } from './upload-snackbar.component';\n@Component({\n selector: 'ga-documents',\n templateUrl: './documents.component.html',\n styleUrls: ['./documents.component.scss'],\n providers: [DocumentsService],\n})\nexport class DocumentsComponent implements OnInit {\n // Item selected by the user (mouse click)\n selectedItem: any = null;\n // All files items of the current directory\n files: any[] = [];\n // Current directory id\n currentDirectory: any = null;\n // List of parents directory. stack LIFO\n parentDirectory: any[] = [];\n // Types allowed for file upload\n allowedTypes: string[] = [];\n\n // is the information panel open\n isInformationOpened = false;\n // Tag list\n tagsAll: any[] = [];\n // Sites List\n sitesAll: any[] = [];\n // Contracts List\n contractsAll: any[] = [];\n\n // Drag/Drop\n isDragging = false;\n\n // Create Directory Modal\n @ViewChild('groupModal', { static: true }) private directoryModal: InputModalComponent;\n modalDirectoryError = '';\n modalDirectoryValue = '';\n\n // Search text\n searchQuery = '';\n\n loading = {\n allowedTypes: true,\n tags: true,\n sites: true,\n contracts: true,\n };\n\n loadingSelectedItem = true;\n\n // Notification positioning\n horizontalPosition: MatSnackBarHorizontalPosition = 'end';\n verticalPosition: MatSnackBarVerticalPosition = 'top';\n\n // is uploading or removing action in progress\n isUploadingOrRemoving = false;\n\n constructor(\n private documentsService: DocumentsService,\n private formatFileSize: FormatFileSizePipe,\n private fileTypeService: FilesTypeService,\n private sitesService: SitesService,\n private fileStorageService: FileStorageService,\n private snackBar: MatSnackBar\n ) {}\n\n ngOnInit() {\n this.initFiles();\n this.documentsService.getAllowedTypes().then(response => {\n if (response.data) {\n this.allowedTypes = response.data.map(x => '.' + x);\n this.loading.allowedTypes = false;\n }\n });\n this.documentsService.getTagList().then(response => {\n if (response.data) {\n this.tagsAll = response.data;\n this.loading.tags = false;\n }\n });\n this.documentsService.getSitesList().then(response => {\n if (response.data) {\n this.sitesAll = response.data;\n this.sitesService.createGoogleAddressToDisplay(this.sitesAll);\n this.loading.sites = false;\n }\n });\n this.documentsService.getContractsList().then(response => {\n if (response.data) {\n this.contractsAll = response.data;\n this.loading.contracts = false;\n }\n });\n }\n\n /**\n * Check if user close page or change page\n * HostListener is for the brower window (close)\n * CanDesactivate is mandatory for the canDeactivateGuard\n */\n @HostListener('window:beforeunload')\n canDeactivate(): boolean {\n return !this.isUploadingOrRemoving;\n }\n\n initFiles() {\n this.currentDirectory = null;\n this.parentDirectory = [];\n this.searchQuery = '';\n this.documentsService.getFiles(this.currentDirectory).then(response => {\n if (response.data) {\n this.files = response.data;\n }\n });\n }\n\n selectItem(item) {\n this.loadingSelectedItem = true;\n\n this.selectedItem = item;\n if (!this.selectedItem.tags) {\n this.selectedItem.tags = [];\n }\n if (!this.selectedItem.relations) {\n this.selectedItem.relations = {};\n }\n this.setSelectedItemSites();\n if (!this.selectedItem.relations.contracts) {\n this.selectedItem.relations.contracts = [];\n }\n\n this.loadingSelectedItem = false;\n }\n\n setSelectedItemSites() {\n if (!this.selectedItem.relations.sites) {\n this.selectedItem.relations.sites = [];\n } else {\n this.selectedItem.relations.sites.forEach(site => {\n site.googleAddress = this.sitesAll.find(s => s._id === site._id).googleAddress;\n });\n }\n }\n\n getFileLineClass(item) {\n return item === this.selectedItem ? 'table-info' : '';\n }\n\n getIconClass(item) {\n return item.isDirectory ? 'fa fa-folder' : 'fa fa-file icon-color';\n }\n\n getFileType(item) {\n if (item.isDirectory) {\n return 'Dossier';\n }\n return this.fileTypeService.getTypeNameFromMIME(item.mimetype);\n }\n\n /**\n * Get username from file or '-' if not found.\n * @param item File\n * @returns Username\n */\n public getFileUsername(item): string {\n if (item.user) {\n if (item.user.firstname && item.user.name) {\n return item.user.firstname + ' ' + item.user.name;\n } else if (item.user.name) {\n return item.user.name;\n } else if (item.user.firstname) {\n return item.user.firstname;\n }\n }\n\n return '-';\n }\n\n getFileSize(item) {\n if (item.size) {\n return this.formatFileSize.transform(item.size);\n }\n return '-';\n }\n\n getUpdatedDate(item) {\n if (item.updatedAt) {\n return moment(item.updatedAt).format('DD/MM/YYYY HH:mm');\n }\n return 'NC';\n }\n\n getClassBack() {\n return this.parentDirectory.length ? '' : 'disabled';\n }\n\n getClassDelete() {\n return this.selectedItem ? '' : 'disabled';\n }\n\n getClassDownload() {\n return this.selectedItem && !this.selectedItem.isDirectory ? '' : 'disabled';\n }\n\n addDragStyle() {\n this.isDragging = true;\n }\n\n removeDragStyle() {\n this.isDragging = false;\n }\n\n getDragClass() {\n return this.isDragging ? 'dragging' : 'no-dragging';\n }\n\n onSelectFile(e) {\n const files = Array.from(e.target.files);\n this.uploadFile(files);\n e.target.value = '';\n }\n\n onDropFile(files) {\n this.uploadFile(files);\n }\n\n getClassNavigation() {\n return this.isInformationOpened ? 'col-md-10' : 'col-md-12';\n }\n\n uploadFile(files) {\n if (files && files.length) {\n this.isUploadingOrRemoving = true;\n const progressObservable = new Subject();\n progressObservable.next(0);\n const snack = this.snackBar.openFromComponent(UploadSnackbarComponent, {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n data: progressObservable,\n });\n const totalFileSize = files.reduce((memo, x) => memo + x.size, 0);\n let uploadFileSize = 0;\n const id = this.currentDirectory ? this.currentDirectory._id : null;\n const subscription = from(files)\n .pipe(\n mergeMap(event => this.documentsService.uploadFile(event, id)),\n filter(event => event.type === HttpEventType.Response),\n tap((event: HttpResponse) => {\n const data = event.body['data'];\n if (data) {\n this.files.push(data);\n uploadFileSize += data.size;\n progressObservable.next(Math.round((uploadFileSize / totalFileSize) * 100));\n }\n })\n )\n .subscribe({\n error: err => {\n snack.dismiss();\n const error: ApiCitronError = err.error;\n this.openError(\n \"Erreur lors de l'upload\",\n \"Une erreur est survenue lors de l'upload de fichier(s). Veuillez réessayer.
\" +\n '

' +\n 'Formats autorisés : ' +\n this.allowedTypes.join(', ') +\n '
' +\n 'Taille maximale autorisée : 50 Mo' +\n '

' +\n 'ErrorCode: ' +\n error.errorCode\n );\n this.isUploadingOrRemoving = false;\n },\n complete: () => {\n snack.dismiss();\n this.snackBar.open('Upload effectué', 'Masquer', {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n duration: 5000,\n });\n this.isUploadingOrRemoving = false;\n subscription.unsubscribe();\n },\n });\n }\n }\n\n createDirectory(name) {\n const id = this.currentDirectory ? this.currentDirectory._id : null;\n this.documentsService\n .createDirectory(name, id)\n .then(response => {\n if (response.data) {\n this.files.push(response.data);\n }\n })\n .catch(err => {\n this.openError(\n 'Erreur lors de la création',\n 'Une erreur est survenue lors de la création du dossier. Veuillez réessayer.

ErrorCode: ' +\n err.errorCode\n );\n });\n }\n\n openDirectoryModal({ error = '', value = '' } = {}) {\n this.modalDirectoryError = error;\n this.modalDirectoryValue = value;\n // Reset the value selected before\n this.directoryModal.inputModel = '';\n\n this.directoryModal.show();\n }\n\n openDirectory(item) {\n if (item === null || item.isDirectory) {\n if (!this.searchQuery) {\n const index = this.parentDirectory.indexOf(item);\n if (index > -1) {\n this.parentDirectory.splice(index, this.parentDirectory.length - index);\n } else {\n this.parentDirectory.push(this.currentDirectory);\n }\n } else {\n this.searchQuery = '';\n this.parentDirectory = [];\n }\n this.currentDirectory = item;\n const id = this.currentDirectory ? this.currentDirectory._id : null;\n this.documentsService.getFiles(id).then(response => {\n this.files = response.data;\n });\n this.selectedItem = null;\n }\n }\n\n goBack() {\n if (this.parentDirectory.length) {\n this.selectedItem = null;\n this.currentDirectory = this.parentDirectory.pop();\n const id = this.currentDirectory ? this.currentDirectory._id : null;\n this.documentsService.getFiles(id).then(response => {\n this.files = response.data;\n });\n }\n }\n\n toggleInformation() {\n this.isInformationOpened = !this.isInformationOpened;\n }\n\n onChangeInformationItem(item) {\n this.documentsService.saveFile(this.selectedItem);\n }\n\n get allowedFilesJoined() {\n return this.allowedTypes.join(',');\n }\n\n deleteSelectedItem() {\n const item = this.selectedItem;\n if (item) {\n Swal.fire({\n title: 'Êtes vous sûr de vouloir supprimer ce fichier ?',\n text: 'Ce fichier sera supprimé définitivement!',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, supprimer',\n cancelButtonText: 'Non, je veux le garder',\n }).then(result => {\n if (result.value) {\n this.isUploadingOrRemoving = true;\n const snack = this.snackBar.open('Suppression en cours', null, {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n this.documentsService\n .deleteFile(item._id)\n .then(response => {\n snack.dismiss();\n if (response.data) {\n this.snackBar.open('Suppression réussie', 'Masquer', {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n duration: 5000,\n });\n this.selectedItem = null;\n const index = this.files.indexOf(item);\n if (index > -1) {\n this.files.splice(index, 1);\n }\n }\n this.isUploadingOrRemoving = false;\n })\n .catch(err => {\n this.openError(\n 'Erreur lors de la suppression',\n \"Une erreur est survenue lors de la suppression de l'élément. Veuillez réessayer.

ErrorCode: \" +\n err.errorCode\n );\n this.isUploadingOrRemoving = false;\n });\n }\n });\n }\n }\n\n downloadSelectedItem() {\n if (this.selectedItem && !this.selectedItem.isDirectory) {\n const item = this.selectedItem;\n this.fileStorageService.downloadFile(item.file, item.originalname);\n }\n }\n\n search(value) {\n if (this.searchQuery) {\n const searchQuery = this.searchQuery;\n if (searchQuery) {\n this.documentsService.searchFile(searchQuery).then(response => {\n if (response.data) {\n this.files = response.data;\n }\n });\n }\n } else {\n this.initFiles();\n }\n }\n\n clearSearch() {\n this.initFiles();\n }\n\n private openError(errorTitle: string, errorMessage: string) {\n return Swal.fire(errorTitle, errorMessage, 'error');\n }\n\n tableNavigate(key) {\n let index = -1;\n switch (key.code) {\n case 'ArrowUp':\n index = this.files.indexOf(this.selectedItem);\n if (index > 0) {\n const previousItem = this.files[index - 1];\n this.selectItem(previousItem);\n } else if (!this.selectedItem && this.files.length) {\n this.selectItem(this.files[0]);\n }\n break;\n case 'ArrowDown':\n index = this.files.indexOf(this.selectedItem);\n if (index > -1 && index < this.files.length - 1) {\n const nextItem = this.files[index + 1];\n this.selectItem(nextItem);\n } else if (!this.selectedItem && this.files.length) {\n this.selectItem(this.files[0]);\n }\n break;\n case 'Enter':\n if (this.selectedItem && this.selectedItem.isDirectory) {\n this.openDirectory(this.selectedItem);\n }\n break;\n case 'ArrowLeft':\n this.goBack();\n break;\n case 'Delete':\n this.deleteSelectedItem();\n break;\n }\n }\n\n onFileRejected(files) {\n let fileNames = '';\n files.forEach(file => {\n fileNames += file.name + '
';\n });\n const title = files.length > 1 ? 'Fichier(s) non accepté(s)' : 'Fichier non accepté';\n const body =\n files.length > 1\n ? 'Les fichiers suivants ont été rejetés car leurs format ne sont pas valides :'\n : \"Le fichier suivant a été rejeté car son format n'est pas valide :\";\n this.openError(\n title,\n body + '

' + fileNames + '
Formats autorisés : ' + this.allowedTypes.join(', ')\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { CanDeactivateGuard } from '../../shared/services/guards/can-deactivate-guard.service';\nimport { DocumentsComponent } from './documents.component';\nimport { UploadSnackbarComponent } from './upload-snackbar.component';\n\nconst REGEX_ROUTE = [\n {\n path: '',\n component: DocumentsComponent,\n canActivate: [AccessGuard],\n canDeactivate: [CanDeactivateGuard],\n data: { redirectionForbiddenUrl: '/accueil' },\n },\n];\n\n@NgModule({\n declarations: [DocumentsComponent, UploadSnackbarComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(REGEX_ROUTE)],\n entryComponents: [UploadSnackbarComponent],\n})\nexport class DocumentsModule {}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\nimport { SessionService } from '../../shared/services/session/session.service';\n\n@Injectable()\nexport class DocumentsService extends PageService {\n constructor(public apiService: ApiService, public router: Router, private sessionService: SessionService) {\n super(apiService);\n }\n\n getFiles(folder: string = null) {\n return this.get('/api/files/list/' + (folder ? folder : ''));\n }\n\n createDirectory(name: string, parent: string) {\n return this.post('/api/files/directory', { name, parent });\n }\n\n uploadFile(file, parent: string) {\n const formData: FormData = new FormData();\n formData.append('companyId', this.sessionService.getCompanyId());\n formData.append('parent', parent);\n formData.append('file', file, file.name);\n const options = {\n reportProgress: true,\n headers: new HttpHeaders({\n Accept: 'application/json',\n Authorization: 'Basic ' + this.apiService.getToken(),\n }),\n };\n const url = `/api/files/upload?companyId=${this.sessionService.getCompanyId()}&parent=${parent}`;\n return this.apiService.upload(url, formData, options);\n }\n\n getAllowedTypes() {\n return this.get('/api/files/allowedtypes');\n }\n\n getTagList() {\n return this.get('/api/tags/crud/');\n }\n\n getSitesList() {\n return this.get('/api/companies/' + this.apiService.sessionService.getCompanyId() + '/sites');\n }\n\n getContractsList() {\n return this.get('/api/contracts/');\n }\n\n saveFile(file) {\n return this.post('/api/files/save', { file });\n }\n\n deleteFile(fileId) {\n return this.delete('/api/files/' + fileId);\n }\n\n searchFile(searchQuery) {\n return this.get('/api/files/search?s=' + searchQuery);\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'upload-snackbar',\n template: `\n
\n
Upload en cours
\n
{{ data | async }} %
\n
\n `,\n})\nexport class UploadSnackbarComponent {\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: Observable) {}\n}\n","export default \".row-tiles {\\n margin-bottom: 30px;\\n}\\n\\n.btn-transparent {\\n color: transparent;\\n background-color: transparent !important;\\n}\\n\\n.citron-btn {\\n font-size: 12px;\\n margin: 15px;\\n padding: 10px 15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9mb2xsb3d1cC9mb2xsb3d1cC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvZW5lcmd5L2ZvbGxvd3VwL2ZvbGxvd3VwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksbUJBQUE7QUNGSjs7QURLQTtFQUNJLGtCQUFBO0VBQ0Esd0NBQUE7QUNGSjs7QURLQTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7QUNGSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS9mb2xsb3d1cC9mb2xsb3d1cC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvbWl4aW5zJztcbkBpbXBvcnQgJy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4ucm93LXRpbGVzIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuXG4uYnRuLXRyYW5zcGFyZW50IHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBtYXJnaW46IDE1cHg7XG4gICAgcGFkZGluZzogMTBweCAxNXB4O1xufVxuIiwiLnJvdy10aWxlcyB7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG5cbi5idG4tdHJhbnNwYXJlbnQge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBtYXJnaW46IDE1cHg7XG4gIHBhZGRpbmc6IDEwcHggMTVweDtcbn0iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as moment from 'moment';\n\n// services & pipes\nimport { BillsService } from 'app/shared/services/bills/bills.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { DjuService } from 'app/shared/services/dju/dju.service';\nimport { EnergyDataService } from 'app/shared/services/energy/energy-data.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { FollowupService } from './followup.service';\n\n// interfaces\nimport {\n OptionValueGroup,\n QueryFilterRoutingRef,\n} from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { GroupStackBarChartSerie } from 'app/shared/models/charts/chart-serie.interface';\nimport { ColorDonut, ColorGA, ToggleDonutProperties } from 'app/shared/models/charts/charts.interface';\nimport { CommonEnergyRepartitionMonthly } from 'app/shared/models/energy-data-bills.interface';\nimport { MapOptions, Marker } from 'app/shared/models/marker.interface';\nimport { BarChartProperties, DoubleDonutProperties } from './followup.interface';\n\n// components\nimport { ChartBarToggleComponent } from 'app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component';\nimport { FollowupFilterComponent } from 'app/shared/components/filters/followup-filter/followup-filter.component';\n\nexport interface LoadingFollowUp {\n isLoading: boolean;\n nbQueriesDone: number;\n nbQueriesToDo: number;\n}\n\n@Component({\n selector: 'ga-followup',\n templateUrl: './followup.component.html',\n styleUrls: ['./followup.component.scss'],\n providers: [FollowupService],\n})\nexport class FollowupComponent implements OnInit {\n markers: Marker[] = [];\n\n mapOptions: MapOptions = {\n zoom: 8,\n lat: 49.894067,\n lng: 2.2957529999999906,\n height: 250,\n };\n\n totalConso = 0;\n totalHT = 0;\n totalTTC = 0;\n\n // consumptions pie\n pieConsumptionsProperties: DoubleDonutProperties = {\n title: 'Répartition de la consommation énergétique sur la période',\n dataInside: [],\n dataOutside: [],\n options: {},\n legend: [],\n unit: '',\n };\n\n // costs TTC pie\n pieTTCProperties: DoubleDonutProperties = {\n dataOutside: [],\n dataInside: [],\n options: {},\n unit: '€',\n };\n\n // costs HTVA pie\n pieHTVAProperties: DoubleDonutProperties = {\n dataOutside: [],\n dataInside: [],\n options: {},\n unit: '€',\n };\n\n // bar chart year\n barProperties: BarChartProperties = {\n isLoading: false,\n isDjuActivated: true,\n hasDju: true,\n filters: null,\n datasets: [],\n labels: [],\n colors: [],\n width: 1900,\n minHeight: 340,\n maxHeight: 340,\n options: [],\n legend: [],\n title: 'Répartition mensuelle sur la période',\n titleUnit: 'kWhep',\n toggleTitles: [\n { name: 'CONSOMMATION (kWhep)', display: true },\n { name: 'HTVA (€)', display: true },\n { name: 'TTC (€)', display: true },\n ],\n downloadFileNames: ['', 'Coût mensuel HTVA sur la période (€)', 'Coût mensuel TTC sur la période (€)'],\n units: ['Kwhep', '€', '€'],\n monthData: [],\n monthDjus: [],\n };\n\n pieToggleGenProperties: ToggleDonutProperties = {\n title: 'Répartition des coûts énergétiques sur la période',\n downloadFileNames: [\n 'Répartition des coûts énergétiques HTVA sur la période',\n 'Répartition des coûts énergétiques TTC sur la période',\n ],\n toggleNames: ['HTVA', 'TTC'],\n legend: [],\n optionsSets: [],\n };\n\n fluidColors: ColorGA[] = [];\n frenchFluidLabels = [];\n pieInnerColor: any;\n\n // pies data\n dataConsumptionsPerFilter = [];\n dataCostsTTCPerFilter = [];\n dataCostsHTVAPerFilter = [];\n\n fluidsSelectedArray = []; // ['elec', 'gaz']\n nbCurrentFluidSelected = 0;\n\n loadingChartData: LoadingFollowUp = {\n isLoading: false,\n nbQueriesDone: 0,\n nbQueriesToDo: 1, // minimum is one query for the default site\n };\n\n queryExport: any;\n queryFilterSelected: OptionValueGroup;\n\n fluidCategory: string;\n fluidsAccepted: string[] = [];\n\n @ViewChild(FollowupFilterComponent, { static: false }) filterComponent: FollowupFilterComponent;\n @ViewChild('repartitionMonthlyChart', { static: false }) repartitionMonthlyChart: ChartBarToggleComponent;\n\n constructor(\n private followupService: FollowupService,\n private route: ActivatedRoute,\n private sitesService: SitesService,\n private tilesService: TilesService,\n private mapService: MapService,\n private djuService: DjuService,\n private energyService: EnergyService,\n private chartService: ChartService,\n private billService: BillsService,\n private filterService: FilterService,\n private energyDataService: EnergyDataService,\n private translateService: TranslateService\n ) {}\n\n ngOnInit() {\n /**\n * {Params} route.queryParams\n * {string} route.queryParams.siteId - site id to preselect\n * {Object} route.data\n * {string} route.data.fluidCategory\n * {string} route.data.page\n */\n\n if (this.route.queryParams && this.route.data) {\n // queryParams can contain 'siteId'\n this.route.queryParams.subscribe(() => {\n this.route.data.subscribe(params => {\n this.initComponentQueries(params);\n });\n });\n }\n }\n\n initComponentQueries(params) {\n this.fluidCategory = 'energy';\n if (params && params['fluidCategory'] && params['fluidCategory'] === 'water') {\n this.fluidCategory = 'water';\n }\n this.fluidsAccepted = this.energyService.getFluidsByCategory(this.fluidCategory);\n\n this.initComponentSetup();\n }\n\n initComponentSetup() {\n this.loadingChartData.isLoading = true;\n // ----- elements shared by all charts\n\n // ----- pies chart : color of the inner part\n this.pieInnerColor = this.chartService.getColorRgbToHex('LIGHTGREY');\n }\n\n resetComponents(filters) {\n this.loadingChartData.nbQueriesDone = 0;\n\n this.dataCostsHTVAPerFilter = [];\n this.dataCostsTTCPerFilter = [];\n this.dataConsumptionsPerFilter = [];\n\n this.barProperties.datasets = [];\n\n this.pieConsumptionsProperties.options = {};\n this.pieConsumptionsProperties.dataInside = [];\n this.pieConsumptionsProperties.dataOutside = [];\n\n this.pieTTCProperties.options = {};\n this.pieTTCProperties.dataInside = [];\n this.pieTTCProperties.dataOutside = [];\n\n this.pieHTVAProperties.options = {};\n this.pieHTVAProperties.dataInside = [];\n this.pieHTVAProperties.dataOutside = [];\n\n this.pieToggleGenProperties.optionsSets = [];\n\n this.totalConso = 0;\n this.totalHT = 0;\n this.totalTTC = 0;\n\n const fluidsSelected = filters.energies.split(',');\n this.fluidsSelectedArray = fluidsSelected;\n\n // ['gaz', 'elec', 'water'] -> [\"Gaz\", \"électricité\", \"Eau\"]\n this.frenchFluidLabels = fluidsSelected.map(fluid => this.energyService.energyFullText(fluid));\n\n // ['gaz', 'elec', 'water'] -> [\"rgba(40,186,155, 1)\", \"rgba(253,204,45, 1)\", \"rgba(59,152,217, 1)\"]\n const colors: ColorDonut = this.chartService.getColorsDoughnutChart(fluidsSelected);\n this.fluidColors = colors.backgroundColor;\n\n const start = moment.utc(filters.dateStart).startOf('month');\n const end = moment.utc(filters.dateEnd).startOf('month');\n this.barProperties.labels = this.chartService.getPeriodMonthlyLabels(start, end);\n\n this.loadingChartData.isLoading = true;\n }\n\n /**\n * Used to disable filter search.\n * @returns {boolean} true if at least one graph is loading.\n */\n public someGraphIsLoading(): boolean {\n return this.loadingChartData && this.loadingChartData.isLoading;\n }\n\n /**\n * Set markers for each site matching the current filters\n * @param {QueryFilterRoutingRef} filters\n */\n async setMarkers(filters: QueryFilterRoutingRef) {\n try {\n const sitesForMarkers = await this.sitesService.getSites(filters);\n const markerType = this.energyService.isFluidLiquid(this.fluidCategory) ? 'water' : 'energy';\n this.markers = this.mapService.getMarkersFromSites(sitesForMarkers.data, markerType);\n } catch (e) {\n this.markers = this.mapService.getMarkersFromSites([]);\n }\n }\n\n /**\n * Get consumption for each selected element inside the filter.\n * @param {QueryFilterRoutingRef} filters\n */\n public async search(filters: QueryFilterRoutingRef): Promise {\n this.queryExport = filters;\n\n this.queryFilterSelected = this.filterComponent.getMainFilterSelected();\n this.resetComponents(filters);\n\n let stackId = 0;\n\n // Don't wait for it to finish. The following parts don't need the sites. \n this.setMarkers(filters);\n\n // We need separate results for each one of the filter chosen: site by site or category per category instead of all together\n switch (this.queryFilterSelected.value) {\n case 'regions':\n const regions = filters.regions.split(',');\n this.loadingChartData.nbQueriesToDo = regions.length;\n for (const r of regions) {\n const regionFilter = Object.assign({}, filters, { regions: r });\n stackId += 1;\n this.getGlobalMonthlyConsumption(regionFilter, stackId);\n }\n break;\n\n case 'sites':\n const sites = filters.sites.split(',');\n this.loadingChartData.nbQueriesToDo = sites.length;\n\n for (const s of sites) {\n const siteFilter = Object.assign({}, filters, { sites: s });\n stackId += 1;\n this.getGlobalMonthlyConsumption(siteFilter, stackId);\n }\n break;\n\n case 'categories':\n const categories = filters.categories.split(',');\n this.loadingChartData.nbQueriesToDo = categories.length;\n for (const c of categories) {\n const categoryFilter = Object.assign({}, filters, { categories: c });\n stackId += 1;\n this.getGlobalMonthlyConsumption(categoryFilter, stackId);\n }\n break;\n\n case 'routingReferences':\n const routingReferences = filters.routingreferences.split(',');\n this.loadingChartData.nbQueriesToDo = routingReferences.length;\n for (const rr of routingReferences) {\n const routingReferencesFilter = Object.assign({}, filters, {\n routingreferences: rr,\n });\n stackId += 1;\n this.getGlobalMonthlyConsumption(routingReferencesFilter, stackId);\n }\n break;\n\n case 'custom-filters':\n case 'all':\n default:\n this.loadingChartData.nbQueriesToDo = 1;\n stackId = 1;\n this.getGlobalMonthlyConsumption(filters, stackId);\n break;\n }\n\n this.nbCurrentFluidSelected = this.fluidsSelectedArray.length;\n this.setBarChartToggleUnit();\n this.setBarChartDownloadTitles();\n }\n\n /**\n * Get global monthly consumption\n *\n * @param {QueryFilterRoutingRef} filters\n * @param {number} stackId\n * @returns {Promise}\n */\n async getGlobalMonthlyConsumption(filters: QueryFilterRoutingRef, stackId: number): Promise {\n if (filters.energies && filters.dateStart && filters.dateEnd) {\n const nbQueriesToDo = this.loadingChartData.nbQueriesToDo;\n const computeDJU = Boolean(nbQueriesToDo <= 1); // if only one filter selected, get DJU as well\n\n let consoResult;\n let djuResult;\n\n try {\n if (!computeDJU) {\n this.barProperties.hasDju = false;\n this.barProperties.monthDjus = [];\n this.barProperties.filters = null;\n this.barProperties.monthData = null;\n consoResult = await this.energyDataService.getMonthlyGlobalEnergyRepartition(filters);\n } else {\n [consoResult, djuResult] = await Promise.all([\n this.energyDataService.getMonthlyGlobalEnergyRepartition(filters),\n this.djuService.getDJUs(filters),\n ]);\n this.barProperties.hasDju = Boolean(djuResult && djuResult.length);\n this.barProperties.monthDjus = djuResult;\n this.barProperties.monthData = consoResult;\n this.barProperties.filters = filters;\n }\n\n this.setChartsData(consoResult, filters, stackId, this.barProperties.monthDjus, computeDJU);\n } catch (error) {\n this.setChartsData([], filters, stackId);\n }\n } else {\n /**\n * filters.energies is empty if the company is empty (no contract - no energy)\n * data for charts is already initialized with empty datasets\n */\n this.loadingChartData.isLoading = false;\n }\n }\n\n /**\n * Populate charts\n *\n * @param {*} monthlyFormatedConsumption\n * @param {boolean} isDjuActivated\n * @returns {*}\n */\n populateCharts(monthlyFormatedConsumption, isDjuActivated): any {\n this.generateTotalsForTiles(monthlyFormatedConsumption);\n this.populateBarDataset(monthlyFormatedConsumption, isDjuActivated); // data for chartBart [ data filter 1, data filtre 2, ... ]\n\n this.populateConsPieDataset(monthlyFormatedConsumption); // data for consumptions pie chart\n this.populateTTCPieDataset(monthlyFormatedConsumption); // data for TTC pie chart\n this.populateHTVAPieDataset(monthlyFormatedConsumption); // data for HTVA pie chart\n\n // Essentially for tests. Does not impact any code here.\n return monthlyFormatedConsumption;\n }\n\n /**\n * Format data and populate charts with input consumption.\n * @param {CommonEnergyRepartitionMonthly[]} conso\n * @param {QueryFilterRoutingRef} filters\n * @param {number} stackId\n * @param {*[]} monthDjus\n * @param {boolean} isDjuActivated\n */\n setChartsData(\n conso: CommonEnergyRepartitionMonthly[],\n filters: QueryFilterRoutingRef,\n stackId: number,\n monthDjus?: any[],\n isDjuActivated?: boolean\n ) {\n const monthlyFormatedConsumption = this.followupService.formateToMonthlyConsumption(\n conso,\n stackId,\n filters,\n monthDjus,\n isDjuActivated\n );\n\n this.populateCharts(monthlyFormatedConsumption, isDjuActivated);\n\n this.loadingChartData.nbQueriesDone++;\n\n // if it was the last query\n if (this.loadingChartData.nbQueriesDone === this.loadingChartData.nbQueriesToDo) {\n this.loadingChartData.isLoading = false;\n\n // if API had data for this filter\n this.handleBarChart(isDjuActivated);\n this.onBarChartDjuChange(isDjuActivated);\n this.handlePieConsumptionData();\n this.handlePieCostsData();\n }\n }\n\n /**\n * Get unit for conso\n *\n * @param {string}\n */\n public getUnitForConso(): string {\n if (this.fluidCategory === 'water') {\n return 'm³';\n }\n return this.nbCurrentFluidSelected > 1 ? 'kWhep' : 'kWh';\n }\n\n /**\n * Generate totals for tiles\n *\n * @param {*} monthlyFormatedConsumption\n */\n generateTotalsForTiles(monthlyFormatedConsumption: any) {\n const totalComsumptions = monthlyFormatedConsumption.data.totalConsumptions[0];\n\n this.totalConso += Object.keys(totalComsumptions).reduce((memo, index) => {\n memo += totalComsumptions[index];\n return memo;\n }, 0);\n\n const totalPricesHT = monthlyFormatedConsumption.data.totalPrices[0];\n const totalPricesTTC = monthlyFormatedConsumption.data.totalPrices[1];\n\n this.totalHT += Object.keys(totalPricesHT).reduce((memo, index) => {\n memo += totalPricesHT[index];\n return memo;\n }, 0);\n\n this.totalTTC += Object.keys(totalPricesTTC).reduce((memo, index) => {\n memo += totalPricesTTC[index];\n return memo;\n }, 0);\n }\n\n /**\n * On bar chart dju change\n *\n * @param {boolean} isDjuActivated\n */\n public onBarChartDjuChange(isDjuActivated: boolean) {\n if (this.hasDataForBar()) {\n isDjuActivated = isDjuActivated && this.barProperties.hasDju;\n this.barProperties.isDjuActivated = isDjuActivated;\n\n const djuLabel = 'djus';\n const kwhDjuButton = 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )';\n const legends = this.barProperties.datasets.map(dataset => {\n const labels = dataset.reduce((memo, item) => {\n // to get unique labels\n if (item.label !== djuLabel && !memo.includes(item.label)) {\n memo.push(item.label);\n }\n return memo;\n }, []);\n if (isDjuActivated) {\n labels.unshift(djuLabel);\n }\n return this.getChartLegends(labels);\n });\n\n this.djuService.toggleDjuInDatasetAndChart(\n isDjuActivated,\n this.barProperties,\n djuLabel,\n legends,\n kwhDjuButton,\n this.repartitionMonthlyChart\n );\n }\n }\n\n /**\n * return true if the bar chart is loading otherwise return false\n *\n * @returns {boolean}\n */\n isBarChartLoading(): boolean {\n return this.barProperties.isLoading;\n }\n\n // ---- CONSUMPTIONS pie functions\n\n /**\n * handle pic consumption data\n */\n private handlePieConsumptionData() {\n // ['gaz', 'elec', 'water'] -> [ {name: \"Gaz\", color: \"40,186,155\"}, {name: \"électricité\", color: \"253,204,45\"} ]\n this.pieConsumptionsProperties.legend = this.getChartLegends(this.fluidsSelectedArray);\n // unit : KWhep if we compare two different fluids, KWh otherwise\n this.pieConsumptionsProperties.unit = this.getUnitForConso();\n\n // data\n this.setConsumptionsPieDataPerFilter(); // fill inner data = filter data\n this.setConsumptionsPieDataPerFluid(); // fill outer data = fluid data\n\n // options\n this.pieConsumptionsProperties.options = this.getDoublePieConfig(this.pieConsumptionsProperties);\n }\n\n /**\n * populate consumption pie dataset\n *\n * @param {*} dataOfOneFilter\n */\n private populateConsPieDataset(dataOfOneFilter: any) {\n const filterConsPerFluid = [];\n\n // chart[0] = kWhep chart[1] = HTVA chart[2] = TTC\n // get consumptions of each fluid [ { data: [... x12], label: \"elec\", stack: 1, idStackFilter: 1]\n\n const indexFilter = dataOfOneFilter.stack - 1;\n\n dataOfOneFilter.data.chart[0].forEach(fluidData => {\n const sumMonthsData = fluidData.data.reduce((monthA, monthB) => monthA + monthB, 0);\n const indexFluid = this.fluidsSelectedArray.findIndex(fluid => fluid === fluidData.label);\n filterConsPerFluid[indexFluid] = sumMonthsData;\n });\n\n // at the end should look like [ [gaz site 1], [gaz site 2, elec site 2] , [undefined, elec site 3] ]\n this.dataConsumptionsPerFilter[indexFilter] = filterConsPerFluid;\n }\n\n /**\n * Set consumption pie data per filter\n */\n private setConsumptionsPieDataPerFilter() {\n const filters = this.filterComponent.getFilters();\n\n for (let i = 0; i < filters.length; i++) {\n if (this.dataConsumptionsPerFilter[i]) {\n const valueFilter = this.getSumFluidValue(this.dataConsumptionsPerFilter[i]);\n if (valueFilter > 0) {\n this.pieConsumptionsProperties.dataInside.push({\n name: this.chartService.getChartLegendContentByFilter(\n filters[i],\n this.queryFilterSelected.value\n ),\n y: valueFilter,\n color: this.pieInnerColor,\n data: this.dataConsumptionsPerFilter[i],\n });\n }\n }\n }\n }\n\n /**\n * Set consumption pie data per fluid\n */\n private setConsumptionsPieDataPerFluid() {\n const filters = this.filterComponent.getFilters();\n for (let indexFilter = 0; indexFilter < filters.length; indexFilter++) {\n // for each Fluid\n for (let indexFluid = 0; indexFluid < this.fluidsSelectedArray.length; indexFluid++) {\n // fill filter data if the filter contains this fluid\n if (this.pieConsumptionsProperties.dataInside[indexFilter]) {\n const dataFilterFluid = this.pieConsumptionsProperties.dataInside[indexFilter].data[indexFluid];\n\n if (dataFilterFluid && dataFilterFluid > 0) {\n const fluidData: any = {\n name: this.frenchFluidLabels[indexFluid],\n y: dataFilterFluid,\n color: this.fluidColors[indexFluid],\n };\n if (this.fluidsSelectedArray.length > 1) {\n fluidData.percentageCat =\n (dataFilterFluid * 100) / this.pieConsumptionsProperties.dataInside[indexFilter].y;\n }\n this.pieConsumptionsProperties.dataOutside.push(fluidData);\n }\n }\n }\n }\n }\n\n /**\n * Get chart legends\n *\n * @param {string[]} labels\n * @param {object} options\n * @returns {*}\n */\n getChartLegends(labels: string[], options: object = {}): any {\n return labels.map(label => this.chartService.getLegend(label, options));\n }\n\n // ------- COSTS PIE functions\n\n /**\n * Populate TTC pie dataset\n *\n * @param {*} dataOfOneFilter\n */\n private populateTTCPieDataset(dataOfOneFilter: any) {\n const filterTTCPerFluid = [];\n\n // chart[0] = kWhep chart[1] = HTVA chart[2] = TTC\n // get consumptions of each fluid [ { data: [... x12], label: \"elec\", stack: 1, idStackFilter: 1]\n // if(indexFilter < 0) indexFilter = 0;\n const indexFilter = dataOfOneFilter.stack - 1;\n dataOfOneFilter.data.chart[2].forEach(fluidData => {\n const sumMonthsData = fluidData.data.reduce((monthA, monthB) => monthA + monthB, 0);\n const indexFluid = this.fluidsSelectedArray.findIndex(fluid => fluid === fluidData.label);\n filterTTCPerFluid[indexFluid] = sumMonthsData;\n });\n\n // at the end should look like [ [gaz site 1], [gaz site 2, elec site 2] , [undefined, elec site 3] ]\n this.dataCostsTTCPerFilter[indexFilter] = filterTTCPerFluid;\n }\n\n /**\n * populate HTVA pie dataset\n *\n * @param {*} dataOfOneFilter\n */\n private populateHTVAPieDataset(dataOfOneFilter: any) {\n const filterHTVAPerFluid = [];\n\n // chart[0] = kWhep chart[1] = HTVA chart[2] = TTC\n // get consumptions of each fluid [ { data: [... x12], label: \"elec\", stack: 1, idStackFilter: 1]\n const indexFilter = dataOfOneFilter.stack - 1;\n dataOfOneFilter.data.chart[1].forEach(fluidData => {\n const sumMonthsData = fluidData.data.reduce((monthA, monthB) => monthA + monthB, 0);\n const indexFluid = this.fluidsSelectedArray.findIndex(fluid => fluid === fluidData.label);\n filterHTVAPerFluid[indexFluid] = sumMonthsData;\n });\n\n // at the end should look like [ [gaz site 1], [gaz site 2, elec site 2] , [undefined, elec site 3] ]\n this.dataCostsHTVAPerFilter[indexFilter] = filterHTVAPerFluid;\n }\n\n /**\n * Handle pie costs data\n */\n private handlePieCostsData() {\n // legend\n const legend = this.getChartLegends(this.fluidsSelectedArray);\n this.pieToggleGenProperties.legend = [legend, legend];\n\n // data\n this.setCostsPieDataPerFilter(); // fill inner data = filter data\n this.setCostsPieDataPerFluid(); // fill outer data = fluid data\n\n // options\n this.pieTTCProperties.options = this.getDoublePieConfig(this.pieTTCProperties);\n this.pieHTVAProperties.options = this.getDoublePieConfig(this.pieHTVAProperties);\n this.pieToggleGenProperties.optionsSets = [this.pieHTVAProperties.options, this.pieTTCProperties.options];\n }\n\n /**\n * Set costs pie data per fitler\n */\n private setCostsPieDataPerFilter() {\n const filters = this.filterComponent.getFilters();\n\n // HTVA\n for (let i = 0; i < filters.length; i += 1) {\n if (this.dataCostsHTVAPerFilter[i]) {\n const valueFilter = this.getSumFluidValue(this.dataCostsHTVAPerFilter[i]);\n if (valueFilter > 0) {\n this.pieHTVAProperties.dataInside.push({\n name: this.chartService.getChartLegendContentByFilter(\n filters[i],\n this.queryFilterSelected.value\n ),\n y: valueFilter,\n color: this.pieInnerColor,\n data: this.dataCostsHTVAPerFilter[i],\n });\n }\n }\n }\n\n // TTC\n for (let i = 0; i < filters.length; i += 1) {\n if (this.dataCostsTTCPerFilter[i]) {\n const valueFilter = this.getSumFluidValue(this.dataCostsTTCPerFilter[i]);\n if (valueFilter > 0) {\n this.pieTTCProperties.dataInside.push({\n name: this.chartService.getChartLegendContentByFilter(\n filters[i],\n this.queryFilterSelected.value\n ),\n y: valueFilter,\n color: this.pieInnerColor,\n data: this.dataCostsTTCPerFilter[i],\n });\n }\n }\n }\n }\n\n /**\n * Set costs pie data per fluid\n */\n private setCostsPieDataPerFluid() {\n const filters = this.filterComponent.getFilters();\n\n for (let indexFilter = 0; indexFilter < filters.length; indexFilter += 1) {\n // for each fluid\n for (let indexFluid = 0; indexFluid < this.fluidsSelectedArray.length; indexFluid += 1) {\n // fill filter data if the filter contains this fluid\n if (this.pieTTCProperties.dataInside[indexFilter]) {\n const dataTTCFilterFluid = this.pieTTCProperties.dataInside[indexFilter].data[indexFluid];\n\n if (dataTTCFilterFluid && dataTTCFilterFluid > 0) {\n const fluidData: any = {\n name: this.frenchFluidLabels[indexFluid],\n y: dataTTCFilterFluid,\n color: this.fluidColors[indexFluid],\n };\n if (this.fluidsSelectedArray.length > 1) {\n fluidData.percentageCat =\n (dataTTCFilterFluid * 100) / this.pieTTCProperties.dataInside[indexFilter].y;\n }\n this.pieTTCProperties.dataOutside.push(fluidData);\n }\n }\n\n // fill filter data if the filter contains this fluid\n if (this.pieHTVAProperties.dataInside[indexFilter]) {\n const dataHTVAFilterFluid = this.pieHTVAProperties.dataInside[indexFilter].data[indexFluid];\n\n if (dataHTVAFilterFluid && dataHTVAFilterFluid > 0) {\n const fluidData: any = {\n name: this.frenchFluidLabels[indexFluid],\n y: dataHTVAFilterFluid,\n color: this.fluidColors[indexFluid],\n };\n if (this.fluidsSelectedArray.length > 1) {\n fluidData.percentageCat =\n (dataHTVAFilterFluid * 100) / this.pieHTVAProperties.dataInside[indexFilter].y;\n }\n this.pieHTVAProperties.dataOutside.push(fluidData);\n }\n }\n }\n }\n }\n\n /**\n * Create and return config from the inner and outer circle series\n * @param {DoubleDonutProperties} pieChartProperties\n * @returns {*}\n */\n private getDoublePieConfig(pieChartProperties: DoubleDonutProperties): any {\n return this.chartService.getHighchartDoublePieConfig(\n pieChartProperties.dataInside,\n pieChartProperties.dataOutside,\n pieChartProperties.unit\n );\n }\n\n // ------- BAR CHARTS functions\n /**\n * Populate bar dataset\n *\n * @param {*} dataOfOneFilter\n * @param {boolean?} isDjuActivated\n */\n populateBarDataset(dataOfOneFilter: any, isDjuActivated?: boolean) {\n if (!this.barProperties.datasets) {\n this.barProperties.datasets = [];\n }\n for (let i = 0; i < 3; i++) {\n if (!this.barProperties.datasets[i]) {\n this.barProperties.datasets[i] = [];\n }\n }\n\n // push the data object of each fluid\n for (let indexFluid = 0; indexFluid < dataOfOneFilter.data.chart[0].length; indexFluid++) {\n this.barProperties.datasets[0].push(dataOfOneFilter.data.chart[0][indexFluid]); // Consommation kWhep\n this.barProperties.datasets[1].push(dataOfOneFilter.data.chart[1][indexFluid]); // HTVA\n this.barProperties.datasets[2].push(dataOfOneFilter.data.chart[2][indexFluid]); // TTC\n }\n\n if (isDjuActivated) {\n const dataDjuPonderation = this.billService.getDjuPonderationByEnergy(this.barProperties.datasets[0]);\n this.barProperties.datasets.splice(1, 0, dataDjuPonderation);\n }\n\n // Remove empty datasets\n this.barProperties.datasets = this.barProperties.datasets.map(datasets => {\n const r = datasets.filter(x => {\n const isOk = x.data.some(d => d !== 0 && d !== null);\n return isOk;\n });\n return r;\n });\n }\n\n /**\n * Handle bar chart\n *\n * @param {boolean} isDjuActivated\n */\n private handleBarChart(isDjuActivated: boolean) {\n this.chartService.sortByStack(this.barProperties.datasets);\n\n // Each dataset has its legend and colors (can be different size)\n this.barProperties.legend = this.barProperties.datasets.map(dataset => {\n this.getChartLegends(\n dataset.reduce((memo, item) => {\n // to get unique labels\n if (!memo.includes(item.label)) {\n memo.push(item.label);\n }\n return memo;\n }, [])\n );\n });\n this.barProperties.colors = this.chartService.getStackColors(this.barProperties);\n\n // Set unit for each tab of toggles\n this.barProperties.units = [this.getCurrentUnit(), '€', '€'];\n\n const filters = this.filterComponent.getFilters();\n\n const options = this.chartService.getConfig(\n isDjuActivated ? 'mixed-groupable-stacked-bar' : 'groupable-stacked-bar',\n {\n tooltips: this.chartService.getTooltipHTMLConfig(\n 'groupable-stack-followup',\n null,\n this.followupService.getBarGroupNames(filters, this.queryFilterSelected.value),\n this.queryFilterSelected.totalGroupName\n ),\n }\n );\n\n this.barProperties.options = this.chartService.getDatasetsAxesOptions(this.barProperties.datasets, options);\n this.barProperties.toggleTitles = [\n { name: 'CONSOMMATION (' + this.getCurrentUnit() + ')', display: true },\n { name: 'HTVA (€)', display: true },\n { name: 'TTC (€)', display: true },\n ];\n this.barProperties.downloadFileNames = [\n `Consommation sur la période (${this.getCurrentUnit()})`,\n 'Coût mensuel HTVA sur la période (€)',\n 'Coût mensuel TTC sur la période (€)',\n ];\n\n if (isDjuActivated) {\n this.barProperties.units.splice(1, 0, this.getCurrentUnit() + '/DJU');\n this.barProperties.options.splice(\n 1,\n 1,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig(\n 'ng-chart-bar-line',\n this.getCurrentUnit() + '/DJU'\n ),\n })\n );\n this.barProperties.toggleTitles.splice(1, 0, {\n name: 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )',\n display: true,\n });\n this.barProperties.downloadFileNames.splice(\n 1,\n 0,\n 'PONDERATION PAR DJU (' + this.getCurrentUnit() + '/DJU )'\n );\n }\n\n this.setUnit(this.barProperties.datasets, this.barProperties.units);\n }\n\n /**\n * Get sum of fluid values\n *\n * @param {number[]} filterValues\n * @returns {number}\n */\n private getSumFluidValue(filterValues: number[]): number {\n return filterValues.reduce((a, b) => a + b, 0);\n }\n\n /**\n * Populate the barProperties.data with units in each dataset of each toggle.\n * For the bars: put the unit from the toggle\n * For the line: put \"dju\"\n * @param {GroupStackBarChartSerie[][]} toggleDatasets - all tab in the view [ tab conso, tab htva, tab ttc]\n * each tab contain datasets\n * @param {string[]} unitsForBars - array of the barUnits for each toggle [\"kwh\", \"€\", \"€\"]\n * @returns {GroupStackBarChartSerie[][]}\n */\n private setUnit(toggleDatasets: GroupStackBarChartSerie[][], unitsForBars: string[]): GroupStackBarChartSerie[][] {\n return toggleDatasets.map((toggleDataset, index) => {\n return toggleDataset.map(dataset => {\n dataset.unit = dataset.type === 'bar' ? unitsForBars[index] : 'DJU';\n return dataset;\n });\n });\n }\n\n /**\n * Get the current fluid unit\n *\n * @returns {string}\n */\n public getCurrentUnit(): string {\n if (this.fluidCategory === 'water') {\n return 'm³';\n }\n return this.filterComponent.getFluidsCount() > 1 ? 'kWhep' : 'kWh';\n }\n\n /**\n * Getter totalConso\n *\n * @returns {number}\n */\n getTotalConso(): number {\n return this.totalConso;\n }\n\n /**\n * Return the formatted html total cost\n *\n * @returns {string}\n */\n getTotalCost(): string {\n const totalHT = this.tilesService.getNumberToDisplay(this.totalHT, '€');\n const totalTTC = this.tilesService.getNumberToDisplay(this.totalTTC, '€');\n return `${totalHT} € HTVA - ${totalTTC} € TTC`;\n }\n\n /**\n * Return true if the chart data is loading\n *\n * @returns {boolean}\n */\n public isLoadingData(): boolean {\n return Boolean(this.loadingChartData.isLoading);\n }\n\n /**\n * Return true if there are data for consumption pie chart otherwise return false\n *\n * @returns {boolean}\n */\n public hasDataForConsPie(): boolean {\n try {\n const chartOptions = this.pieConsumptionsProperties.options;\n return Boolean(\n chartOptions &&\n chartOptions.series &&\n (chartOptions.series[0].data.length && chartOptions.series[1].data.length)\n );\n } catch (err) {\n return false;\n }\n }\n\n /**\n * Return true if there are data for HTVA / TTC pie chart otherwise return false\n *\n * @returns {boolean}\n */\n public hasDataForHTVAOrTTCPie(): boolean {\n try {\n const chartOptionSets = this.pieToggleGenProperties.optionsSets;\n return Boolean(\n (chartOptionSets &&\n chartOptionSets.length === 2 &&\n (chartOptionSets[0].series[0].data.length && chartOptionSets[0].series[1].data.length)) ||\n (chartOptionSets[1].series[0].data.length && chartOptionSets[1].series[1].data.length)\n );\n } catch (err) {\n return false;\n }\n }\n\n /**\n * Return true if there are dataset for chart bar otherwise return false\n *\n * @returns {boolean}\n */\n public hasDataForBar(): boolean {\n return Boolean(\n this.barProperties.datasets && this.barProperties.datasets.length && this.barProperties.datasets[0].length\n );\n }\n\n /*\n ** Filters\n */\n\n /**\n * Return true if the selected multiple fluids otherwise return false\n *\n * @returns {boolean}\n */\n hasMultipleFluidsSelected(): boolean {\n return this.nbCurrentFluidSelected > 1 ? true : false;\n }\n\n /**\n * Set the bar chart toggle unit\n */\n setBarChartToggleUnit() {\n this.barProperties.units[0] = this.getUnitForConso();\n this.barProperties.toggleTitles[0] = {\n name: 'CONSOMMATION (' + this.barProperties.units[0] + ')',\n display: true,\n };\n }\n\n /**\n * Set the bar chart download titles\n */\n setBarChartDownloadTitles() {\n this.barProperties.units[0] = this.getUnitForConso();\n this.barProperties.downloadFileNames[0] =\n 'Consommation mensuelle sur la période ' + '(' + this.barProperties.units[0] + ')';\n }\n\n /**\n * Set the the unit for chart bar title by specified unit index\n *\n * @param {string} index\n */\n setUnitForChartBarTitle(index: string) {\n this.barProperties.titleUnit = this.barProperties.units[index];\n }\n\n /**\n * Get followup excel export url\n *\n * @param {string} type - specified export type\n * @returns {string}\n */\n getExportExcelUrl(type: string): string {\n if (type && this.queryExport) {\n this.queryExport.dju = this.barProperties.isDjuActivated && type === 'repartition-monthly';\n let url = `/api/export/excel/followup/${type}`;\n url += this.filterService.formatQueryToUrl(this.queryExport);\n\n return url;\n }\n return null;\n }\n\n /**\n * Get consumption excel export url\n *\n * @param {string} type - specified export type\n * @returns {string}\n */\n getSiteConsumptionExportExcelUrl(type: string): string {\n if (type && this.queryExport) {\n this.queryExport.dju = false;\n let url = `/api/export/excel/${type}`;\n url += this.filterService.formatQueryToUrl(this.queryExport);\n\n return url;\n }\n return null;\n }\n\n /**\n * Get consumption per site and zone excel export url\n *\n * @returns {string}\n */\n getSiteZoneConsumptionExportExcelUrl(): string {\n if (this.queryExport) {\n this.queryExport.dju = false;\n let url = `/api/export/excel/consumptions/sites-zones`;\n url += this.filterService.formatQueryToUrl(this.queryExport);\n\n return url;\n }\n return null;\n }\n\n /**\n * Get export file name by specified title\n *\n * @param {string} title - begining of the full filename\n * @returns {string} name of the export file correctly formatted\n */\n getExportName(title: string): string {\n const date = moment()\n .format('YYYYMMDD')\n .toString();\n const filterType = this.queryFilterSelected ? this.translateService._(this.queryFilterSelected.value) : '';\n return `${title}-${date}-${filterType}.xlsx`;\n }\n\n /**\n * Get tiles color\n *\n * @param {string} type - specified tile type\n * @returns {string}\n */\n getTilesColor(type: string): string {\n if (this.fluidCategory === 'water') {\n return '#4381b7';\n }\n if (type === 'conso') {\n return '#f3cc2e';\n }\n return '#df7c3b';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { FollowupComponent } from './followup.component';\n\nconst FOLLOWUP_ROUTE = [\n {\n path: '',\n component: FollowupComponent,\n canActivate: [AccessGuard],\n },\n];\n\n@NgModule({\n declarations: [FollowupComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(FOLLOWUP_ROUTE)],\n})\nexport class FollowupModule {}\n","import { Injectable } from '@angular/core';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport * as moment from 'moment';\n\n// services\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\n// interfaces\nimport { CommonEnergyRepartitionMonthly } from 'app/shared/models/energy-data-bills.interface';\n\n@Injectable()\nexport class FollowupService extends PageService {\n // TODO get from API\n regionsMap = {\n '11': 'Île-de-France',\n '24': 'Centre-Val de Loire',\n '27': 'Bourgogne-Franche-Comté',\n '28': 'Normandie',\n '32': 'Nord-Pas-de-Calais-Picardie',\n '44': 'Alsace-Champagne-Ardenne-Lorraine',\n '52': 'Pays de la Loire',\n '53': 'Bretagne',\n '75': 'Aquitaine-Limousin-Poitou-Charentes',\n '76': 'Languedoc-Roussillon-Midi-Pyrénées',\n '84': 'Auvergne-Rhône-Alpes',\n '93': \"Provence-Alpes-Côte d'Azur\",\n '94': 'Corse',\n null: 'Tous',\n };\n\n constructor(\n public apiService: ApiService,\n public filterService: FilterService,\n public energyService: EnergyService,\n private sitesService: SitesService,\n private chartService: ChartService\n ) {\n super(apiService);\n this.fake = false;\n }\n\n getSites(filters): any {\n return this.sitesService.getSites(filters);\n }\n\n getSitesFilteredByCategories(categories, energies) {\n return this.sitesService.getSites({ categories, energies });\n }\n\n getSitesFilteredByRegions(regions, energies) {\n return this.sitesService.getSites({ regions, energies });\n }\n\n getSitesProperties() {\n return this.get('/api/sites/available/properties');\n }\n\n private isPrimaryEnergy(energiesSelected: string): boolean {\n return energiesSelected.split(',').length > 1 ? true : false;\n }\n\n /**\n * Format data from monthly consumptions for charts datasets\n * @todo: typing & improve visibility.\n * @param {CommonEnergyRepartitionMonthly[]} data\n * @param {number} stackNb\n * @param filters\n * @param monthDjus\n * @param {boolean} isDjuActivated\n */\n formateToMonthlyConsumption(\n data: CommonEnergyRepartitionMonthly[],\n stackNb: number,\n filters,\n monthDjus,\n isDjuActivated: boolean\n ): any {\n const response: any = {\n data: {\n chart: [],\n totalPrices: [],\n totalConsumptions: [],\n },\n labels: [],\n stack: stackNb,\n };\n\n const chart = {\n kWhep: [],\n ht: [],\n ttc: [],\n };\n\n const totalPrices = {\n kWhep: [],\n ht: [],\n ttc: [],\n };\n\n const dataPerEnergy = {\n ttc: {},\n ht: {},\n kWhep: {},\n };\n\n const totalConsumptions = {};\n\n const start = moment.utc(filters.dateStart).startOf('month');\n const end = moment.utc(filters.dateEnd).startOf('month');\n\n const indexMonthYears = this.chartService.getIndexMonthYears(start, end);\n const nbMonths = indexMonthYears[end.year()][end.month()] + 1; // +1 cause index starts with 0\n\n response.labels = this.chartService.getPeriodMonthlyLabels(start, end);\n\n data.forEach(databyMonth => {\n const labelMonth =\n this.chartService.getMonthNumber(databyMonth.month + 1) + '/' + databyMonth.items[0].year.toString();\n\n if (typeof totalPrices.ttc[labelMonth] === 'undefined') {\n totalPrices.ttc[labelMonth] = 0;\n }\n\n if (typeof totalPrices.ht[labelMonth] === 'undefined') {\n totalPrices.ht[labelMonth] = 0;\n }\n if (typeof totalConsumptions[labelMonth] === 'undefined') {\n totalConsumptions[labelMonth] = 0;\n }\n\n databyMonth.items.forEach(energy => {\n for (const priceTypeOrConso in dataPerEnergy) {\n if (!dataPerEnergy.hasOwnProperty(priceTypeOrConso)) {\n continue;\n }\n if (typeof dataPerEnergy[priceTypeOrConso][energy.energyType] === 'undefined') {\n dataPerEnergy[priceTypeOrConso][energy.energyType] = Array.apply(null, Array(nbMonths)).map(\n Number.prototype.valueOf,\n 0\n );\n }\n\n // We get the price as we want HT or TTC\n let priceOrConso = 0;\n\n switch (priceTypeOrConso) {\n case 'ht':\n priceOrConso = energy.totalHT.amount;\n totalPrices[priceTypeOrConso][labelMonth] += priceOrConso; // We add the price to total price\n break;\n\n case 'ttc':\n priceOrConso = energy.totalTTC.amount;\n totalPrices[priceTypeOrConso][labelMonth] += priceOrConso;\n break;\n\n case 'kWhep':\n // if we compare multiple fluids -> compare in Primary Energy kWhep\n if (this.isPrimaryEnergy(filters.energies)) {\n priceOrConso = this.energyService.convertEnergyKwhToKwhep(\n energy.energyType,\n energy.consumption.quantity\n );\n } else {\n priceOrConso = energy.consumption.quantity;\n }\n\n // we add the consumption to total consumption\n totalConsumptions[labelMonth] += priceOrConso;\n break;\n }\n\n // We add the price to energy values\n dataPerEnergy[priceTypeOrConso][energy.energyType][\n indexMonthYears[databyMonth.year][databyMonth.month]\n ] = priceOrConso;\n }\n });\n });\n\n // We have all the values HT and TTC by energies. We create the chart data from it\n for (const priceTypeOrConso in dataPerEnergy) {\n if (dataPerEnergy.hasOwnProperty(priceTypeOrConso)) {\n let idStackFilter = 0; // needed for the legend of the stack bar\n // let idStackFilter = stackNb - 1; // needed for the legend of the stack bar\n for (const energyName in dataPerEnergy[priceTypeOrConso]) {\n if (dataPerEnergy[priceTypeOrConso].hasOwnProperty(energyName)) {\n chart[priceTypeOrConso].push({\n data: dataPerEnergy[priceTypeOrConso][energyName],\n label: energyName,\n stack: stackNb, // = site n° / categorie n° / region n°\n idStackFilter,\n yAxisID: 'y-axis-0',\n type: 'bar',\n });\n idStackFilter++;\n } else {\n // TODO: Check Needed (Else to keep old behavior)\n idStackFilter++;\n }\n }\n\n // Here add dju years\n if (isDjuActivated) {\n let hotDjus = [];\n if (monthDjus && monthDjus.length) {\n hotDjus = monthDjus.map(year => {\n return year.hot;\n });\n }\n chart[priceTypeOrConso].unshift({\n data: hotDjus,\n label: 'djus',\n stack: stackNb, // = site n° / categorie n° / place n°\n idStackFilter,\n yAxisID: 'y-axis-1',\n type: 'line',\n });\n }\n }\n }\n\n response.data.chart = [chart.kWhep, chart.ht, chart.ttc];\n response.data.totalPrices = [totalPrices.ht, totalPrices.ttc];\n response.data.totalConsumptions = [totalConsumptions];\n\n return response;\n }\n\n handleAvailableYearsAndDates(data, availableYears) {\n if (data && data.length) {\n availableYears.years = data;\n availableYears.years.sort((a, b) => {\n if (parseInt(a.value, 10) && parseInt(b.value, 10)) {\n return parseInt(b.value, 10) - parseInt(a.value, 10);\n }\n return a.value < b.value;\n });\n const years = data.map(year => year.value);\n\n // Set datePicker default dates\n const maxYear = years[0];\n const minYear = years[years.length - 1];\n availableYears.dateStart = minYear.concat('-01');\n availableYears.dateEnd = maxYear.concat('-12');\n }\n }\n\n /*\n * return the displayed name of the elements selected in the filter\n * ex args:\n * filters = [ {displayName : \"0 - Services généraux des administrations publiques locales\", value : 0},\n * {displayName : \"1 - Sécurité et salubrité publiques\", value : 1}]\n *\n * filterSelected = \"categories\"\n * returns [ \"0 - Services généraux des administrations publiques locales\",\n * \"1 - Sécurité et salubrité publiques\"]\n * */\n getBarGroupNames(filters, filterSelected) {\n return filters.map(filter => {\n return this.chartService.getChartLegendContentByFilter(filter, filterSelected);\n });\n }\n}\n","export default \"/**** FILTER ****/\\n.filters-container p {\\n font-size: 0.75rem;\\n}\\n.filters {\\n margin-top: 1rem;\\n margin-bottom: 1rem;\\n}\\n.filters .filter-title {\\n font-size: 0.875rem;\\n color: #607188;\\n display: -webkit-box;\\n display: flex;\\n}\\n.filters .filter-title i,\\n.filters .filter-title .sites-icon {\\n margin-right: 5px;\\n margin-top: 5px;\\n}\\n.filters .filter-title .sites-icon {\\n display: inline-block;\\n background-color: #607188;\\n mask-repeat: no-repeat;\\n -webkit-mask-repeat: no-repeat;\\n mask-size: 100%;\\n -webkit-mask-size: 100%;\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl-filled.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl-filled.svg\\\");\\n width: 15px;\\n height: 15px;\\n}\\n.filters .filter__input {\\n padding-top: 1rem;\\n width: 100%;\\n}\\n.filters .filter__period-available p {\\n margin: 0px;\\n}\\n::ng-deep .switch-bloc-row {\\n margin-top: 0 !important;\\n}\\n/**\\n* TILE\\n**/\\n.data-tile {\\n width: 280px;\\n padding: 1rem;\\n}\\n::ng-deep .no-bold {\\n font-weight: normal;\\n}\\n/**\\n * CHART\\n **/\\n.chart__toggle-row {\\n font-size: 0.875rem;\\n padding: 1rem;\\n}\\n::ng-deep .highcharts-root {\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n::ng-deep .highcharts-root text {\\n fill: #607188 !important;\\n}\\n.chart__progress {\\n padding: 4px;\\n background-image: url(\\\"/assets/img/loading/progress-orange.gif\\\");\\n background-position: top left;\\n background-repeat: repeat;\\n background-size: 9px 9px;\\n}\\n.ga-nodata::ng-deep .text {\\n background-color: #ffffff;\\n}\\n.adjusted-data-info {\\n font-size: 0.75rem;\\n background-color: #ffffff;\\n padding: 10px;\\n}\\n/**\\n * DROPDOWN\\n **/\\n.dropdown-multilevel {\\n width: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9sb2FkLWN1cnZlL2xvYWQtY3VydmUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2VuZXJneS9sb2FkLWN1cnZlL2xvYWQtY3VydmUuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxpQkFBQTtBQUVJO0VBQ0ksa0JBTFM7QUNEakI7QURVQTtFQUNJLGdCQUFBO0VBQ0EsbUJBQUE7QUNQSjtBRFNJO0VBQ0ksbUJBZlU7RUFnQlYsY0VPSztFRk5MLG9CQUFBO0VBQUEsYUFBQTtBQ1BSO0FEU1E7O0VBRUksaUJBQUE7RUFDQSxlQUFBO0FDUFo7QURXUTtFQUNJLHFCQUFBO0VBQ0EseUJFTEM7RUNXVCxzQkhMUTtFR01SLDhCSE5RO0VHTFIsZUhNMkI7RUdMM0IsdUJISzJCO0VHRDNCLDhESEVRO0VHRFIsc0VIQ1E7RUFDQSxXQUFBO0VBQ0EsWUFBQTtBQ05aO0FEVUk7RUFDSSxpQkFBQTtFQUNBLFdBQUE7QUNSUjtBRFlRO0VBQ0ksV0FBQTtBQ1ZaO0FEZ0JJO0VBQ0ksd0JBQUE7QUNiUjtBRGlCQTs7RUFBQTtBQUlBO0VBQ0ksWUFBQTtFQUNBLGFBQUE7QUNmSjtBRG1CSTtFQUNJLG1CQUFBO0FDaEJSO0FEb0JBOztHQUFBO0FBR0E7RUFDSSxtQkFBQTtFQUNBLGFBQUE7QUNqQko7QURvQkE7RUFDSSxnREFBQTtBQ2pCSjtBRG1CSTtFQUNJLHdCQUFBO0FDakJSO0FEcUJBO0VBQ0ksWUFBQTtFQUNBLGdFQUFBO0VBQ0EsNkJBQUE7RUFDQSx5QkFBQTtFQUNBLHdCQUFBO0FDbEJKO0FEc0JJO0VBQ0kseUJBQUE7QUNuQlI7QUR1QkE7RUFDSSxrQkFwR2E7RUFxR2IseUJBQUE7RUFDQSxhQUFBO0FDcEJKO0FEdUJBOztHQUFBO0FBR0E7RUFDSSxXQUFBO0FDcEJKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvZW5lcmd5L2xvYWQtY3VydmUvbG9hZC1jdXJ2ZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9taXhpbnMnO1xuXG4kdGl0bGUtZm9udC1zaXplOiAwLjg3NXJlbTtcbiR0ZXh0LWZvbnQtc2l6ZTogMC43NXJlbTtcblxuLyoqKiogRklMVEVSICoqKiovXG4uZmlsdGVycy1jb250YWluZXIge1xuICAgIHAge1xuICAgICAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcbiAgICB9XG59XG5cbi5maWx0ZXJzIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICAuZmlsdGVyLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAkdGl0bGUtZm9udC1zaXplO1xuICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgICAgaSxcbiAgICAgICAgLnNpdGVzLWljb24ge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaXRlcy9QRExzIHRpdGxlIGljb25cbiAgICAgICAgLnNpdGVzLWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYXNrLXJlcGVhdChuby1yZXBlYXQpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1zaXplKDEwMCUpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fcGRsLWZpbGxlZC5zdmcnKSk7XG4gICAgICAgICAgICB3aWR0aDogMTVweDtcbiAgICAgICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5maWx0ZXJfX2lucHV0IHtcbiAgICAgICAgcGFkZGluZy10b3A6IDFyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5maWx0ZXJfX3BlcmlvZC1hdmFpbGFibGUge1xuICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG46Om5nLWRlZXAge1xuICAgIC5zd2l0Y2gtYmxvYy1yb3cge1xuICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKipcbiogVElMRVxuKiovXG5cbi5kYXRhLXRpbGUge1xuICAgIHdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuXG46Om5nLWRlZXAge1xuICAgIC5uby1ib2xkIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB9XG59XG5cbi8qKlxuICogQ0hBUlRcbiAqKi9cbi5jaGFydF9fdG9nZ2xlLXJvdyB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuXG46Om5nLWRlZXAgLmhpZ2hjaGFydHMtcm9vdCB7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuXG4gICAgdGV4dCB7XG4gICAgICAgIGZpbGw6ICR0ZXh0LWNvbG9yICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uY2hhcnRfX3Byb2dyZXNzIHtcbiAgICBwYWRkaW5nOiA0cHg7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9sb2FkaW5nL3Byb2dyZXNzLW9yYW5nZS5naWYnKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgbGVmdDtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogOXB4IDlweDtcbn1cblxuLmdhLW5vZGF0YTo6bmctZGVlcCB7XG4gICAgLnRleHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIH1cbn1cblxuLmFkanVzdGVkLWRhdGEtaW5mbyB7XG4gICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4vKipcbiAqIERST1BET1dOXG4gKiovXG4uZHJvcGRvd24tbXVsdGlsZXZlbCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4iLCIvKioqKiBGSUxURVIgKioqKi9cbi5maWx0ZXJzLWNvbnRhaW5lciBwIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4uZmlsdGVycyB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4uZmlsdGVycyAuZmlsdGVyLXRpdGxlIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICM2MDcxODg7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uZmlsdGVycyAuZmlsdGVyLXRpdGxlIGksXG4uZmlsdGVycyAuZmlsdGVyLXRpdGxlIC5zaXRlcy1pY29uIHtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cbi5maWx0ZXJzIC5maWx0ZXItdGl0bGUgLnNpdGVzLWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDcxODg7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1zaXplOiAxMDAlO1xuICAtd2Via2l0LW1hc2stc2l6ZTogMTAwJTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19wZGwtZmlsbGVkLnN2Z1wiKTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3BkbC1maWxsZWQuc3ZnXCIpO1xuICB3aWR0aDogMTVweDtcbiAgaGVpZ2h0OiAxNXB4O1xufVxuLmZpbHRlcnMgLmZpbHRlcl9faW5wdXQge1xuICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgd2lkdGg6IDEwMCU7XG59XG4uZmlsdGVycyAuZmlsdGVyX19wZXJpb2QtYXZhaWxhYmxlIHAge1xuICBtYXJnaW46IDBweDtcbn1cblxuOjpuZy1kZWVwIC5zd2l0Y2gtYmxvYy1yb3cge1xuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxuKiBUSUxFXG4qKi9cbi5kYXRhLXRpbGUge1xuICB3aWR0aDogMjgwcHg7XG4gIHBhZGRpbmc6IDFyZW07XG59XG5cbjo6bmctZGVlcCAubm8tYm9sZCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi8qKlxuICogQ0hBUlRcbiAqKi9cbi5jaGFydF9fdG9nZ2xlLXJvdyB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHBhZGRpbmc6IDFyZW07XG59XG5cbjo6bmctZGVlcCAuaGlnaGNoYXJ0cy1yb290IHtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG46Om5nLWRlZXAgLmhpZ2hjaGFydHMtcm9vdCB0ZXh0IHtcbiAgZmlsbDogIzYwNzE4OCAhaW1wb3J0YW50O1xufVxuXG4uY2hhcnRfX3Byb2dyZXNzIHtcbiAgcGFkZGluZzogNHB4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9sb2FkaW5nL3Byb2dyZXNzLW9yYW5nZS5naWZcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDlweCA5cHg7XG59XG5cbi5nYS1ub2RhdGE6Om5nLWRlZXAgLnRleHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xufVxuXG4uYWRqdXN0ZWQtZGF0YS1pbmZvIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4vKipcbiAqIERST1BET1dOXG4gKiovXG4uZHJvcGRvd24tbXVsdGlsZXZlbCB7XG4gIHdpZHRoOiAxMDAlO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { ActivatedRoute, Params } from '@angular/router';\n\nimport { MessageDisplayService } from 'app/shared/components/load-curve/message-display/message-display.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { LoadCurveService } from './load-curve.service';\n\nimport { DropdownSettings } from 'app/shared/components/common/dropdown-multilevel/dropdown-multilevel.interface';\nimport {\n AreasplineAxis,\n AreasplineOptions,\n AreasplineYPlotLines,\n} from 'app/shared/models/charts/chart-properties.interface';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\n\nimport { LoadCurveData, LoadCurveMeasure } from 'app/shared/models/load-curve.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport {\n Entity,\n LoadCurveSerie,\n RoutingReferenceDropdownItem,\n SearchFilter,\n TileProperties,\n TileSerie,\n} from './load-curve.interface';\n\nimport {\n DatePicker,\n DateRange,\n DateRangeLimit,\n} from 'app/shared/components/common/date-range-picker/date-range-picker.interface';\n\nimport * as Highcharts from 'highcharts/highstock';\n\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport * as mTZ from 'moment-timezone';\n\n@Component({\n selector: 'ga-load-curve',\n templateUrl: './load-curve.component.html',\n styleUrls: ['./load-curve.component.scss'],\n providers: [LoadCurveService, MessageDisplayService],\n})\nexport class LoadCurveComponent implements OnInit, OnDestroy {\n /*********************\n * DATE PICKER\n *********************/\n\n /** date limit for the date range picker */\n public dateRangeLimit: DateRangeLimit = {\n minDate: null,\n maxDate: null,\n };\n\n // Data for the date range (start date and end date)\n public dateRange: DateRange = {\n fromDate: {\n date: null,\n utcDate: null,\n },\n toDate: {\n date: null,\n utcDate: null,\n },\n };\n\n // Number of days counted in the current selected period\n public dateRangeDaysCount = 0;\n\n /**\n * Tiles properties\n * - Consumption\n * - Missing measures\n * - Minimum electric power\n * - Maximum electric power\n */\n\n public tiles: TileProperties[] = [];\n\n /*********************\n * CHART\n *********************/\n\n /** Properties for the load curve chart */\n private loadCurveProperties: AreasplineOptions;\n\n /** Chart data series */\n private loadCurveSeries: LoadCurveSerie[] = [];\n\n /** Chart object */\n private chart: Highcharts.Chart = null;\n\n /** Is the option to stack chart series enabled */\n public seriesStacked = true;\n\n /**\n * Is the chart currently loading. Used to display loading message and hide chart.\n * Only indicated if loading for the first time a new user search.\n * Not set to true if loading for complete data.\n */\n public isChartLoading = false;\n\n /** Is the chart currently loading complete data */\n public isCompleteChartLoading = false;\n\n /** Id of the load curve complete search request timer */\n private setTimeoutSearchId: ReturnType;\n\n /** Timeout interval (in milliseconds) used for data complete search process */\n private readonly timeoutInterval: number = 3000;\n\n /** Url date format for parsing and format */\n private readonly urlDateFormat: string = 'MM-DD-YYYY';\n\n /** Filters hash to detect changes in values */\n private filtersHash: string = null;\n\n /** Is true when the load curve data have not the same interval */\n public isAdjustedData = false;\n\n /** Stored load curve data from API and adjusted data */\n public loadCurveData: {\n default: LoadCurveData[];\n adjusted: LoadCurveData[];\n } = {\n default: null,\n adjusted: null,\n };\n\n /** Selected chart type */\n private selectedChartType: 'spline' | 'areaspline';\n\n /** Default measure interval (in milliseconds) */\n private readonly defaultInterval: number = 600000;\n\n /*********************\n * ENTITY SELECTION\n ********************/\n\n /** Current company selected to display sites. Currently onyl supported for URL use */\n public companyId: string = null;\n\n /** Wheter the selected entity is loading or not */\n public isEntityLoading = false;\n\n /** List of routing references and sites to display */\n public routingReferencesList: RoutingReferenceDropdownItem[] = [];\n\n /** Selected element from the dropdown list */\n public selectedItem: Entity = null;\n\n /** Configuration for the dropdown list */\n public dropdownSettings: DropdownSettings = {\n bindLabel: 'reference', // field displayed for dropdown options (site or routing ref)\n groupBy: (routingRef: RoutingReferenceDropdownItem) => this.getDisplayCodeNameFromSite(routingRef.site), // group routing references by their site name\n groupValue: (s: string, children: any[]) => ({\n // give to the site options the same fields as the routing references (_id & reference)\n _id: children[0].site._id,\n reference: children[0].site.complement,\n type: 'site',\n }),\n selectableGroup: true,\n selectableGroupAsModel: true,\n hideSelected: true,\n notFoundText: 'Aucun PDL trouvé',\n dropdownPosition: 'bottom',\n customSearch: (search: string, routingRef: RoutingReferenceDropdownItem) => {\n // search inside each routing reference's number and site name\n search = search.toLowerCase();\n return (\n routingRef.reference.toLowerCase().includes(search) ||\n this.getDisplayCodeNameFromSite(routingRef.site)\n .toLowerCase()\n .includes(search)\n );\n },\n };\n\n /** used to store the site name and display it above the current chart */\n private _displayedSiteName: string;\n\n /** Constructor */\n constructor(\n private loadCurveService: LoadCurveService,\n private messageDisplayService: MessageDisplayService,\n private routingReferencesService: RoutingReferencesService,\n private chartService: ChartService,\n private tilesService: TilesService,\n private translateService: TranslateService,\n private utilsService: UtilsService,\n private filterService: FilterService,\n private route: ActivatedRoute,\n private sessionService: SessionService\n ) {}\n\n ngOnInit() {\n /**\n * Set moment at window level\n * `moment` is not saved on `window`, so Highcharts fail when trying to access `moment`\n */\n window['moment'] = moment;\n\n /**\n * Set the chart options for display\n */\n this.initChartOptions();\n\n /**\n * Initialise tiles (consumption and missing measures)\n */\n this.initTiles();\n\n /**\n * Initialise the dropdown data to display in the dropdown list\n */\n this.initData();\n }\n\n ngOnDestroy() {\n this.destroyTimeout();\n }\n\n //#region chart options\n /***********************\n * CHART OPTIONS\n /***********************\n\n /**\n * Set time zone and handle zoom selection\n */\n private initChartOptions() {\n /**\n * Load timezones and set highchart timezone in Paris\n */\n mTZ();\n\n /**\n * Set properties for load curve chart\n */\n const that = this;\n this.loadCurveProperties = this.chartService.getConfig('areaspline');\n\n /**\n * Update external elements each time the chart is rendered (on redraw)\n * - compute total consumption\n * - compute min and max for lines\n * - compute missing measures\n */\n this.loadCurveProperties.chart.events = {\n redraw(e) {\n that.handleChartRedraw(this);\n that.computeConsumption();\n that.computeMinMaxMissing();\n return true;\n },\n };\n\n // Display a line for subscribed power\n this.setChartPlotLines();\n\n /**\n * Set French for axis labels and tooltips\n */\n this.chartService.setFrenchOptions();\n\n this.chart = Highcharts.stockChart('loadCurveContainer', this.loadCurveProperties);\n }\n\n /**\n * Set a plotline for the subscribed power\n * @todo later, use real value. Null value is not displayed.\n */\n private setChartPlotLines(): void {\n /**\n * Set plotLines for min, max and power subscribed\n */\n const plotLines: AreasplineYPlotLines[] = [\n {\n id: 'subscription',\n label: {\n text: 'Puissance souscrite : NC',\n },\n color: 'grey',\n width: 2,\n dashStyle: 'ShortDash',\n value: null,\n zIndex: 5,\n },\n ];\n this.loadCurveProperties.yAxis[0].plotLines = plotLines;\n }\n\n private getDisplayCodeNameFromSite(site: SitePopulated): string {\n return site.code ? `${site.code} - ${site.complement}` : site.complement;\n }\n\n /**\n * Compute selected series each time the chart redraw\n *\n * @param {\tHighcharts.Chart} chart - chart object which redraw\n */\n private handleChartRedraw(chart: Highcharts.Chart) {\n if (this.updateChartData()) {\n return true;\n }\n\n const consoTile = this.tiles.find(t => t.key === 'elec');\n // Don't consider last serie as it's the zoom serie displayed under the chart\n consoTile.series = (chart['series'] as any[]).slice(0, -1).map(serie => {\n // As when there is many values Highchart group them (best for visual and perfs)\n // Then we need to manually get values displayed\n const extremes = serie.xAxis.getExtremes();\n const minX = extremes.min;\n const maxX = extremes.max;\n\n /** Index of the first data displayed, matching the min bound of the chart */\n let minDataIndex: number = serie.xData\n .concat([])\n .reverse()\n .findIndex((v: number) => v < minX);\n\n // Take the next index in the chronological order (original array order before reverse)\n minDataIndex = minDataIndex === -1 ? 0 : serie.xData.length - minDataIndex;\n\n /** Index of the last data displayed, matching the max included bound of the chart */\n let maxDataIndex: number = serie.xData.findIndex((v: number) => v > maxX);\n if (maxDataIndex === -1) {\n maxDataIndex = serie.xData.length; // last measure if not found\n }\n\n // Get x and y values between indexes\n const x = serie.xData.slice(minDataIndex, maxDataIndex);\n const y = serie.yData.slice(minDataIndex, maxDataIndex);\n\n const serieUpdated: TileSerie = {\n index: serie.index,\n visible: serie.visible,\n // xDisplay: serie.processedXData.map(value => Highcharts.dateFormat('%a %d/%m %H:%M', value)), // useful for debug\n x: [].concat(x),\n y: [].concat(y),\n interval: serie.userOptions.pointInterval / 1000 / 60, // interval in minutes\n };\n return serieUpdated;\n });\n\n this.tiles\n .filter(t => t.key !== 'elec')\n .forEach(tile => {\n tile.series = [...consoTile.series];\n });\n }\n\n // #endregion\n\n //#region tiles\n\n /***********************\n * TILES:\n * - CONSUMTION\n * - MISSING MEASURES\n * - MIN POWER\n * - MAX POXER\n /***********************\n\n /**\n * Initialise tiles\n */\n private initTiles(): void {\n const keys = ['elec', 'min_elec_power', 'max_elec_power', 'missing_measures'];\n keys.forEach(key => {\n const tile: TileProperties = {\n ...this.tilesService.generateTile(key),\n key,\n value: null,\n series: [],\n size: 'medium',\n };\n this.tiles.push(tile);\n });\n this.initMissingMeasuresTile();\n }\n\n /**\n * Initialize the tile properties of the missing measures tile\n */\n private initMissingMeasuresTile(): void {\n const tile = this.tiles.find(t => t.key === 'missing_measures');\n tile.valueHTML = this.setMissingMeasuresCountHTML(null, null);\n tile.unit = null;\n }\n\n /**\n * Compute the total consumption of the series currenlty being displayed in the chart\n * Set it inside the tile value\n * @returns {void}\n */\n private computeConsumption(): void {\n const consoTile = this.tiles.find(t => t.key === 'elec');\n\n const seriesConsumption: number[] = consoTile.series\n .filter(x => x.visible === true)\n .map(serie => {\n const sumPower = _.sum(serie.y);\n const n = 60 / serie.interval;\n const averagePower = sumPower / n;\n return averagePower;\n });\n if (seriesConsumption.length) {\n // _.sum([]) === 0\n consoTile.value = _.sum(seriesConsumption) / 1000; // sum of Wh\n } else {\n // If no visible serie, set null (≠ 0)\n consoTile.value = null;\n }\n }\n\n /**\n * Return the formatted missing measures count and percentage to be displayed\n * @param {number | null} missingCount - missing measures count\n * @param {number | null} total - total measures expected\n * @returns {string}\n */\n private setMissingMeasuresCountHTML(missingCount: number | null, total: number | null): string {\n let missingPercentage = 0;\n\n if (missingCount === null || missingCount === 0 || total === null) {\n return this.translateService._('none_f');\n }\n\n if (missingCount > 0 && total > 0) {\n missingPercentage = this.utilsService.roundNumber((missingCount / total) * 100);\n }\n\n const label = missingCount > 1 ? this.translateService._('mesure_p') : this.translateService._('mesure');\n return `${missingCount} ${label} (${missingPercentage}%)`;\n }\n\n /**\n * Compute min and max values, and the number of missing measures\n * Update values in appropriate tiles\n */\n private computeMinMaxMissing(): void {\n /**\n * Update min/max with value if less than min or greater than max\n * @param {number} value - value to compare\n * @param {number} timestamp - date when value was recorded\n */\n const updateMinMax = (value: number, timestamp: number = null) => {\n if (value >= max) {\n max = value;\n // For now, don't display hour and minutes, as it doesn't fit in tile\n maxDate = moment(timestamp).format('DD/MM/YYYY');\n } else if (value <= min || min === null) {\n min = value;\n // For now, don't display hour and minutes, as it doesn't fit in tile\n minDate = moment(timestamp).format('DD/MM/YYYY');\n }\n };\n\n // Tiles updated\n const consumptionTile = this.tiles.find(t => t.key === 'elec');\n const minPowerTile = this.tiles.find(t => t.key === 'min_elec_power');\n const maxPowerTile = this.tiles.find(t => t.key === 'max_elec_power');\n const missingMeasuresTile = this.tiles.find(t => t.key === 'missing_measures');\n\n /** Data series being displayed */\n const visibleSeries: TileSerie[] = consumptionTile.series.concat([]).filter(x => x.visible === true);\n\n // Minimum and maximum values found (in all series)\n let min: number = null;\n let max: number = null;\n /** Date when minimum value was recorded */\n let minDate: string = null;\n /** Date when maximum value was recorded */\n let maxDate: string = null;\n\n /** Define if the chart is in areaspline type (stacked chart type) */\n const isAreaspline = Boolean(this.loadCurveProperties.chart.type === 'areaspline');\n\n /** Number of null values found per serie */\n const nbNullValuesPerSerie: number[] = [];\n\n /**\n * For stacked chart type, sum all value per date and get min/max sum.\n * As every serie may have different dates, we can't rely on indexes to sum values.\n * Chart stacked values can't be used either as they're grouped (averages made).\n */\n if (isAreaspline) {\n /** Map where key is a timestamp and value the sumed value */\n const map = new Map();\n\n // Sum values by timestamp\n visibleSeries.forEach(serie => {\n let serieNullValuesCount = 0;\n for (let i = 0, len = serie.y.length; i < len; i++) {\n if (serie.y[i] !== null) {\n map.set(serie.x[i], (map.get(serie.x[i]) || 0) + serie.y[i]);\n } else {\n serieNullValuesCount++; // count null values on each serie\n }\n }\n nbNullValuesPerSerie.push(serieNullValuesCount);\n });\n\n // Get min/max\n map.forEach((value, timestamp) => {\n updateMinMax(value, timestamp);\n });\n } else {\n // Scan all visible series values to get min/max\n visibleSeries.forEach(serie => {\n let serieNullValuesCount = 0;\n for (let i = 0, len = serie.y.length; i < len; i++) {\n if (serie.y[i] !== null) {\n updateMinMax(serie.y[i], serie.x[i]);\n } else {\n serieNullValuesCount++; // count null values on each serie\n }\n }\n nbNullValuesPerSerie.push(serieNullValuesCount);\n });\n }\n\n // Set minimum and maximum values in tile (in kW)\n minPowerTile.value = typeof min === 'number' ? min / 1000 : null;\n maxPowerTile.value = typeof max === 'number' ? max / 1000 : null;\n // Set dates associated with min & max values\n if (typeof minDate === 'string') {\n minPowerTile.info = `- ${minDate}`;\n }\n if (typeof maxDate === 'string') {\n maxPowerTile.info = `- ${maxDate}`;\n }\n\n /**\n * Set missing measures count and ratio in tile\n * Missing data can be caused by :\n * - null values\n * - missing time indexes in between two periods of data\n * Total missing measures is the sum of both\n **/\n\n // Compute the overall number of missing measures (from all series) and the overall number of measures\n const { nbMissingMeasures, nbExpectedMeasures } = this.loadCurveService.computeMissingMeasures(\n visibleSeries,\n nbNullValuesPerSerie\n );\n // Set values in tile\n missingMeasuresTile.valueHTML = this.setMissingMeasuresCountHTML(nbMissingMeasures || null, nbExpectedMeasures);\n }\n\n /**\n * Handle plotlines.\n * Min and max disabled while we can't find a way to display all points with good performances without grouping (false min/max displayed)\n * @param {number} min\n * @param {number} max\n */\n private handlePlotlines(min: number, max: number): void {\n const yAxis: AreasplineAxis = this.chart.get('yA0') as AreasplineAxis;\n yAxis.removePlotLine('min');\n yAxis.removePlotLine('max');\n if (typeof min === 'number') {\n yAxis.addPlotLine({\n id: 'min',\n label: {\n text: `Min : ${min}W`,\n },\n color: 'green',\n width: 2,\n dashStyle: 'ShortDash',\n value: min,\n zIndex: 5,\n });\n }\n // Disable plotlines while couldn't find a way to display all points with good performances\n if (typeof max === 'number') {\n yAxis.addPlotLine({\n id: 'max',\n label: {\n text: `Max : ${max}W`,\n },\n color: 'red',\n width: 2,\n dashStyle: 'ShortDash',\n value: max,\n zIndex: 5,\n });\n }\n }\n\n //#endregion\n\n //#region dropdown multilevel\n /***********************\n * DROPDOWN MULTILEVEL INIT\n **********************/\n\n private async initData(): Promise {\n /**\n * Handle URL params\n */\n // moment.locale('fr'); // not working, moment still reads dates in english format\n this.route.queryParams.subscribe({\n next: async queryParams => {\n // Update component company id and get if changed\n // At first load, will always return true as companyId not set\n const hasChanged = this.updateCompanyId(queryParams);\n // If company id changed, then reload routing references dropdown\n if (hasChanged) {\n /**\n * Initialise the routing references list\n */\n await this.setDropdownRoutingReferencesData();\n }\n this.updateFiltersFromParams(queryParams);\n },\n });\n }\n\n /**\n * Update `companyId` from params. If not set yet, set it.\n * @param {Params} params\n * @return {boolean} true if company changed, false otherwise\n */\n private updateCompanyId(params: Params): boolean {\n let companyId = this.filterService.getParamAliasValue(params, 'company');\n // If companyId not set in params, use session company\n if (!companyId) {\n companyId = this.sessionService.getCompanyId();\n }\n // If companyId defined and equal component's companyId, then do nothing\n if (companyId && companyId === this.companyId) {\n return false;\n }\n // If component's companyId not set or different from companyId, then set to new companyId\n if (!this.companyId || this.companyId !== companyId) {\n this.companyId = companyId;\n return true;\n }\n return false;\n }\n\n /**\n * List of routing references for the dropdown multilevel\n * @returns {Promise}\n */\n private async setDropdownRoutingReferencesData(): Promise {\n const routingReferences = await this.routingReferencesService.getRoutingReferencesAssociated(\n {\n energies: 'elec',\n companyId: this.companyId,\n communicatingProviders: ['ga', 'enedis'],\n },\n { communicating: true }\n );\n this.routingReferencesList = routingReferences;\n\n // Disable the routing reference in the dropdown list if it has an inactive status\n this.routingReferencesList.forEach((routingReference: RoutingReferenceDropdownItem) => {\n if (routingReference.status.active === false) {\n routingReference.disabled = true;\n }\n routingReference.type = 'routingreference';\n });\n }\n //#endregion\n\n //#region chart\n /***********************\n * CHART\n **********************/\n\n /**\n * Method triggered when search of data is needed.\n * @param {SearchFilter} filters - filter to ask the API for\n * @returns {Promise}\n */\n private async search(filters: SearchFilter): Promise {\n try {\n // Complete search can't be waited as it has a timeout.\n // So we need to split chart loading activation and deactivation.\n // Only indicates first loading, not retrieval of complete data\n this.isChartLoading = true;\n await this.completeSearch(filters, null);\n } catch (e) {}\n }\n\n /**\n * Check if the load curve data is complete or not.\n * An empty data table corresponds to no load curve\n * therefore considered as complete data.\n * Load curves having pensing data aren't considered as complete\n * @param {LoadCurveData[]} data\n * @returns {boolean}\n */\n private isComplete(data: LoadCurveData[]): boolean {\n if (!data) {\n return false;\n }\n\n if (!data.length) {\n return true;\n }\n\n return data.every(serie => typeof serie.hasPending !== 'boolean' || serie.hasPending !== true);\n }\n\n /**\n * Launch the complete data search process\n * Keep processing every defined timeout interval while the data is incomplete\n *\n * @param {SearchFilter} filters - filter to ask the API for\n * @param {LoadCurveData[]} previousData - data from the previous completeSearch calling\n */\n private async completeSearch(filters: SearchFilter, previousData: LoadCurveData[]): Promise {\n const isCompleteData = this.isComplete(previousData);\n this.isCompleteChartLoading = previousData && !isCompleteData;\n this.destroyTimeout();\n if (!isCompleteData) {\n this.setTimeoutSearchId = setTimeout(\n async () => {\n try {\n const data: LoadCurveData[] = await this.loadCurveService.getLoadCurveData(filters);\n\n this.loadCurveData = {\n default: data,\n adjusted: null,\n };\n this.messageDisplayService.setErrors(data);\n\n this.isAdjustedData = this.hasDifferentInterval(data);\n if (this.isAdjustedData) {\n this.loadCurveData.adjusted = this.adjustData(_.cloneDeep(data));\n }\n\n // update chart with new values\n this.handleChart(data);\n await this.completeSearch(filters, data);\n } catch (e) {}\n\n this.isChartLoading = false;\n },\n previousData ? this.timeoutInterval : 0\n );\n }\n }\n\n /**\n * Format data from API to data expected from the chart\n * Apply config chart reletive to the series data (weekends, gradient colors)\n * @param {LoadCurveData[]} data - data from the API\n * @returns {void}\n */\n private handleChart(data: LoadCurveData[]): void {\n this.loadCurveSeries = data.map((serie, index) => {\n const interval = serie.interval || this.loadCurveService.getDataInterval(serie.measures);\n const s: LoadCurveSerie = {\n name: serie.name || 'Source NC',\n data: serie.measures.map(x => [new Date(x.timestamp).getTime(), x.value]),\n pointInterval: interval, // keep interval to compute consumption\n visible: true,\n type: this.loadCurveProperties.chart.type as 'spline' | 'areaspline',\n fillColor: {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1,\n },\n stops: [\n [\n 0,\n Highcharts.color(Highcharts.getOptions().colors[index])\n .setOpacity(0.7)\n .get('rgba')\n .toString(),\n ],\n [\n 1,\n Highcharts.color(Highcharts.getOptions().colors[index])\n .setOpacity(0)\n .get('rgba')\n .toString(),\n ],\n ],\n },\n };\n return s;\n });\n\n this.plotWeekEnds(data);\n\n this.updateChart();\n }\n\n /**\n * Update the chart series\n */\n private updateChart(): void {\n if (this.chart) {\n // Navigator is the first serie, so we need to remove it last\n for (let i = this.chart.series.length - 1; i > -1; i--) {\n this.chart.series[i].remove(false);\n }\n this.loadCurveSeries.forEach(s => this.chart.addSeries(s, false));\n if (this.chart.xAxis && this.chart.xAxis[0]) {\n this.chart.xAxis[0].setExtremes(null, null, false);\n }\n this.chart.redraw(true);\n }\n }\n\n /**\n * PLot blue bands on weekend days\n * @param {LoadCurveData[]} data - data displayed in the chart\n */\n private plotWeekEnds(data: LoadCurveData[]): void {\n const xAxis: AreasplineAxis = this.chart.get('xA0') as AreasplineAxis;\n\n // remove old plotbands\n this.loadCurveProperties.xAxis[0].plotBands.forEach(plotband => {\n xAxis.removePlotBand(plotband.id);\n });\n\n // Compute week days. Get only one day per week as we'll set correct days when creating bands\n const uniqueWeekDays: moment.Moment[] = [];\n // First get starts and ends of series to get min/max\n const { starts, ends } = data.reduce(\n (memo: { starts: moment.Moment[]; ends: moment.Moment[] }, serie) => {\n if (serie.measures.length) {\n // Not using UTC because we want dates in local of user\n memo.starts.push(moment(serie.measures[0].timestamp));\n memo.ends.push(moment(serie.measures[serie.measures.length - 1].timestamp));\n }\n return memo;\n },\n { starts: [], ends: [] }\n );\n // Iterate for every week between min start and max end.\n const minStart = moment.min(starts);\n const maxEnd = moment.max(ends);\n while (minStart.isBefore(maxEnd)) {\n uniqueWeekDays.push(minStart.clone().startOf('day'));\n minStart.add(1, 'week');\n }\n\n uniqueWeekDays.forEach(day => {\n xAxis.addPlotBand({\n id: 'weekend' + day.valueOf(),\n color: Highcharts.color(Highcharts.getOptions().colors[0])\n .setOpacity(0.2)\n .get('rgba')\n .toString(),\n from: moment(day)\n .isoWeekday(6)\n .valueOf(),\n to: moment(day)\n .isoWeekday(6)\n .add(2, 'day')\n .valueOf(),\n });\n });\n }\n\n /**\n * Switch from line to area stacked and reverse\n * @param {MatSlideToggleChange} value - from the meterial slider. Boolean property \"checked\" indicates the final state.\n * @returns {void}\n */\n public toggleStack(value: MatSlideToggleChange): void {\n const type = value.checked ? 'areaspline' : 'spline';\n this.loadCurveProperties.chart.type = type;\n this.loadCurveSeries.forEach(s => {\n s.type = type;\n });\n const changes = {\n chart: this.loadCurveProperties.chart,\n series: this.loadCurveSeries,\n };\n if (this.chart) {\n this.chart.update(changes);\n this.computeMinMaxMissing();\n }\n }\n\n /**\n * Returns true if some load curve data have different intervals otherwise returns false\n *\n * @param {LoadCurveData} data\n * @returns {boolean}\n */\n private hasDifferentInterval(data: LoadCurveData[]): boolean {\n if (!data || !data.length) {\n return false;\n }\n const intervals = this.getDataIntervals(data);\n return Boolean(intervals.length > 1);\n }\n\n /**\n * returns true if the data has interval otherwise returns false\n *\n * @param {LoadCurveData} data\n * @returns {boolean}\n */\n private hasValidInterval(data: LoadCurveData): boolean {\n return Boolean(data && typeof data.interval === 'number' && data.interval > 0);\n }\n\n /**\n * Get unique intervals of given load curve data\n *\n * @param {LoadCurveData[]} data\n * @returns {number[]}\n */\n private getDataIntervals(data: LoadCurveData[]): number[] {\n if (!data || !data.length) {\n return [];\n }\n\n const intervals = data.reduce((memo, d) => {\n if (this.hasValidInterval(d)) {\n memo.push(d.interval);\n }\n return memo;\n }, []);\n\n return _.uniq(intervals);\n }\n\n /**\n * Get null measures between start date and end date with defined interval\n *\n * @param {moment.Moment} start - start date\n * @param {moment.Moment} end - end date\n * @param {number} interval - interval (in milliseconds)\n * @returns {LoadCurveMeasure[]}\n */\n private getMissingMeasures(start: moment.Moment, end: moment.Moment, interval: number): LoadCurveMeasure[] {\n const startStep = start.clone();\n const measures = [];\n while (startStep.isBefore(end)) {\n startStep.add(interval, 'ms');\n measures.push({\n timestamp: startStep.toISOString(),\n value: null,\n });\n }\n return measures;\n }\n\n /**\n * Adjust load curve data by max interval\n *\n * @param {LoadCurveData[]} data - load curve data from API\n * @returns {LoadCurveData[]}\n */\n private adjustData(data: LoadCurveData[]): LoadCurveData[] {\n const intervals: number[] = [];\n\n const dateRange: {\n min: moment.Moment;\n max: moment.Moment;\n } = {\n min: null,\n max: null,\n };\n\n // Get all interval values\n // Get global min date and max date\n data.forEach(d => {\n // Consider only data with no empty measures (interval > 0)\n if (this.hasValidInterval(d)) {\n intervals.push(d.interval);\n\n if (dateRange.min === null || moment.utc(d.start).isBefore(dateRange.min)) {\n dateRange.min = moment.utc(d.start);\n }\n\n if (dateRange.max === null || moment.utc(d.end).isAfter(dateRange.max)) {\n dateRange.max = moment.utc(d.end);\n }\n }\n });\n\n // retrieve the max interval value\n const maxInterval = _.max(intervals);\n\n data.map((d: LoadCurveData) => {\n if (!this.hasValidInterval(d)) {\n return d;\n }\n\n const interval = d.interval;\n\n // get null measures between global min date and data start date\n const startMeasures = this.getMissingMeasures(dateRange.min.clone(), moment.utc(d.start), interval);\n\n // get null measures between data end date and global max date\n const endMeasures = this.getMissingMeasures(moment.utc(d.end), dateRange.max.clone(), interval);\n\n // fill current data measures with computed start measures and end measures\n d.measures = [...startMeasures, ...d.measures, ...endMeasures];\n d.start = dateRange.min.toISOString();\n d.end = dateRange.max.toISOString();\n\n // then only adjust data series which don't have the max interval\n if (interval !== maxInterval && d.measures.length) {\n const adjustedMeasures: LoadCurveMeasure[] = [];\n const measures: LoadCurveMeasure[] = _.cloneDeep(d.measures);\n let measure: LoadCurveMeasure = null;\n const endInterval: moment.Moment = dateRange.min.add(maxInterval, 'ms');\n // Values since last measure timestamp matching max interval\n let values: number[] = [];\n // collect measure values and compute these values every max interval\n while (measures.length) {\n measure = measures.shift();\n\n if (typeof measure.value === 'number') {\n values.push(measure.value);\n }\n\n // At the end of each max interval, we compute the average of measures since the last measure timestamp\n if (!measures.length || moment.utc(measure.timestamp).isSame(endInterval)) {\n const avgValue = values.length ? Math.round(_.sum(values) / values.length) : null;\n adjustedMeasures.push({\n value: avgValue,\n timestamp: endInterval.toISOString(),\n });\n endInterval.add(maxInterval, 'ms');\n values = [];\n }\n }\n d.measures = adjustedMeasures;\n }\n return d;\n });\n\n return data;\n }\n\n /**\n * Update the chart data when changing chart type and only if exists adjusted load curve data\n * then returns true ohterwise returns false\n *\n * @returns {boolean}\n */\n private updateChartData(): boolean {\n const prevChartType = this.selectedChartType;\n this.selectedChartType = this.loadCurveProperties.chart.type as 'spline' | 'areaspline';\n if (this.isAdjustedData && prevChartType && this.selectedChartType !== prevChartType) {\n if (this.selectedChartType === 'areaspline') {\n this.handleChart(this.loadCurveData.adjusted);\n } else {\n this.handleChart(this.loadCurveData.default);\n }\n return true;\n }\n return false;\n }\n\n /**\n * Reset the load curve data\n */\n private resetLoadCurveData() {\n this.loadCurveData = {\n default: null,\n adjusted: null,\n };\n }\n\n /**\n * Reset chart\n */\n private resetChart() {\n this.handleChart([]);\n this.resetLoadCurveData();\n this.destroyTimeout();\n this.isCompleteChartLoading = false;\n this.isAdjustedData = false;\n }\n\n /**\n * @returns {boolean} true if the chart has data to display\n */\n get hasChartData(): boolean {\n return Boolean(\n this.loadCurveSeries && this.loadCurveSeries.length && this.loadCurveSeries.some(serie => serie.data.length)\n );\n }\n\n /**\n * @returns {boolean} true if the chart has complete data to display\n */\n get hasCompleteChartData(): boolean {\n return Boolean(this.hasChartData && !this.isCompleteChartLoading);\n }\n\n /**\n * Return the appropriate message when no data\n * @returns {string}\n */\n get noDataMessage(): string {\n return this.isCompleteChartLoading\n ? 'Nous récupérons actuellement vos données auprès d’Enedis, l’opération peut prendre quelques minutes.'\n : null;\n }\n\n public getExcelExportNames(): string[] | null {\n if (this.isChartLoading || this.isCompleteChartLoading || this.loadCurveSeries.length === 0) {\n return null;\n }\n const start = moment(this.dateRange.fromDate.date).startOf('day');\n const end = moment(this.dateRange.toDate.date).startOf('day');\n\n return this.loadCurveData.default\n .filter(x => !x.hasPending)\n .map(x =>\n `MesuresCourbeDeCharge-${start.format('DDMMYYYY')}-${end.format('DDMMYYYY')}-${x.name}`.replace(\n '/',\n '_'\n )\n );\n }\n\n public getExcelExportURLs(): string[] | null {\n if (this.isChartLoading || this.isCompleteChartLoading || this.loadCurveSeries.length === 0) {\n return null;\n }\n const start = moment(this.dateRange.fromDate.date).startOf('day');\n const end = moment(this.dateRange.toDate.date)\n .startOf('day')\n .add(1, 'day');\n return this.loadCurveData.default\n .filter(x => !x.hasPending)\n .map(\n x =>\n '/api/export/excel/load-curve/' +\n x.entityType +\n '?dateStart=' +\n start.toISOString() +\n '&dateEnd=' +\n end.toISOString() +\n '&' +\n x.entityType +\n '=' +\n x.entityId +\n '&provider=' +\n x.provider\n );\n }\n\n // #endregion\n\n //#region filters\n /*************************\n * FILTERS\n ************************/\n\n /**\n * Update the filters from url parameters\n * Info: Dates from params have priority on the dates from filters.\n * When any url param change is detected, dates take the params values.\n * Info: Expected format of date is MM-DD-YYYY\n * @param {Params} params\n * @param {string?} params.r - routing reference id\n * @param {string?} params.s - site id\n * @param {string?} params.ds - date - start of the period\n * @param {string?} params.de - date - end of the period\n */\n private async updateFiltersFromParams(params: Params): Promise {\n /**\n * Set the period from params first\n * If the site has changed, the period query params might be updated in the entity change process, to adpat on the entity's available period\n */\n\n /**\n * Set dates\n */\n const [start, end] = [params.ds, params.de].map(d =>\n d && this.filterService.isDateValid(moment(d, this.urlDateFormat)) ? moment(d, this.urlDateFormat) : null\n );\n const hasDates: boolean = [start, end].some(d => d !== null);\n const hasCurrentStart = this.isDatePropertySet(this.dateRange.fromDate);\n const hasCurrentEnd = this.isDatePropertySet(this.dateRange.toDate);\n if (hasDates) {\n if (start) {\n if (!hasCurrentStart || start.toDate().getTime() !== this.dateRange.fromDate.date.getTime()) {\n this.setDate(start.toDate(), this.dateRange.fromDate);\n }\n }\n if (end) {\n if (!hasCurrentEnd || end.toDate().getTime() !== this.dateRange.toDate.date.getTime()) {\n this.setDate(end.toDate(), this.dateRange.toDate);\n }\n }\n this.dateRange = { ...this.dateRange };\n } else if (!hasDates && (hasCurrentStart || hasCurrentEnd)) {\n // if dates have been erased, reset date pickers\n this.resetDates();\n }\n\n /**\n * Set routing reference or site\n */\n const routingReference = params.r;\n const site = params.s;\n if (routingReference || site) {\n // select the desired entity\n const type: 'routingreference' | 'site' = routingReference ? 'routingreference' : 'site';\n const entity: Entity = {\n type,\n _id: routingReference ? routingReference : site,\n reference: null,\n };\n if (!this.selectedItem || entity._id !== this.selectedItem._id) {\n await this.setEntity(entity);\n }\n }\n\n /**\n * Search for load curve if the entire filter is correct.\n * If params have date, set them before launching the search\n */\n if (this.isFilterComplete) {\n this.emitSearch();\n }\n }\n\n /**\n * Handle a new selection from the entity selector\n * Set entity, load its periods of data and update query params\n * @param {RoutingReferenceDropdownItem} item - The item selected in the multiselect dropdown\n */\n public async onEntitySelected(item: RoutingReferenceDropdownItem): Promise {\n // mapping for the queryParams to set\n const paramForType = {\n site: 's',\n routingreference: 'r',\n };\n\n const queryParams = {};\n\n // deselec the dropdown -> remove the url param\n if (!item) {\n const type = paramForType[this.selectedItem.type];\n queryParams[type] = null;\n this.selectedItem = null;\n } else {\n const type = paramForType[item.type];\n queryParams[type] = item._id;\n const typeToReset = Object.values(paramForType).find(t => t !== type); // reset value for other entity type\n queryParams[typeToReset] = null;\n }\n\n // update the query params of the entity\n this.filterService.updateRouteParams(queryParams);\n\n this.handleInputsChart('entity');\n }\n\n /**\n * Used to clear the load curve chart when handling inputs (entity and daterange)\n *\n * @param {('entity'|'daterange')?} handledInput - handled input\n */\n private handleInputsChart(handledInput?: 'entity' | 'daterange') {\n if (\n this.isFilterAllIncomplete ||\n (handledInput === 'entity' && !this.isDateSet) ||\n (handledInput === 'daterange' && !this.selectedItem)\n ) {\n this.resetChart();\n }\n }\n\n /**\n * Update the selected entity with its reference and site if needed\n * @param {Entity} entity\n * @returns {Entity} entity updated with references\n */\n private setSelectedEntity(entity: Entity): Entity {\n if (entity.type === 'site') {\n const rref = this.routingReferencesList.find(x => x.site._id === entity._id);\n entity.reference = rref.site.complement;\n } else {\n const rref = this.routingReferencesList.find(x => x._id === entity._id);\n entity.reference = rref.reference;\n entity.site = rref.site.complement;\n }\n return entity;\n }\n\n /**\n * Set the selected entity (a site or a routing reference)\n * Set the period available for the selected entity.\n * @param {Entity} entity\n */\n private async setEntity(entity: Entity): Promise {\n try {\n this.isEntityLoading = true;\n\n // retrieve the site or the routing reference from the entities list and set the references\n this.selectedItem = this.setSelectedEntity(entity);\n\n // retrieve dates\n const response = await this.loadCurveService.getProjectPeriod(entity.type, entity._id);\n const dateStart = moment.utc(response.dateStart).toDate();\n // dateEnd must be < today\n const dateEnd = moment\n .min(\n moment.utc(response.dateEnd),\n moment()\n .subtract(1, 'day')\n .endOf('day')\n )\n .toDate();\n\n // set limit dates in datepickers\n this.dateRangeLimit.minDate = dateStart;\n this.dateRangeLimit.maxDate = dateEnd;\n\n // update dateRange to match the available range\n this.updateRange();\n\n this.isEntityLoading = false;\n } catch (e) {\n this.isEntityLoading = false;\n this.loadCurveSeries = [];\n this.updateChart();\n }\n }\n\n /**\n * Update the current period from the entity available period.\n */\n private updateRange() {\n // use moment dates to compare\n const entityPeriod = {\n start: moment(this.dateRangeLimit.minDate),\n end: moment(this.dateRangeLimit.maxDate),\n };\n const currentPeriod = {\n start: moment(this.dateRange.fromDate.date),\n end: moment(this.dateRange.toDate.date),\n };\n\n const hasEntityPeriod = entityPeriod.start.isValid() && entityPeriod.end.isValid();\n\n // if the current period or the entity period isn't valid, don't set the perdio\n if (!this.isDateSet || !hasEntityPeriod) {\n return;\n }\n\n // if the entity period is outside the current period (finishes before and start after), reset\n const isEntityOutsideCurrent =\n entityPeriod.end.isSameOrBefore(currentPeriod.start) || entityPeriod.start.isSameOrAfter(currentPeriod.end);\n if (isEntityOutsideCurrent) {\n this.filterService.updateRouteParams({ ds: null, de: null });\n return;\n }\n\n const params = {};\n // period end takes the end of the entity's period\n if (entityPeriod.end.isBefore(currentPeriod.end)) {\n params['de'] = entityPeriod.end.format(this.urlDateFormat);\n }\n\n // period start takes the beginning of the entity's period\n if (entityPeriod.start.isAfter(currentPeriod.start)) {\n params['ds'] = entityPeriod.start.format(this.urlDateFormat);\n }\n this.filterService.updateRouteParams(params);\n }\n\n /**\n * Reset start and end of the period selector\n */\n private resetDates(): void {\n this.dateRange = {\n fromDate: { date: null, utcDate: null },\n toDate: { date: null, utcDate: null },\n };\n }\n\n /**\n * Set the selected date\n * Search for load curve if the filter is complete\n * @param {DateRange} dateRange - date range selected\n */\n onDateRangeChange(dateRange: DateRange) {\n if (!dateRange) {\n return;\n }\n\n // update the query params of the date\n const queryParams = {\n ds: dateRange.fromDate.date ? moment(dateRange.fromDate.date).format(this.urlDateFormat) : null,\n de: dateRange.toDate.date ? moment(dateRange.toDate.date).format(this.urlDateFormat) : null,\n };\n this.filterService.updateRouteParams(queryParams);\n\n this.handleInputsChart('daterange');\n }\n\n /**\n * Set the selected number of days\n */\n onDaysRangeChange(nbDays: number) {\n this.dateRangeDaysCount = nbDays;\n }\n\n /**\n * Set the selected date in side the datePicker\n * @param {Date} date - date to set\n * @param {isDatePropertySet} datePicker - datePicker to set the value to\n */\n private setDate(date: Date, datePicker: DatePicker): void {\n datePicker.date = date;\n /**\n * Ngx-bootstrap has a bug : it doesn't care about the timezones.\n * So we need to extract only year, month and day from date, not considering hours, minutes, ...\n */\n datePicker.utcDate = date\n ? moment.utc({ y: date.getFullYear(), M: date.getMonth(), d: date.getDate() }).toDate()\n : null;\n }\n\n /**\n * Search for load curve data to display, matching the given filter.\n */\n private emitSearch(): void {\n const start = moment(this.dateRange.fromDate.date).startOf('day');\n const end = moment(this.dateRange.toDate.date)\n .startOf('day')\n .add(1, 'day');\n const filters: SearchFilter = {\n entityType: this.selectedItem.type,\n entityId: this.selectedItem._id,\n start: start.toISOString(),\n end: end.toISOString(),\n };\n // Check that filters changed and search if so\n const currentHash = JSON.stringify(filters);\n const hasChanged = currentHash !== this.filtersHash;\n if (hasChanged) {\n this.filtersHash = currentHash;\n this.search(filters);\n }\n }\n\n /**\n * Return the appropriate key for plural or singular days\n * @returns {string} key for day/days\n */\n get dateRangeDaysKey(): string {\n return this.dateRangeDaysCount > 1 ? 'days' : 'day';\n }\n\n /**\n * Get the name of the site to display when selecting a site or a routing reference\n * @returns {string} selected site's name\n */\n get selectedSiteName(): string {\n if (!this.selectedItem) {\n return '';\n }\n return this.selectedItem.site || this.selectedItem.reference;\n }\n\n /**\n * Get the site name of the current displayed chart\n */\n get displayedSiteName(): string {\n if (!this.hasChartData) {\n this._displayedSiteName = '';\n } else {\n this._displayedSiteName = this.selectedSiteName || this._displayedSiteName;\n }\n\n return this._displayedSiteName;\n }\n\n //#endregion\n\n //#region utils\n /*************************\n * UTILS\n ************************/\n\n /**\n * Returns true if the current date object has value for date\n * @param {DatePicker} datePicker\n * @returns {boolean}\n */\n private isDatePropertySet(datePicker: DatePicker): boolean {\n return Boolean(datePicker.date && datePicker.utcDate);\n }\n\n /**\n * Returns true if values for from date and time are all set\n * @returns {boolean}\n */\n get isFromDateSet(): boolean {\n return this.isDatePropertySet(this.dateRange.fromDate);\n }\n\n /**\n * Returns true if values for to date and time are all set\n * @returns {boolean}\n */\n get isToDateSet(): boolean {\n return this.isDatePropertySet(this.dateRange.toDate);\n }\n\n /**\n * Returns true if both from and to dates & times are set\n * @return {boolean}\n */\n get isDateSet(): boolean {\n return Boolean(this.isFromDateSet && this.isToDateSet);\n }\n\n /**\n * Returns true if all data of filter are filled\n * @returns {boolean}\n */\n get isFilterComplete(): boolean {\n return Boolean(this.selectedItem && this.isDateSet);\n }\n\n /**\n * Returns true if all data of filter are incomplete\n * @returns {boolean}\n */\n get isFilterAllIncomplete(): boolean {\n return Boolean(!this.selectedItem && !this.isDateSet);\n }\n\n /**\n * Returns true if entity selected and no period (= no external data)\n * @returns {boolean}\n */\n get hasEntityNoPeriod(): boolean {\n return (\n Boolean(this.selectedItem) &&\n !Boolean(this.dateRangeLimit.minDate) &&\n !Boolean(this.dateRangeLimit.maxDate) &&\n !this.isEntityLoading\n );\n }\n\n /**\n * Returns true if entity selected is loaded and has data.\n * @returns {boolean}\n */\n get hasEntityPeriod(): boolean {\n return (\n Boolean(this.selectedItem) &&\n Boolean(this.dateRangeLimit.minDate) &&\n Boolean(this.dateRangeLimit.maxDate) &&\n !this.isEntityLoading\n );\n }\n\n /**\n * Returns entity type full text\n * @returns {string}\n */\n get entityTypeFullText(): string {\n return this.selectedItem.type === 'site' ? 'site' : 'PDL';\n }\n\n /**\n * Destroy timer\n */\n private destroyTimeout() {\n clearTimeout(this.setTimeoutSearchId);\n this.setTimeoutSearchId = null;\n }\n\n //#endregion\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { LoadCurveComponent } from './load-curve.component';\n\nconst LOAD_CURVE_ROUTE = [\n {\n path: '',\n component: LoadCurveComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n\n@NgModule({\n declarations: [LoadCurveComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(LOAD_CURVE_ROUTE)],\n})\nexport class LoadCurveModule {}\n","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\nimport moment = require('moment');\n\nimport { LoadCurveData, LoadCurveMeasure } from 'app/shared/models/load-curve.interface';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { PageService } from 'app/shared/services/page/page.service';\n\nimport { LoadCurveDates, SearchFilter, TileSerie } from './load-curve.interface';\n\n@Injectable()\nexport class LoadCurveService extends PageService {\n constructor(public apiService: ApiService, private readonly _exportService: ExportService) {\n super(apiService);\n this.fake = false;\n }\n\n /**\n * Get data for chart.\n * @param {SearchFilter} filters\n * @return {Promise}\n */\n public async getLoadCurveData(filters: SearchFilter): Promise {\n const data = {\n dateStart: filters.start,\n dateEnd: filters.end,\n };\n data[filters.entityType] = filters.entityId;\n const response = await this.get('/api/external-data/load-curve/' + filters.entityType, null, data);\n return response.data;\n }\n\n /**\n * Get the project's period.\n * @param {string} entityType\n * @param {string} entityId\n * @return {Promise}\n */\n public async getProjectPeriod(entityType: string, entityId: string): Promise {\n const data = {\n [entityType]: entityId,\n };\n const response = await this.get('/api/external-data/load-curve/period/' + entityType, null, data);\n return response.data;\n }\n\n /**\n * Find interval in miliseconds between the two first measures timestamp.\n * Default is 10 if serie doesn't have any measure.\n * @param {LoadCurveMeasure[]} mesaurues - serie's measures\n * @returns {number} interval in ms\n */\n public getDataInterval(measures: LoadCurveMeasure[]): number {\n const start = measures[0];\n const end = measures[1];\n if (!(start && end)) {\n return 10 * 60 * 1000; // default interval is 10 minutes for empty series\n }\n const dateStart = moment(new Date(start.timestamp).getTime());\n const dateEnd = moment(new Date(end.timestamp).getTime());\n return dateEnd.diff(dateStart, 'milliseconds');\n }\n\n /**\n * Compute missing data duration, the sum of :\n * - duration of null values\n * - duration of periods with missing indexes\n * Series' interval and expected duration must have the same unit\n * @param {TileSerie[]} series - series of data\n * @param {number[]} nullValuesPerSerie - count of null values in each serie\n * @param {number} expectedSerieDuration - expected duration of each serie (in minutes)\n * @returns {number} missing duration in minutes\n */\n public computeMissingDuration(\n series: TileSerie[],\n nullValuesPerSerie: number[],\n expectedSerieDuration: number\n ): number {\n /**\n * Duration of missing data in minutes : sum of null and missing values\n */\n let totalMissingDuration = 0;\n\n // Compute missing data on each serie (depends on the serie's interval)\n series.forEach((serie, index) => {\n // Handle the duration of null values (in min)\n const nullValuesCount = nullValuesPerSerie[index];\n const nullDuration = nullValuesCount * serie.interval;\n\n // Handle the duration of missing values (minssing time indexes & the duration it represents)\n const expectedIndexesCount = expectedSerieDuration / serie.interval + 1; // expected number of indexes\n const missingValuesCount = expectedIndexesCount - serie.x.length; // compute nb of missing indexes\n const missingValuesDuration = missingValuesCount * serie.interval; // compute the missing duration it represents\n\n // Sum both duration of null and missing values\n const missingDuration = nullDuration + missingValuesDuration;\n totalMissingDuration = missingDuration ? totalMissingDuration + missingDuration : totalMissingDuration;\n });\n\n return totalMissingDuration;\n }\n\n /**\n * Compute the number of missing measures among all series, the sum of :\n * - null values\n * - missing measures\n * @param {TileSerie[]} series - series of data\n * @param {number[]} nbNullValuesPerSerie - count of null values in each serie\n * @returns {nbMissingMeasures: number, nbExpectedMeasures: number} count of missing and expected measures\n */\n public computeMissingMeasures(\n series: TileSerie[],\n nbNullValuesPerSerie: number[]\n ): { nbMissingMeasures: number; nbExpectedMeasures: number } {\n /** Count of missing measures */\n let nbMissingMeasures = 0;\n\n /** Count of null measures */\n let nbExpectedMeasures = 0;\n\n /** Expected number of measures expected per serie */\n const nbExpectedMeasuresPerSerie: number[] = this.computeExpectedMeasuresPerSerie(series);\n\n series.forEach((serie, index) => {\n /** The serie's count of null measures */\n const nullValuesCount = nbNullValuesPerSerie[index];\n\n /** The serie's expected number of measures */\n const expectedMeasuresCount = nbExpectedMeasuresPerSerie[index];\n const missingMeasuresCount = expectedMeasuresCount - serie.x.length;\n\n // Sum both null and missing measures\n nbMissingMeasures += nullValuesCount + missingMeasuresCount;\n nbExpectedMeasures += expectedMeasuresCount;\n });\n\n return { nbMissingMeasures, nbExpectedMeasures };\n }\n\n /**\n * Compute the expected number of measures for each serie\n * @param {TileSerie[]} series - series of data\n * @returns {number[]} expected number of measures per serie\n */\n public computeExpectedMeasuresPerSerie(series: TileSerie[]): number[] {\n /** Expected number of measures per serie */\n const expectedMeasuresPerSerie = [];\n let seriesMin = null;\n let seriesMax = null;\n /** The minimum interval from all series */\n let minInterval = null;\n series.forEach(serie => {\n if (!serie.x || !serie.x.length) {\n return;\n }\n if (seriesMin === null || serie.x[0] < seriesMin) {\n seriesMin = serie.x[0];\n }\n const last = _.last(serie.x);\n if (seriesMax === null || last > seriesMax) {\n seriesMax = last;\n }\n if (minInterval === null || (serie.interval && serie.interval < minInterval)) {\n minInterval = serie.interval;\n }\n });\n if (!seriesMin || !seriesMax || !minInterval) {\n return expectedMeasuresPerSerie;\n }\n /** First date with data displayed from all series */\n const overallMin = moment(seriesMin);\n\n /** Last date with data displayed from all series */\n const overallMax = moment(seriesMax);\n\n series.forEach(s => {\n // clone first and last date displayed in the chart to manipulate it without changing the original\n const min = overallMin.clone();\n const max = overallMax.clone();\n let remainingTry = 5;\n // Find the expected first and last data to display for the current serie, depending on its interval\n while (min.minutes() % s.interval && remainingTry > 0) {\n min.add(minInterval, 'minutes');\n remainingTry--;\n }\n remainingTry = 5;\n while (max.minutes() % s.interval && remainingTry > 0) {\n max.subtract(minInterval, 'minutes');\n remainingTry--;\n }\n /** Duration between the first and last date for the current serie */\n const serieDuration = max.diff(min, 'minutes');\n\n /** Compute the expeceted number of measures for the given serie's duration and interval */\n expectedMeasuresPerSerie.push(serieDuration / s.interval + 1);\n });\n\n return expectedMeasuresPerSerie;\n }\n}\n","export default \".site-informations,\\n.input-wrap,\\n.button-wrap {\\n padding: 20px;\\n}\\n\\n.search-input {\\n height: 42px;\\n}\\n\\n.bg-white-component {\\n display: block;\\n width: 100%;\\n height: 100%;\\n background-color: white;\\n}\\n\\n.button-wrap {\\n padding-top: 10px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n\\n.button-wrap button {\\n max-width: 180px;\\n line-height: 1.4;\\n padding: 10px 16px;\\n background-color: #3189c4;\\n border: none;\\n color: white;\\n cursor: pointer;\\n}\\n\\n.button-wrap button:hover, .button-wrap button:focus, .button-wrap button:active {\\n background-color: #8fc3e6;\\n}\\n\\n.button-wrap button:nth-child(even) {\\n margin-left: 15px;\\n margin-right: 15px;\\n}\\n\\n.button-wrap button:disabled {\\n background-color: lightgrey;\\n}\\n\\n.text-part {\\n padding-top: 8px;\\n font-size: 15px;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n}\\n\\n.text-part .success-text {\\n color: green;\\n}\\n\\n.text-part .error-text {\\n color: #db4b47;\\n}\\n\\n.text-part .warning-text {\\n color: orange;\\n}\\n\\n.map-search-col {\\n -webkit-box-flex: 1;\\n flex: 1;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9tZXJnZS9tZXJnZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvZW5lcmd5L21lcmdlL21lcmdlLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0VBR0ksYUFBQTtBQ0RKOztBRElBO0VBQ0ksWUFBQTtBQ0RKOztBRElBO0VBQ0ksY0FBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUNESjs7QURJQTtFQUNJLGlCQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHFCQUFBO1VBQUEseUJBQUE7QUNESjs7QURHSTtFQUNJLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0FDRFI7O0FER1E7RUFHSSx5QkFBQTtBQ0haOztBRE1RO0VBQ0ksaUJBQUE7RUFDQSxrQkFBQTtBQ0paOztBRE9RO0VBQ0ksMkJBQUE7QUNMWjs7QURVQTtFQUNJLGdCQUFBO0VBQ0EsZUFBQTtFQUNBLHFDQUFBO0FDUEo7O0FEU0k7RUFDSSxZRWxDRTtBRDJCVjs7QURVSTtFQUNJLGNFdkNBO0FEK0JSOztBRFdJO0VBQ0ksYUV6Q0U7QURnQ1Y7O0FEYUE7RUFDSSxtQkFBQTtVQUFBLE9BQUE7QUNWSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS9tZXJnZS9tZXJnZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvY29sb3JzJztcblxuLnNpdGUtaW5mb3JtYXRpb25zLFxuLmlucHV0LXdyYXAsXG4uYnV0dG9uLXdyYXAge1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG5cbi5zZWFyY2gtaW5wdXQge1xuICAgIGhlaWdodDogNDJweDtcbn1cblxuLmJnLXdoaXRlLWNvbXBvbmVudCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uYnV0dG9uLXdyYXAge1xuICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxODBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM4ZmMzZTY7XG4gICAgICAgIH1cblxuICAgICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmV5O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGV4dC1wYXJ0IHtcbiAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmO1xuXG4gICAgLnN1Y2Nlc3MtdGV4dCB7XG4gICAgICAgIGNvbG9yOiAkc3VjY2VzcztcbiAgICB9XG5cbiAgICAuZXJyb3ItdGV4dCB7XG4gICAgICAgIGNvbG9yOiAkZXJyb3I7XG4gICAgfVxuXG4gICAgLndhcm5pbmctdGV4dCB7XG4gICAgICAgIGNvbG9yOiAkd2FybmluZztcbiAgICB9XG59XG5cbi5tYXAtc2VhcmNoLWNvbCB7XG4gICAgZmxleDogMTtcbn1cbiIsIi5zaXRlLWluZm9ybWF0aW9ucyxcbi5pbnB1dC13cmFwLFxuLmJ1dHRvbi13cmFwIHtcbiAgcGFkZGluZzogMjBweDtcbn1cblxuLnNlYXJjaC1pbnB1dCB7XG4gIGhlaWdodDogNDJweDtcbn1cblxuLmJnLXdoaXRlLWNvbXBvbmVudCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLmJ1dHRvbi13cmFwIHtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG4uYnV0dG9uLXdyYXAgYnV0dG9uIHtcbiAgbWF4LXdpZHRoOiAxODBweDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmJ1dHRvbi13cmFwIGJ1dHRvbjpob3ZlciwgLmJ1dHRvbi13cmFwIGJ1dHRvbjpmb2N1cywgLmJ1dHRvbi13cmFwIGJ1dHRvbjphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGZjM2U2O1xufVxuLmJ1dHRvbi13cmFwIGJ1dHRvbjpudGgtY2hpbGQoZXZlbikge1xuICBtYXJnaW4tbGVmdDogMTVweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxuLmJ1dHRvbi13cmFwIGJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTtcbn1cblxuLnRleHQtcGFydCB7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmO1xufVxuLnRleHQtcGFydCAuc3VjY2Vzcy10ZXh0IHtcbiAgY29sb3I6IGdyZWVuO1xufVxuLnRleHQtcGFydCAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZGI0YjQ3O1xufVxuLnRleHQtcGFydCAud2FybmluZy10ZXh0IHtcbiAgY29sb3I6IG9yYW5nZTtcbn1cblxuLm1hcC1zZWFyY2gtY29sIHtcbiAgZmxleDogMTtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { MergeService } from './merge.service';\n\nimport { Marker } from 'app/shared/models/marker.interface';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { ProfilesService } from 'app/shared/services/profiles/profiles.service';\n\nimport Swal, { SweetAlertOptions } from 'sweetalert2';\n\ninterface Address {\n streetNumber?: string;\n streetName?: string;\n zipcode?: string;\n city?: string;\n name: string;\n longitude?: number;\n latitude?: number;\n}\n\n@Component({\n selector: 'ga-merge',\n templateUrl: './merge.component.html',\n styleUrls: ['./merge.component.scss'],\n providers: [MergeService],\n})\nexport class MergeComponent implements OnInit {\n oldAddress: Address = { name: null };\n newAddress: Address = { name: null };\n markers: Marker[] = [];\n entity: {\n id: string;\n isSite: boolean;\n } = { id: null, isSite: true };\n\n private _search: string;\n\n set search(search) {\n this.resetTexts();\n this._search = search;\n }\n get search() {\n return this._search;\n }\n\n texts: { warning: string; error: string } = {\n warning: '',\n error: '',\n };\n\n mapOptions: {\n zoom: number;\n lat: number;\n lng: number;\n height: number;\n } = {\n zoom: 8,\n lat: 49.894067,\n lng: 2.2957529999999906,\n height: 300,\n };\n\n fluidCategory = 'energie';\n\n private equalityCheckFields: string[] = ['latitude', 'longitude', 'city', 'zipcode', 'streetName', 'streetNumber'];\n\n constructor(\n private mergeService: MergeService,\n private route: ActivatedRoute,\n private mapService: MapService,\n private profilesService: ProfilesService\n ) {}\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n if (params.siteId) {\n this.getSiteInformations(params.siteId);\n } else if (params.routingReferenceId) {\n this.entity.isSite = false;\n this.getRoutingReferenceInformation(params.routingReferenceId);\n }\n\n this.fluidCategory = params['fluidCategory'];\n });\n }\n\n async searchLocation(): Promise {\n try {\n const response = await this.mergeService.searchLocation(this.search);\n this.newAddress = this.copyAddress(response.data);\n if (response.data && !response.data.streetNumber) {\n delete this.newAddress.streetNumber;\n }\n\n this.setSiteMarker(this.newAddress);\n } catch (err) {\n if (err.status === 404) {\n this.texts.error = \"L'adresse renseignée est introuvable\";\n } else if (err.status === 400) {\n this.texts.error = 'Une erreur est survenue, veuillez réessayer plus tard';\n }\n }\n }\n\n async saveLocation(): Promise {\n this.resetTexts();\n try {\n const response = await this.mergeService.saveLocation(this.entity, this.newAddress);\n const dataAddress = this.entity.isSite ? response.data : response.data.address;\n this.newAddress = this.copyAddress(dataAddress);\n this.oldAddress = this.copyAddress(dataAddress);\n const entityDisplay = this.entity.isSite ? 'site' : 'PDL';\n Swal.fire({\n icon: 'success',\n title: 'La nouvelle adresse du ' + entityDisplay + ' a été sauvegardée !',\n showConfirmButton: false,\n timer: 2000,\n });\n } catch (err) {\n const swalProperties: SweetAlertOptions = {\n icon: 'error',\n title: 'Une erreur est survenue',\n text: 'Merci de réessayer ultérieurement.',\n showConfirmButton: false,\n timer: 2000,\n };\n if (err && err.errorCode && err.errorCode === 'address_already_used') {\n swalProperties.title = 'Addresse déjà utilisée';\n swalProperties.text = 'Un site est déjà localisé à cette adresse, veuillez utiliser une autre adresse';\n swalProperties.timer = 3000;\n }\n Swal.fire(swalProperties);\n }\n }\n\n canBeSaved(): boolean {\n return this.newAddresshasLatLng() && this.siteAndnewAddressAreDifferent();\n }\n\n canSearch(): boolean {\n return this.newAddress.name !== this.search;\n }\n\n siteAndnewAddressAreDifferent(): boolean {\n return this.equalityCheckFields.some(key => this.newAddress[key] !== this.oldAddress[key]);\n }\n\n newAddresshasLatLng(): boolean {\n return Boolean(this.newAddress.latitude && this.newAddress.longitude);\n }\n\n private async getSiteInformations(id: string): Promise {\n const response = await this.profilesService.getSiteProfile(id);\n\n this.entity = { id: response.data._id, isSite: true };\n this.newAddress = this.copyAddress(response.data);\n this.oldAddress = this.copyAddress(response.data);\n this.search = this.newAddress.name;\n this.setSiteMarker(response.data);\n }\n\n private setSiteMarker(site): void {\n this.markers = [\n {\n lat: site.latitude,\n lng: site.longitude,\n config: 'site',\n data: this.mapService.getSiteDataForMarkersAddress(site),\n },\n ];\n }\n\n private async getRoutingReferenceInformation(id: string): Promise {\n const response = await this.mergeService.getRoutingReference(id);\n\n this.entity = { id: response.data._id, isSite: false };\n this.newAddress = this.copyAddress(response.data.address);\n this.oldAddress = this.copyAddress(response.data.address);\n this.search = this.getRoutingReferenceSearch(this.newAddress);\n this.setRoutingReferenceMarker(response.data);\n }\n\n private setRoutingReferenceMarker(routingReference): void {\n this.markers = [\n {\n lat: routingReference.address.latitude,\n lng: routingReference.address.longitude,\n config: 'routing-reference',\n data: this.mapService.getRoutingReferenceDataForMarkersAddress(routingReference),\n },\n ];\n }\n\n private getRoutingReferenceSearch(address: Address): string {\n if (!address.streetName && !address.zipcode && !address.city) {\n return address.name;\n }\n let query = address.streetNumber ? `${address.streetNumber} ` : '';\n query += `${address.streetName} `;\n query += address.zipcode ? address.zipcode : address.city;\n return query;\n }\n\n private resetTexts(): void {\n this.texts.warning = '';\n this.texts.error = '';\n }\n\n private copyAddress(obj: Address): Address {\n const address = { name: null };\n const properties = ['name'].concat(this.equalityCheckFields);\n properties.forEach(property => {\n if (obj.hasOwnProperty(property)) {\n address[property] = obj[property];\n }\n });\n return address;\n }\n\n get entityTypeDisplay(): string {\n return this.entity.isSite ? 'Site' : 'PDL';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { SharedModule } from '../../../shared/shared.module';\nimport { MergeComponent } from './merge.component';\n\nconst MERGE_ROUTE = [\n {\n path: '',\n component: MergeComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n\n@NgModule({\n declarations: [MergeComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(MERGE_ROUTE)],\n})\nexport class MergeModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\n@Injectable()\nexport class MergeService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n getRoutingReference(routingReferenceId): Promise {\n return this.get('/api/routing-references/crud/' + routingReferenceId);\n }\n\n searchLocation(search): Promise {\n return this.post('/api/sites/search', { search });\n }\n\n saveLocation(entity, newAddress): Promise {\n let url = `/api/sites/${entity.id}/location`;\n if (!entity.isSite) {\n url = `/api/routing-references/${entity.id}/location`;\n }\n return this.put(url, newAddress);\n }\n\n fakeData(route) {\n let response;\n\n switch (route) {\n default:\n response = {};\n break;\n }\n\n return response;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS9vcHRpbWl6YXRpb24vb3B0aW1pemF0aW9uLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-optimization',\n templateUrl: './optimization.component.html',\n styleUrls: ['./optimization.component.scss'],\n providers: [],\n})\nexport class OptimizationComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { OptimizationComponent } from './optimization.component';\n\nconst OPTIMIZATION_ROUTE = [{ path: '', component: OptimizationComponent }];\n\n@NgModule({\n declarations: [OptimizationComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(OPTIMIZATION_ROUTE)],\n})\nexport class OptimizationModule {}\n","export default \".chart-line-top {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 45px 24px 30px 34px;\\n}\\n\\n.label-top {\\n font-size: 16px;\\n font-weight: bold;\\n color: #4099d5;\\n}\\n\\n.chart-line-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 30px 0 45px 0;\\n}\\n\\n.label-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n text-align: center;\\n width: 25%;\\n color: #374759;\\n}\\n\\n.label-bottom-label {\\n font-weight: bold;\\n font-size: 15px;\\n line-height: 1.5;\\n}\\n\\n.label-bottom-value {\\n font-size: 13px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy9jb29saW5nL2Nvb2xpbmcuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy9jb29saW5nL2Nvb2xpbmcuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLDRCQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esc0JBQUE7QUNDSjs7QURFQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQ0NKOztBREVBO0VBQ0ksZUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvZW5lcmd5L3BkbC12aWV3L2Nvb2xpbmcvY29vbGluZy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGFydC1saW5lLXRvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6IHJnYig2NCwgMTUzLCAyMTMpO1xufVxuXG4uY2hhcnQtbGluZS1ib3R0b20ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzMHB4IDAgNDVweCAwO1xufVxuXG4ubGFiZWwtYm90dG9tIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBjb2xvcjogcmdiKDU1LCA3MSwgODkpO1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xufVxuIiwiLmNoYXJ0LWxpbmUtdG9wIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM0MDk5ZDU7XG59XG5cbi5jaGFydC1saW5lLWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDMwcHggMCA0NXB4IDA7XG59XG5cbi5sYWJlbC1ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAyNSU7XG4gIGNvbG9yOiAjMzc0NzU5O1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn0iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// Components\nimport { ChartBarToggleComponent } from 'app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component';\n\n// Models/interfaces\nimport { ElecPdlViewService } from 'app/pages/energy/pdl-view/elec/elec.service';\nimport { FluidViewToggleChartProperties } from 'app/pages/energy/pdl-view/pdl-view.interface';\nimport { SitesListService } from 'app/pages/energy/sites-list/sites-list.service';\nimport { DonutProperties } from 'app/shared/models/charts/charts.interface';\nimport { Dju } from 'app/shared/models/dju.interface';\nimport { CoolingMonthlyBill, CoolingYearlyBill, DatePeriod } from 'app/shared/models/fluid-bills.interface';\nimport { CoolingMonthlyCostTableBill, YearlyRatioTableBill } from 'app/shared/models/fluid-tables.interface';\nimport { TileInterface } from 'app/shared/models/tile.interface';\nimport { BillsService } from 'app/shared/services/bills/bills.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { DjuService } from 'app/shared/services/dju/dju.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\ninterface Loading {\n consoChart: boolean;\n costChart: boolean;\n repartitionChart: boolean;\n monthlyCostTable: boolean;\n ratioTable: boolean;\n site: boolean;\n}\n\n@Component({\n selector: 'ga-cooling-pdl-view',\n templateUrl: './cooling.component.html',\n styleUrls: ['./cooling.component.scss'],\n providers: [ElecPdlViewService, SitesListService],\n})\nexport class CoolingPdlViewComponent implements OnInit {\n totalTTC = 0;\n totalHT = 0;\n\n loading: Loading = {\n consoChart: false,\n costChart: false,\n repartitionChart: false,\n monthlyCostTable: false,\n ratioTable: false,\n site: true,\n };\n\n // line chart\n consoChartProperties: FluidViewToggleChartProperties = {\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n title: 'Consommation du PDL',\n downloadFileNames: [],\n toggleTitles: [],\n };\n @ViewChild('chartBarConso', { static: false }) chartBarConso: ChartBarToggleComponent;\n\n costsChartProperties: FluidViewToggleChartProperties = {\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n title: 'Coût de la consommation du PDL',\n downloadFileNames: [],\n toggleTitles: [],\n };\n\n dju: any = { isDjuActivated: true, djusAvailable: false };\n\n costsDonutProperties: DonutProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n monthlyCostTable: CoolingMonthlyCostTableBill[] = [];\n years: number[];\n contract = '';\n routingRef = '';\n site: any = null;\n data: any;\n selectedContract: any;\n consoData: any;\n costData: any;\n ratioTable: YearlyRatioTableBill[] = [];\n energyType = 'cooling';\n\n totalConsoTilesProperties: TileInterface = {\n mainColor: '',\n secondaryColor: '',\n label: 'Consommation totale',\n unit: 'kWh',\n type: this.energyType,\n };\n\n totalCostTilesProperties: TileInterface = {\n mainColor: '',\n secondaryColor: '',\n label: 'Dépense totale',\n unit: '',\n type: 'cost',\n };\n\n periodSelected: DatePeriod = { dateStart: null, dateEnd: null };\n\n constructor(\n private chartService: ChartService,\n private sessionService: SessionService,\n private energyPdlViewService: ElecPdlViewService,\n private siteService: SitesService,\n private route: ActivatedRoute,\n private colorService: ColorService,\n private billService: BillsService,\n private djuService: DjuService,\n private utilsService: UtilsService,\n private tilesService: TilesService,\n private pdlService: SitesListService\n ) {}\n\n ngOnInit() {\n this.totalConsoTilesProperties.mainColor = this.colorService.getHexColor('LIGHT_BLUE4');\n this.totalCostTilesProperties.mainColor = this.colorService.getHexColor('LIGHT_BLUE4');\n this.totalConsoTilesProperties.secondaryColor = this.colorService.getHexColor('LIGHT_BLUE3');\n this.totalCostTilesProperties.secondaryColor = this.colorService.getHexColor('LIGHT_BLUE3');\n this.initFromParams();\n }\n\n /**\n * Set all charts/tables loading\n * @param {boolean} loading - true to set as loading, false to set as not loading\n */\n private setAllLoadings(loading: boolean = true) {\n this.loading.consoChart = loading;\n this.loading.costChart = loading;\n this.loading.monthlyCostTable = loading;\n this.loading.ratioTable = loading;\n this.loading.repartitionChart = loading;\n }\n\n /**\n * Reset all data for new search (period)\n */\n resetAll() {\n this.loading.costChart = true;\n this.loading.repartitionChart = true;\n this.loading.monthlyCostTable = true;\n this.loading.consoChart = true;\n this.loading.ratioTable = true;\n\n this.consoChartProperties = {\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n title: this.consoChartProperties.title,\n downloadFileNames: ['Consommation énergie/volume du PDL'],\n toggleTitles: [],\n };\n\n this.costsChartProperties = {\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n title: this.costsChartProperties.title,\n downloadFileNames: ['Coût total du PDL', 'Cout énergie/volume du PDL'],\n toggleTitles: [],\n };\n\n this.costsDonutProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n this.monthlyCostTable = null;\n this.ratioTable = [];\n }\n\n /**\n * Update values on period change\n * @param {DatePeriod} period - new period\n */\n async onPeriodChanged(period: DatePeriod): Promise {\n if (\n (this.periodSelected && period && period.dateStart !== this.periodSelected.dateStart) ||\n period.dateEnd !== this.periodSelected.dateEnd\n ) {\n this.periodSelected = period;\n await this.grabDataAndDisplay();\n }\n }\n\n /**\n * Grab data, format it, and set it for every component.\n */\n async grabDataAndDisplay(): Promise {\n if (!this.periodSelected || !this.periodSelected.dateStart || !this.periodSelected.dateEnd) {\n return;\n }\n\n this.resetAll();\n const [djusMonthDatas, yearlyConsumptionWithHisto, yearlyConsumption]: [\n { djus: Dju[]; monthDatas: CoolingMonthlyBill[] },\n CoolingYearlyBill[],\n CoolingYearlyBill[]\n ] = await Promise.all([\n this.getRfMonthlyConsumption(),\n this.getRfYearlyConsumptionWithHistoric(),\n this.getYearlyConsumptionForDonut(),\n ]);\n\n this.handleMonthData(djusMonthDatas.djus, djusMonthDatas.monthDatas);\n this.djuActivateChanged(this.dju.isDjuActivated);\n this.setTotals(djusMonthDatas.monthDatas);\n this.handleRatioTable(yearlyConsumptionWithHisto);\n this.handleCostsDonut(yearlyConsumption);\n }\n\n /**\n * On page init, get the routing reference, available dates, associated site\n * Then get data from the period (1 year, most recent one with data by default)\n */\n initFromParams(): void {\n if (this.route.params) {\n this.route.params.subscribe(async params => {\n try {\n this.setAllLoadings(true);\n this.contract = params.contractId;\n this.routingRef = params.rfId;\n\n // #1 Load year available\n const years = await this.energyPdlViewService.getYears(\n this.contract,\n this.routingRef,\n this.energyType\n );\n\n if (years && years.data && years.data.length) {\n this.years = years.data;\n this.years.sort((a, b) => b - a);\n }\n this.dju.isDjuActivated = true;\n\n // #2 Load routing reference concerned\n const routingReference = await this.energyPdlViewService.getRoutingReferenceById(this.routingRef);\n this.data = routingReference.data;\n this.selectedContract = this.data.contracts.find(contract => contract._id === this.contract);\n\n // #3 Load site with routing reference\n const site = await this.siteService.getSiteFromRoutingReference(this.data._id, this.data.company);\n\n // if routing reference isn't linked to any site\n if (!_.isEmpty(site)) {\n this.site = site;\n }\n this.loading.site = false;\n } catch (error) {\n this.years = this.years ? this.years : [];\n this.periodSelected = this.periodSelected\n ? this.periodSelected\n : { dateStart: null, dateEnd: null };\n this.data = this.data ? this.data : null;\n this.selectedContract = this.selectedContract ? this.selectedContract : null;\n this.site = null;\n this.loading.site = false;\n const msg = this.data ? 'du site' : 'de votre PDL';\n Swal.fire('Toutes nos excuses', \"Une erreur s'est produite lors du chargement \" + msg, 'error');\n }\n });\n }\n }\n\n /**\n * Get month data grouped by month\n * @param {DatePeriod} period - period start and end dates\n * @return {Promise}\n */\n async getMonthDatas(period: DatePeriod): Promise {\n const result = await this.pdlService.getByMonthOrYear(\n this.energyType,\n this.contract,\n this.routingRef,\n period.dateStart,\n period.dateEnd\n );\n\n return result.data;\n }\n\n /**\n * Change DJU display for the consumption chart\n * @param {boolean} isDjuActivated\n */\n djuActivateChanged(isDjuActivated: boolean): void {\n isDjuActivated = isDjuActivated && this.dju.djusAvailable;\n this.dju.isDjuActivated = isDjuActivated;\n\n /**\n * First, we need to update data (so that it's saved depending on other actions)\n * Then, we need to update the chart display.\n */\n const djuLabel = 'Degrés jours unifiés (par mois)';\n const kwhDjuButton = 'kWh/dju';\n const labelsLegends = [['cooling_energy', 'cooling_volume'], ['cooling_energy']];\n if (isDjuActivated) {\n labelsLegends[0].unshift('djus');\n }\n const legends = labelsLegends.map(x => this.chartService.getChartLegends(x));\n\n this.djuService.toggleDjuInDatasetAndChart(\n isDjuActivated,\n this.consoChartProperties,\n djuLabel,\n legends,\n kwhDjuButton,\n this.chartBarConso,\n 'y-axis-2'\n );\n }\n\n /**\n * Set ratio table data from bills data aggregated per year\n * @param {CoolingYearlyBill[]} data - yearly data\n */\n setRatioTable(dataPerYear: CoolingYearlyBill[]): void {\n this.ratioTable = [];\n dataPerYear.forEach(yd => {\n const quantity = yd.consumption.energy.quantity;\n\n this.ratioTable.push({\n periodLabel: yd.year,\n ratios: {\n consumption: this.formatNumberDefaultToNC((yd.consumption.energy.amount / quantity) * 100, 'money'),\n subscription: this.formatNumberDefaultToNC(\n ((yd.subscription.r2.amount + yd.subscription.connection.amount) / quantity) * 100,\n 'money'\n ),\n totalHTVA: this.formatNumberDefaultToNC((yd.totalHT.amount / quantity) * 100, 'money'),\n totalTTC: this.formatNumberDefaultToNC((yd.totalTTC.amount / quantity) * 100, 'money'),\n },\n });\n });\n }\n\n /**\n * Get total conso tile html value\n * @returns {string} HTML value string\n */\n getTotalConso(): string {\n const energy = this.tilesService.getNumberToDisplay(this.consoData.energy, 'kWh');\n const volume = this.tilesService.getNumberToDisplay(this.consoData.volume, 'm3');\n return `${energy} kWh - ${volume} m3`;\n }\n\n /**\n * Get total cost conso value\n * @returns {string} HTML value string\n */\n getTotalCost(): string {\n const totalHT = this.tilesService.getNumberToDisplay(this.totalHT, '€');\n const totalTTC = this.tilesService.getNumberToDisplay(this.totalTTC, '€');\n return `${totalHT} € HT - ${totalTTC} € TTC`;\n }\n\n /*\n * Set in storage the current site in last visited sites for dashboard display\n */\n setLastVisitedSites(site) {\n this.sessionService.setLastVisitedSites(site);\n }\n\n /**\n * Grab month data and DJU if needed on selected period for charts.\n * @return {Promise<{djus: any[], monthDatas: CoolingMonthlyBill[]}>}\n */\n async getRfMonthlyConsumption(): Promise<{ djus: Dju[]; monthDatas: CoolingMonthlyBill[] }> {\n try {\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n const djuPromise: Promise =\n this.site && this.site._id\n ? this.djuService.getSiteDJUs(dateStart, dateEnd, this.site).catch(() => null)\n : (async () => null)();\n const promiseArray: [Promise, Promise] = [\n this.getMonthDatas({ dateStart, dateEnd }),\n djuPromise,\n ];\n const [monthDatas, djus] = await Promise.all(promiseArray);\n this.dju.djusAvailable = Boolean(djus && djus.length);\n\n return { djus, monthDatas };\n } catch (error) {\n this.loading.consoChart = false;\n this.loading.costChart = false;\n this.loading.monthlyCostTable = false;\n return { djus: null, monthDatas: [] };\n }\n }\n\n /**\n * Grab yearly consumption with 2 years historic for ratio table.\n * @return {Promise}\n */\n async getRfYearlyConsumptionWithHistoric(): Promise {\n try {\n this.loading.ratioTable = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('year')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('year')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n this.energyType,\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true,\n 2\n );\n return response.data;\n } catch (error) {\n this.loading.ratioTable = false;\n return [];\n }\n }\n\n /**\n * Grab yearly consumption for donut.\n * @return {Promise}\n */\n async getYearlyConsumptionForDonut(): Promise {\n try {\n this.loading.repartitionChart = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n this.energyType,\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true\n );\n\n return response.data;\n } catch (error) {\n this.loading.repartitionChart = false;\n return [];\n }\n }\n\n /**\n * Set totals values for tiles\n * @param {CoolingMonthlyBill[]} dataPerMonth - monthly data\n */\n setTotals(dataPerMonth: CoolingMonthlyBill[]): void {\n this.totalTTC = 0;\n this.totalHT = 0;\n\n if (dataPerMonth && dataPerMonth.length) {\n let consoEnergy = 0;\n let consoVolume = 0;\n dataPerMonth.forEach(monthData => {\n // Cost\n this.totalHT += monthData.totalHT.amount;\n this.totalTTC += monthData.totalTTC.amount;\n // Conso\n consoEnergy += monthData.consumption.energy.quantity;\n consoVolume += monthData.consumption.volume.quantity;\n });\n\n this.costData = {\n label: 'Total des coûts',\n data: this.totalHT,\n };\n\n this.consoData = {\n label: 'Consommation totale',\n energy: consoEnergy,\n volume: consoVolume,\n };\n } else {\n this.consoData = {\n label: 'Consommation totale',\n energy: 0,\n volume: 0,\n };\n }\n }\n\n /**\n * Set conso chart data from dju data and month data\n * @param {Array} djuData - dju data per month\n * @param {CoolingMonthlyBill[]} monthData - bills' data aggregated per month\n */\n setConsoChartData(djuData: Dju[], monthData: CoolingMonthlyBill[]): void {\n const labels = ['cooling_energy', 'cooling_volume'];\n if (djuData) {\n labels.unshift('djus');\n }\n\n this.consoChartProperties.datasets[0] = this.billService.getCoolingMonthData(djuData, monthData);\n this.consoChartProperties.labels = this.chartService.getMonthsLabel(monthData);\n\n const configType = 'mixed';\n this.consoChartProperties.options = this.chartService.getDatasetsAxesOptions(\n this.consoChartProperties.datasets,\n this.chartService.getConfig(configType, {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n\n this.consoChartProperties.toggleTitles = [{ name: 'kWh | m3', display: true }];\n this.consoChartProperties.legend[0] = this.chartService.getChartLegends(labels);\n this.consoChartProperties.colors[0] = this.chartService.getBarChartColors(labels);\n\n if (djuData) {\n this.consoChartProperties.toggleTitles.push({ name: 'kWh/dju', display: true });\n const djuDataset = this.billService.getCoolingMonthDataDjuRatio(djuData, monthData);\n this.consoChartProperties.datasets[1] = djuDataset;\n\n this.consoChartProperties.options[1] = this.chartService.getSeriesAxesOptions(\n djuDataset,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n\n this.consoChartProperties.legend[1] = this.chartService.getChartLegends(['cooling_energy']);\n this.consoChartProperties.colors[1] = this.chartService.getBarChartColors(['cooling_energy']);\n }\n }\n\n /**\n * Populate conso line chart and costs line chart.\n * @param {Array<*>} djuData - dju data per month\n * @param {CoolingMonthlyBill[]} monthData - month data per month\n */\n handleMonthData(djuData: Dju[], monthData: CoolingMonthlyBill[]): void {\n if (monthData && monthData.length) {\n this.setConsoChartData(djuData, monthData);\n this.setCostsChartData(monthData);\n this.setMonthlyCostTable(monthData);\n }\n\n this.loading.consoChart = false;\n this.loading.costChart = false;\n this.loading.monthlyCostTable = false;\n }\n\n /**\n * Populate ratio table with yearly values over the last 3 years.\n * @param {CoolingYearlyBill[]} yearlyConsumptionWithHisto\n */\n handleRatioTable(yearlyConsumptionWithHisto: CoolingYearlyBill[]): void {\n if (yearlyConsumptionWithHisto && yearlyConsumptionWithHisto.length) {\n this.setRatioTable(yearlyConsumptionWithHisto);\n }\n\n this.loading.ratioTable = false;\n }\n\n /**\n * Populate costs repartition donut from data aggregated per year\n * @param {CoolingYearlyBill[]} yearlyConsumption - global consumption over the period\n */\n handleCostsDonut(yearlyConsumption: CoolingYearlyBill[]): void {\n if (yearlyConsumption && yearlyConsumption.length) {\n this.setCostsDonut(yearlyConsumption);\n }\n this.loading.repartitionChart = false;\n }\n\n /**\n * Set cost donut data\n * @param {CoolingYearlyBill[]} globalData - global data for the donut, per year\n */\n setCostsDonut(globalData: CoolingYearlyBill[]): void {\n const sum = {\n consumption: 0,\n subscription: 0,\n };\n\n globalData.forEach(dataPerYear => {\n sum.consumption += dataPerYear.consumption.energy.amount + dataPerYear.consumption.volume.amount;\n\n sum.subscription += dataPerYear.subscription.r2.amount + dataPerYear.subscription.connection.amount;\n });\n\n this.costsDonutProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n this.costsDonutProperties.legend = this.chartService.getChartLegends([\n 'cooling_consumption',\n 'cooling_subscription',\n ]);\n const dataForChart = [Math.round(sum.consumption * 100) / 100, Math.round(sum.subscription * 100) / 100];\n this.costsDonutProperties.options = this.chartService.getHighchartDonutConfig(\n dataForChart,\n ['cooling_consumption', 'cooling_subscription'],\n '€'\n );\n }\n\n /**\n * @returns {boolean} true if has data for the cost donut, false otherwise\n */\n public hasDataForCostDonut(): boolean {\n try {\n const chartOptions = this.costsDonutProperties.options;\n return (\n chartOptions &&\n chartOptions.series &&\n chartOptions.series.some(serie => serie && serie.data && serie.data.some(d => d.y))\n );\n } catch (err) {\n return false;\n }\n }\n\n /**\n * Set costs chart data\n * @param {CoolingMonthlyBill[]} monthData - bills' data aggregated per month\n */\n setCostsChartData(monthData: CoolingMonthlyBill[]) {\n const arrayData = [];\n const monthLabels = [];\n\n monthData.forEach(x => {\n let cost = 0;\n cost += x.consumption.energy.amount || 0;\n cost += x.consumption.volume.amount || 0;\n\n arrayData.push(cost);\n monthLabels.push(\n moment()\n .month(x.month)\n .year(x.year)\n .format('MM/YYYY')\n );\n });\n\n // [0] : total\n // [1] : energy/volume\n const totalIndex = 0;\n const enerVolIndex = 1;\n this.costsChartProperties.datasets[totalIndex] = this.billService.getCoolingMonthData(\n null,\n monthData,\n true,\n true\n );\n this.costsChartProperties.datasets[enerVolIndex] = this.billService.getCoolingMonthData(\n null,\n monthData,\n true,\n false\n );\n\n this.costsChartProperties.labels = this.chartService.getMonthsLabel(monthData);\n this.costsChartProperties.options = this.chartService.getDatasetsAxesOptions(\n this.costsChartProperties.datasets,\n this.chartService.getConfig('mixed', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', '€'),\n })\n );\n\n // Hide all y axis not defined in datasets for the total\n this.costsChartProperties.options[totalIndex].scales.yAxes.forEach(y => {\n const ids = this.costsChartProperties.datasets[totalIndex].map(x => x.yAxisID);\n if (!ids.includes(y.id)) {\n y.display = false;\n }\n });\n this.costsChartProperties.toggleTitles = [\n { name: 'Total', display: true },\n { name: 'Energie|Volume', display: true },\n ];\n this.costsChartProperties.legend[totalIndex] = this.chartService.getChartLegends(['cooling_total_cost']);\n this.costsChartProperties.colors[totalIndex] = this.chartService.getBarChartColors(['cooling_total_cost']);\n this.costsChartProperties.legend[enerVolIndex] = this.chartService.getChartLegends([\n 'cooling_energy',\n 'cooling_volume',\n ]);\n this.costsChartProperties.colors[enerVolIndex] = this.chartService.getBarChartColors([\n 'cooling_energy',\n 'cooling_volume',\n ]);\n\n return arrayData;\n }\n\n /**\n * Get data per month formatted for the cost monthly table\n * @param {CoolingMonthlyBill[]} monthData - month data per month\n */\n setMonthlyCostTable(monthData: CoolingMonthlyBill[]): void {\n this.monthlyCostTable = [];\n\n monthData.forEach(md => {\n this.monthlyCostTable.push({\n periodLabel: moment()\n .month(md.month)\n .year(md.year)\n .format('MM/YYYY'),\n consumption: {\n energyAmount: this.formatNumberDefaultToNC(md.consumption.energy.amount, 'money'),\n volumeAmount: this.formatNumberDefaultToNC(md.consumption.volume.amount, 'money'),\n energyQty: this.formatNumberDefaultToNC(md.consumption.energy.quantity),\n volumeQty: this.formatNumberDefaultToNC(md.consumption.volume.quantity),\n totalAmount: this.formatNumberDefaultToNC(\n md.consumption.energy.amount + md.consumption.volume.amount,\n 'money'\n ),\n },\n subscription: {\n r2: this.formatNumberDefaultToNC(md.subscription.r2.amount, 'money'),\n power: this.formatNumberDefaultToNC(md.subscription.power.quantity, 'fluid'),\n },\n miscellaneous: {\n deltaT: this.formatNumberDefaultToNC(md.miscellaneous.deltaT.quantity, 'percent'),\n },\n totalHT: { total: this.formatNumberDefaultToNC(md.totalHT.amount, 'money') },\n totalTTC: { total: this.formatNumberDefaultToNC(md.totalTTC.amount, 'money') },\n });\n });\n }\n\n /**\n * Format value for display\n * @param value - value to format\n * @param type - type of value ('money', 'percentage', 'fluid', ...)\n */\n formatNumberDefaultToNC(value: number | null, type = 'fluid'): string {\n return this.utilsService.formateNumberType(value, 'NC', type);\n }\n\n /**\n * @returns {boolean} true if routing reference and site loaded, false otherwise\n */\n isRoutingReferenceLoaded(): boolean {\n return Boolean(this.data && this.data._id && !this.loading.site);\n }\n\n canShowCostChart(): boolean {\n return Boolean(!this.loading.costChart && this.costsChartProperties.datasets.length);\n }\n\n canShowConsoChart(): boolean {\n return Boolean(!this.loading.consoChart && this.consoChartProperties.datasets.length);\n }\n\n canShowDataPerMonth(): boolean {\n return Boolean(!this.loading.monthlyCostTable && this.monthlyCostTable);\n }\n\n canShowRatioTable(): boolean {\n return Boolean(!this.loading.ratioTable && this.ratioTable.length);\n }\n\n getExportExcelUrl(type: string) {\n return this.pdlService.getExportExcelUrl(\n type,\n this.periodSelected,\n this.routingRef,\n this.contract,\n this.dju.isDjuActivated,\n this.energyType\n );\n }\n\n getExportName(txt: string) {\n return this.pdlService.getExportName(txt, this.periodSelected, this.data, this.selectedContract);\n }\n\n hasSite(): boolean {\n return Boolean(this.site);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../../shared/services/guards/access-guard.service';\nimport { CoolingPdlViewComponent } from './cooling.component';\n\nconst VIEW_ROUTE = [\n {\n path: '',\n component: CoolingPdlViewComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n\n@NgModule({\n declarations: [CoolingPdlViewComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(VIEW_ROUTE)],\n})\nexport class CoolingPdlViewModule {}\n","import { Injectable } from '@angular/core';\nimport * as moment from 'moment';\n\nimport { ChartDataSetsGA } from 'app/shared/models/charts/charts.interface';\nimport { ElecMonthlyBill } from 'app/shared/models/fluid-bills.interface';\nimport { ElecPower, ElecPowerPeriod } from './elec.interface';\n\n@Injectable()\nexport class ElecPowerReachService {\n private readonly TIMESLOTS: string[] = ['pointe', 'HP', 'HC', 'HPH', 'HCH', 'HPE', 'HCE', 'base'];\n\n /**\n * Config to fill power reached according to a powerSubscription\n */\n private powerReachedConfig = [\n {\n powerSubscription: 'pointe',\n powerReached: [{ key: 'pointe' }],\n },\n {\n powerSubscription: 'HP',\n powerReached: [{ key: 'HP' }, { key: 'HPH', season: 1 }, { key: 'HPE', season: 0 }, { key: 'base' }],\n },\n {\n powerSubscription: 'HC',\n powerReached: [{ key: 'HC' }, { key: 'HCH', season: 1 }, { key: 'HCE', season: 0 }, { key: 'base' }],\n },\n {\n powerSubscription: 'HPH',\n powerReached: [{ key: 'HPH' }, { key: 'HP', season: 1 }, { key: 'base' }],\n },\n {\n powerSubscription: 'HCH',\n powerReached: [{ key: 'HCH' }, { key: 'HC', season: 1 }, { key: 'base' }],\n },\n {\n powerSubscription: 'HPE',\n powerReached: [{ key: 'HPE' }, { key: 'HP', season: 0 }, { key: 'base' }],\n },\n {\n powerSubscription: 'HCE',\n powerReached: [{ key: 'HCE' }, { key: 'HC', season: 0 }, { key: 'base' }],\n },\n {\n powerSubscription: 'base',\n powerReached: [{ key: 'base' }],\n },\n ];\n\n constructor() {}\n\n /**\n * Handle chart of power reached / subscribed.\n * Set datasets, labels, config, legend, colors\n */\n public getPowerChartDataSets(monthData: ElecMonthlyBill[]): ElecPowerPeriod[] {\n let powerPeriods: ElecPowerPeriod[] = [];\n let currentPeriod: ElecPowerPeriod;\n for (let i = 0, iLen = monthData.length; i < iLen; i++) {\n const elecPowerPeriod: ElecPowerPeriod = this.generateElecPowerPeriod(monthData[i]);\n\n // Ignore Period if powerReached and powerSubscription are all null\n if (this.isElecPowerPeriodValid(elecPowerPeriod)) {\n [powerPeriods, currentPeriod] = this.addPeriodToCurrentPeriodOrCreateNewPeriod(\n powerPeriods,\n currentPeriod,\n elecPowerPeriod\n );\n }\n }\n\n // add dateInfo to each powerPeriod\n for (let i = 0, iLen = powerPeriods.length; i < iLen; i++) {\n const dateEnd = this.formatDate(powerPeriods[i].dateEnd);\n const dateStart = this.formatDate(powerPeriods[i].dateStart);\n powerPeriods[i].dateInfo = `${dateStart} à ${dateEnd}`;\n }\n return powerPeriods;\n }\n\n /**\n * Check if ElecPowerPeriod as at least a powerReached or a powerSubscription\n */\n private isElecPowerPeriodValid(elecPowerPeriod: ElecPowerPeriod): boolean {\n for (const timeSlot of this.TIMESLOTS) {\n if (elecPowerPeriod.powerReached[timeSlot]) {\n return true;\n }\n if (elecPowerPeriod.powerSubscription[timeSlot]) {\n return true;\n }\n }\n // all of powerReached and powerSubscription timesSlots are empty\n return false;\n }\n\n /**\n * Get the union of all requiredTimeSlots of all periods\n */\n public getRequiredTimeSlotsForAllPeriods(powerPeriods: ElecPowerPeriod[]): string[] {\n const allTimeSlots: ElecPower = {};\n for (let i = 0, iLen = powerPeriods.length; i < iLen; i++) {\n const powerPeriod = powerPeriods[i];\n // use powerReached when there is no powerSubscription\n const arr = powerPeriod.requiredTimeSlots.length\n ? powerPeriod.requiredTimeSlots\n : Object.keys(powerPeriod.powerReached).filter(x => powerPeriod.powerReached[x]);\n for (let j = 0, jLen = arr.length; j < jLen; j++) {\n allTimeSlots[arr[j]] = 1;\n }\n }\n // alway show timeslots in same order\n return Object.keys(allTimeSlots).sort(\n (firstTimeSlot, secondeTimeSlot) =>\n this.TIMESLOTS.indexOf(firstTimeSlot) - this.TIMESLOTS.indexOf(secondeTimeSlot)\n );\n }\n\n /**\n * Adds the perdiod to the current period if it has the same timeSlots\n * or this period is now the current period otherwise\n */\n private addPeriodToCurrentPeriodOrCreateNewPeriod(\n powerPeriods: ElecPowerPeriod[],\n currentPeriod: ElecPowerPeriod,\n powerPeriod: ElecPowerPeriod\n ): [ElecPowerPeriod[], ElecPowerPeriod] {\n // first iteration\n if (!currentPeriod) {\n currentPeriod = powerPeriod;\n powerPeriods.push(currentPeriod);\n return [powerPeriods, currentPeriod];\n }\n // Same powerSubscription => same period\n if (JSON.stringify(currentPeriod.powerSubscription) === JSON.stringify(powerPeriod.powerSubscription)) {\n currentPeriod.dateEnd = powerPeriod.dateEnd;\n currentPeriod.powerReached = this.getPowerReachMaxOfPeriods(currentPeriod, powerPeriod);\n } else {\n // new period\n currentPeriod = powerPeriod;\n powerPeriods.push(currentPeriod);\n }\n return [powerPeriods, currentPeriod];\n }\n\n /** Get the max by powerReached propertie of two ElecPower */\n private getPowerReachMaxOfPeriods(period1: ElecPowerPeriod, period2: ElecPowerPeriod): ElecPower {\n const powerReachedMax: ElecPower = {};\n // period2 and period1 have the same requiredTimeSlot\n const timeSlots = period1.requiredTimeSlots.length ? period1.requiredTimeSlots : this.TIMESLOTS;\n for (let i = 0, iLen = timeSlots.length; i < iLen; i++) {\n const timeSlot = timeSlots[i];\n const p1 = period1.powerReached[timeSlot] || 0;\n const p2 = period2.powerReached[timeSlot] || 0;\n powerReachedMax[timeSlot] = Math.max(p1, p2);\n }\n return powerReachedMax;\n }\n\n /** Generate an ElecPowerPeriod from a month data */\n private generateElecPowerPeriod(monthData: ElecMonthlyBill): ElecPowerPeriod {\n const result: ElecPowerPeriod = {\n dateStart: moment(monthData.dateStart).toDate(),\n dateEnd: moment(monthData.dateEnd).toDate(),\n powerSubscription: {},\n powerReached: {},\n requiredTimeSlots: [],\n };\n for (let i = 0, iLen = this.TIMESLOTS.length; i < iLen; i++) {\n const timeSlot = this.TIMESLOTS[i];\n if (monthData.contract.powerContract[timeSlot]) {\n result.requiredTimeSlots.push(timeSlot);\n result.powerSubscription[timeSlot] = monthData.contract.powerContract[timeSlot];\n }\n }\n\n result.powerReached = this.fillPowerReached(result, monthData);\n return result;\n }\n\n /**\n * Fill the all the power reached of a period\n * Makes the power reached coherent with power subscription\n */\n private fillPowerReached(elecPowerPeriod: ElecPowerPeriod, monthData: ElecMonthlyBill): ElecPower {\n const powerReached: ElecPower = {};\n for (let i = 0, iLen = this.TIMESLOTS.length; i < iLen; i++) {\n const timeSlot = this.TIMESLOTS[i];\n if (monthData.turpe.powerReached[timeSlot].quantity !== null) {\n powerReached[timeSlot] = monthData.turpe.powerReached[timeSlot].quantity;\n }\n }\n for (let i = 0, iLen = elecPowerPeriod.requiredTimeSlots.length; i < iLen; i++) {\n const timeSlot = elecPowerPeriod.requiredTimeSlots[i];\n let season = 0;\n const month = elecPowerPeriod.dateEnd.getMonth();\n // summer is from 01/04 to 31/10\n if (month > 2 && month < 10) {\n season = 0;\n } else {\n season = 1;\n }\n powerReached[timeSlot] = this.findOrCompletePowerReached(timeSlot, season, powerReached);\n }\n return powerReached;\n }\n\n /** format the data to show in graph */\n public formatPowerReachedGraphData(elecPowerPeriods: ElecPowerPeriod[], timeSlots: string[]): ChartDataSetsGA[] {\n const chartSeries: ChartDataSetsGA[] = [];\n // handle the stack on the graph so that a powerReach and a powerSubscription of same period are on the same stack\n let stack: number = elecPowerPeriods.length;\n // maxValue of all powerReached and powerSubscription to set the delta in power subscruption bars\n let maxValue = -1;\n // find maxValue of all data\n for (let i = 0, iLen = elecPowerPeriods.length; i < iLen; i++) {\n const elecPowerPeriod = elecPowerPeriods[i];\n for (const timeSlot in elecPowerPeriod.powerReached) {\n if (elecPowerPeriod.powerReached[timeSlot]) {\n maxValue = Math.max(maxValue, elecPowerPeriod.powerReached[timeSlot]);\n }\n }\n for (const timeSlot in elecPowerPeriod.powerSubscription) {\n if (elecPowerPeriod.powerSubscription[timeSlot]) {\n maxValue = Math.max(maxValue, elecPowerPeriod.powerSubscription[timeSlot]);\n }\n }\n }\n // goes throught i from the bottom to the top to have the most recent period on top\n for (let i = elecPowerPeriods.length; i > 0; i--) {\n const elecPowerPeriod: ElecPowerPeriod = elecPowerPeriods[i - 1];\n const dataPowerReached: number[][] = [];\n const dataPowerSubscription: number[][] = [];\n const dateEnd: string = this.formatDate(elecPowerPeriod.dateEnd);\n const dateStart: string = this.formatDate(elecPowerPeriod.dateStart);\n\n for (let j = 0, jLen = timeSlots.length; j < jLen; j++) {\n const timeSlot: string = timeSlots[j];\n\n dataPowerReached.push([0, elecPowerPeriod.powerReached[timeSlot]]);\n if (elecPowerPeriod.powerSubscription[timeSlot]) {\n // to show powerSubscription as a floating bar\n const delta: number = 0.005 * maxValue;\n dataPowerSubscription.push([\n elecPowerPeriod.powerSubscription[timeSlot] - delta,\n elecPowerPeriod.powerSubscription[timeSlot] + delta,\n ]);\n } else {\n dataPowerSubscription.push([undefined, undefined]);\n }\n }\n // Power subscritpion data set\n const chartSeriePowerSubscription: ChartDataSetsGA = {\n label: 'Puissance souscrite',\n data: dataPowerSubscription,\n stack: `${stack}`,\n customData: [dateStart, dateEnd],\n };\n\n // Power reached data set\n const chartSeriePowerReached: ChartDataSetsGA = {\n label: `Puissance atteinte`,\n data: dataPowerReached,\n stack: `${stack}`,\n customData: [dateStart, dateEnd],\n };\n stack--;\n chartSeries.push(chartSeriePowerSubscription, chartSeriePowerReached);\n }\n return chartSeries;\n }\n\n /** format the date to MM/YYYY */\n private formatDate(date: Date): string {\n return moment(date).format('MMM YYYY');\n }\n\n /** find powerReached for timeSlot or complete it with closest timeSlot */\n private findOrCompletePowerReached(timeSlot: string, season: number, powersReached: ElecPower): number {\n const config = this.powerReachedConfig.find(x => x.powerSubscription === timeSlot);\n const powerReachedFilled = config.powerReached.find(\n x =>\n powersReached[x.key] !== null &&\n typeof powersReached[x.key] !== 'undefined' &&\n (typeof x.season === 'undefined' || season === x.season)\n );\n if (powerReachedFilled) {\n return powersReached[powerReachedFilled.key];\n }\n return 0;\n }\n}\n","export default \".chart-line-top {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 45px 24px 30px 34px;\\n}\\n\\n.label-top {\\n font-size: 16px;\\n font-weight: bold;\\n color: #4099d5;\\n}\\n\\n.chart-line-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 30px 0 45px 0;\\n}\\n\\n.label-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n text-align: center;\\n width: 25%;\\n color: #374759;\\n}\\n\\n.label-bottom-label {\\n font-weight: bold;\\n font-size: 15px;\\n line-height: 1.5;\\n}\\n\\n.label-bottom-value {\\n font-size: 13px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy9lbGVjL2VsZWMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy9lbGVjL2VsZWMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLDRCQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esc0JBQUE7QUNDSjs7QURFQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQ0NKOztBREVBO0VBQ0ksZUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvZW5lcmd5L3BkbC12aWV3L2VsZWMvZWxlYy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGFydC1saW5lLXRvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6IHJnYig2NCwgMTUzLCAyMTMpO1xufVxuXG4uY2hhcnQtbGluZS1ib3R0b20ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzMHB4IDAgNDVweCAwO1xufVxuXG4ubGFiZWwtYm90dG9tIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBjb2xvcjogcmdiKDU1LCA3MSwgODkpO1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xufVxuIiwiLmNoYXJ0LWxpbmUtdG9wIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM0MDk5ZDU7XG59XG5cbi5jaGFydC1saW5lLWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDMwcHggMCA0NXB4IDA7XG59XG5cbi5sYWJlbC1ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAyNSU7XG4gIGNvbG9yOiAjMzc0NzU5O1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn0iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// services\nimport { ElecPdlViewService } from 'app/pages/energy/pdl-view/elec/elec.service';\nimport { SitesListService } from 'app/pages/energy/sites-list/sites-list.service';\nimport { BillsService } from 'app/shared/services/bills/bills.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { DjuService } from 'app/shared/services/dju/dju.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { ElecPowerReachService } from './elec-power-reach.service';\n\n// interfaces\nimport { FluidViewToggleChartProperties } from 'app/pages/energy/pdl-view/pdl-view.interface';\nimport { ChartSerieLight } from 'app/shared/models/charts/chart-serie.interface';\nimport { Dju } from 'app/shared/models/dju.interface';\nimport { DatePeriod, ElecMonthlyBill, ElecYearlyBill } from 'app/shared/models/fluid-bills.interface';\nimport { ElecMonthlyCostTableBill, ElecYearlyCostTableBill } from 'app/shared/models/fluid-tables.interface';\nimport { TileInterface } from 'app/shared/models/tile.interface';\n\n// components\nimport { ChartBarToggleComponent } from 'app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component';\nimport { BarChartProperties, ChartDataSetsGA, ChartLegendGA } from 'app/shared/models/charts/charts.interface';\nimport { ChartColor } from 'app/shared/models/colors.interface';\nimport { ElecPowerPeriod } from './elec.interface';\n\ninterface Loading {\n consoChart: boolean;\n costChart: boolean;\n powerChart: boolean;\n yearTable: boolean;\n monthTable: boolean;\n site: boolean;\n}\n\n@Component({\n selector: 'ga-elec-pdl-view',\n templateUrl: './elec.component.html',\n styleUrls: ['./elec.component.scss'],\n providers: [ElecPdlViewService, SitesListService, ElecPowerReachService],\n})\nexport class ElecPdlViewComponent implements OnInit {\n powerChartLabelTop: any[];\n powerChartLabelBottom: any[];\n\n totalTTC = 0;\n totalHT = 0;\n\n consoGraph: any = {\n isDjuActivated: true,\n };\n\n monthData: ElecMonthlyBill[] = [];\n djus: Dju[] = [];\n\n /** Default config for power reached/subscribed chart */\n private get defaultPowerChartConfig(): BarChartProperties {\n return {\n title: 'Puissances atteintes',\n datasets: [],\n labels: [],\n colors: [],\n options: {},\n legends: [],\n };\n }\n /** Properties for power reached/subscribed chart */\n public powerChartProperties: BarChartProperties = this.defaultPowerChartConfig;\n\n /** Default config for cost chart */\n private get defaultCostChartConfig(): FluidViewToggleChartProperties {\n return {\n title: 'Coût de la consommation du PDL',\n downloadFileNames: ['Coût de la consommation du PDL', 'Coût de la consommation HP / HC / Pointe du PDL'],\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n toggleTitles: [{ name: 'TOTAL', display: true }, { name: 'Pointe / HP / HC', display: true }],\n };\n }\n /** Properties for cost chart */\n public costChartProperties: FluidViewToggleChartProperties = this.defaultCostChartConfig;\n\n /** Default config for conso chart */\n private get defaultConsoChartConfig(): FluidViewToggleChartProperties {\n return {\n title: 'Consommation du PDL',\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n toggleTitles: [],\n downloadFileNames: ['Consommation du PDL', 'Consommation HP HC du PDL'],\n };\n }\n /** Properties for conso chart */\n public consoChartProperties: FluidViewToggleChartProperties = this.defaultConsoChartConfig;\n\n @ViewChild('chartBarConso', { static: false }) chartBarConso: ChartBarToggleComponent;\n\n loading: Loading = {\n consoChart: false,\n costChart: false,\n powerChart: false,\n yearTable: false,\n monthTable: false,\n site: true,\n };\n\n // bills' cost table per year\n yearlyCostTable: ElecYearlyCostTableBill[] = [];\n // bills' cost table per month\n monthlyCostTable: ElecMonthlyCostTableBill[] = [];\n\n contract = '';\n years: number[] = [];\n routingRef = '';\n data: any;\n selectedContract: any;\n site: any = null;\n totalConso = 0;\n energyType = 'elec';\n periodSelected: DatePeriod = { dateStart: null, dateEnd: null };\n\n totalConsoTile: TileInterface = {\n mainColor: '#f3cc2e',\n secondaryColor: '#e4be26',\n label: 'Consommation totale',\n unit: 'kWh ef',\n type: 'elec',\n };\n totalCostTile: TileInterface = {\n mainColor: '#f3cc2e',\n secondaryColor: '#e4be26',\n label: 'Dépense totale',\n unit: '',\n type: 'cost',\n };\n\n constructor(\n private chartService: ChartService,\n private elecPdlViewService: ElecPdlViewService,\n private siteService: SitesService,\n private billService: BillsService,\n private sessionService: SessionService,\n private utilsService: UtilsService,\n private route: ActivatedRoute,\n private tilesService: TilesService,\n private djuService: DjuService,\n private pdlService: SitesListService,\n private translateService: TranslateService,\n private elecPowerReachService: ElecPowerReachService\n ) {}\n\n ngOnInit() {\n this.getSiteFromParams();\n }\n\n /**\n * Set all charts/tables loading\n * @param {boolean} loading - true to set as loading, false to set as not loading\n */\n private setAllLoadings(loading: boolean = true) {\n this.loading.consoChart = loading;\n this.loading.costChart = loading;\n this.loading.powerChart = loading;\n this.loading.yearTable = loading;\n this.loading.monthTable = loading;\n }\n\n resetAll() {\n this.totalConso = 0;\n this.totalHT = 0;\n this.totalTTC = 0;\n\n this.setAllLoadings(true);\n\n // power chart\n this.resetPowerChartProperties();\n\n // cost chart\n this.resetCostChartProperties();\n\n // bill table per year\n this.yearlyCostTable = [];\n\n // bill table per month\n this.monthlyCostTable = [];\n\n this.resetConsoChartProperties();\n }\n\n /**\n * Called when period is changed from the site's profile top component.\n * @param {DatePeriod} period\n */\n async onPeriodChanged(period: DatePeriod): Promise {\n if (\n (this.periodSelected && period && period.dateStart !== this.periodSelected.dateStart) ||\n period.dateEnd !== this.periodSelected.dateEnd\n ) {\n this.periodSelected = period;\n await this.grabDataAndDisplay();\n }\n }\n\n /**\n * Get data aggregated per year and per month and populate bar charts and tables\n * @return {Promise}\n */\n async grabDataAndDisplay(): Promise {\n if (!this.periodSelected || !this.periodSelected.dateStart || !this.periodSelected.dateEnd) {\n return;\n }\n\n this.resetAll();\n\n Promise.all([\n this.getRoutingReferenceMonthlyConsumption(),\n this.getDataAndCreateYearlyCostTable(),\n this.getDataAndCreateMonthlyCostTable(),\n ]);\n }\n\n getSiteFromParams() {\n this.route.params.subscribe(async params => {\n try {\n this.setAllLoadings();\n this.contract = params.contractId;\n this.routingRef = params.rfId;\n\n const years = await this.elecPdlViewService.getYears(this.contract, this.routingRef, this.energyType);\n\n if (years && years.data && years.data.length) {\n this.years = years.data;\n this.years.sort((a, b) => b - a);\n }\n\n const routingReference = await this.elecPdlViewService.getRoutingReferenceById(this.routingRef);\n\n this.data = routingReference.data;\n this.selectedContract = this.data.contracts.find(contract => contract._id === this.contract);\n\n const site = await this.siteService.getSiteFromRoutingReference(this.data._id, this.data.company);\n\n if (!_.isEmpty(site)) {\n this.site = site;\n }\n this.loading.site = false;\n } catch (error) {\n this.years = this.years ? this.years : [];\n this.periodSelected = this.periodSelected ? this.periodSelected : { dateStart: null, dateEnd: null };\n this.data = this.data ? this.data : null;\n this.selectedContract = this.selectedContract ? this.selectedContract : null;\n this.site = null;\n this.loading.site = false;\n const msg = this.data ? 'du site' : 'de votre PDL';\n Swal.fire('Toutes nos excuses', \"Une erreur s'est produite lors du chargement \" + msg, 'error');\n }\n });\n }\n\n /**\n * Compute the sum of the monthly conso values.\n * Set value for the tile displaying this total.\n */\n setTotalConsoTileValue() {\n const chartDataset = this.consoChartProperties.datasets;\n\n if (chartDataset && chartDataset.length && chartDataset[0].length) {\n const totalConsoDataset = chartDataset[0].find(item => item.label === 'Total des consommations');\n const total = totalConsoDataset.data.reduce((a, b) => a + b);\n this.totalConso = total;\n }\n }\n\n getTotalCost() {\n const totalHT = this.tilesService.getNumberToDisplay(this.totalHT, '€');\n const totalTTC = this.tilesService.getNumberToDisplay(this.totalTTC, '€');\n return `${totalHT} € HT - ${totalTTC} € TTC`;\n }\n\n /*\n * Set in storage the current site in last visited sites for dashboard display\n */\n setLastVisitedSites(site) {\n this.sessionService.setLastVisitedSites(site);\n }\n\n /**\n * Get consumptions aggregated per month and set charts data\n * @return {Promise}\n */\n async getRoutingReferenceMonthlyConsumption(): Promise {\n try {\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n this.monthData = [];\n\n // Get monthData\n const monthDataResult = await this.pdlService.getByMonthOrYear(\n 'elec',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd\n );\n\n this.monthData = monthDataResult.data;\n\n await this.setChartsDataFromMonthlyConso(dateStart, dateEnd);\n this.setTotals();\n } catch (error) {\n this.loading.consoChart = false;\n this.loading.costChart = false;\n this.loading.powerChart = false;\n }\n }\n\n /**\n * Load dju on period and set both bar charts from month data\n * @param {string} dateStart\n * @param {string} dateEnd\n * @return {Promise}\n */\n async setChartsDataFromMonthlyConso(dateStart: string, dateEnd: string): Promise {\n try {\n if (this.site && this.site._id) {\n this.djus = await this.djuService.getSiteDJUs(dateStart, dateEnd, this.site).catch(e => {\n if (e && e.errorCode && e.errorCode === 'not_geolocalised') {\n this.consoGraph.isDjuActivated = false;\n return [];\n }\n throw e;\n });\n } else {\n this.djus = [];\n }\n\n this.setConsoChartProperties();\n this.djuActivateChanged(this.consoGraph.isDjuActivated); // activate or deactivate dju display\n\n this.setCostChartProperties();\n this.setPowerChartProperties();\n\n this.loading.consoChart = false;\n this.loading.costChart = false;\n this.loading.powerChart = false;\n } catch (error) {\n this.loading.consoChart = false;\n this.loading.costChart = false;\n this.loading.powerChart = false;\n }\n }\n\n /**\n * Set totals HT and TTC from month data\n */\n setTotals() {\n this.totalHT = 0;\n this.totalTTC = 0;\n this.monthData.forEach(data => {\n this.totalHT += data.bill.billAmount.HTVA;\n this.totalTTC += data.bill.billAmount.TTC;\n });\n }\n\n /**\n * Handle cost bar chart properties.\n * Set datasets, labels, options, legend and colors\n */\n setCostChartProperties() {\n // handle datasets & configs\n const dataSetTotal = this.billService.getTotalCostMonthData(this.monthData);\n const dataSetHPHC = this.billService.getHPHCCostMonthData(this.monthData);\n this.costChartProperties.datasets = [dataSetTotal, dataSetHPHC];\n\n this.costChartProperties.labels = this.chartService.getMonthsLabel(this.monthData);\n\n this.costChartProperties.options = this.chartService.getDatasetsAxesOptions(\n this.costChartProperties.datasets,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', '€'),\n })\n );\n\n // handle labels for legend & color\n const hasPointe = dataSetHPHC.some(serie => serie.label === this.translateService._('pointe'));\n const labelsTotal = ['total_cost'];\n const labelsHPHC = hasPointe ? ['pointe', 'HP', 'HC'] : ['HP', 'HC'];\n\n const legendTotal = this.chartService.getChartLegends(labelsTotal);\n const legendHPHC = this.chartService.getChartLegends(labelsHPHC);\n this.costChartProperties.legend = [legendTotal, legendHPHC];\n\n const colorsTotal = this.chartService.getBarChartColors(labelsTotal);\n const colorsHPHC = this.chartService.getBarChartColors(labelsHPHC);\n this.costChartProperties.colors = [colorsTotal, colorsHPHC];\n }\n\n /**\n * Handle chart of power reached / subscribed.\n * Set datasets, labels, config, legend, colors\n */\n private setPowerChartProperties() {\n const data: ElecPowerPeriod[] = this.elecPowerReachService.getPowerChartDataSets(this.monthData);\n const labels: string[] = this.elecPowerReachService.getRequiredTimeSlotsForAllPeriods(data);\n\n const datasets: ChartDataSetsGA[] = this.elecPowerReachService.formatPowerReachedGraphData(data, labels);\n const options = this.chartService.getConfig('horizontalBar', {\n tooltips: this.chartService.getTooltipHTMLConfig('horizontal-bar', 'kVA'),\n });\n options.scales.xAxes[0].stacked = false;\n\n let colors: ChartColor[] = [];\n let opacity = 1;\n let legends: ChartLegendGA[] = [];\n let secondLegends: ChartLegendGA[] = [];\n\n for (let i = 0, iLen = data.length; i < iLen; i++) {\n colors = colors.concat(\n this.chartService.getBarChartColorsWithOpacity(['powers_subscribe', 'powers_reached'], opacity)\n );\n opacity -= 1 / data.length;\n }\n\n ({ legends, secondLegends } = this.getLegendsFormated(data, legends, secondLegends));\n const title = this.translateService._('powers_reached');\n this.powerChartProperties = {\n title,\n datasets,\n labels,\n legends,\n secondLegends,\n colors,\n options,\n };\n }\n\n /**\n * generate the legends of power reached graph\n */\n private getLegendsFormated(\n data: ElecPowerPeriod[],\n legends: ChartLegendGA[],\n secondLegends: ChartLegendGA[]\n ): { legends: ChartLegendGA[]; secondLegends: ChartLegendGA[] } {\n // generate colors and legends for power subscirption\n let opacity = 1;\n for (let i = data.length - 1, iLen = 0; i >= iLen; i--) {\n legends = this.getLegendsOfLabel(legends, opacity, 'powers_subscribe', data[i].dateInfo);\n secondLegends = this.getLegendsOfLabel(secondLegends, opacity, 'powers_reached', data[i].dateInfo);\n opacity -= 1 / data.length;\n }\n\n return { legends, secondLegends };\n }\n\n /**\n * generate legend of a label for power reached graph\n */\n private getLegendsOfLabel(\n legends: ChartLegendGA[],\n opacity: number,\n label: string,\n suffix: string\n ): ChartLegendGA[] {\n const powerLegend: ChartLegendGA[] = this.chartService.getChartLegends([label]);\n for (let j = 0, jLen = powerLegend.length; j < jLen; j++) {\n powerLegend[j].color = powerLegend[j].color + `, ${opacity}`;\n powerLegend[j].name = powerLegend[j].name + ` ${suffix}`;\n }\n legends = legends.concat(powerLegend);\n return legends;\n }\n\n /**\n * On DJU activation change, hide/show djus datasets and y-axe\n */\n djuActivateChanged(isDjuActivated: boolean): void {\n isDjuActivated = Boolean(isDjuActivated && this.djus && this.djus.length);\n this.consoGraph.isDjuActivated = isDjuActivated;\n\n /**\n * First, we need to update data\n * Then, we need to update the chart display.\n */\n const djuLabel = 'Degrés jours unifiés (par mois)';\n const kwhDjuButton = 'kWh/dju';\n const hasPointe = this.consoChartProperties.datasets[1].some(\n serie => serie.label === this.translateService._('pointe')\n );\n const consoHPHCLabels = hasPointe ? ['pointe', 'HP', 'HC'] : ['HP', 'HC'];\n const labelsLegends = [['total_conso'], consoHPHCLabels, ['total_conso_elec_dju_ratio']];\n\n if (isDjuActivated) {\n labelsLegends[0].unshift('djus');\n labelsLegends[1].unshift('djus');\n }\n\n const legends = labelsLegends.map(x => this.chartService.getChartLegends(x));\n\n this.djuService.toggleDjuInDatasetAndChart(\n isDjuActivated,\n this.consoChartProperties,\n djuLabel,\n legends,\n kwhDjuButton,\n this.chartBarConso\n );\n }\n\n setConsoChartProperties() {\n this.loading.consoChart = true;\n\n this.resetConsoChartProperties();\n\n const isDjuActivated: boolean = Boolean(this.djus && this.djus.length);\n\n // handle datasets\n const dataSetConsoTotal: ChartSerieLight[] = this.billService.getTotalConsoMonthData(this.monthData, this.djus);\n const dataSetHPHC: ChartSerieLight[] = this.billService.getHPHCConsoMonthData(this.monthData, this.djus);\n this.consoChartProperties.datasets = [dataSetConsoTotal, dataSetHPHC];\n\n // handle labels\n this.consoChartProperties.labels = this.chartService.getMonthsLabel(this.monthData);\n\n // handle configs\n const configType = isDjuActivated ? 'mixed' : 'bar';\n this.consoChartProperties.options = this.chartService.getDatasetsAxesOptions(\n this.consoChartProperties.datasets,\n this.chartService.getConfig(configType, {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n\n // handle labels legends & colors & buttons\n const hasPointe = dataSetHPHC.some(serie => serie.label === this.translateService._('pointe'));\n\n const consoTotalLabels = ['total_conso'];\n const consoHPHCLabels = hasPointe ? ['pointe', 'HP', 'HC'] : ['HP', 'HC'];\n let labelsDjuPonderation = [];\n\n this.consoChartProperties.toggleTitles = [\n { name: 'Total', display: true },\n { name: 'Pointe / HP / HC', display: true },\n ];\n\n // handle djus, labels & dju ponderation data (kwh / dju button, dataset, config)\n if (isDjuActivated) {\n labelsDjuPonderation = ['total_conso_elec_dju_ratio'];\n consoTotalLabels.unshift('djus');\n consoHPHCLabels.unshift('djus');\n\n const djuPonderationButtons = { name: 'kWh/dju', display: true };\n const djuPonderationDataset = this.billService.getMonthDataDjuRatio(\n this.djus,\n this.monthData,\n [\n {\n name: 'Elec conso',\n path: 'consumption.global.quantity',\n },\n ],\n consoHPHCLabels\n );\n\n const djuPonderationConfig = this.chartService.getSeriesAxesOptions(\n djuPonderationDataset,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n\n this.consoChartProperties.toggleTitles.push(djuPonderationButtons);\n this.consoChartProperties.datasets.push(djuPonderationDataset);\n this.consoChartProperties.options.push(djuPonderationConfig);\n }\n\n // legend (need last versions of labels)\n const consoTotalLegend = this.chartService.getChartLegends(consoTotalLabels);\n const consoHPHCLegend = this.chartService.getChartLegends(consoHPHCLabels);\n const djuPonderationLegend = this.chartService.getChartLegends(labelsDjuPonderation);\n\n this.consoChartProperties.legend = [consoTotalLegend, consoHPHCLegend].concat([djuPonderationLegend]);\n\n // colors (need last versions of labels)\n const consoTotalColors = this.chartService.getBarChartColors(consoTotalLabels);\n const consoHPHCColors = this.chartService.getBarChartColors(consoHPHCLabels);\n const djuPonderationColors = this.chartService.getBarChartColors(labelsDjuPonderation);\n this.consoChartProperties.colors = [consoTotalColors, consoHPHCColors].concat([djuPonderationColors]);\n\n this.setTotalConsoTileValue();\n this.loading.consoChart = false;\n }\n\n /**\n * Get labels & values to display on top of the power reached / subscription power chart\n * @param {ChartSerieLight[]} data\n * @return {{label: string; value: string}[]}\n */\n getLineChartLabelTop(data: ChartSerieLight[]): Array<{ label: string; value: string }> {\n const [contractPower, subscriptionPower] = data.map(serie => {\n const dataNotNull = serie.data.filter((x: number) => typeof x === 'number');\n if (dataNotNull.length) {\n const max = Math.max(...dataNotNull);\n return `${max} kVA`;\n }\n return 'NC';\n });\n return [\n {\n label: 'Puissance souscrite',\n value: `${contractPower}`,\n },\n {\n label: 'Maximum atteint',\n value: `${subscriptionPower}`,\n },\n ];\n }\n\n /**\n * Get labels & values to display at the bottom of the power reached / subscription power chart\n * @param {string[]} labels\n * @param {number[]} values\n * @return {{label: string; value: string}[]}\n */\n getLineChartLabelBottom(labels: string[], values: number[]): Array<{ label: string; value: string }> {\n return labels.map((label, i) => {\n return {\n label,\n value: typeof values[i] === 'number' ? `${values[i]} kVA` : 'NC',\n };\n });\n }\n\n /**\n * Returns cost bills values aggregated per month on the selected period.\n */\n async getMonthlyCosts(): Promise {\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const result = await this.pdlService.getByMonthOrYear(\n 'elec',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd\n );\n return result.data;\n }\n\n /**\n * Get costs values per month from bills on the selected period and create the table data.\n */\n async getDataAndCreateMonthlyCostTable(): Promise {\n try {\n this.monthlyCostTable = [];\n const dataPerMonth: ElecMonthlyBill[] = await this.getMonthlyCosts();\n\n // Get first month of the table and use it to start the creation of the table data\n const monthNumber = Number(this.periodSelected.dateStart.substring(5, 7)) - 1;\n const yearNumber = Number(this.periodSelected.dateStart.substring(0, 4));\n const currentMonth = moment.utc({ year: yearNumber, month: monthNumber, day: 0 });\n\n const nbMonthInQuery = moment(this.periodSelected.dateEnd).diff(\n moment(this.periodSelected.dateStart),\n 'months'\n );\n\n for (let i = 0; i < nbMonthInQuery; i++) {\n let bill: ElecMonthlyCostTableBill;\n const monthLabel = currentMonth.format('MM/YYYY');\n const monthData = dataPerMonth.find(\n data => data._id.month === currentMonth.month() && data._id.year === currentMonth.year()\n );\n\n // Format the current month data of set an empty one if no data found for this month & years\n if (monthData) {\n bill = this.createMonthlyBill(monthData, monthLabel);\n } else {\n bill = {\n periodLabel: monthLabel,\n consumption: { total: '' },\n networkService: { total: '' },\n taxes: { total: '' },\n subscription: { total: '' },\n totalHTVA: { total: '' },\n totalTTC: { total: '' },\n };\n }\n\n this.monthlyCostTable.push(bill);\n currentMonth.add(1, 'month');\n }\n\n this.loading.monthTable = false;\n } catch (e) {\n this.monthlyCostTable = [];\n this.loading.monthTable = false;\n }\n }\n\n /**\n * Create a month elec cost bill for the table\n * @param {ElecMonthlyBill} data\n * @param {string} monthLabel\n * @returns {ElecMonthlyCostTableBill}\n */\n createMonthlyBill(data: ElecMonthlyBill, monthLabel: string): ElecMonthlyCostTableBill {\n const { bill, consumption, networkService, tax, turpe } = data;\n\n const billTotals = this.getElecBillTotals(data);\n\n return {\n periodLabel: monthLabel,\n consumption: {\n globalQuantity: this.formatNumberDefaultToNC(consumption.global.quantity, 'money'),\n globalCost: this.formatNumberDefaultToNC(consumption.global.amount, 'money'),\n renewable: this.formatNumberDefaultToNC(consumption.renewable.global.amount, 'money'),\n capacity: this.formatNumberDefaultToNC(consumption.capacity.global.amount, 'money'),\n cee: this.formatNumberDefaultToNC(consumption.globalCee.amount, 'money'),\n total: this.formatNumberDefaultToNC(billTotals.consumptionAmount, 'money'),\n },\n subscription: {\n subscriptionFixed: this.formatNumberDefaultToNC(networkService.subscriptionFixed.amount, 'money'),\n fixedRacking: this.formatNumberDefaultToNC(turpe.racking.fixed.amount, 'money'),\n counting: this.formatNumberDefaultToNC(turpe.counting.amount, 'money'),\n management: this.formatNumberDefaultToNC(turpe.management.amount, 'money'),\n total: this.formatNumberDefaultToNC(billTotals.subscriptionAmount, 'money'),\n },\n networkService: {\n meterRent: this.formatNumberDefaultToNC(networkService.meterRent.amount, 'money'),\n miscServices: this.formatNumberDefaultToNC(networkService.miscServices.amount, 'money'),\n penalities: this.formatNumberDefaultToNC(networkService.penality.amount, 'money'),\n racking: this.formatNumberDefaultToNC(turpe.racking.global.amount, 'money'),\n overtaking: this.formatNumberDefaultToNC(turpe.overtaking.global.amount, 'money'),\n reactive: this.formatNumberDefaultToNC(turpe.reactive.amount, 'money'),\n total: this.formatNumberDefaultToNC(billTotals.networkServicesAmount, 'money'),\n },\n taxes: {\n cspeQuantity: this.formatNumberDefaultToNC(tax.CSPE.quantity, 'money'),\n cspeCost: this.formatNumberDefaultToNC(tax.CSPE.amount, 'money'),\n ctaCost: this.formatNumberDefaultToNC(tax.CTA.amount, 'money'),\n tccfeQuantity: this.formatNumberDefaultToNC(tax.TCCFE.quantity, 'money'),\n tccfeCost: this.formatNumberDefaultToNC(tax.TCCFE.amount, 'money'),\n tdcfeQuantity: this.formatNumberDefaultToNC(tax.TDCFE.quantity, 'money'),\n tdcfeCost: this.formatNumberDefaultToNC(tax.TDCFE.amount, 'money'),\n tcfeQuantity: this.formatNumberDefaultToNC(tax.TCFE.quantity, 'money'),\n tcfeCost: this.formatNumberDefaultToNC(tax.TCFE.amount, 'money'),\n total: this.formatNumberDefaultToNC(billTotals.taxesAmount, 'money'),\n },\n totalHTVA: {\n total: this.formatNumberDefaultToBlank(\n billTotals.consumptionAmount +\n billTotals.networkServicesAmount +\n billTotals.taxesAmount +\n billTotals.subscriptionAmount,\n 'money'\n ),\n },\n totalTTC: { total: this.formatNumberDefaultToBlank(bill.billAmount.TTC, 'money') },\n };\n }\n\n /**\n * Get yearly costs from bills on the selected period\n * @return {ElecYearlyBill[]} array of costs bills values aggregated per year\n */\n async getYearlyCosts(): Promise {\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('year')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('year')\n .format('DD/MM/YYYY');\n const response = await this.pdlService.getByMonthOrYear(\n 'elec',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true,\n 2\n );\n\n return response.data;\n }\n\n /**\n * Get costs values per year from bills on the selected period and create the table data.\n */\n async getDataAndCreateYearlyCostTable(): Promise {\n try {\n this.yearlyCostTable = [];\n const dataPerYear: ElecYearlyBill[] = await this.getYearlyCosts();\n\n if (!dataPerYear || !dataPerYear.length) {\n this.loading.yearTable = false;\n return;\n }\n\n dataPerYear.forEach(yearData => {\n const { bill, consumption, networkService, tax, turpe } = yearData;\n\n const globalQty = consumption.global.quantity;\n\n const billTotals = this.getElecBillTotals(yearData);\n\n const yearFormatedTableData = {\n periodLabel: 'Facture ' + yearData.year,\n amount: {\n total: this.formatNumberDefaultToNC(bill.billAmount.TTC, 'money'),\n },\n consumption: {\n global: this.formatNumberDefaultToNC(consumption.global.amount, 'money'),\n globalRatio: this.formatNumberDefaultToNC(\n (consumption.global.amount / globalQty) * 100,\n 'money'\n ),\n renewable: this.formatNumberDefaultToNC(consumption.renewable.global.amount, 'money'),\n renewableRatio: this.formatNumberDefaultToNC(\n (consumption.renewable.global.amount / globalQty) * 100,\n 'money'\n ),\n capacity: this.formatNumberDefaultToNC(consumption.capacity.global.amount, 'money'),\n capacityRatio: this.formatNumberDefaultToNC(\n (consumption.capacity.global.amount / globalQty) * 100,\n 'money'\n ),\n cee: this.formatNumberDefaultToNC(consumption.globalCee.amount, 'money'),\n ceeRatio: this.formatNumberDefaultToNC(\n (consumption.globalCee.amount / globalQty) * 100,\n 'money'\n ),\n total: this.formatNumberDefaultToNC(billTotals.consumptionAmount, 'money'),\n totalRatio: this.formatNumberDefaultToNC(\n (billTotals.consumptionAmount / globalQty) * 100,\n 'money'\n ),\n },\n subscription: {\n subscriptionFixed: this.formatNumberDefaultToNC(\n (networkService.subscriptionFixed.amount / globalQty) * 100,\n 'money'\n ),\n fixedRacking: this.formatNumberDefaultToNC(\n (turpe.racking.fixed.amount / globalQty) * 100,\n 'money'\n ),\n counting: this.formatNumberDefaultToNC((turpe.counting.amount / globalQty) * 100, 'money'),\n management: this.formatNumberDefaultToNC((turpe.management.amount / globalQty) * 100, 'money'),\n total: this.formatNumberDefaultToNC((billTotals.subscriptionAmount / globalQty) * 100, 'money'),\n },\n networkService: {\n meterRent: this.formatNumberDefaultToNC(\n (networkService.meterRent.amount / globalQty) * 100,\n 'money'\n ),\n miscServices: this.formatNumberDefaultToNC(\n (networkService.miscServices.amount / globalQty) * 100,\n 'money'\n ),\n penalities: this.formatNumberDefaultToNC(\n (networkService.penality.amount / globalQty) * 100,\n 'money'\n ),\n racking: this.formatNumberDefaultToNC((turpe.racking.global.amount / globalQty) * 100, 'money'),\n overtaking: this.formatNumberDefaultToNC(\n (turpe.overtaking.global.amount / globalQty) * 100,\n 'money'\n ),\n reactive: this.formatNumberDefaultToNC((turpe.reactive.amount / globalQty) * 100, 'money'),\n total: this.formatNumberDefaultToNC(\n (billTotals.networkServicesAmount / globalQty) * 100,\n 'money'\n ),\n },\n taxes: {\n cta: this.formatNumberDefaultToNC((tax.CTA.amount / globalQty) * 100, 'money'),\n cspe: this.formatNumberDefaultToNC((tax.CSPE.amount / globalQty) * 100, 'money'),\n tdcfe: this.formatNumberDefaultToNC((tax.TDCFE.amount / globalQty) * 100, 'money'),\n tccfe: this.formatNumberDefaultToNC((tax.TCCFE.amount / globalQty) * 100, 'money'),\n tcfe: this.formatNumberDefaultToNC((tax.TCFE.amount / globalQty) * 100, 'money'),\n total: this.formatNumberDefaultToNC((billTotals.taxesAmount / globalQty) * 100, 'money'),\n },\n totalHTVA: {\n total: this.formatNumberDefaultToBlank(\n ((billTotals.consumptionAmount +\n billTotals.networkServicesAmount +\n billTotals.taxesAmount +\n billTotals.subscriptionAmount) /\n globalQty) *\n 100,\n 'money'\n ),\n },\n totalTTC: {\n total: this.formatNumberDefaultToBlank((bill.billAmount.TTC / globalQty) * 100, 'money'),\n },\n };\n\n this.yearlyCostTable.push(yearFormatedTableData);\n });\n this.loading.yearTable = false;\n } catch (e) {\n this.yearlyCostTable = [];\n this.loading.yearTable = false;\n return;\n }\n }\n\n siteLoaded() {\n return this.data && this.data._id && !this.loading.site;\n }\n\n formatNumberDefaultToNC(value, type = 'fluid') {\n return this.utilsService.formateNumberType(value, 'NC', type);\n }\n\n formatNumberDefaultToBlank(value, type = 'fluid') {\n return this.utilsService.formateNumberType(value, '', type);\n }\n\n canShowConsoGraph(): boolean {\n return Boolean(\n !this.loading.consoChart &&\n this.consoChartProperties.datasets.length &&\n this.consoChartProperties.datasets[0].length\n );\n }\n\n canShowCostGraph(): boolean {\n return Boolean(\n !this.loading.costChart &&\n this.costChartProperties.datasets.length &&\n this.costChartProperties.datasets[0].length\n );\n }\n\n canShowPowerChart(): boolean {\n if (\n !this.powerChartProperties ||\n !this.powerChartProperties.datasets ||\n !this.powerChartProperties.datasets.length\n ) {\n return false;\n }\n return Boolean(this.powerChartProperties.datasets.reduce((a, b) => a.concat(b.data), []).length);\n }\n\n canShowYearTable(): boolean {\n return Boolean(!this.loading.yearTable && this.yearlyCostTable.length);\n }\n\n canShowMonthTable(): boolean {\n return Boolean(!this.loading.monthTable && this.monthlyCostTable.length);\n }\n\n getExportExcelUrl(type) {\n return this.pdlService.getExportExcelUrl(\n type,\n this.periodSelected,\n this.routingRef,\n this.contract,\n this.consoGraph.isDjuActivated,\n 'elec'\n );\n }\n\n getExportName(txt) {\n return this.pdlService.getExportName(txt, this.periodSelected, this.data, this.selectedContract);\n }\n\n private resetConsoChartProperties(): void {\n this.consoChartProperties = this.defaultConsoChartConfig;\n }\n\n private resetPowerChartProperties(): void {\n this.powerChartProperties = this.defaultPowerChartConfig;\n }\n\n private resetCostChartProperties(): void {\n this.costChartProperties = this.defaultCostChartConfig;\n }\n\n /** Returns totals for each expense category on the elec bill. */\n private getElecBillTotals(bill: ElecMonthlyBill | ElecYearlyBill) {\n const { consumption, networkService, turpe, tax } = bill;\n\n // Consumption totals\n const consumptionAmount =\n consumption.global.amount +\n consumption.renewable.global.amount +\n consumption.capacity.global.amount +\n consumption.globalCee.amount;\n\n // Network services totals\n const networkServicesAmount =\n networkService.meterRent.amount +\n networkService.miscServices.amount +\n networkService.penality.amount +\n turpe.racking.global.amount +\n turpe.overtaking.global.amount +\n turpe.reactive.amount;\n\n // Taxes totals\n const taxesAmount = tax.global.amount;\n\n // Subscription totals\n const subscriptionAmount =\n networkService.subscriptionFixed.amount +\n turpe.racking.fixed.amount +\n turpe.counting.amount +\n turpe.management.amount;\n\n return {\n consumptionAmount,\n networkServicesAmount,\n subscriptionAmount,\n taxesAmount,\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AccessGuard } from '../../../../shared/services/guards/access-guard.service';\nimport { SharedModule } from '../../../../shared/shared.module';\nimport { ElecPdlViewComponent } from './elec.component';\n\nconst VIEW_ROUTE = [\n {\n path: '',\n component: ElecPdlViewComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n@NgModule({\n declarations: [ElecPdlViewComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(VIEW_ROUTE)],\n})\nexport class ElecPdlViewModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { PageService } from 'app/shared/services/page/page.service';\n\n@Injectable()\nexport class ElecPdlViewService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n getRoutingReferenceById(routingReferenceId): Promise {\n return this.get('/api/routing-references/' + routingReferenceId);\n }\n\n getYears(contractId: string = '', routingReference: string, energyType: string = '') {\n let route = '/api/common/available-years?routingReference=' + routingReference;\n\n if (contractId) {\n route += `&contract=${contractId}`;\n }\n\n if (energyType) {\n route += `&energyType=${energyType}`;\n }\n\n return this.get(route);\n }\n}\n","export default \".chart-line-top {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 45px 24px 30px 34px;\\n}\\n\\n.label-top {\\n font-size: 16px;\\n font-weight: bold;\\n color: #4099d5;\\n}\\n\\n.chart-line-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 30px 0 45px 0;\\n}\\n\\n.label-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n text-align: center;\\n width: 25%;\\n color: #374759;\\n}\\n\\n.label-bottom-label {\\n font-weight: bold;\\n font-size: 15px;\\n line-height: 1.5;\\n}\\n\\n.label-bottom-value {\\n font-size: 13px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy9nYXMvZ2FzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9lbmVyZ3kvcGRsLXZpZXcvZ2FzL2dhcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0EsNEJBQUE7QUNDSjs7QURFQTtFQUNJLGVBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7QUNDSjs7QURFQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxzQkFBQTtBQ0NKOztBREVBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGNBQUE7QUNDSjs7QURFQTtFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9lbmVyZ3kvcGRsLXZpZXcvZ2FzL2dhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGFydC1saW5lLXRvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6IHJnYig2NCwgMTUzLCAyMTMpO1xufVxuXG4uY2hhcnQtbGluZS1ib3R0b20ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzMHB4IDAgNDVweCAwO1xufVxuXG4ubGFiZWwtYm90dG9tIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBjb2xvcjogcmdiKDU1LCA3MSwgODkpO1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xufVxuIiwiLmNoYXJ0LWxpbmUtdG9wIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM0MDk5ZDU7XG59XG5cbi5jaGFydC1saW5lLWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDMwcHggMCA0NXB4IDA7XG59XG5cbi5sYWJlbC1ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAyNSU7XG4gIGNvbG9yOiAjMzc0NzU5O1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn0iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// Routes\nimport { ActivatedRoute } from '@angular/router';\n\n// Components\nimport { ChartBarToggleComponent } from 'app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component';\n\n// Models/interfaces\nimport { FluidViewToggleChartProperties } from 'app/pages/energy/pdl-view/pdl-view.interface';\nimport { DonutProperties, LineChartPropertiesLight } from 'app/shared/models/charts/charts.interface';\nimport { Dju } from 'app/shared/models/dju.interface';\nimport { DatePeriod, GazMonthlyBill, GazYearlyBill } from 'app/shared/models/fluid-bills.interface';\nimport { GazMonthlyCostTableBill, YearlyRatioTableBill } from 'app/shared/models/fluid-tables.interface';\n\n// Services\nimport { ElecPdlViewService } from 'app/pages/energy/pdl-view/elec/elec.service';\nimport { SitesListService } from 'app/pages/energy/sites-list/sites-list.service';\nimport { TileInterface } from 'app/shared/models/tile.interface';\nimport { BillsService } from 'app/shared/services/bills/bills.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { DjuService } from 'app/shared/services/dju/dju.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\ninterface Loading {\n chartLine: boolean;\n secondChartLine: boolean;\n chartDonut: boolean;\n monthlyCostTable: boolean;\n ratioTable: boolean;\n site: boolean;\n}\n\n@Component({\n selector: 'ga-gas-pdl-view',\n templateUrl: './gas.component.html',\n styleUrls: ['./gas.component.scss'],\n providers: [ElecPdlViewService, SitesListService],\n})\nexport class GasPdlViewComponent implements OnInit {\n totalTTC = 0;\n totalHT = 0;\n monthData: GazMonthlyBill[] = [];\n djus: any = [];\n\n consoGraph: any = {\n isDjuActivated: true,\n };\n\n loading: Loading = {\n chartLine: false,\n secondChartLine: false,\n chartDonut: false,\n monthlyCostTable: false,\n ratioTable: false,\n site: true,\n };\n\n /** Default config for conso bar chart */\n private get defaultConfigConsoBarChart(): FluidViewToggleChartProperties {\n return {\n title: 'Consommation du PDL',\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n toggleTitles: [],\n downloadFileNames: ['Consommation du PDL'],\n };\n }\n /** Consumption bar chart properties */\n public consoBarChartProperties: FluidViewToggleChartProperties = this.defaultConfigConsoBarChart;\n\n @ViewChild('chartBarConso', { static: false }) chartBarConso: ChartBarToggleComponent;\n\n /** Default config for costs line chart */\n private get defaultConfigCostsLineChart(): LineChartPropertiesLight {\n return {\n title: 'Coût de la consommation du PDL',\n dataset: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: {},\n };\n }\n /** Costs line chart properties */\n public costsLineChartProperties: LineChartPropertiesLight = this.defaultConfigCostsLineChart;\n\n doughnutCostsProperties: DonutProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n // monthly costs table\n monthlyCostTable: GazMonthlyCostTableBill[] = [];\n years: number[];\n contract = '';\n routingRef = '';\n site: any = null;\n data: any;\n selectedContract: any;\n consoData: any;\n costData: any;\n ratioTable: YearlyRatioTableBill[] = [];\n energyType = 'gaz';\n\n totalConsoTile: TileInterface = {\n mainColor: '',\n secondaryColor: '',\n label: 'Consommation totale',\n unit: 'kWh pcs',\n type: 'gaz',\n };\n\n totalCostTile: TileInterface = {\n mainColor: '',\n secondaryColor: '',\n label: 'Dépense totale',\n unit: '',\n type: 'cost',\n };\n\n periodSelected: DatePeriod = { dateStart: null, dateEnd: null };\n\n constructor(\n private chartService: ChartService,\n private sessionService: SessionService,\n private energyPdlViewService: ElecPdlViewService,\n private siteService: SitesService,\n private route: ActivatedRoute,\n private colorService: ColorService,\n private utilsService: UtilsService,\n private tilesService: TilesService,\n private djuService: DjuService,\n private pdlService: SitesListService,\n private billService: BillsService\n ) {}\n\n ngOnInit() {\n this.totalConsoTile.mainColor = this.colorService.getHexColor('SECOND_TURQUOISE');\n this.totalCostTile.mainColor = this.colorService.getHexColor('SECOND_TURQUOISE');\n this.totalConsoTile.secondaryColor = this.colorService.getHexColor('TURQUOISE');\n this.totalCostTile.secondaryColor = this.colorService.getHexColor('TURQUOISE');\n this.getSiteFromParams();\n }\n\n /**\n * Set all charts/tables loading\n * @param {boolean} loading - true to set as loading, false to set as not loading\n */\n private setAllLoadings(loading: boolean = true) {\n this.loading.chartDonut = loading;\n this.loading.chartLine = loading;\n this.loading.monthlyCostTable = loading;\n this.loading.ratioTable = loading;\n this.loading.secondChartLine = loading;\n }\n\n resetAll(): void {\n this.initConsoBarChartProperties();\n\n this.costsLineChartProperties = this.defaultConfigCostsLineChart;\n\n this.doughnutCostsProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n this.monthlyCostTable = [];\n\n this.ratioTable = [];\n }\n\n /**\n * Called when period is changed from top site profile component\n * @param {Perdio} period\n */\n async onPeriodChanged(period: DatePeriod): Promise {\n if (\n (this.periodSelected && period && period.dateStart !== this.periodSelected.dateStart) ||\n period.dateEnd !== this.periodSelected.dateEnd\n ) {\n this.periodSelected = period;\n await this.grabDataAndDisplay();\n }\n }\n\n /**\n * Aggregate bills values per month and per year and populate charts and tables.\n * @return {Promise}\n */\n async grabDataAndDisplay(): Promise {\n if (!this.periodSelected || !this.periodSelected.dateStart || !this.periodSelected.dateEnd) {\n return;\n }\n\n this.resetAll();\n\n const promiseArray: [Promise, Promise, Promise] = [\n this.getRoutingReferenceMonthlyConsumption(),\n this.getRfYearlyConsumptionWithHistoric(),\n this.getRfYearlyConsumptionForPeriod(),\n ];\n\n const [monthlyConsumption, yearlyConsumption, globalConsumptionForDonut] = await Promise.all(promiseArray);\n\n this.handleMonthData(monthlyConsumption);\n this.handleRatioTable(yearlyConsumption);\n this.handleDonut(globalConsumptionForDonut);\n\n const djus: Dju[] | null = this.site ? await this.getDjusOnPeriod() : null;\n\n this.generateConsoGraph(this.consoGraph.isDjuActivated, djus);\n }\n\n /**\n * Get Dju array for the selected period from the nearest station from the current site.\n * @return {Promise}\n */\n async getDjusOnPeriod(): Promise {\n try {\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n return this.djuService.getSiteDJUs(dateStart, dateEnd, this.site).catch(e => {\n if (e && e.errorCode && e.errorCode === 'not_geolocalised') {\n return [];\n }\n return e;\n });\n } catch (error) {\n this.loading.chartLine = false;\n this.loading.secondChartLine = false;\n this.loading.monthlyCostTable = false;\n Swal.fire('Toutes nos excuses', \"Une erreur s'est produite lors du chargement des DJUs\", 'error');\n }\n }\n\n getSiteFromParams() {\n if (this.route.params) {\n this.route.params.subscribe(async params => {\n try {\n this.setAllLoadings(true);\n this.contract = params.contractId;\n this.routingRef = params.rfId;\n\n // #1 get available years\n const years = await this.energyPdlViewService.getYears(\n this.contract,\n this.routingRef,\n this.energyType\n );\n\n if (years && years.data && years.data.length) {\n this.years = years.data;\n this.years.sort((a, b) => b - a);\n }\n\n // #2 get routing reference datas\n const routingReference = await this.energyPdlViewService.getRoutingReferenceById(this.routingRef);\n\n this.data = routingReference.data;\n this.selectedContract = this.data.contracts.find(contract => contract._id === this.contract);\n\n // #3 get site data\n const site = await this.siteService.getSiteFromRoutingReference(this.data._id, this.data.company);\n\n if (!_.isEmpty(site)) {\n this.site = site;\n }\n this.loading.site = false;\n } catch (error) {\n this.years = this.years ? this.years : [];\n this.periodSelected = this.periodSelected\n ? this.periodSelected\n : { dateStart: null, dateEnd: null };\n this.data = this.data ? this.data : null;\n this.selectedContract = this.selectedContract ? this.selectedContract : null;\n this.site = null;\n this.loading.site = false;\n const msg = this.data ? 'du site' : 'de votre PDL';\n Swal.fire('Toutes nos excuses', \"Une erreur s'est produite lors du chargement \" + msg, 'error');\n }\n });\n }\n }\n\n initConsoBarChartProperties() {\n this.consoBarChartProperties = this.defaultConfigConsoBarChart;\n }\n\n generateConsoGraph(activateDjus, djus: Dju[] | null = null): void {\n if (djus) {\n this.djus = djus;\n }\n\n this.loading.chartLine = true;\n this.consoGraph.isDjuActivated = activateDjus;\n\n this.initConsoBarChartProperties();\n\n this.handleDJUData(this.djus, this.monthData);\n this.djuActivateChanged(this.consoGraph.isDjuActivated);\n\n this.loading.chartLine = false;\n }\n\n handleDJUData(djuData: Dju[], monthData: GazMonthlyBill[]): void {\n const labels = ['total_conso_gas'];\n if (djuData) {\n labels.push('djus');\n }\n const configType = djuData ? 'mixed' : 'bar';\n this.consoBarChartProperties.datasets[0] = this.djuService.getDJUMonthData(\n djuData,\n monthData,\n 'consumption.global.quantity'\n );\n this.consoBarChartProperties.labels = this.chartService.getMonthsLabel(monthData);\n this.consoBarChartProperties.options[0] = this.chartService.getSeriesAxesOptions(\n this.consoBarChartProperties.datasets[0],\n this.chartService.getConfig(configType, {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n this.consoBarChartProperties.legend[0] = this.chartService.getChartLegends(labels);\n this.consoBarChartProperties.colors[0] = this.chartService.getBarChartColorsTransparent(labels);\n this.consoBarChartProperties.toggleTitles = [{ name: 'Total', display: true }];\n\n if (djuData) {\n this.consoBarChartProperties.toggleTitles.push({ name: 'kWh/dju', display: true });\n const djuDataset = this.billService.getMonthDataDjuRatio(\n djuData,\n monthData,\n [\n {\n name: 'Gaz conso',\n path: 'consumption.global.quantity',\n },\n ],\n labels\n );\n this.consoBarChartProperties.datasets[1] = djuDataset;\n\n this.consoBarChartProperties.options[1] = this.chartService.getSeriesAxesOptions(\n djuDataset,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n this.consoBarChartProperties.legend[1] = this.chartService.getChartLegends(['total_conso_gas_dju_ratio']);\n this.consoBarChartProperties.colors[1] = this.chartService.getBarChartColorsTransparent([\n 'total_conso_gas_dju_ratio',\n ]);\n }\n }\n\n /**\n * On DJU activation change, hide/show djus datasets and y-axe\n */\n djuActivateChanged(isDjuActivated: boolean): void {\n isDjuActivated = isDjuActivated && this.djus && this.djus.length;\n this.consoGraph.isDjuActivated = isDjuActivated;\n\n /**\n * First, we need to update data (so that it's saved depending on other actions)\n * Then, we need to update the chart display.\n */\n const djuLabel = 'DJU';\n const kwhDjuButton = 'kWh/dju';\n const labelsLegends = [['total_conso_gas'], ['total_conso_gas_dju_ratio']];\n if (isDjuActivated) {\n labelsLegends[0].push('djus');\n }\n\n const legends = labelsLegends.map(x => this.chartService.getChartLegends(x));\n\n this.djuService.toggleDjuInDatasetAndChart(\n isDjuActivated,\n this.consoBarChartProperties,\n djuLabel,\n legends,\n kwhDjuButton,\n this.chartBarConso\n );\n }\n\n /**\n * Create ratio table from the bills data aggregated per year\n * @param {GazYearlyBill[]} dataPerYear\n */\n setRatio(dataPerYear: GazYearlyBill[]): void {\n this.ratioTable = [];\n\n dataPerYear.forEach(yd => {\n const billTotals = this.getGazBillTotals(yd);\n\n const consumptionQty = yd.consumption.global.quantity / 1000;\n\n this.ratioTable.push({\n periodLabel: yd.year,\n ratios: {\n consumption: this.formatForTable(billTotals.consumptionAmount / consumptionQty, 'money'),\n subscription: this.formatForTable(billTotals.subscriptionAmount / consumptionQty, 'money'),\n networkServices: this.formatForTable(billTotals.networkServicesAmount / consumptionQty, 'money'),\n taxes: this.formatForTable(billTotals.taxesAmount / consumptionQty, 'money'),\n },\n });\n });\n }\n\n getTotalConso() {\n return Number(this.consoData[0].data.reduce((a, b) => Number(a) + Number(b)));\n }\n\n getTotalCost() {\n const totalHT = this.tilesService.getNumberToDisplay(this.totalHT, '€');\n const totalTTC = this.tilesService.getNumberToDisplay(this.totalTTC, '€');\n return `${totalHT} € HT - ${totalTTC} € TTC`;\n }\n\n /*\n * Set in storage the current site in last visited sites for dashboard display\n */\n setLastVisitedSites(site) {\n this.sessionService.setLastVisitedSites(site);\n }\n\n /**\n * Get consumption per month on the selected period.\n * @return {Promise}\n */\n async getRoutingReferenceMonthlyConsumption(): Promise {\n try {\n // this.loading.chartLine = true;\n this.loading.secondChartLine = true;\n this.loading.monthlyCostTable = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const reponse = await this.pdlService.getByMonthOrYear(\n 'gaz',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd\n );\n\n return reponse.data;\n } catch (error) {\n // this.loading.chartLine = false;\n this.loading.secondChartLine = false;\n this.loading.monthlyCostTable = false;\n return [];\n }\n }\n\n /**\n * Returns the months data matching the selected period, aggregated per year. Asks for 2 years historic to populate the ratio table.\n *\n * [{_id: {…}, dateStart: \"2016-01-01T00:00:00.000Z\", dateEnd: \"2016-12-31T23:59:59.999Z\", month: 11, year: 2016, …},\n * {_id: {…}, dateStart: \"2017-01-01T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 2, year: 2018, …}]\n *\n * @return {Promise}\n */\n async getRfYearlyConsumptionWithHistoric(): Promise {\n try {\n this.loading.chartDonut = true;\n this.loading.ratioTable = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('year')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('year')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n 'gaz',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true,\n 2\n );\n\n return response.data;\n } catch (error) {\n this.loading.chartDonut = false;\n this.loading.ratioTable = false;\n return [];\n }\n }\n\n /**\n * Returns the months data matching the selected period, aggregated per year.\n *\n * [{_id: {…}, dateStart: \"2017-06-20T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 0, year: 2018, …}]\n *\n * @return {Promise}\n */\n async getRfYearlyConsumptionForPeriod(): Promise {\n try {\n this.loading.chartDonut = true;\n this.loading.ratioTable = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n 'gaz',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true\n );\n return response.data;\n } catch (error) {\n this.loading.chartDonut = false;\n this.loading.ratioTable = false;\n return [];\n }\n }\n\n reinitTotals() {\n this.totalHT = 0;\n this.totalTTC = 0;\n }\n\n setTotalsFromMonthData() {\n this.reinitTotals();\n\n this.monthData.forEach(monthdata => {\n this.totalHT += monthdata.bill.billAmount.HTVA;\n this.totalTTC += monthdata.bill.billAmount.TTC;\n });\n }\n\n /**\n * From month data, set totals for tiles, both charts and monthly cost table\n * @param {GazMonthlyBill[]} monthDatas\n */\n handleMonthData(monthDatas: GazMonthlyBill[]): void {\n this.monthData = monthDatas;\n this.setTotalsFromMonthData();\n\n if (monthDatas.length) {\n this.setConsoBarChartData();\n this.setCostChartData();\n this.setMonthlyCostTable();\n }\n\n // this.loading.chartLine = false;\n this.loading.secondChartLine = false;\n this.loading.monthlyCostTable = false;\n }\n\n /**\n * Populate the ratio table.\n * @param {GazYearlyBill[]} dataPerYear\n * [{_id: {…}, dateStart: \"2017-06-20T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 0, year: 2018, …}]\n */\n handleRatioTable(dataPerYear: GazYearlyBill[]): void {\n if (dataPerYear.length) {\n this.setRatio(dataPerYear);\n }\n this.loading.ratioTable = false;\n }\n /**\n * Populate the donut.\n * @param {GazYearlyBill[]} dataPerYear\n * [{_id: {…}, dateStart: \"2017-06-20T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 0, year: 2018, …}]\n */\n handleDonut(dataPerYear: GazYearlyBill[]): void {\n if (dataPerYear.length) {\n this.setCostsDoughnut(dataPerYear);\n }\n this.loading.chartDonut = false;\n }\n\n /**\n * Set donut config with computed data\n * @param {GazYearlyBill[]} dataPerYear\n */\n setCostsDoughnut(dataPerYear: GazYearlyBill[]): void {\n this.doughnutCostsProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n let networkServices = 0;\n let consumption = 0;\n let taxes = 0;\n let subscription = 0;\n\n dataPerYear.forEach(yearData => {\n const billTotals = this.getGazBillTotals(yearData);\n\n consumption += billTotals.consumptionAmount;\n subscription += billTotals.subscriptionAmount;\n networkServices += billTotals.networkServicesAmount;\n taxes += billTotals.taxesAmount;\n });\n\n const labels = ['gaz_conso', 'gaz_networkServices', 'gaz_taxes', 'gaz_subscription'];\n this.doughnutCostsProperties.legend = this.chartService.getChartLegends(labels);\n\n const dataForChart = [\n Math.round(consumption * 100) / 100,\n Math.round(networkServices * 100) / 100,\n Math.round(taxes * 100) / 100,\n Math.round(subscription * 100) / 100,\n ];\n this.doughnutCostsProperties.options = this.chartService.getHighchartDonutConfig(dataForChart, labels, '€');\n }\n\n public hasDataForCostDoughnut(): boolean {\n try {\n const chartOptions = this.doughnutCostsProperties.options;\n return Boolean(\n chartOptions &&\n chartOptions.series[0].data &&\n chartOptions.series[0].data[0] &&\n chartOptions.series[0].data[1] &&\n chartOptions.series[0].data[2] &&\n (chartOptions.series[0].data[0].y > 0 ||\n chartOptions.series[0].data[1].y > 0 ||\n chartOptions.series[0].data[2].y > 0)\n );\n } catch (err) {\n return false;\n }\n }\n\n /**\n * Set consoData for the bar chart\n */\n setConsoBarChartData(): void {\n const arrayData = [];\n const monthLabels = [];\n\n if (this.monthData) {\n this.monthData.forEach(x => {\n arrayData.push(x.consumption.global.quantity);\n monthLabels.push(\n moment()\n .month(x.month)\n .year(x.year)\n .format('MM/YYYY')\n );\n });\n }\n\n this.consoData = [\n {\n label: 'Consommation totale du site',\n data: arrayData,\n },\n ];\n }\n\n /**\n * Set costData for the cost line chart\n */\n private setCostChartData(): void {\n const arrayData = [];\n const monthLabels = [];\n\n this.monthData.forEach(x => {\n arrayData.push(x.consumption.global.amount);\n monthLabels.push(\n moment()\n .month(x.month)\n .year(x.year)\n .format('MM/YYYY')\n );\n });\n\n this.costData = [\n {\n label: 'Total des coûts',\n data: arrayData,\n },\n ];\n\n this.costsLineChartProperties.dataset = this.costData;\n this.costsLineChartProperties.labels = monthLabels;\n this.costsLineChartProperties.options = this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', '€'),\n });\n this.costsLineChartProperties.legend = this.chartService.getChartLegends(['total_cost_gas']);\n this.costsLineChartProperties.colors = this.chartService.getBarChartColorsTransparent(['total_cost_gas']);\n }\n\n /**\n * Create monthly cost table from bills' data aggregated per month.\n */\n setMonthlyCostTable(): void {\n this.monthlyCostTable = [];\n\n this.monthData.forEach(md => {\n const billTotals = this.getGazBillTotals(md);\n\n this.monthlyCostTable.push({\n periodLabel: moment()\n .month(md.month)\n .year(md.year)\n .format('MM/YYYY'),\n consumption: {\n globalQty: this.formatForTable(md.consumption.global.quantity / 1000),\n globalVolume: this.formatForTable(md.consumption.global.volume, 'volume'),\n globalAmount: this.formatForTable(md.consumption.global.amount, 'money'),\n renewableAmount: this.formatForTable(md.consumption.renewable.amount, 'money'),\n ceeAmount: this.formatForTable(md.consumption.CEE.amount, 'money'),\n total: this.formatForTable(billTotals.consumptionAmount, 'money'),\n },\n subscription: {\n globalAmount: this.formatForTable(md.networkServices.global.amount, 'money'),\n distribFixedAmount: this.formatForTable(md.networkServices.distributionFixed.amount, 'money'),\n transpFixedAmount: this.formatForTable(md.networkServices.transportationFixed.amount, 'money'),\n total: this.formatForTable(billTotals.subscriptionAmount, 'money'),\n },\n networkServices: {\n distributionVariableQty: this.formatForTable(\n md.networkServices.distributionVariable.quantity / 1000\n ),\n distributionVariableAmount: this.formatForTable(\n md.networkServices.distributionVariable.amount,\n 'money'\n ),\n transportVariableQty: this.formatForTable(\n md.networkServices.transportationVariable.quantity / 1000\n ),\n transportVariableAmount: this.formatForTable(\n md.networkServices.transportationVariable.amount,\n 'money'\n ),\n storageQty: this.formatForTable(md.networkServices.storage.quantity / 1000),\n storageAmount: this.formatForTable(md.networkServices.storage.amount, 'money'),\n capacityAmount: this.formatForTable(md.networkServices.capacity.amount, 'money'),\n meterRentAmount: this.formatForTable(md.networkServices.meterRent.amount, 'money'),\n miscServicesAmount: this.formatForTable(md.networkServices.miscServices.amount, 'money'),\n total: this.formatForTable(billTotals.networkServicesAmount, 'money'),\n },\n taxes: {\n CTAGlobal: this.formatForTable(md.tax.CTA.global.amount, 'money'),\n CTADistrib: this.formatForTable(md.tax.CTA.distribution.amount, 'money'),\n CTATransp: this.formatForTable(md.tax.CTA.transportation.amount, 'money'),\n TICGNQty: this.formatForTable(md.tax.TICGN.quantity / 1000),\n TICGNAmount: this.formatForTable(md.tax.TICGN.amount, 'money'),\n CBMQty: this.formatForTable(md.tax.CBM.quantity / 1000),\n CBMAmount: this.formatForTable(md.tax.CBM.amount, 'money'),\n CTSSGQty: this.formatForTable(md.tax.CTSSG.quantity / 1000),\n CTSSGAmount: this.formatForTable(md.tax.CTSSG.amount, 'money'),\n CSPGQty: this.formatForTable(md.tax.CSPG.quantity / 1000),\n CSPGAmount: this.formatForTable(md.tax.CSPG.amount, 'money'),\n total: this.formatForTable(billTotals.taxesAmount, 'money'),\n },\n totalHT: {\n total: this.formatForTable(\n billTotals.consumptionAmount +\n billTotals.subscriptionAmount +\n billTotals.networkServicesAmount +\n billTotals.taxesAmount,\n 'money'\n ),\n },\n totalTTC: { total: this.formatForTable(md.bill.billAmount.TTC, 'money') },\n });\n });\n }\n\n /**\n * Format number to be displayed intable. If null, set 'NC'.\n * @param {number} value\n * @param {string} [type='fluid']\n * @return {string} value formated as a string\n */\n formatForTable(value: number, type: string = 'fluid'): string {\n return this.utilsService.formateNumberType(value, 'NC', type);\n }\n\n siteLoaded() {\n return this.data && this.data._id && !this.loading.site;\n }\n\n canShowSecondLineChart(): boolean {\n return Boolean(!this.loading.secondChartLine && this.costsLineChartProperties.dataset.length);\n }\n\n canShowConsoBarChart(): boolean {\n return Boolean(!this.loading.chartLine && this.consoBarChartProperties.datasets.length);\n }\n\n hasDataForConsoBarChart(): boolean {\n return Boolean(this.consoBarChartProperties.datasets && this.consoBarChartProperties.datasets.length);\n }\n\n canShowMonthlyCostTable(): boolean {\n return Boolean(!this.loading.monthlyCostTable && this.monthlyCostTable);\n }\n\n canShowRatioTable(): boolean {\n return Boolean(!this.loading.ratioTable && this.ratioTable.length);\n }\n\n getExportExcelUrl(type) {\n return this.pdlService.getExportExcelUrl(\n type,\n this.periodSelected,\n this.routingRef,\n this.contract,\n this.consoGraph.isDjuActivated,\n 'gaz'\n );\n }\n\n getExportName(txt) {\n return this.pdlService.getExportName(txt, this.periodSelected, this.data, this.selectedContract);\n }\n\n private getGazBillTotals(bill: GazMonthlyBill | GazYearlyBill) {\n const { consumption, networkServices, tax } = bill;\n\n const consumptionAmount = consumption.global.amount + consumption.renewable.amount + consumption.CEE.amount;\n\n const subscriptionAmount =\n networkServices.global.amount +\n networkServices.distributionFixed.amount +\n networkServices.transportationFixed.amount;\n\n const networkServicesAmount =\n networkServices.distributionVariable.amount +\n networkServices.transportationVariable.amount +\n networkServices.storage.amount +\n networkServices.capacity.amount +\n networkServices.meterRent.amount +\n networkServices.miscServices.amount;\n\n const taxesAmount =\n tax.CTA.global.amount +\n tax.CTA.transportation.amount +\n tax.CTA.distribution.amount +\n tax.TICGN.amount +\n tax.CBM.amount +\n tax.CTSSG.amount +\n tax.CSPG.amount;\n\n return {\n consumptionAmount,\n subscriptionAmount,\n networkServicesAmount,\n taxesAmount,\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../../shared/services/guards/access-guard.service';\nimport { GasPdlViewComponent } from './gas.component';\n\nconst VIEW_ROUTE = [\n {\n path: '',\n component: GasPdlViewComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n\n@NgModule({\n declarations: [GasPdlViewComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(VIEW_ROUTE)],\n})\nexport class GasPdlViewModule {}\n","export default \".chart-line-top {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 45px 24px 30px 34px;\\n}\\n\\n.label-top {\\n font-size: 16px;\\n font-weight: bold;\\n color: #4099d5;\\n}\\n\\n.chart-line-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 30px 0 45px 0;\\n}\\n\\n.label-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n text-align: center;\\n width: 25%;\\n color: #374759;\\n}\\n\\n.label-bottom-label {\\n font-weight: bold;\\n font-size: 15px;\\n line-height: 1.5;\\n}\\n\\n.label-bottom-value {\\n font-size: 13px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy9oZWF0aW5nL2hlYXRpbmcuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy9oZWF0aW5nL2hlYXRpbmcuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLDRCQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esc0JBQUE7QUNDSjs7QURFQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQ0NKOztBREVBO0VBQ0ksZUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvZW5lcmd5L3BkbC12aWV3L2hlYXRpbmcvaGVhdGluZy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGFydC1saW5lLXRvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6IHJnYig2NCwgMTUzLCAyMTMpO1xufVxuXG4uY2hhcnQtbGluZS1ib3R0b20ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzMHB4IDAgNDVweCAwO1xufVxuXG4ubGFiZWwtYm90dG9tIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBjb2xvcjogcmdiKDU1LCA3MSwgODkpO1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xufVxuIiwiLmNoYXJ0LWxpbmUtdG9wIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM0MDk5ZDU7XG59XG5cbi5jaGFydC1saW5lLWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDMwcHggMCA0NXB4IDA7XG59XG5cbi5sYWJlbC1ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAyNSU7XG4gIGNvbG9yOiAjMzc0NzU5O1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn0iXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// Components\nimport { ChartBarToggleComponent } from 'app/shared/components/charts/chart-bar-toggle/chart-bar-toggle.component';\n\n// Models/interfaces\nimport { ElecPdlViewService } from 'app/pages/energy/pdl-view/elec/elec.service';\nimport { FluidViewToggleChartProperties } from 'app/pages/energy/pdl-view/pdl-view.interface';\nimport { SitesListService } from 'app/pages/energy/sites-list/sites-list.service';\nimport { DonutProperties } from 'app/shared/models/charts/charts.interface';\nimport { Dju } from 'app/shared/models/dju.interface';\nimport { DatePeriod, HeatingMonthlyBill, HeatingYearlyBill } from 'app/shared/models/fluid-bills.interface';\nimport { HeatingMonthlyCostTableBill, YearlyRatioTableBill } from 'app/shared/models/fluid-tables.interface';\nimport { TileInterface } from 'app/shared/models/tile.interface';\nimport { BillsService } from 'app/shared/services/bills/bills.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { DjuService } from 'app/shared/services/dju/dju.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\ninterface Loading {\n chartLine: boolean;\n secondChartLine: boolean;\n chartDonut: boolean;\n monthlyCostTable: boolean;\n ratioTable: boolean;\n site: boolean;\n}\n\n@Component({\n selector: 'ga-heating-pdl-view',\n templateUrl: './heating.component.html',\n styleUrls: ['./heating.component.scss'],\n providers: [ElecPdlViewService, SitesListService],\n})\nexport class HeatingPdlViewComponent implements OnInit {\n totalTTC = 0;\n totalHT = 0;\n promiseMonthData: Promise = null;\n\n loading: Loading = {\n chartLine: false,\n secondChartLine: false,\n chartDonut: false,\n monthlyCostTable: false,\n ratioTable: false,\n site: true,\n };\n\n /**Default config for conso line chart */\n private get defaultConfigConsoLineChart(): FluidViewToggleChartProperties {\n return {\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n title: 'Consommation du PDL',\n downloadFileNames: ['Consommation du PDL', 'Consommation Chauffage/ECS du PDL'],\n toggleTitles: [],\n };\n }\n /** Conso line chart properties */\n public consoLineChartProperties: FluidViewToggleChartProperties = this.defaultConfigConsoLineChart;\n\n @ViewChild('chartBarConso', { static: false }) chartBarConso: ChartBarToggleComponent;\n\n /** Default config for costs line chart */\n private get defaultConfigCostsLineChart(): FluidViewToggleChartProperties {\n return {\n datasets: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: [],\n title: 'Coût de la consommation du PDL',\n downloadFileNames: ['Coût de la consommation du PDL', 'Coût de la consommation Chauffage/ECS du PDL'],\n toggleTitles: [],\n };\n }\n /** Costs line chart properties */\n public costsLineChartProperties: FluidViewToggleChartProperties = this.defaultConfigCostsLineChart;\n\n dju: any = { isDjuActivated: true, djusAvailable: false };\n\n doughnutCostsProperties: DonutProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n monthlyCostTable: HeatingMonthlyCostTableBill[];\n years: number[];\n contract = '';\n routingRef = '';\n site: any = null;\n data: any;\n selectedContract: any;\n consoData: any;\n costData: any;\n ratioTable: YearlyRatioTableBill[] = [];\n energyType = 'heating';\n\n totalConsoTilesProperties: TileInterface = {\n mainColor: '',\n secondaryColor: '',\n label: 'Consommation totale',\n unit: 'kWh PCI',\n type: 'heating',\n };\n\n totalCostTilesProperties: TileInterface = {\n mainColor: '',\n secondaryColor: '',\n label: 'Dépense totale',\n unit: '',\n type: 'cost',\n };\n\n periodSelected: DatePeriod = { dateStart: null, dateEnd: null };\n\n constructor(\n private chartService: ChartService,\n private sessionService: SessionService,\n private energyPdlViewService: ElecPdlViewService,\n private siteService: SitesService,\n private route: ActivatedRoute,\n private colorService: ColorService,\n private billService: BillsService,\n private djuService: DjuService,\n private utilsService: UtilsService,\n private tilesService: TilesService,\n private pdlService: SitesListService\n ) {}\n\n ngOnInit() {\n this.totalConsoTilesProperties.mainColor = this.colorService.getHexColor('SECOND_BURGUNDY');\n this.totalCostTilesProperties.mainColor = this.colorService.getHexColor('SECOND_BURGUNDY');\n this.totalConsoTilesProperties.secondaryColor = this.colorService.getHexColor('BURGUNDY');\n this.totalCostTilesProperties.secondaryColor = this.colorService.getHexColor('BURGUNDY');\n this.getSiteFromParams();\n }\n\n /**\n * Set all charts/tables loading\n * @param {boolean} loading - true to set as loading, false to set as not loading\n */\n private setAllLoadings(loading: boolean = true) {\n this.loading.chartLine = loading;\n this.loading.secondChartLine = loading;\n this.loading.chartDonut = loading;\n this.loading.monthlyCostTable = loading;\n this.loading.ratioTable = loading;\n }\n\n resetAll() {\n this.loading.secondChartLine = true;\n this.loading.chartDonut = true;\n this.loading.monthlyCostTable = true;\n this.loading.chartLine = true;\n this.loading.ratioTable = true;\n\n this.consoLineChartProperties = this.defaultConfigConsoLineChart;\n\n this.costsLineChartProperties = this.defaultConfigCostsLineChart;\n\n this.doughnutCostsProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n this.monthlyCostTable = null;\n this.ratioTable = [];\n }\n\n /**\n * Update values on period change\n * @param {DatePeriod} period - new period\n */\n async onPeriodChanged(period: DatePeriod) {\n if (\n (this.periodSelected && period && period.dateStart !== this.periodSelected.dateStart) ||\n period.dateEnd !== this.periodSelected.dateEnd\n ) {\n this.periodSelected = period;\n await this.grabDataAndDisplay();\n }\n }\n\n /**\n * Grab data, format it, and set it for every component.\n */\n async grabDataAndDisplay(): Promise {\n if (!this.periodSelected || !this.periodSelected.dateStart || !this.periodSelected.dateEnd) {\n return;\n }\n\n this.resetAll();\n const [djusMonthDatas, yearlyConsumptionWithHisto, yearlyConsumption]: [\n { djus: Dju[]; monthDatas: HeatingMonthlyBill[] },\n HeatingYearlyBill[],\n HeatingYearlyBill[]\n ] = await Promise.all([\n this.getRfMonthlyConsumption(),\n this.getRfYearlyConsumptionWithHistoric(),\n this.getYearlyConsumptionForDonut(),\n ]);\n\n this.handleMonthData(djusMonthDatas.djus, djusMonthDatas.monthDatas); // send dju data & month data\n this.djuActivateChanged(this.dju.isDjuActivated);\n this.setTotals(djusMonthDatas.monthDatas);\n this.handleRatioTable(yearlyConsumptionWithHisto);\n this.handleCostsDonut(yearlyConsumption);\n }\n\n getSiteFromParams(): void {\n if (this.route.params) {\n this.route.params.subscribe(async params => {\n try {\n this.setAllLoadings(true);\n this.contract = params.contractId;\n this.routingRef = params.rfId;\n\n // #1 Load year available\n const years = await this.energyPdlViewService.getYears(\n this.contract,\n this.routingRef,\n this.energyType\n );\n\n if (years && years.data && years.data.length) {\n this.years = years.data;\n this.years.sort((a, b) => b - a);\n }\n this.dju.isDjuActivated = true;\n\n // #2 Load routing reference concerned\n const routingReference = await this.energyPdlViewService.getRoutingReferenceById(this.routingRef);\n this.data = routingReference.data;\n this.selectedContract = this.data.contracts.find(contract => contract._id === this.contract);\n\n // #3 Load site with routing reference\n const site = await this.siteService.getSiteFromRoutingReference(this.data._id, this.data.company);\n\n // if routing reference isn't linked to any site\n if (!_.isEmpty(site)) {\n this.site = site;\n }\n this.loading.site = false;\n } catch (error) {\n this.years = this.years ? this.years : [];\n this.periodSelected = this.periodSelected\n ? this.periodSelected\n : { dateStart: null, dateEnd: null };\n this.data = this.data ? this.data : null;\n this.selectedContract = this.selectedContract ? this.selectedContract : null;\n this.site = null;\n this.loading.site = false;\n const msg = this.data ? 'du site' : 'de votre PDL';\n Swal.fire('Toutes nos excuses', \"Une erreur s'est produite lors du chargement \" + msg, 'error');\n }\n });\n }\n }\n\n /**\n *\n * @param dateStart\n * @param dateEnd\n * @return {Promise}\n */\n async getMonthDatas(dateStart, dateEnd): Promise {\n if (!this.promiseMonthData) {\n const monthDatas = await this.pdlService.getByMonthOrYear(\n 'heating',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd\n );\n this.promiseMonthData = null;\n return monthDatas.data;\n }\n\n return this.promiseMonthData;\n }\n\n djuActivateChanged(isDjuActivated) {\n isDjuActivated = isDjuActivated && this.dju.djusAvailable;\n this.dju.isDjuActivated = isDjuActivated;\n\n /**\n * First, we need to update data (so that it's saved depending on other actions)\n * Then, we need to update the chart display.\n */\n const djuLabel = 'Degrés jours unifiés (par mois)';\n const kwhDjuButton = 'kWh/dju';\n const labelsLegends = [\n ['total_conso_heating', 'total_conso_heating_calculated'],\n ['heating_heating', 'heating_ecs'],\n ['heating_heating', 'heating_ecs', 'total_conso_heating'],\n ];\n if (isDjuActivated) {\n labelsLegends[0].unshift('djus');\n labelsLegends[1].unshift('djus');\n }\n const legends = labelsLegends.map(x => this.chartService.getChartLegends(x));\n\n this.djuService.toggleDjuInDatasetAndChart(\n isDjuActivated,\n this.consoLineChartProperties,\n djuLabel,\n legends,\n kwhDjuButton,\n this.chartBarConso\n );\n }\n\n /**\n * Set ratio table data from bills data aggregated per year\n * @param {HeatingYearlyBill}[] dataPerYear\n */\n setRatio(dataPerYear: HeatingYearlyBill[]): void {\n this.ratioTable = [];\n\n dataPerYear.forEach(yd => {\n const hasTotalCons = yd.consumption.total.amount || yd.consumption.total.quantity;\n const consumption = hasTotalCons\n ? yd.consumption.total.amount\n : yd.consumption.heating.amount + yd.consumption.ecs.amount;\n const quantity = hasTotalCons\n ? yd.consumption.total.quantity\n : yd.consumption.heating.quantity + yd.consumption.ecs.quantity;\n\n const hasTotalSub = Boolean(yd.subscription.total.amount);\n const subscription = hasTotalSub\n ? yd.subscription.total.amount\n : yd.subscription.heating.amount + yd.subscription.ecs.amount;\n\n const miscellaneous = yd.miscellaneous.telegestion.amount + yd.miscellaneous.gestion.amount;\n const totalHTVA = yd.totalHT.amount;\n const totalTTC = yd.totalTTC.amount;\n\n this.ratioTable.push({\n periodLabel: yd.year,\n ratios: {\n consumption: this.formatNumberDefaultToNC((consumption / quantity) * 100, 'money'),\n subscription: this.formatNumberDefaultToNC((subscription / quantity) * 100, 'money'),\n miscellaneous: this.formatNumberDefaultToNC((miscellaneous / quantity) * 100, 'money'),\n totalHTVA: this.formatNumberDefaultToNC((totalHTVA / quantity) * 100, 'money'),\n totalTTC: this.formatNumberDefaultToNC((totalTTC / quantity) * 100, 'money'),\n },\n });\n });\n }\n\n getTotalConso() {\n return Number(this.consoData.data);\n }\n\n getTotalCost() {\n const totalHT = this.tilesService.getNumberToDisplay(this.totalHT, '€');\n const totalTTC = this.tilesService.getNumberToDisplay(this.totalTTC, '€');\n return `${totalHT} € HT - ${totalTTC} € TTC`;\n }\n\n /*\n * Set in storage the current site in last visited sites for dashboard display\n */\n setLastVisitedSites(site) {\n this.sessionService.setLastVisitedSites(site);\n }\n\n /**\n * Grab month data and DJU if needed on selected period for charts.\n * @param {boolean} activateDjus\n * @return {Promise<{djus: Dju[], monthDatas: HeatingMonthlyBill[]}>}\n */\n async getRfMonthlyConsumption(): Promise<{ djus: Dju[]; monthDatas: HeatingMonthlyBill[] }> {\n try {\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const djuPromise: Promise =\n this.site && this.site._id\n ? this.djuService.getSiteDJUs(dateStart, dateEnd, this.site).catch(() => null)\n : (async () => null)();\n\n const promiseArray: [Promise, Promise] = [\n this.getMonthDatas(dateStart, dateEnd),\n djuPromise,\n ];\n\n const [monthDatas, djus] = await Promise.all(promiseArray);\n\n this.dju.djusAvailable = Boolean(djus && djus.length);\n return { djus, monthDatas };\n } catch (error) {\n this.loading.chartLine = false;\n this.loading.secondChartLine = false;\n this.loading.monthlyCostTable = false;\n return { djus: null, monthDatas: [] };\n }\n }\n\n /**\n * Grab yearly consumption with 2 years historic for ratio table.\n * @return {Promise}\n */\n async getRfYearlyConsumptionWithHistoric(): Promise {\n try {\n this.loading.ratioTable = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('year')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('year')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n 'heating',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true,\n 2\n );\n\n return response.data;\n } catch (error) {\n this.loading.ratioTable = false;\n return [];\n }\n }\n\n /**\n * Grab yearly consumption for donut.\n * @return {Promise}\n */\n async getYearlyConsumptionForDonut(): Promise {\n try {\n this.loading.chartDonut = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n 'heating',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true\n );\n\n return response.data;\n } catch (error) {\n this.loading.chartDonut = false;\n return [];\n }\n }\n\n /**\n * Set totals values for tiles\n * @param {HeatingMonthlyBill[]} dataPerMonth - monthly data\n */\n setTotals(dataPerMonth: HeatingMonthlyBill[]): void {\n this.totalTTC = 0;\n this.totalHT = 0;\n\n if (dataPerMonth && dataPerMonth.length) {\n let conso = 0;\n dataPerMonth.forEach(monthData => {\n // Cost\n this.totalHT += monthData.totalHT.amount;\n this.totalTTC += monthData.totalTTC.amount;\n // Conso\n let monthConso = monthData.consumption.total.quantity;\n if (!monthConso && (monthData.consumption.heating.quantity || monthData.consumption.ecs.quantity)) {\n monthConso = monthData.consumption.heating.quantity + monthData.consumption.ecs.quantity;\n }\n conso += monthConso;\n });\n\n this.consoData = {\n label: 'Consommation totale du site',\n data: conso,\n };\n } else {\n this.consoData = {\n label: 'Consommation totale du site',\n data: 0,\n };\n }\n }\n\n /**\n * Set conso chart data from dju data and month data\n * @param {Dju[]} djuData\n * @param {HeatingMonthlyBill[]} monthData - bills' data aggregated per month\n */\n setConsoLineChartData(djuData: Dju[], monthData: HeatingMonthlyBill[]): void {\n const labels = ['total_conso_heating', 'total_conso_heating_calculated'];\n const labels2 = ['heating_heating', 'heating_ecs'];\n if (djuData) {\n labels.unshift('djus');\n labels2.unshift('djus');\n }\n const configType = djuData ? 'mixed' : 'bar';\n\n this.consoLineChartProperties.datasets[0] = this.billService.getHeatingTotalMonthData(djuData, monthData);\n this.consoLineChartProperties.datasets[1] = this.billService.getHeatingMonthData(djuData, monthData);\n this.consoLineChartProperties.labels = this.chartService.getMonthsLabel(monthData);\n\n this.consoLineChartProperties.options = this.chartService.getDatasetsAxesOptions(\n this.consoLineChartProperties.datasets,\n this.chartService.getConfig(configType, {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n\n this.consoLineChartProperties.toggleTitles = [\n { name: 'Total', display: true },\n { name: 'Chauffage/ECS', display: true },\n ];\n this.consoLineChartProperties.legend[0] = this.chartService.getChartLegends(labels);\n this.consoLineChartProperties.colors[0] = this.chartService.getBarChartColors(labels);\n this.consoLineChartProperties.legend[1] = this.chartService.getChartLegends(labels2);\n this.consoLineChartProperties.colors[1] = this.chartService.getBarChartColors(labels2);\n\n if (djuData) {\n this.consoLineChartProperties.toggleTitles.push({ name: 'kWh/dju', display: true });\n const djuDataset = this.billService.getHeatingMonthDataDjuRatio(djuData, monthData);\n this.consoLineChartProperties.datasets[2] = djuDataset;\n this.consoLineChartProperties.options[2] = this.chartService.getSeriesAxesOptions(\n djuDataset,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line'),\n })\n );\n this.consoLineChartProperties.legend[2] = this.chartService.getChartLegends([\n 'heating_heating',\n 'heating_ecs',\n 'total_conso_heating',\n ]);\n this.consoLineChartProperties.colors[2] = this.chartService.getBarChartColors([\n 'heating_heating',\n 'heating_ecs',\n 'total_conso_heating',\n ]);\n }\n }\n\n /**\n * Populate conso line chart and costs line chart.\n *\n * @param {Dju[]} djuData\n * @param {HeatingMonthlyBill[]} monthData\n */\n handleMonthData(djuData: Dju[], monthData: HeatingMonthlyBill[]): void {\n if (monthData && monthData.length) {\n this.setConsoLineChartData(djuData, monthData);\n this.setCostsLineChartData(monthData);\n this.setMonthlyCostTable(monthData);\n }\n\n this.loading.chartLine = false;\n this.loading.secondChartLine = false;\n this.loading.monthlyCostTable = false;\n }\n\n /**\n * Populate ratio table with yearly values over the last 3 years.\n * @param {HeatingYearlyBill[]} yearlyConsumptionWithHisto\n */\n handleRatioTable(yearlyConsumptionWithHisto: HeatingYearlyBill[]): void {\n if (yearlyConsumptionWithHisto && yearlyConsumptionWithHisto.length) {\n this.setRatio(yearlyConsumptionWithHisto);\n }\n\n this.loading.ratioTable = false;\n }\n\n /**\n * Populate costs repartition donut\n * @param {HeatingYearlyBill[]} yearlyConsumption\n */\n handleCostsDonut(globalConsumption: HeatingYearlyBill[]): void {\n if (globalConsumption && globalConsumption.length) {\n this.setCostsDoughnut(globalConsumption);\n }\n this.loading.chartDonut = false;\n }\n\n /**\n * Set cost donut data\n * @param {HeatingYearlyBill[]} yearlyData\n */\n setCostsDoughnut(yearlyData: HeatingYearlyBill[]): void {\n const sum = {\n consumption: 0,\n subscription: 0,\n regulation: 0,\n miscellaneous: 0,\n };\n\n yearlyData.forEach(dataPerYear => {\n const hasTotalCons = dataPerYear.consumption.total.amount || dataPerYear.consumption.total.quantity;\n sum.consumption += hasTotalCons\n ? dataPerYear.consumption.total.amount\n : dataPerYear.consumption.heating.amount + dataPerYear.consumption.ecs.amount;\n\n const hasTotalSub = Boolean(dataPerYear.subscription.total.amount);\n sum.subscription += hasTotalSub\n ? dataPerYear.subscription.total.amount\n : dataPerYear.subscription.heating.amount + dataPerYear.subscription.ecs.amount;\n\n const hasTotalReg = dataPerYear.regulation.total.amount || dataPerYear.regulation.total.quantity;\n sum.regulation += hasTotalReg\n ? dataPerYear.regulation.total.amount\n : dataPerYear.regulation.heating.amount + dataPerYear.regulation.ecs.amount;\n sum.miscellaneous +=\n dataPerYear.miscellaneous.telegestion.amount + dataPerYear.miscellaneous.gestion.amount;\n });\n\n this.doughnutCostsProperties = {\n options: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n this.doughnutCostsProperties.legend = this.chartService.getChartLegends([\n 'heating_consumption',\n 'heating_subscription',\n 'heating_miscellaneous',\n ]);\n const dataForChart = [\n Math.round((sum.consumption + sum.regulation) * 100) / 100,\n Math.round(sum.subscription * 100) / 100,\n Math.round(sum.miscellaneous * 100) / 100,\n ];\n this.doughnutCostsProperties.options = this.chartService.getHighchartDonutConfig(\n dataForChart,\n ['heating_consumption', 'heating_subscription', 'heating_miscellaneous'],\n '€'\n );\n }\n\n /**\n * Return true if has data for the cost donut, false otherwise\n * @return {boolean}\n */\n public hasDataForCostDoughnut(): boolean {\n try {\n const chartOptions = this.doughnutCostsProperties.options;\n return Boolean(\n chartOptions &&\n chartOptions.series[0].data &&\n chartOptions.series[0].data[0] &&\n chartOptions.series[0].data[1] &&\n chartOptions.series[0].data[2] &&\n (chartOptions.series[0].data[0].y > 0 ||\n chartOptions.series[0].data[1].y > 0 ||\n chartOptions.series[0].data[2].y > 0)\n );\n } catch (err) {\n return false;\n }\n }\n\n /**\n * Set costs chart data\n * @param monthDatas\n */\n setCostsLineChartData(monthDatas: HeatingMonthlyBill[]) {\n const arrayData = [];\n const monthLabels = [];\n\n monthDatas.forEach(x => {\n let cost = x.consumption.total.amount;\n if (!cost && (x.consumption.heating.amount || x.consumption.ecs.amount)) {\n cost = x.consumption.heating.amount + x.consumption.ecs.amount;\n }\n arrayData.push(cost);\n monthLabels.push(\n moment()\n .month(x.month)\n .year(x.year)\n .format('MM/YYYY')\n );\n });\n\n this.costData = [\n {\n label: 'Total des coûts',\n data: arrayData,\n },\n ];\n // [0] : total\n // [1] : chauffage/ECS\n const totalDataset = this.billService.getHeatingTotalMonthData(null, monthDatas, true);\n const diffDataset = this.billService.getHeatingMonthData(null, monthDatas, true);\n this.costsLineChartProperties.datasets = [totalDataset, diffDataset];\n\n this.costsLineChartProperties.labels = this.chartService.getMonthsLabel(monthDatas);\n\n this.costsLineChartProperties.options = this.chartService.getDatasetsAxesOptions(\n this.costsLineChartProperties.datasets,\n this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', '€'),\n })\n );\n\n this.costsLineChartProperties.toggleTitles = [\n { name: 'Total', display: true },\n { name: 'Chauffage/ECS', display: true },\n ];\n this.costsLineChartProperties.legend[0] = this.chartService.getChartLegends([\n 'total_cost_heating',\n 'total_cost_heating_calculated',\n ]);\n this.costsLineChartProperties.colors[0] = this.chartService.getBarChartColors([\n 'total_cost_heating',\n 'total_cost_heating_calculated',\n ]);\n this.costsLineChartProperties.legend[1] = this.chartService.getChartLegends(['heating_heating', 'heating_ecs']);\n this.costsLineChartProperties.colors[1] = this.chartService.getBarChartColors([\n 'heating_heating',\n 'heating_ecs',\n ]);\n }\n\n /**\n * Create monthly cost table from bills' data aggregated per month\n * @param {HeatingMonthlyBill[]} monthData\n */\n setMonthlyCostTable(monthData: HeatingMonthlyBill[]): void {\n this.monthlyCostTable = [];\n\n monthData.forEach(md => {\n const consumptionTotalAmount = md.consumption.total.amount\n ? md.consumption.total.amount\n : md.consumption.heating.amount + md.consumption.ecs.amount;\n\n const consumptionTotalQty = md.consumption.total.quantity\n ? md.consumption.total.quantity\n : md.consumption.heating.quantity + md.consumption.ecs.quantity;\n\n const subscriptionTotalAmount = md.subscription.total.amount\n ? md.subscription.total.amount\n : md.subscription.heating.amount + md.subscription.ecs.amount;\n\n this.monthlyCostTable.push({\n periodLabel: moment()\n .month(md.month)\n .year(md.year)\n .format('MM/YYYY'),\n consumption: {\n heatingAmount: this.formatNumberDefaultToNC(md.consumption.heating.amount, 'money'),\n ecsAmount: this.formatNumberDefaultToNC(md.consumption.ecs.amount, 'money'),\n totalAmount: this.formatNumberDefaultToNC(consumptionTotalAmount, 'money'),\n heatingQty: this.formatNumberDefaultToNC(md.consumption.heating.quantity),\n ecsQuantity: this.formatNumberDefaultToNC(md.consumption.ecs.quantity),\n totalQuantity: this.formatNumberDefaultToNC(consumptionTotalQty),\n },\n subscription: {\n heating: this.formatNumberDefaultToNC(md.subscription.heating.amount, 'money'),\n ecs: this.formatNumberDefaultToNC(md.subscription.ecs.amount, 'money'),\n total: this.formatNumberDefaultToNC(subscriptionTotalAmount, 'money'),\n },\n miscellaneous: {\n telegestion: this.formatNumberDefaultToNC(md.miscellaneous.telegestion.amount, 'money'),\n gestion: this.formatNumberDefaultToNC(md.miscellaneous.gestion.amount, 'money'),\n total: this.formatNumberDefaultToNC(\n md.miscellaneous.telegestion.amount + md.miscellaneous.gestion.amount,\n 'money'\n ),\n },\n totalHT: { total: this.formatNumberDefaultToNC(md.totalHT.amount, 'money') },\n totalTTC: { total: this.formatNumberDefaultToNC(md.totalTTC.amount, 'money') },\n });\n });\n }\n\n formatNumberDefaultToNC(value, type = 'fluid') {\n return this.utilsService.formateNumberType(value, 'NC', type);\n }\n\n siteLoaded() {\n return this.data && this.data._id && !this.loading.site;\n }\n\n canShowSecondLineChart(): boolean {\n return Boolean(!this.loading.secondChartLine && this.costsLineChartProperties.datasets.length);\n }\n\n canShowLineChart(): boolean {\n return Boolean(!this.loading.chartLine && this.consoLineChartProperties.datasets.length);\n }\n\n canShowDataPerMonth(): boolean {\n return Boolean(!this.loading.monthlyCostTable && this.monthlyCostTable);\n }\n\n canShowRatioTable(): boolean {\n return Boolean(!this.loading.ratioTable && this.ratioTable.length);\n }\n\n getExportExcelUrl(type) {\n return this.pdlService.getExportExcelUrl(\n type,\n this.periodSelected,\n this.routingRef,\n this.contract,\n this.dju.isDjuActivated,\n 'heating'\n );\n }\n\n getExportName(txt) {\n return this.pdlService.getExportName(txt, this.periodSelected, this.data, this.selectedContract);\n }\n\n hasSite(): boolean {\n return Boolean(this.site);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../../shared/services/guards/access-guard.service';\nimport { HeatingPdlViewComponent } from './heating.component';\n\nconst VIEW_ROUTE = [\n {\n path: '',\n component: HeatingPdlViewComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n\n@NgModule({\n declarations: [HeatingPdlViewComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(VIEW_ROUTE)],\n})\nexport class HeatingPdlViewModule {}\n","export default \".chart-line-top {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 45px 24px 30px 34px;\\n}\\n\\n.label-top {\\n font-size: 16px;\\n font-weight: bold;\\n color: #4099d5;\\n}\\n\\n.chart-line-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 30px 0 45px 0;\\n}\\n\\n.label-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n text-align: center;\\n width: 25%;\\n color: #374759;\\n}\\n\\n.label-bottom-label {\\n font-weight: bold;\\n font-size: 15px;\\n line-height: 1.5;\\n}\\n\\n.label-bottom-value {\\n font-size: 13px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy93YXRlci93YXRlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvZW5lcmd5L3BkbC12aWV3L3dhdGVyL3dhdGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7RUFDQSw0QkFBQTtBQ0NKOztBREVBO0VBQ0ksZUFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtBQ0NKOztBREVBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHNCQUFBO0FDQ0o7O0FERUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBQ0EsY0FBQTtBQ0NKOztBREVBO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7QUNDSjs7QURFQTtFQUNJLGVBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS9wZGwtdmlldy93YXRlci93YXRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGFydC1saW5lLXRvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6IHJnYig2NCwgMTUzLCAyMTMpO1xufVxuXG4uY2hhcnQtbGluZS1ib3R0b20ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzMHB4IDAgNDVweCAwO1xufVxuXG4ubGFiZWwtYm90dG9tIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBjb2xvcjogcmdiKDU1LCA3MSwgODkpO1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xufVxuIiwiLmNoYXJ0LWxpbmUtdG9wIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA0NXB4IDI0cHggMzBweCAzNHB4O1xufVxuXG4ubGFiZWwtdG9wIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM0MDk5ZDU7XG59XG5cbi5jaGFydC1saW5lLWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDMwcHggMCA0NXB4IDA7XG59XG5cbi5sYWJlbC1ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAyNSU7XG4gIGNvbG9yOiAjMzc0NzU5O1xufVxuXG4ubGFiZWwtYm90dG9tLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmxhYmVsLWJvdHRvbS12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// Models/interfaces\nimport { DatePeriod, WaterMonthlyBill, WaterYearlyBill } from 'app/shared/models/fluid-bills.interface';\nimport { WaterMonthlyCostTableBill } from 'app/shared/models/fluid-tables.interface';\n\n// Services\nimport { ElecPdlViewService } from 'app/pages/energy/pdl-view/elec/elec.service';\nimport { SitesListService } from 'app/pages/energy/sites-list/sites-list.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\ninterface Loading {\n chartLine: boolean;\n secondChartLine: boolean;\n chartDonut: boolean;\n dataPerMonth: boolean;\n ratioTable: boolean;\n site: boolean;\n}\n\n@Component({\n selector: 'ga-water-pdl-view',\n templateUrl: './water.component.html',\n styleUrls: ['./water.component.scss'],\n providers: [ElecPdlViewService, SitesListService],\n})\nexport class WaterPdlViewComponent implements OnInit {\n totalTTC = 0;\n totalHT = 0;\n\n totalConsoTilesProperties: any = {\n mainColor: '',\n secondaryColor: '',\n value: '',\n label: 'Consommation totale',\n unit: 'm³',\n type: 'water',\n };\n\n totalCostTilesProperties: any = {\n mainColor: '',\n secondaryColor: '',\n value: '',\n label: 'Dépense totale',\n unit: '',\n type: 'cost',\n };\n\n loading: Loading = {\n chartLine: false,\n secondChartLine: false,\n chartDonut: false,\n dataPerMonth: false,\n ratioTable: false,\n site: true,\n };\n\n /** Default config for conso line chart */\n private get defaultConfigConsoLineChart(): any {\n return {\n data: [],\n dataset: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: {},\n title: 'Consommation du PDL',\n };\n }\n /** Conso line chart properties */\n public lineChartProperties: any = this.defaultConfigConsoLineChart;\n\n /** Default config for costs line chart */\n private get defaultConfigCostsLineChart(): any {\n return {\n data: [],\n dataset: [],\n labels: [],\n colors: [],\n legend: [],\n width: 900,\n minHeight: null, // 'none'\n options: {},\n title: 'Coût de la consommation du PDL',\n };\n }\n /** Costs line chart properties */\n public secondLineChartProperties: any = this.defaultConfigCostsLineChart;\n\n // doughnut chart\n doughnutCostsProperties: any = {\n data: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n montDataTable: WaterMonthlyCostTableBill[] = [];\n years: any[];\n contract = '';\n routingRef = '';\n site: any;\n data: any;\n selectedContract: any;\n consoData: any;\n costData: any;\n ratioTable = [];\n energyType = 'water';\n\n periodSelected: DatePeriod = { dateStart: null, dateEnd: null };\n\n constructor(\n private chartService: ChartService,\n private sessionService: SessionService,\n private energyPdlViewService: ElecPdlViewService,\n private siteService: SitesService,\n private route: ActivatedRoute,\n private colorService: ColorService,\n private utilsService: UtilsService,\n private tilesService: TilesService,\n private pdlService: SitesListService\n ) {}\n\n ngOnInit() {\n this.totalConsoTilesProperties.mainColor = this.chartService.getBarChartColorsTransparent([\n 'total_conso_water',\n ])[0].backgroundColor;\n this.totalConsoTilesProperties.secondaryColor = this.colorService.getHexColor('BLUE');\n this.totalCostTilesProperties.mainColor = this.chartService.getBarChartColorsTransparent([\n 'total_conso_water',\n ])[0].backgroundColor;\n this.totalCostTilesProperties.secondaryColor = this.colorService.getHexColor('BLUE');\n this.getSiteFromParams();\n }\n\n /**\n * Set all charts/tables loading\n * @param {boolean} loading - true to set as loading, false to set as not loading\n */\n private setAllLoadings(loading: boolean = true) {\n this.loading.chartLine = loading;\n this.loading.secondChartLine = loading;\n this.loading.chartDonut = loading;\n this.loading.dataPerMonth = loading;\n this.loading.ratioTable = loading;\n }\n\n resetAll() {\n this.lineChartProperties = this.defaultConfigConsoLineChart;\n this.secondLineChartProperties = this.defaultConfigCostsLineChart;\n\n this.doughnutCostsProperties = {\n data: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n\n this.montDataTable = [];\n\n this.ratioTable = [];\n }\n\n /**\n * Called when the date has changed.\n * @param {DatePeriod} period\n */\n async onPeriodChanged(period: DatePeriod) {\n if (\n (this.periodSelected && period && period.dateStart !== this.periodSelected.dateStart) ||\n period.dateEnd !== this.periodSelected.dateEnd\n ) {\n this.periodSelected = period;\n await this.grabDataAndDisplay();\n }\n }\n\n /**\n * Grab data, format it, and set it for every component.\n */\n async grabDataAndDisplay(): Promise {\n this.resetAll();\n\n const [monthlyConsumption, yearlyConsumptionForTable, globalConsumptionForDonut]: [\n WaterMonthlyBill[],\n WaterYearlyBill[],\n WaterYearlyBill[]\n ] = await Promise.all([\n this.getRfMonthlyConsumption(),\n this.getRfYearlyConsumptionWithHistoric(),\n this.getRfGlobalConsumptionForPeriod(),\n ]);\n\n this.handleMonthData(monthlyConsumption); // both charts & table of evolution per month\n this.handleRatioTable(yearlyConsumptionForTable);\n this.handleCostsDoughnut(globalConsumptionForDonut);\n }\n\n getSiteFromParams(): void {\n if (this.route.params) {\n this.route.params.subscribe(async params => {\n try {\n this.setAllLoadings(true);\n this.contract = params.contractId;\n this.routingRef = params.rfId;\n\n const years = await this.energyPdlViewService.getYears(\n this.contract,\n this.routingRef,\n this.energyType\n );\n\n if (years && years.data && years.data.length) {\n this.years = years.data;\n this.years.sort((a, b) => b - a);\n }\n\n const routingReference = await this.energyPdlViewService.getRoutingReferenceById(this.routingRef);\n\n this.data = routingReference.data;\n this.selectedContract = this.data.contracts.find(contract => contract._id === this.contract);\n\n const site = await this.siteService.getSiteFromRoutingReference(this.data._id, this.data.company);\n\n this.site = site && site._id ? site : null;\n this.loading.site = false;\n return;\n } catch (error) {\n this.years = this.years ? this.years : [];\n this.periodSelected = this.periodSelected\n ? this.periodSelected\n : { dateStart: null, dateEnd: null };\n this.data = this.data ? this.data : null;\n this.selectedContract = this.selectedContract ? this.selectedContract : null;\n this.site = null;\n this.loading.site = false;\n const msg = this.data ? 'du site' : 'de votre PDL';\n Swal.fire('Toutes nos excuses', \"Une erreur s'est produite lors du chargement \" + msg, 'error');\n }\n });\n }\n }\n\n /**\n * Populate the ratio table from yearly bills data\n * @param {WaterYearlyBill[]} dataPerYear\n */\n setRatioTable(dataPerYear: WaterYearlyBill[]) {\n this.ratioTable = [];\n dataPerYear.forEach(yd => {\n const quantity = yd.productionAndDistribution.quantity;\n\n this.ratioTable.push({\n periodLabel: yd.year,\n productionAndDistribution: {\n subscription: this.formatNumberDefaultToNC((yd.subscription.amount / quantity) * 100, 'money'),\n consumption: this.formatNumberDefaultToNC(\n (yd.productionAndDistribution.amount / quantity) * 100,\n 'money'\n ),\n },\n wasteWaterTreatment: {\n value: this.formatNumberDefaultToNC((yd.wasteWaterTreatment.amount / quantity) * 100, 'money'),\n },\n publicOrganismAndVAT: {\n value: this.formatNumberDefaultToNC((yd.publicOrganismAndVAT.amount / quantity) * 100, 'money'),\n },\n totalHT: { value: this.formatNumberDefaultToNC((yd.totalHT.amount / quantity) * 100, 'money') },\n totalTTC: { value: this.formatNumberDefaultToNC((yd.totalTTC.amount / quantity) * 100, 'money') },\n });\n });\n }\n\n getTotalConso() {\n return Number(this.consoData[0].data.reduce((a, b) => Number(a) + Number(b)));\n }\n\n getTotalCost() {\n const totalHT = this.tilesService.getNumberToDisplay(this.totalHT, '€');\n const totalTTC = this.tilesService.getNumberToDisplay(this.totalTTC, '€');\n return `${totalHT} € HT - ${totalTTC} € TTC`;\n }\n\n /**\n * Set in storage the current site in last visited sites for dashboard display\n */\n setLastVisitedSites(site) {\n this.sessionService.setLastVisitedSites(site);\n }\n\n /**\n * Returns the months data matching the selected period, aggregated per month.\n *\n * @return {Promise }\n * [{_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-01-31T23:59:59.999Z\", month: 0, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-02-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 1, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-03-01T00:00:00.000Z\", dateEnd: \"2018-03-31T23:59:59.999Z\", month: 2, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-04-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 3, year: 2018, …}]\n */\n async getRfMonthlyConsumption(): Promise {\n try {\n this.loading.chartLine = true;\n this.loading.secondChartLine = true;\n this.loading.dataPerMonth = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n 'water',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n false\n );\n\n return response.data;\n } catch (error) {\n this.loading.chartLine = false;\n this.loading.secondChartLine = false;\n this.loading.dataPerMonth = false;\n return [];\n }\n }\n\n /**\n * Returns the months data matching the selected period, aggregated per year. Asks for 2 years historic to populate the ratio table.\n *\n * @return {Promise}\n * [{_id: {…}, dateStart: \"2016-01-01T00:00:00.000Z\", dateEnd: \"2016-12-31T23:59:59.999Z\", month: 11, year: 2016, …},\n * {_id: {…}, dateStart: \"2017-01-01T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 2, year: 2018, …}]\n */\n async getRfYearlyConsumptionWithHistoric(): Promise {\n try {\n this.loading.chartDonut = true;\n this.loading.ratioTable = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('year')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('year')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n 'water',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true,\n 2\n );\n return response.data;\n } catch (error) {\n this.loading.chartDonut = false;\n this.loading.ratioTable = false;\n return [];\n }\n }\n\n /**\n * Returns the months data matching the selected period, aggregated per year.\n *\n * @return {Promise}\n * [{_id: {…}, dateStart: \"2017-06-20T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 0, year: 2018, …}]\n */\n async getRfGlobalConsumptionForPeriod(): Promise {\n try {\n this.loading.chartDonut = true;\n this.loading.ratioTable = true;\n\n const dateStart = moment(this.periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const dateEnd = moment(this.periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n const response = await this.pdlService.getByMonthOrYear(\n 'water',\n this.contract,\n this.routingRef,\n dateStart,\n dateEnd,\n true\n );\n return response.data;\n } catch (error) {\n this.loading.chartDonut = false;\n this.loading.ratioTable = false;\n return [];\n }\n }\n\n reinitTotals() {\n this.totalHT = 0;\n this.totalTTC = 0;\n }\n\n /**\n * Populate the tile of costs with the sum of totalHT totalTTC\n *\n * @param {WaterMonthlyBill[]}\n * monthsData : [\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-01-31T23:59:59.999Z\", month: 0, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-02-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 1, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-03-01T00:00:00.000Z\", dateEnd: \"2018-03-31T23:59:59.999Z\", month: 2, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-04-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 3, year: 2018, …}]\n */\n setCostsTotalsFromMonthData(monthsData: WaterMonthlyBill[]): void {\n this.reinitTotals();\n\n monthsData.forEach(monthData => {\n this.totalHT += monthData.totalHT.amount;\n this.totalTTC += monthData.totalTTC.amount;\n });\n }\n\n /**\n * Use months data to populate the tiles total costs, both line charts & the cost evolution table\n * @param {WaterMonthlyBill[]} monthData: [\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-01-31T23:59:59.999Z\", month: 0, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-02-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 1, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-03-01T00:00:00.000Z\", dateEnd: \"2018-03-31T23:59:59.999Z\", month: 2, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-04-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 3, year: 2018, …}]\n */\n handleMonthData(monthData: WaterMonthlyBill[]): void {\n if (monthData.length) {\n this.setCostsTotalsFromMonthData(monthData); // populate the costs tile TTC & HTVA\n this.setConsoLineChartData(monthData);\n this.setCostsLineChartData(monthData);\n this.setMonthDataTable(monthData);\n }\n\n this.loading.chartLine = false;\n this.loading.secondChartLine = false;\n this.loading.dataPerMonth = false;\n }\n\n /**\n * Use the month data to populate the ratio table & the donut\n * @param {WaterYearlyBill[]} monthData\n */\n handleCostsDoughnut(monthsData: WaterYearlyBill[]): void {\n if (monthsData.length) {\n this.setCostsDoughnut(monthsData);\n }\n this.loading.chartDonut = false;\n }\n\n /**\n * Populate the ratio table.\n * @param {WaterYearlyBill[]} dataPerYear\n * [{_id: {…}, dateStart: \"2017-06-20T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 0, year: 2018, …}]\n */\n handleRatioTable(dataPerYear: WaterYearlyBill[]): void {\n if (dataPerYear.length) {\n this.setRatioTable(dataPerYear);\n }\n this.loading.ratioTable = false;\n }\n\n /**\n * Populate donut data and properties from monthsdata aggregated per year.\n * @param {WaterYearlyBill[]} dataPerYear\n * [{_id: {…}, dateStart: \"2017-06-20T00:00:00.000Z\", dateEnd: \"2017-12-31T23:59:59.999Z\", month: 6, year: 2017, …},\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 0, year: 2018, …}]\n */\n setCostsDoughnut(dataPerYear: WaterYearlyBill[]): void {\n let publicOrganismAndVAT = 0;\n let wasteWaterTreatment = 0;\n let productionAndDistribution = 0;\n let subscription = 0;\n if (dataPerYear && dataPerYear.length) {\n dataPerYear.forEach(data => {\n publicOrganismAndVAT += Number(data.publicOrganismAndVAT.amount);\n wasteWaterTreatment += Number(data.wasteWaterTreatment.amount);\n productionAndDistribution += Number(data.productionAndDistribution.amount);\n subscription += Number(data.subscription.amount);\n });\n }\n\n this.doughnutCostsProperties = {\n data: [],\n legend: [],\n title: 'Répartition des coûts',\n };\n this.doughnutCostsProperties.legend = this.chartService.getChartLegends([\n 'water_subscription',\n 'water_productionAndDistribution',\n 'water_wasteWaterTreatment',\n 'water_publicOrganismAndVAT',\n ]);\n\n const dataForChart = [\n Math.round(subscription * 100) / 100,\n Math.round(productionAndDistribution * 100) / 100,\n Math.round(wasteWaterTreatment * 100) / 100,\n Math.round(publicOrganismAndVAT * 100) / 100,\n ];\n this.doughnutCostsProperties.data = this.chartService.getHighchartDonutConfig(\n dataForChart,\n [\n 'water_subscription',\n 'water_productionAndDistribution',\n 'water_wasteWaterTreatment',\n 'water_publicOrganismAndVAT',\n ],\n '€'\n );\n }\n\n /**\n * Use month data to populate conso line chart.\n * @param {WaterMonthlyBill[]} data: [\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-01-31T23:59:59.999Z\", month: 0, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-02-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 1, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-03-01T00:00:00.000Z\", dateEnd: \"2018-03-31T23:59:59.999Z\", month: 2, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-04-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 3, year: 2018, …}]\n */\n setConsoLineChartData(data: WaterMonthlyBill[]): void {\n const arrayData = [];\n const monthLabels = [];\n\n data.forEach(x => {\n arrayData.push(x.productionAndDistribution.quantity);\n monthLabels.push(\n moment()\n .month(x.month)\n .year(x.year)\n .format('MM/YYYY')\n );\n });\n\n this.consoData = [\n {\n label: 'Consommation totale du PDL',\n data: arrayData,\n },\n ];\n\n this.lineChartProperties.data = this.consoData;\n this.lineChartProperties.dataset = this.consoData;\n this.lineChartProperties.labels = monthLabels;\n this.lineChartProperties.options = this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', 'm³'),\n });\n this.lineChartProperties.legend = this.chartService.getChartLegends(['total_conso_water']);\n this.lineChartProperties.colors = this.chartService.getBarChartColorsTransparent(['total_conso_water']);\n }\n\n /**\n * Use month data to populate costs line chart.\n * @param {WaterMonthlyBill[]} data: [\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-01-31T23:59:59.999Z\", month: 0, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-02-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 1, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-03-01T00:00:00.000Z\", dateEnd: \"2018-03-31T23:59:59.999Z\", month: 2, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-04-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 3, year: 2018, …}]\n */\n setCostsLineChartData(data: WaterMonthlyBill[]): void {\n const arrayData = [];\n const monthLabels = [];\n\n data.forEach(x => {\n arrayData.push(x.productionAndDistribution.amount);\n monthLabels.push(\n moment()\n .month(x.month)\n .year(x.year)\n .format('MM/YYYY')\n );\n });\n\n this.costData = [\n {\n label: 'Total des coûts',\n data: arrayData,\n },\n ];\n\n this.secondLineChartProperties.data = this.costData;\n this.secondLineChartProperties.dataset = this.costData;\n this.secondLineChartProperties.labels = monthLabels;\n this.secondLineChartProperties.options = this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', '€'),\n });\n this.secondLineChartProperties.legend = this.chartService.getChartLegends(['total_cost_water']);\n this.secondLineChartProperties.colors = this.chartService.getBarChartColorsTransparent(['total_cost_water']);\n }\n\n /**\n * Use month data to populate the table with the evolution of costs per month.\n * @param {WaterMonthlyBill[]} data: [\n * {_id: {…}, dateStart: \"2018-01-01T00:00:00.000Z\", dateEnd: \"2018-01-31T23:59:59.999Z\", month: 0, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-02-01T00:00:00.000Z\", dateEnd: \"2018-02-28T23:59:59.999Z\", month: 1, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-03-01T00:00:00.000Z\", dateEnd: \"2018-03-31T23:59:59.999Z\", month: 2, year: 2018, …},\n * {_id: {…}, dateStart: \"2018-04-01T00:00:00.000Z\", dateEnd: \"2018-04-05T00:00:00.000Z\", month: 3, year: 2018, …}]\n */\n setMonthDataTable(dataPerMonth: WaterMonthlyBill[]): void {\n this.montDataTable = [];\n\n dataPerMonth.forEach(md => {\n this.montDataTable.push({\n periodLabel: moment()\n .month(md.month)\n .year(md.year)\n .format('MM/YYYY'),\n consumption: {\n conso: this.formatNumberDefaultToNC(md.productionAndDistribution.amount, 'money'),\n quantity: this.formatNumberDefaultToNC(md.productionAndDistribution.quantity),\n },\n wasteWaterTreatment: { value: this.formatNumberDefaultToNC(md.wasteWaterTreatment.amount, 'money') },\n publicOrganismAndVAT: { value: this.formatNumberDefaultToNC(md.publicOrganismAndVAT.amount, 'money') },\n subscription: { value: this.formatNumberDefaultToNC(md.subscription.amount, 'money') },\n totalHT: { total: this.formatNumberDefaultToNC(md.totalHT.amount, 'money') },\n totalTTC: { total: this.formatNumberDefaultToNC(md.totalTTC.amount, 'money') },\n });\n });\n }\n\n formatNumberDefaultToNC(value, type = 'fluid') {\n return this.utilsService.formateNumberType(value, 'NC', type);\n }\n\n siteLoaded() {\n return this.data && this.data._id && !this.loading.site;\n }\n\n canShowSecondLineChart(): boolean {\n return Boolean(!this.loading.secondChartLine && this.secondLineChartProperties.dataset.length);\n }\n\n canShowLineChart(): boolean {\n return Boolean(!this.loading.chartLine && this.lineChartProperties.dataset.length);\n }\n\n canShowDataPerMonth(): boolean {\n return Boolean(!this.loading.dataPerMonth && this.montDataTable);\n }\n\n canShowRatioTable(): boolean {\n return Boolean(!this.loading.ratioTable && this.ratioTable);\n }\n\n public hasDataForCostDoughnut(): boolean {\n try {\n const chartOptions = this.doughnutCostsProperties.data;\n return Boolean(\n (chartOptions &&\n chartOptions.series[0].data &&\n chartOptions.series[0].data[0] &&\n chartOptions.series[0].data[1] &&\n chartOptions.series[0].data[2] &&\n (chartOptions.series[0].data[0].y > 0 ||\n chartOptions.series[0].data[1].y > 0 ||\n chartOptions.series[0].data[2].y > 0)) ||\n (chartOptions.series[0].data[3].y > 0 || chartOptions.series[0].data[4].y > 0)\n );\n } catch (err) {\n return false;\n }\n }\n\n getExportExcelUrl(type) {\n return this.pdlService.getExportExcelUrl(\n type,\n this.periodSelected,\n this.routingRef,\n this.contract,\n false,\n 'water'\n );\n }\n\n getExportName(txt) {\n return this.pdlService.getExportName(txt, this.periodSelected, this.data, this.selectedContract);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../../shared/services/guards/access-guard.service';\nimport { WaterPdlViewComponent } from './water.component';\n\nconst VIEW_ROUTE = [\n {\n path: '',\n component: WaterPdlViewComponent,\n canActivate: [AccessGuard],\n data: { page: 'water' },\n },\n];\n\n@NgModule({\n declarations: [WaterPdlViewComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(VIEW_ROUTE)],\n})\nexport class WaterPdlViewModule {}\n","export default \".citron-pdl-data-top-profile {\\n color: #dfe6ef;\\n padding: 0;\\n margin-bottom: 20px;\\n}\\n.citron-pdl-data-top-profile .data-top-row {\\n padding-left: 15px;\\n padding-right: 15px;\\n min-height: 215px;\\n}\\n.citron-pdl-data-top-profile .image-column {\\n min-height: 215px;\\n background-size: cover;\\n background-position: center;\\n z-index: 1;\\n}\\n.citron-pdl-data-top-profile .image-column:not(:hover) .picture-remove__wrapper {\\n display: none;\\n}\\n.citron-pdl-data-top-profile .image-camera__wrapper {\\n position: absolute;\\n left: 10px;\\n bottom: 10px;\\n -webkit-filter: drop-shadow(0px 0px 5px #222);\\n filter: drop-shadow(0px 0px 5px #222);\\n}\\n.citron-pdl-data-top-profile .image-camera__icon {\\n height: 28px;\\n width: 28px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: rgba(255, 255, 255, 0.7);\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_camera.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_camera.svg\\\");\\n cursor: pointer;\\n}\\n.citron-pdl-data-top-profile .image-camera__icon:hover {\\n background-color: white;\\n}\\n.citron-pdl-data-top-profile .picture-remove__wrapper {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n -webkit-filter: drop-shadow(0px 0px 5px #222);\\n filter: drop-shadow(0px 0px 5px #222);\\n}\\n.citron-pdl-data-top-profile .picture-remove__content {\\n cursor: pointer;\\n}\\n.citron-pdl-data-top-profile .informations-column {\\n background-color: #2f3b40;\\n padding: 0;\\n}\\n.citron-pdl-data-top-profile .informations-top-col {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 24px;\\n}\\n.citron-pdl-data-top-profile .informations-top-col .site-name {\\n font-size: 1.25rem;\\n font-weight: bold;\\n margin-bottom: 20px;\\n}\\n.citron-pdl-data-top-profile .informations-top-col .adresse-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n.citron-pdl-data-top-profile .informations-top-col .adresse-container .icon {\\n height: 40px;\\n width: 40px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #dfe6ef;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pin.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pin.svg\\\");\\n margin-right: 15px;\\n}\\n.citron-pdl-data-top-profile .informations-top-col .adresse-container .adresse {\\n font-size: 0.875rem;\\n line-height: 1.5;\\n}\\n.citron-pdl-data-top-profile .informations-top-col .status__text-desc {\\n cursor: pointer;\\n}\\n.citron-pdl-data-top-profile .informations-top-col .status__text-desc span {\\n border-bottom: 1px solid white;\\n}\\n.citron-pdl-data-top-profile .informations-top-col .status__text-desc,\\n.citron-pdl-data-top-profile .informations-top-col .status__state {\\n font-family: \\\"Montserrat\\\", sans-serif;\\n}\\n.citron-pdl-data-top-profile .meteo-information {\\n width: 100%;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 15px 24px;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__icon {\\n margin-right: 8px;\\n width: 20px;\\n height: 20px;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__item {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__item label {\\n margin: 0 0 0 8px;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__item select {\\n margin: 0 8px;\\n font-size: 0.875rem;\\n text-transform: capitalize;\\n padding: 5px;\\n border-radius: 2px;\\n color: white;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n background-color: transparent;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__item select:hover {\\n opacity: 1;\\n background-color: white;\\n color: #2f3b40;\\n border: 1px solid #2f3b40;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__item .method-select {\\n width: 100px;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__item .temperature-select {\\n width: 46px;\\n}\\n.citron-pdl-data-top-profile .meteo-information .meteo-information__item .station-select {\\n width: 150px;\\n}\\n.citron-pdl-data-top-profile .informations-bottom-container {\\n padding-top: 1rem;\\n border-top: 1px solid rgba(255, 255, 255, 0.2);\\n}\\n.citron-pdl-data-top-profile .counts-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0 1rem;\\n}\\n.citron-pdl-data-top-profile .redirection-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n flex-wrap: wrap;\\n margin: 0 1rem;\\n}\\n.citron-pdl-data-top-profile .single-count {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n margin-right: 20px;\\n}\\n.citron-pdl-data-top-profile .single-count:last-of-type {\\n margin-right: 0;\\n}\\n.citron-pdl-data-top-profile .single-count .icon {\\n height: 40px;\\n width: 40px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #dfe6ef;\\n}\\n.citron-pdl-data-top-profile .single-count .icon,\\n.citron-pdl-data-top-profile .single-count .legacy-icon {\\n margin-right: 8px;\\n}\\n.citron-pdl-data-top-profile .single-count .pdl-icon {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl.svg\\\");\\n}\\n.citron-pdl-data-top-profile .single-count .profil-icon {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_profile.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_profile.svg\\\");\\n}\\n.citron-pdl-data-top-profile .single-count .count {\\n font-weight: bold;\\n font-size: 1rem;\\n line-height: 1.4;\\n}\\n.citron-pdl-data-top-profile .single-count .text {\\n font-size: 0.75rem;\\n line-height: 1.25;\\n}\\n.citron-pdl-data-top-profile .single-count .legacy-icon {\\n font-size: 25px;\\n width: 40px;\\n text-align: center;\\n}\\n.site-profile-bloc-content p,\\n:host ::ng-deep .zone-bloc-content p,\\n:host ::ng-deep .site-properties-bloc-content p {\\n font-size: 0.875rem;\\n}\\n.site-profile-bloc-content label,\\n.site-profile-bloc-content .form-control,\\n:host ::ng-deep .zone-bloc-content label,\\n:host ::ng-deep .zone-bloc-content .form-control,\\n:host ::ng-deep .site-properties-bloc-content label,\\n:host ::ng-deep .site-properties-bloc-content .form-control {\\n font-size: 0.875rem;\\n}\\n.full-width-component {\\n width: 100%;\\n}\\n.bloc-content {\\n padding: 20px;\\n}\\n.input {\\n margin-bottom: 20px;\\n}\\n.zone-container .tabs {\\n display: -webkit-box;\\n display: flex;\\n padding-top: 16px;\\n padding-bottom: 0;\\n padding-left: 16px;\\n padding-right: 16px;\\n border-bottom: 1px solid #d9d9d9;\\n overflow: auto;\\n}\\n.zone-container .tab {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n max-width: 150px;\\n padding: 10px;\\n border-top-right-radius: 4px;\\n border-top-left-radius: 4px;\\n border: 1px solid #d9d9d9;\\n border-left: none;\\n border-bottom: none;\\n cursor: pointer;\\n}\\n.zone-container .tab:first-child {\\n border-left: 1px solid #d9d9d9;\\n}\\n.zone-container .tab.tab-active {\\n background-color: #3189c4;\\n color: #fff;\\n}\\n.zone-container .add-tab {\\n -webkit-transition: background-color 0.2s linear;\\n transition: background-color 0.2s linear;\\n}\\n.zone-container .add-tab:hover {\\n background-color: #dcdcdc;\\n}\\n.zone-container .tab-text {\\n overflow: hidden;\\n max-height: 55px;\\n display: -webkit-box;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n line-height: 1.25;\\n font-size: 0.875rem;\\n text-overflow: ellipsis;\\n}\\n.add-icon {\\n margin-left: 5px;\\n height: 21px;\\n width: 21px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #4689c3;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n}\\n.site-zone {\\n padding: 16px;\\n}\\n.title-separator {\\n width: 100%;\\n font-size: 0.875rem;\\n font-weight: bold;\\n padding-bottom: 5px;\\n border-bottom: 1px solid #d9d9d9;\\n margin-top: 45px;\\n margin-bottom: 25px;\\n}\\n.title-separator:first-of-type {\\n margin-top: 10px;\\n}\\n.title-separator.no-margin-bottom {\\n margin-bottom: 0;\\n}\\n.title-separator.no-border {\\n border: none;\\n}\\n.button-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n.button-bloc .citron-btn:nth-child(even) {\\n margin-left: 15px;\\n margin-right: 15px;\\n}\\n.citron-btn {\\n font-size: 0.875rem;\\n max-width: 180px;\\n padding: 10px 16px;\\n}\\n.citron-btn.btn-error {\\n background-color: #db4b47;\\n}\\n.citron-btn.btn-error:hover, .citron-btn.btn-error:focus, .citron-btn.btn-error:active {\\n background-color: rgba(219, 75, 71, 0.8);\\n}\\n.disabled {\\n background-color: #efefef !important;\\n}\\n.input-wrap {\\n position: relative;\\n}\\n.input-wrap .edit-icon-fa {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n width: 40px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n font-size: 20px;\\n color: white;\\n background-color: #3189c4;\\n border-radius: 0.25rem;\\n}\\n.input-wrap .edit-icon-fa:hover, .input-wrap .edit-icon-fa:focus, .input-wrap .edit-icon-fa:active {\\n background-color: #8fc3e6;\\n}\\n.error-loading-site {\\n width: 100%;\\n margin-top: 200px;\\n}\\n.status__info-icon {\\n font-size: 1rem;\\n margin-left: 5px;\\n}\\n/**\\n * File upload part\\n */\\n#file-upload {\\n display: none;\\n}\\n.picture-loader__wrapper {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.3);\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2VuZXJneS9wcm9maWxlcy9wcm9maWxlcy5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2VuZXJneS9wcm9maWxlcy9wcm9maWxlcy5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUE7RUFDSSxjQ1FTO0VEUFQsVUFBQTtFQUNBLG1CQUFBO0FFWEo7QUZhSTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxpQkFBQTtBRVhSO0FGY0k7RUFDSSxpQkFBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7RUFRQSxVQUFBO0FFbkJSO0FGY1k7RUFDSSxhQUFBO0FFWmhCO0FGbUJJO0VBQ0ksa0JBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLDZDQUFBO1VBQUEscUNBQUE7QUVqQlI7QUZvQkk7RUczQ0EsWUg0Q3FCO0VHM0NyQixXSDJDMkI7RUcxQzNCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLDBDSHFDNkI7RUdqQzdCLGtFQUFBO1VBQUEsMERBQUE7RUhrQ0EsZUFBQTtBRVpSO0FGY1E7RUFDSSx1QkFBQTtBRVpaO0FGZ0JJO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLDZDQUFBO1VBQUEscUNBQUE7QUVkUjtBRmlCSTtFQUNJLGVBQUE7QUVmUjtBRmtCSTtFQUNJLHlCQXpEVztFQTBEWCxVQUFBO0FFaEJSO0FGbUJJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLGFBQUE7QUVqQlI7QUZtQlE7RUFDSSxr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QSx5QkFBQTtFQUNBLHNCQUFBO0FFbENSO0FGb0NRO0VBR0kseUJBQUE7QUVwQ1o7QUZ5Q0E7RUFDSSxXQUFBO0VBQ0EsaUJBQUE7QUV0Q0o7QUZ5Q0E7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7QUV0Q0o7QUZ5Q0E7O0VBQUE7QUFHQTtFQUNJLGFBQUE7QUV0Q0o7QUZ5Q0E7RUFDSSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxvQ0FBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FFdENKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvZW5lcmd5L3Byb2ZpbGVzL3Byb2ZpbGVzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbiR0ZXh0LWZvbnQtc2l6ZTogMC44NzVyZW07XG4kc3VidGV4dC1mb250LXNpemU6IDAuNzVyZW07XG4kdGl0bGUtZm9udC1zaXplOiAwLjg3NXJlbTtcbiR3aGl0ZTogd2hpdGU7XG4kYm9yZGVyLXdoaXRlOiAxcHggc29saWQgcmdiKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4kYmFja2dyb3VuZC1jb2xvcjogIzJmM2I0MDtcbiRib3JkZXItZGFyazogMXB4IHNvbGlkICMyZjNiNDA7XG5cbi8vIHRvcCBwcm9maWxlXG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIHtcbiAgICBjb2xvcjogJHByb2ZpbGV0b3A7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG4gICAgLmRhdGEtdG9wLXJvdyB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgICAgbWluLWhlaWdodDogMjE1cHg7XG4gICAgfVxuXG4gICAgLmltYWdlLWNvbHVtbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIxNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG5cbiAgICAgICAgJjpub3QoOmhvdmVyKSB7XG4gICAgICAgICAgICAucGljdHVyZS1yZW1vdmVfX3dyYXBwZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gTmVlZHMgdG8gYmUgb3ZlciB0aGUgb3RoZXIgY29sdW1uXG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuXG4gICAgLmltYWdlLWNhbWVyYV9fd3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMTBweDtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggNXB4ICMyMjIpO1xuICAgIH1cblxuICAgIC5pbWFnZS1jYW1lcmFfX2ljb24ge1xuICAgICAgICBAaW5jbHVkZSBzdmdJY29uKDI4cHgsIDI4cHgsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2FtZXJhLnN2ZycpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5waWN0dXJlLXJlbW92ZV9fd3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDVweCAjMjIyKTtcbiAgICB9XG5cbiAgICAucGljdHVyZS1yZW1vdmVfX2NvbnRlbnQge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLmluZm9ybWF0aW9ucy1jb2x1bW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAuaW5mb3JtYXRpb25zLXRvcC1jb2wge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHBhZGRpbmc6IDI0cHg7XG5cbiAgICAgICAgLnNpdGUtbmFtZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWRyZXNzZS1jb250YWluZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdmdJY29uKDQwcHgsIDQwcHgsICRwcm9maWxldG9wLCAnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19waW4uc3ZnJyk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYWRyZXNzZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGF0dXNfX3RleHQtZGVzYyB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuc3RhdHVzX190ZXh0LWRlc2MsXG4gICAgICAgIC5zdGF0dXNfX3N0YXRlIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubWV0ZW8taW5mb3JtYXRpb24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTVweCAyNHB4O1xuICAgICAgICAubWV0ZW8taW5mb3JtYXRpb25fX2ljb24ge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgfVxuICAgICAgICAubWV0ZW8taW5mb3JtYXRpb25fX2l0ZW0ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCAwIDhweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDhweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAkYm9yZGVyLXdoaXRlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAkYm9yZGVyLWRhcms7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm1ldGhvZC1zZWxlY3Qge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC50ZW1wZXJhdHVyZS1zZWxlY3Qge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0NnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnN0YXRpb24tc2VsZWN0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5mb3JtYXRpb25zLWJvdHRvbS1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICB9XG5cbiAgICAuY291bnRzLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMCAxcmVtO1xuICAgIH1cblxuICAgIC5yZWRpcmVjdGlvbi1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBtYXJnaW46IDAgMXJlbTtcbiAgICB9XG5cbiAgICAuc2luZ2xlLWNvdW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuXG4gICAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN2Z0ljb24oNDBweCwgNDBweCwgJHByb2ZpbGV0b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLmljb24sXG4gICAgICAgIC5sZWdhY3ktaWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wZGwtaWNvbiB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fcGRsLnN2ZycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2ZpbC1pY29uIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19wcm9maWxlLnN2ZycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvdW50IHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgfVxuICAgICAgICAudGV4dCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRzdWJ0ZXh0LWZvbnQtc2l6ZTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxlZ2FjeS1pY29uIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2l0ZS1wcm9maWxlLFxuOmhvc3QgOjpuZy1kZWVwIC56b25lLFxuOmhvc3QgOjpuZy1kZWVwIC5zaXRlLXByb3BlcnRpZXMge1xuICAgICYtYmxvYy1jb250ZW50IHtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBsYWJlbCxcbiAgICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi5mdWxsLXdpZHRoLWNvbXBvbmVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5ibG9jLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG5cbi5pbnB1dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLnpvbmUtY29udGFpbmVyIHtcbiAgICAudGFicyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cblxuICAgIC50YWIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXgtd2lkdGg6IDE1MHB4O1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXJncmV5O1xuICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYm9yZGVyZ3JleTtcbiAgICAgICAgfVxuXG4gICAgICAgICYudGFiLWFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWRkLXRhYiB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBsaW5lYXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRhYi10ZXh0IHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LWhlaWdodDogNTVweDtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICAgIGZvbnQtc2l6ZTogJHRpdGxlLWZvbnQtc2l6ZTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgfVxufVxuXG4uYWRkLWljb24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigyMXB4LCAyMXB4LCAjNDY4OWMzLCAnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19hZGQuc3ZnJyk7XG59XG5cbi5zaXRlLXpvbmUge1xuICAgIHBhZGRpbmc6IDE2cHg7XG59XG5cbi50aXRsZS1zZXBhcmF0b3Ige1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogJHRpdGxlLWZvbnQtc2l6ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyZ3JleTtcbiAgICBtYXJnaW4tdG9wOiA0NXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG5cbiAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIH1cblxuICAgICYubm8tbWFyZ2luLWJvdHRvbSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgJi5uby1ib3JkZXIge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBnZW5lcmFsXG4uYnV0dG9uLWJsb2Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAgIC5jaXRyb24tYnRuOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgfVxufVxuXG4uY2l0cm9uLWJ0biB7XG4gICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgbWF4LXdpZHRoOiAxODBweDtcbiAgICBwYWRkaW5nOiAxMHB4IDE2cHg7XG59XG5cbi5jaXRyb24tYnRuLmJ0bi1lcnJvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGVycm9yO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMTksIDc1LCA3MSwgMC44KTtcbiAgICB9XG59XG5cbi5kaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZiAhaW1wb3J0YW50O1xufVxuXG4uaW5wdXQtd3JhcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmVkaXQtaWNvbi1mYSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM4ZmMzZTY7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5lcnJvci1sb2FkaW5nLXNpdGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDIwMHB4O1xufVxuXG4uc3RhdHVzX19pbmZvLWljb24ge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4vKipcbiAqIEZpbGUgdXBsb2FkIHBhcnRcbiAqL1xuI2ZpbGUtdXBsb2FkIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ucGljdHVyZS1sb2FkZXJfX3dyYXBwZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSB7XG4gIGNvbG9yOiAjZGZlNmVmO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuZGF0YS10b3Atcm93IHtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBtaW4taGVpZ2h0OiAyMTVweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLmltYWdlLWNvbHVtbiB7XG4gIG1pbi1oZWlnaHQ6IDIxNXB4O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIHotaW5kZXg6IDE7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5pbWFnZS1jb2x1bW46bm90KDpob3ZlcikgLnBpY3R1cmUtcmVtb3ZlX193cmFwcGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLmltYWdlLWNhbWVyYV9fd3JhcHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMTBweDtcbiAgYm90dG9tOiAxMHB4O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggNXB4ICMyMjIpO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuaW1hZ2UtY2FtZXJhX19pY29uIHtcbiAgaGVpZ2h0OiAyOHB4O1xuICB3aWR0aDogMjhweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19jYW1lcmEuc3ZnXCIpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5pbWFnZS1jYW1lcmFfX2ljb246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLnBpY3R1cmUtcmVtb3ZlX193cmFwcGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwcHg7XG4gIHJpZ2h0OiAxMHB4O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggNXB4ICMyMjIpO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAucGljdHVyZS1yZW1vdmVfX2NvbnRlbnQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5pbmZvcm1hdGlvbnMtY29sdW1uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJmM2I0MDtcbiAgcGFkZGluZzogMDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLmluZm9ybWF0aW9ucy10b3AtY29sIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAyNHB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuaW5mb3JtYXRpb25zLXRvcC1jb2wgLnNpdGUtbmFtZSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5pbmZvcm1hdGlvbnMtdG9wLWNvbCAuYWRyZXNzZS1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuaW5mb3JtYXRpb25zLXRvcC1jb2wgLmFkcmVzc2UtY29udGFpbmVyIC5pY29uIHtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogNDBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZmU2ZWY7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fcGluLnN2Z1wiKTtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuaW5mb3JtYXRpb25zLXRvcC1jb2wgLmFkcmVzc2UtY29udGFpbmVyIC5hZHJlc3NlIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLmluZm9ybWF0aW9ucy10b3AtY29sIC5zdGF0dXNfX3RleHQtZGVzYyB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLmluZm9ybWF0aW9ucy10b3AtY29sIC5zdGF0dXNfX3RleHQtZGVzYyBzcGFuIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHdoaXRlO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuaW5mb3JtYXRpb25zLXRvcC1jb2wgLnN0YXR1c19fdGV4dC1kZXNjLFxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuaW5mb3JtYXRpb25zLXRvcC1jb2wgLnN0YXR1c19fc3RhdGUge1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWY7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5tZXRlby1pbmZvcm1hdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxNXB4IDI0cHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5tZXRlby1pbmZvcm1hdGlvbiAubWV0ZW8taW5mb3JtYXRpb25fX2ljb24ge1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLm1ldGVvLWluZm9ybWF0aW9uIC5tZXRlby1pbmZvcm1hdGlvbl9faXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAubWV0ZW8taW5mb3JtYXRpb24gLm1ldGVvLWluZm9ybWF0aW9uX19pdGVtIGxhYmVsIHtcbiAgbWFyZ2luOiAwIDAgMCA4cHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5tZXRlby1pbmZvcm1hdGlvbiAubWV0ZW8taW5mb3JtYXRpb25fX2l0ZW0gc2VsZWN0IHtcbiAgbWFyZ2luOiAwIDhweDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gIHBhZGRpbmc6IDVweDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5tZXRlby1pbmZvcm1hdGlvbiAubWV0ZW8taW5mb3JtYXRpb25fX2l0ZW0gc2VsZWN0OmhvdmVyIHtcbiAgb3BhY2l0eTogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiAjMmYzYjQwO1xuICBib3JkZXI6IDFweCBzb2xpZCAjMmYzYjQwO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAubWV0ZW8taW5mb3JtYXRpb24gLm1ldGVvLWluZm9ybWF0aW9uX19pdGVtIC5tZXRob2Qtc2VsZWN0IHtcbiAgd2lkdGg6IDEwMHB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAubWV0ZW8taW5mb3JtYXRpb24gLm1ldGVvLWluZm9ybWF0aW9uX19pdGVtIC50ZW1wZXJhdHVyZS1zZWxlY3Qge1xuICB3aWR0aDogNDZweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLm1ldGVvLWluZm9ybWF0aW9uIC5tZXRlby1pbmZvcm1hdGlvbl9faXRlbSAuc3RhdGlvbi1zZWxlY3Qge1xuICB3aWR0aDogMTUwcHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5pbmZvcm1hdGlvbnMtYm90dG9tLWNvbnRhaW5lciB7XG4gIHBhZGRpbmctdG9wOiAxcmVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuY291bnRzLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogMCAxcmVtO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAucmVkaXJlY3Rpb24tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luOiAwIDFyZW07XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5zaW5nbGUtY291bnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5zaW5nbGUtY291bnQ6bGFzdC1vZi10eXBlIHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuc2luZ2xlLWNvdW50IC5pY29uIHtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogNDBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZmU2ZWY7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5zaW5nbGUtY291bnQgLmljb24sXG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5zaW5nbGUtY291bnQgLmxlZ2FjeS1pY29uIHtcbiAgbWFyZ2luLXJpZ2h0OiA4cHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5zaW5nbGUtY291bnQgLnBkbC1pY29uIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19wZGwuc3ZnXCIpO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10b3AtcHJvZmlsZSAuc2luZ2xlLWNvdW50IC5wcm9maWwtaWNvbiB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fcHJvZmlsZS5zdmdcIik7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5zaW5nbGUtY291bnQgLmNvdW50IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdG9wLXByb2ZpbGUgLnNpbmdsZS1jb3VudCAudGV4dCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRvcC1wcm9maWxlIC5zaW5nbGUtY291bnQgLmxlZ2FjeS1pY29uIHtcbiAgZm9udC1zaXplOiAyNXB4O1xuICB3aWR0aDogNDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc2l0ZS1wcm9maWxlLWJsb2MtY29udGVudCBwLFxuOmhvc3QgOjpuZy1kZWVwIC56b25lLWJsb2MtY29udGVudCBwLFxuOmhvc3QgOjpuZy1kZWVwIC5zaXRlLXByb3BlcnRpZXMtYmxvYy1jb250ZW50IHAge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLnNpdGUtcHJvZmlsZS1ibG9jLWNvbnRlbnQgbGFiZWwsXG4uc2l0ZS1wcm9maWxlLWJsb2MtY29udGVudCAuZm9ybS1jb250cm9sLFxuOmhvc3QgOjpuZy1kZWVwIC56b25lLWJsb2MtY29udGVudCBsYWJlbCxcbjpob3N0IDo6bmctZGVlcCAuem9uZS1ibG9jLWNvbnRlbnQgLmZvcm0tY29udHJvbCxcbjpob3N0IDo6bmctZGVlcCAuc2l0ZS1wcm9wZXJ0aWVzLWJsb2MtY29udGVudCBsYWJlbCxcbjpob3N0IDo6bmctZGVlcCAuc2l0ZS1wcm9wZXJ0aWVzLWJsb2MtY29udGVudCAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmZ1bGwtd2lkdGgtY29tcG9uZW50IHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5ibG9jLWNvbnRlbnQge1xuICBwYWRkaW5nOiAyMHB4O1xufVxuXG4uaW5wdXQge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uem9uZS1jb250YWluZXIgLnRhYnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMTZweDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHBhZGRpbmctbGVmdDogMTZweDtcbiAgcGFkZGluZy1yaWdodDogMTZweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLnpvbmUtY29udGFpbmVyIC50YWIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXgtd2lkdGg6IDE1MHB4O1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIGJvcmRlci1sZWZ0OiBub25lO1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uem9uZS1jb250YWluZXIgLnRhYjpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2Q5ZDlkOTtcbn1cbi56b25lLWNvbnRhaW5lciAudGFiLnRhYi1hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xuICBjb2xvcjogI2ZmZjtcbn1cbi56b25lLWNvbnRhaW5lciAuYWRkLXRhYiB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBsaW5lYXI7XG59XG4uem9uZS1jb250YWluZXIgLmFkZC10YWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjO1xufVxuLnpvbmUtY29udGFpbmVyIC50YWItdGV4dCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1heC1oZWlnaHQ6IDU1cHg7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLmFkZC1pY29uIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgaGVpZ2h0OiAyMXB4O1xuICB3aWR0aDogMjFweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0Njg5YzM7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fYWRkLnN2Z1wiKTtcbn1cblxuLnNpdGUtem9uZSB7XG4gIHBhZGRpbmc6IDE2cHg7XG59XG5cbi50aXRsZS1zZXBhcmF0b3Ige1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xuICBtYXJnaW4tdG9wOiA0NXB4O1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuLnRpdGxlLXNlcGFyYXRvcjpmaXJzdC1vZi10eXBlIHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbn1cbi50aXRsZS1zZXBhcmF0b3Iubm8tbWFyZ2luLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4udGl0bGUtc2VwYXJhdG9yLm5vLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLmJ1dHRvbi1ibG9jIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cbi5idXR0b24tYmxvYyAuY2l0cm9uLWJ0bjpudGgtY2hpbGQoZXZlbikge1xuICBtYXJnaW4tbGVmdDogMTVweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG1heC13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbn1cblxuLmNpdHJvbi1idG4uYnRuLWVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0Nztcbn1cbi5jaXRyb24tYnRuLmJ0bi1lcnJvcjpob3ZlciwgLmNpdHJvbi1idG4uYnRuLWVycm9yOmZvY3VzLCAuY2l0cm9uLWJ0bi5idG4tZXJyb3I6YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMTksIDc1LCA3MSwgMC44KTtcbn1cblxuLmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZiAhaW1wb3J0YW50O1xufVxuXG4uaW5wdXQtd3JhcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5pbnB1dC13cmFwIC5lZGl0LWljb24tZmEge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDQwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMxODljNDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cbi5pbnB1dC13cmFwIC5lZGl0LWljb24tZmE6aG92ZXIsIC5pbnB1dC13cmFwIC5lZGl0LWljb24tZmE6Zm9jdXMsIC5pbnB1dC13cmFwIC5lZGl0LWljb24tZmE6YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhmYzNlNjtcbn1cblxuLmVycm9yLWxvYWRpbmctc2l0ZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiAyMDBweDtcbn1cblxuLnN0YXR1c19faW5mby1pY29uIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4vKipcbiAqIEZpbGUgdXBsb2FkIHBhcnRcbiAqL1xuI2ZpbGUtdXBsb2FkIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnBpY3R1cmUtbG9hZGVyX193cmFwcGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { HttpEventType } from '@angular/common/http';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\n\n// services\nimport { MeteoStation } from 'app/shared/models/meteo-station.interface';\nimport { DjuService } from 'app/shared/services/dju/dju.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { LoadCurveService } from 'app/shared/services/load-curve/load-curve.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { ProfilesService } from 'app/shared/services/profiles/profiles.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { LegacyService } from 'app/shared/services/sites/legacy.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\n// components\nimport { SiteDistributionKeyComponent } from 'app/shared/components/sites/distribution-key/distribution-key.component';\nimport { LegacyDataComponent } from 'app/shared/components/sites/legacy-data/legacy-data.component';\n\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// interfaces\nimport { RoutingReferencePopulated } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulatedContracts } from 'app/shared/models/site.interface';\nimport { MeteoService } from 'app/shared/services/meteo/meteo.service';\n\n@Component({\n selector: 'ga-profiles',\n templateUrl: './profiles.component.html',\n styleUrls: ['./profiles.component.scss'],\n providers: [ProfilesService],\n})\nexport class ProfilesComponent implements OnInit {\n routingReferences: RoutingReferencePopulated[] = [];\n properties: any;\n site: SitePopulatedContracts = null;\n loading = true;\n zoneShown: number = null;\n fluidCategory = 'energy';\n fluidCategoryUrl = 'energie';\n\n deleteZoneSwalOptions: any = {\n title: \"Suppression d'une zone\",\n text: 'Vous êtes sur le point de supprimer une zone, êtes vous certain de vouloir effectuer cette action ?',\n type: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, la supprimer',\n cancelButtonText: 'Annuler',\n };\n\n /** Legacy Data **/\n hasLegacyData = false;\n hasLegacyTemplate = false;\n isLegacyLoading = false;\n templateComingSoon = false;\n legacyData: any = [];\n configLegacyData: any = {};\n elementNature: any = null;\n legacyMultizone: boolean;\n @ViewChild(LegacyDataComponent, { static: false })\n private legacyDataComponent: LegacyDataComponent;\n legacyDataCompletion = 0;\n\n horizontalPosition: MatSnackBarHorizontalPosition = 'end';\n verticalPosition: MatSnackBarVerticalPosition = 'top';\n @ViewChild('statusToggle', { static: false }) private statusToggle: MatSlideToggle;\n @ViewChild(SiteDistributionKeyComponent, { static: false })\n private siteDistributionKeyComponent: SiteDistributionKeyComponent;\n\n /** Picture update **/\n allowedTypes: string[] = ['.png', '.jpg', '.jpeg'];\n isPictureUploading = false;\n\n /** Meteo Information update **/\n availableTemperatures: number[] = [];\n availableTemperaturesCold: number[] = [];\n availableMethods: string[] = [];\n availableMeteoStations: MeteoStation[] = [];\n selectedTemperature: number = null;\n selectedTemperatureCold: number = null;\n selectedMethod: string = null;\n selectedMeteoStation: string = null;\n\n siteLoaded: Promise = null;\n\n constructor(\n private route: ActivatedRoute,\n private profilesService: ProfilesService,\n private mapService: MapService,\n private sessionService: SessionService,\n private legacyService: LegacyService,\n private snackBar: MatSnackBar,\n private sitesService: SitesService,\n private energyService: EnergyService,\n private loadCurveService: LoadCurveService,\n private filterService: FilterService,\n private djuService: DjuService,\n private meteoService: MeteoService\n ) {}\n\n ngOnInit() {\n this.route.params.subscribe(async params => {\n /** Initializes data for meteo information dropdowns **/\n await this.initMeteoInformation();\n this.getSiteWithProperties(params['id']);\n this.fluidCategoryUrl = params['fluidCategory'];\n this.fluidCategory = this.energyService.normalizeFluidCategory(this.fluidCategoryUrl);\n });\n }\n\n /**\n * Init the meteo station informations\n */\n private async initMeteoInformation(): Promise {\n this.availableTemperatures = await this.djuService.getReferenceTemperaturesHot();\n this.availableTemperaturesCold = await this.djuService.getReferenceTemperaturesCold();\n this.availableMethods = await this.djuService.getDjusComputeMethods();\n this.availableMeteoStations = await this.meteoService.getMeteoStations();\n }\n\n public async onChangeReferenceTemperatureCold(temperature: number): Promise {\n this.selectedTemperatureCold = temperature;\n\n await this.updateSiteMeteoInformation({\n temperatureReferenceCold: temperature,\n });\n }\n\n public async onChangeReferenceTemperatureHot(temperature: number): Promise {\n this.selectedTemperature = temperature;\n\n await this.updateSiteMeteoInformation({\n temperatureReference: temperature,\n });\n }\n\n /**\n * Handle selection of new dju method\n */\n public async onMethodChange(method: string) {\n this.selectedMethod = method;\n\n await this.updateSiteMeteoInformation({\n method,\n });\n }\n\n /**\n * Handle selection of new meteo station\n */\n public async onMeteoStationChange(meteoStation: string) {\n this.selectedMeteoStation = meteoStation;\n await this.updateSiteMeteoInformation({\n meteoStationId: meteoStation,\n });\n }\n\n async saveProfile(updateLegacyData: boolean = true) {\n // Check for heavy modifications to open a swal in case of legacy data reset.\n const isMultizonedChanged = this.isMultizoneChangedNotSaved;\n const natureChanged = this.isNatureChangedNotSaved;\n\n if (isMultizonedChanged || (natureChanged && this.elementNature)) {\n const strType = this.legacyMultizone ? 'de la zone' : 'du site';\n const strZone = isMultizonedChanged ? 'le zonage' : '';\n const strNature = natureChanged ? 'la nature' : '';\n const strLiaison = isMultizonedChanged && natureChanged ? 'et' : '';\n const result = await Swal.fire({\n title: 'Êtes-vous sûr ?',\n text: `Vous avez changé ${strZone} ${strLiaison} ${strNature}, ceci entrainera une suppression des données patrimoniales ${strType}.`,\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, sauvegarder',\n cancelButtonText: 'Annuler',\n });\n if (result.value) {\n return this.updateSite(isMultizonedChanged, natureChanged, updateLegacyData);\n }\n return;\n }\n return this.updateSite(isMultizonedChanged, natureChanged, updateLegacyData);\n }\n\n private async updateSite(\n isMultizonedChanged: boolean,\n natureChanged: boolean,\n updateLegacyData: boolean = true,\n notify: boolean = true\n ) {\n try {\n const response = await this.profilesService.updateSite(this.site._id, this.site);\n this.site = this.formatSite(response.data);\n this.routingReferences = this.site.routingReferences;\n if (!updateLegacyData) {\n return response;\n }\n if (isMultizonedChanged || natureChanged) {\n // Reset the legacy data if there have been changes in site nature or simple/multi-zone.\n let zoneId = null;\n if (!isMultizonedChanged && natureChanged) {\n zoneId = this.site.info.batiments[this.zoneShown]\n ? this.site.info.batiments[this.zoneShown]._id\n : null;\n }\n this.isLegacyLoading = true;\n // Before reseting, we need to set the new nature and diviser to load the new templates.\n this.legacyMultizone = this.site.info.diviser;\n\n // Then we set the nature\n if (this.legacyMultizone) {\n if (this.site.info.batiments[this.zoneShown]) {\n this.elementNature = this.site.info.batiments[this.zoneShown].nature || null;\n } else {\n this.elementNature = null;\n }\n } else {\n this.elementNature = this.site.info.nature;\n }\n if (this.elementNature || isMultizonedChanged) {\n this.initLegacyLoading();\n // We delete legacy data from the site/zone\n await this.resetLegacyData(zoneId, isMultizonedChanged);\n }\n } else {\n if (this.legacyDataComponent) {\n await this.legacyDataComponent.saveData();\n\n // Load current legacy data\n const zoneId = this.site.info.batiments[this.zoneShown]\n ? this.site.info.batiments[this.zoneShown]._id\n : null;\n await this.getSiteLegacyData(zoneId);\n if (this.siteDistributionKeyComponent) {\n await this.siteDistributionKeyComponent.update();\n }\n }\n }\n if (notify) {\n Swal.fire({\n icon: 'success',\n title: 'Site sauvegardé !',\n showConfirmButton: false,\n timer: 1200,\n });\n }\n return response;\n } catch (error) {\n Swal.fire({\n icon: 'error',\n title: 'Erreur',\n text: 'Une erreur est survenue, veuillez réessayer plus tard.',\n showConfirmButton: false,\n timer: 2500,\n });\n }\n }\n\n async addZone() {\n const newbatiment = {\n name: `Zone ${this.site.info.batiments.length + 1}`,\n routingReferences: [],\n };\n\n this.site.info.batiments.push(newbatiment);\n const hasBeenUpdated: boolean = await this.checkZoneModificationAndSave(false);\n if (!hasBeenUpdated) {\n // nature changed and multizone changed has been managed by checkZoneModificationAndSave\n await this.updateSite(false, false, false, false);\n }\n Swal.fire({\n icon: 'success',\n title: 'Zone créée avec succès',\n text: 'Site mis à jour.',\n showConfirmButton: false,\n timer: 2500,\n });\n }\n\n zoneIsShown(i: number): boolean {\n return i === this.zoneShown;\n }\n\n private async loadTab(i, zone) {\n this.initLegacyLoading();\n\n this.zoneShown = i;\n this.elementNature = zone.nature;\n if (zone.nature) {\n await this.getSiteLegacyData(zone._id);\n }\n }\n\n async showZone(i: number) {\n if (this.zoneShown !== i) {\n const zone = this.site.info.batiments[i];\n if (zone) {\n try {\n await this.checkZoneModificationAndSave(true);\n await this.loadTab(i, zone);\n } catch (err) {\n if (err && err.errorCode !== 'error_updating_site') {\n Swal.fire({\n icon: 'error',\n title: 'Erreur',\n text: 'Une erreur est survenue, veuillez réessayer plus tard.',\n showConfirmButton: false,\n timer: 2500,\n });\n }\n }\n }\n }\n }\n\n /**\n * Check if current zone has been modified and needs update.\n * If so, prompt user then save.\n * @param {boolean} notify - notify that site has been updated if it needs update.\n * @returns {Promise} true if site update, false otherwise\n */\n private async checkZoneModificationAndSave(notify: boolean = false): Promise {\n const zoneToSave = this.site.info.batiments[this.zoneShown];\n const isMultizonedChanged = this.isMultizoneChangedNotSaved;\n const natureChanged = this.isNatureChangedNotSaved;\n\n let isSiteUpdated = false;\n\n const hasZoneChanged =\n zoneToSave &&\n ((zoneToSave.profilCompletion && zoneToSave.profilCompletion.changeDetected) ||\n isMultizonedChanged ||\n natureChanged);\n if (hasZoneChanged) {\n // Set that zone has no modifications to be done as it's going to be saved.\n if (zoneToSave.profilCompletion) {\n zoneToSave.profilCompletion.changeDetected = false;\n }\n\n const result = await Swal.fire({\n title: 'Modifications détectées',\n text: `Voulez-vous sauvegarder les modifications existantes ?`,\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, sauvegarder',\n cancelButtonText: 'Non',\n });\n if (result.value) {\n try {\n await this.updateSite(isMultizonedChanged, natureChanged, true, notify);\n if (this.siteDistributionKeyComponent) {\n this.siteDistributionKeyComponent.update();\n }\n isSiteUpdated = true;\n } catch (error) {\n Swal.fire({\n icon: 'error',\n title: 'Erreur',\n text: \"Une erreur est survenue lors de l'enregistrement du site, veuillez réessayer plus tard.\",\n showConfirmButton: false,\n timer: 2500,\n });\n throw { errorCode: 'error_updating_site' };\n }\n } else if (zoneToSave.profilCompletion) {\n // If site not saved, reset legacy data completion %\n zoneToSave.profilCompletion.legacyData = zoneToSave.profilCompletion.oldlegacyDataCalculated;\n }\n }\n // Set old legacy data as null, to have it set after next modifications.\n if (zoneToSave && zoneToSave.profilCompletion) {\n zoneToSave.profilCompletion.oldlegacyDataCalculated = null;\n }\n return isSiteUpdated;\n }\n\n getActiveClass(i: number): string {\n return this.zoneShown === i ? 'tab-active' : '';\n }\n\n addRoutingReferenceInZone(zone, routingReference) {\n if (!zone.routingReferences.some(rr => rr._id === routingReference._id)) {\n zone.routingReferences.push(routingReference);\n this.generateSharedRoutingReferences();\n }\n }\n\n removeRoutingReferenceInZone(zone, routingReference) {\n // delete routing references\n zone.routingReferences = zone.routingReferences.filter(rr => rr._id !== routingReference._id);\n this.generateSharedRoutingReferences();\n }\n\n /*\n * Set in storage the current site in last visited sites for dashboard display\n */\n setLastVisitedSites(site) {\n this.sessionService.setLastVisitedSites(site);\n }\n\n async removeZone(i: number) {\n const zone = this.site.info.batiments[i];\n if (zone) {\n try {\n // Delete zone only if _id exists. If doesn't exist, means that the zone has not been saved.\n // So it would delete all the site legacy data.\n if (zone._id) {\n await this.resetLegacyData(zone._id, true, false);\n }\n this.site.info.batiments.splice(i, 1);\n await this.showZone(0);\n await this.saveProfile(false);\n } catch (err) {\n Swal.fire({\n icon: 'error',\n title: 'Erreur',\n text: 'Une erreur est survenue, veuillez réessayer plus tard.',\n showConfirmButton: false,\n timer: 2500,\n });\n }\n }\n }\n\n getSitePictureAsBackground() {\n return this.mapService.getSitePictureAsBackground(this.site);\n }\n\n removePdl(pdl) {\n this.profilesService\n .deleteRoutingReference(this.site._id, pdl._id)\n .then(site => {\n if (site.data && site.data.routingReferences) {\n this.site = this.formatSite(site.data);\n this.routingReferences = site.data.routingReferences;\n }\n })\n .catch(error => {\n Swal.fire({\n icon: 'error',\n title: 'Erreur',\n text: 'Une erreur est survenue, veuillez réessayer plus tard.',\n showConfirmButton: false,\n timer: 2500,\n });\n });\n }\n\n private formatSite(site: any): any {\n if (!site.info.organization) {\n site.info.organization = this.properties.organization.id;\n }\n\n site.info.codification = site.info.codification || 0;\n site.info.surface = site.info.surface || 0;\n site.info.numberAscenseur = site.info.numberAscenseur || 0;\n site.info.numberOfPeople = site.info.numberOfPeople || 0;\n site.info.buildDate = site.info.buildDate || '';\n site.info.diviser = site.info.diviser || false;\n\n if (site.info.profilCompletion && site.info.profilCompletion.legacyData) {\n this.legacyDataCompletion = site.info.profilCompletion.legacyData;\n } else {\n this.legacyDataCompletion = 0;\n }\n\n site.dju.method = site.dju.method || 'costic';\n site.dju.temperatureReference = site.dju.temperatureReference || 19;\n site.dju.temperatureReferenceCold = site.dju.temperatureReferenceCold || 18;\n site.meteoStation = site.meteoStation || null;\n\n return site;\n }\n\n private generateSharedRoutingReferences() {\n const sharedRoutingReferences = this.site.info.sharedRoutingReferences || [];\n\n // list all routing references and associated zone. With at least 2 zones associated\n const routingReferences = this.createRoutingReferenceListWithBatiments();\n\n const sharedPdlsArray = routingReferences.map(sharedRRef => {\n // search if routing reference were already shared\n const searchRf = sharedRoutingReferences.find(x => x.routingReference === sharedRRef.routingReference);\n\n // If not found, it means it's a newly shared pdl\n if (!searchRf) {\n const ratio = 1 / sharedRRef.zones.length;\n return {\n routingReference: sharedRRef.routingReference,\n type: 'percent_auto', // By default percent repartition\n zones: sharedRRef.zones.map(zone => {\n return { zone, ratio };\n }),\n };\n }\n // If found, we just have to update the zones contained in the shared routing reference\n const zones = [];\n sharedRRef.zones.forEach(zone => {\n const searchZone = searchRf.zones.find(x => x.zone === zone);\n if (searchZone) {\n zones.push(searchZone);\n } else {\n zones.push({\n zone,\n ratio: 0,\n });\n }\n });\n searchRf.zones = zones;\n return searchRf;\n });\n this.site.info.sharedRoutingReferences = sharedPdlsArray;\n if (this.siteDistributionKeyComponent) {\n this.siteDistributionKeyComponent.update();\n }\n }\n\n /**\n * @returns list of zones associated to each routing reference, if there is more than one zone associated.\n */\n private createRoutingReferenceListWithBatiments(): Array<{ routingReference: string; zones: string[] }> {\n const routingReferences = [];\n\n this.site.routingReferences.forEach(routingReference => {\n const zones = [];\n this.site.info.batiments.forEach(zone => {\n const hasPdl = zone.routingReferences.some(x => x._id === routingReference._id);\n if (hasPdl) {\n zones.push(zone._id);\n }\n });\n if (zones.length > 1) {\n routingReferences.push({\n routingReference: routingReference._id,\n zones,\n });\n }\n });\n\n return routingReferences;\n }\n\n /**\n * Update routing reference zone ratio when user change it in the view\n */\n public async updateSharedRoutingReference(sharedRRefs: any[]): Promise {\n this.site.info.sharedRoutingReferences = sharedRRefs;\n }\n\n private async getSiteWithProperties(id: string) {\n try {\n this.properties = await this.profilesService.getSiteProperties();\n const response = await this.profilesService.getSiteProfile(id);\n this.site = this.formatSite(response.data);\n this.selectedMeteoStation = this.site.meteoStation;\n this.selectedMethod = this.site.dju.method;\n this.selectedTemperature = this.site.dju.temperatureReference;\n this.selectedTemperatureCold = this.site.dju.temperatureReferenceCold;\n this.routingReferences = this.site.routingReferences;\n this.loading = false;\n\n this.setLastVisitedSites(this.site);\n\n this.legacyMultizone = this.site.info.diviser;\n // Au chargement, si le site n'est pas multizone\n if (!this.site.info.diviser) {\n this.elementNature = this.site.info.nature;\n // Charger les données si une nature est sélectionnée\n if (this.site.info.nature) {\n this.getSiteLegacyData();\n }\n // Si le site est multi-zone\n } else {\n // Charger les données de la première zone si pas de zone en cours.\n if (this.site.info.batiments && this.site.info.batiments.length && this.zoneShown === null) {\n this.loadTab(0, this.site.info.batiments[0]);\n }\n }\n } catch (e) {\n this.properties = [];\n this.site = null;\n this.routingReferences = [];\n this.loading = false;\n }\n }\n\n private async getSiteLegacyData(zoneId?: string) {\n this.isLegacyLoading = true;\n\n try {\n const dataTemplate = await this.legacyService.getConfigTemplate(this.elementNature);\n\n this.configLegacyData = dataTemplate;\n this.hasLegacyTemplate = true;\n\n try {\n const dataLegacy = await this.legacyService.getLegacyData(this.site._id, zoneId);\n this.legacyData = [];\n dataLegacy.data.forEach(val => {\n const obj = {\n key: val.key,\n value: val.values[0] ? val.values[0].value : null,\n };\n this.legacyData.push(obj);\n });\n this.hasLegacyData = true;\n this.isLegacyLoading = false;\n } catch (error) {\n this.legacyData = [];\n this.isLegacyLoading = false;\n }\n } catch (err) {\n this.isLegacyLoading = false;\n if (err.errorCode === 'no_template') {\n this.templateComingSoon = true;\n }\n }\n return this.legacyData;\n }\n\n /**\n * Reset legacy data for a site/zone\n * @param {string} zoneId - id of the zone\n * @param {boolean} fullDelete - fully delete legacy data or not. If false, don't delete common data (like surface, construction date, ...)\n * @param {boolean} load - load the site/zone legacy data after reseting to be sure to display the lastest legacy data\n * (partial delete and check that legacy data correctly deleted).\n */\n private async resetLegacyData(zoneId?, fullDelete = false, load = true) {\n const result = await this.legacyService.resetLegacyData(this.site._id, zoneId, fullDelete);\n if (load) {\n return this.getSiteLegacyData(zoneId);\n }\n return result;\n }\n\n private initLegacyLoading() {\n this.hasLegacyData = false;\n this.hasLegacyTemplate = false;\n this.isLegacyLoading = true;\n this.legacyData = [];\n this.configLegacyData = {};\n this.templateComingSoon = false;\n }\n\n toggleMultiZone() {\n // this.elementNature = this.site.info.diviser ? this.site.info.batiments[this.zoneShown].nature : this.site.info.nature;\n this.zoneIsShown = null;\n }\n\n getAddressToDisplay(site) {\n const streetNumber = site.streetNumber || '';\n const zipcode = site.zipcode || '';\n return site.city ? `${streetNumber} ${site.streetName} ${zipcode} ${site.city}` : site.name;\n }\n\n get followUpLink() {\n return `/${this.fluidCategoryUrl}/suivi`;\n }\n get followuUpParams(): Params {\n const params: Params = {\n [this.filterService.getParamAlias('sites')]: this.site._id,\n };\n if (this.sessionService.getCompanyId() !== this.site.company) {\n params[this.filterService.getParamAlias('companies')] = this.site.company;\n }\n return params;\n }\n get loadCurveLink(): string {\n return this.loadCurveService.loadCurveLink;\n }\n\n /**\n * Load curve params : site id and period over the last month\n */\n get loadCurveParams(): Params {\n const { ds, de } = this.loadCurveService.formatDatesParams(\n moment().subtract(1, 'month'),\n moment().subtract(1, 'd')\n );\n const params: Params = {\n s: this.site._id,\n ds,\n de,\n };\n if (this.sessionService.getCompanyId() !== this.site.company) {\n params[this.filterService.getParamAlias('company')] = this.site.company;\n }\n return params;\n }\n\n /**\n * Display load curve redirection button only if the selected site is communicating\n * @returns {boolean} true if\n */\n get displayLoadCurveBtn(): boolean {\n return this.site.communicating;\n }\n\n getMergeSiteLink() {\n return `/${this.fluidCategoryUrl}/merge/${this.site._id}`;\n }\n\n get displayLegacy() {\n const isNatureChanged = this.isNatureChangedNotSaved;\n const isMultizoneChanged = this.isMultizoneChangedNotSaved;\n return (\n !isNatureChanged &&\n this.elementNature &&\n !isMultizoneChanged &&\n !this.isLegacyLoading &&\n this.hasLegacyData &&\n this.hasLegacyTemplate\n );\n }\n\n get isMultizoneChangedNotSaved() {\n return this.legacyMultizone !== this.site.info.diviser;\n }\n\n get isNatureChangedNotSaved() {\n if (this.site.info.diviser) {\n if (this.site.info.batiments && this.site.info.batiments[this.zoneShown]) {\n return this.elementNature !== this.site.info.batiments[this.zoneShown].nature;\n } else {\n return false;\n }\n } else {\n return this.elementNature !== this.site.info.nature;\n }\n }\n\n get legacyWarningMessage() {\n let message = '';\n if (!this.elementNature) {\n message =\n 'Aucune nature sélectionnée. Veuillez selectionner un nature puis Sauvegarder pour éditer les données patrimoniales.';\n }\n if (this.isMultizoneChangedNotSaved) {\n message =\n 'Vous avez changé le zonage du site, veuillez Sauvegarder vos modifications pour éditer les données patrimoniales.';\n }\n if (this.isNatureChangedNotSaved) {\n message =\n 'Vous avez changé la nature de votre zone, veuillez Sauvegarder vos modifications pour éditer les données patrimoniales. ';\n }\n if (message && this.elementNature) {\n message += ' Ces données étant relatives à une nature de bâtiment, elles seront écrasées.';\n }\n if (this.templateComingSoon && !message) {\n return 'Les données patrimoniales pour cette nature de site arrivent bientôt';\n }\n return message;\n }\n\n async toggleStatus(value) {\n try {\n const response = await this.sitesService.updateStatusSite(this.site._id, value.checked);\n if (this.site) {\n this.updateSitePDLStatus(response.data);\n // Message to revert action if not wanted\n const message = value.checked ? 'activé' : 'désactivé';\n const snack = this.snackBar.open(`Vous avez ${message} le site`, 'Annuler', {\n duration: 5000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n // If cancel pressed, call for revert then re-update the front display history list\n snack.onAction().subscribe(async () => {\n try {\n // Get last history\n const lastHistory = this.site.status.history[this.site.status.history.length - 1];\n const res = await this.sitesService.updateStatusSite(\n this.site._id,\n value.checked,\n lastHistory._id\n );\n this.updateSitePDLStatus(res.data);\n } catch (e) {\n this.handleStatusApiError(false, e);\n }\n });\n }\n } catch (error) {\n this.handleStatusApiError(true, error);\n }\n }\n\n get siteStatus() {\n if (this.site && this.site.status) {\n return this.site.status.active;\n }\n return false;\n }\n\n get routingReferenceStatusText() {\n return this.siteStatus ? 'Actif' : 'Inactif';\n }\n\n private sortHistoryDateAsc() {\n if (this.site && this.site.status && this.site.status.history) {\n this.site.status.history.sort((a, b) => (a.date < b.date ? -1 : 1));\n }\n }\n\n /**\n * Handle error on status changed.\n * @param {boolean} resetToggle - reset the toggle back to its original state\n * @param {ApiCitronError} err - errorCode is used to display the correct message\n * @return {(error) => any}\n */\n private handleStatusApiError(resetToggle: boolean, err: ApiCitronError) {\n if (resetToggle) {\n // Timeout so that it goes back to the initial place not instantaneously.\n setTimeout(() => {\n this.statusToggle.toggle();\n }, 400);\n }\n\n const msg = {\n statusInconsistent_deactivationDate_too_close:\n \"Il doit s'être écoulé 3 mois sans données pour pouvoir désactiver un PDL\",\n default: 'Une erreur est survenue, merci de réessayer ultérieurement.',\n };\n const display: string = msg[err.errorCode] ? msg[err.errorCode] : msg.default;\n\n this.snackBar.open(display, 'Masquer', {\n duration: 5000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n }\n\n private updateSitePDLStatus(site) {\n this.site.status = site.status;\n this.sortHistoryDateAsc();\n if (site.routingReferences && site.routingReferences.length) {\n this.routingReferences.forEach(pdl => {\n const pdlSearch = site.routingReferences.find(x => x._id === pdl._id);\n if (pdlSearch) {\n pdl.status = pdlSearch.status;\n }\n });\n }\n }\n\n get siteProfileCompletion() {\n if (this.site && this.site.info && this.site.info.profilCompletion && this.site.info.profilCompletion.general) {\n return this.site.info.profilCompletion.general;\n }\n return 0;\n }\n\n get siteLegacyDataCompletion() {\n return this.legacyDataCompletion;\n }\n\n computeProfileCompletionLegacyData(prog) {\n if (this.site) {\n if (!this.site.info.profilCompletion) {\n this.site.info.profilCompletion = {};\n }\n if (this.site.info.diviser) {\n const zone = this.site.info.batiments[this.zoneShown];\n if (!zone.profilCompletion) {\n zone.profilCompletion = {};\n }\n\n if (\n zone.profilCompletion.oldlegacyDataCalculated !== null &&\n zone.profilCompletion.oldlegacyDataCalculated !== undefined &&\n prog.changed\n ) {\n zone.profilCompletion.changeDetected = true;\n }\n if (!prog.changed) {\n zone.profilCompletion.changeDetected = false;\n }\n\n if (!zone.profilCompletion.oldlegacyDataCalculated) {\n zone.profilCompletion.oldlegacyDataCalculated = prog.value;\n }\n\n zone.profilCompletion.legacyData = prog.value;\n } else {\n this.site.info.profilCompletion.legacyData = prog.value;\n }\n }\n }\n\n /**\n * @returns true if the site has shared routing references, false otherwise\n */\n get hasSharedRoutingReferences(): boolean {\n if (!this.site) {\n return false;\n }\n return (\n this.site.info.diviser &&\n this.site.info.sharedRoutingReferences &&\n this.site.info.sharedRoutingReferences.length\n );\n }\n\n /**\n * @returns {boolean} Returns true if fluid category is either energy or water, false if vehicles\n */\n get isCategoryRoutingReference(): boolean {\n return this.energyService.isCategoryForRoutingReference(this.fluidCategory);\n }\n\n /**\n * Get entities list title\n * @returns {string}\n */\n get entitiesListTitle(): string {\n if (this.isCategoryRoutingReference) {\n return 'Points de livraison du site';\n }\n return 'Véhicules du site';\n }\n\n /**\n * Custom picture part\n */\n /**\n * Upload picture and set it to site on selected file.\n * @param {Event} e - event from file input\n */\n onSelectFile(e): void {\n const files = Array.from(e.target.files);\n if (files.length) {\n const file: any = files[0];\n this.isPictureUploading = true;\n this.profilesService.updateSitePicture(file, this.site._id).subscribe(\n event => {\n if (event.type === HttpEventType.Response) {\n const data = event.body['data'];\n this.site.info.img = data.info.img;\n this.isPictureUploading = false;\n }\n },\n err => {\n const error = err.error;\n this.isPictureUploading = false;\n this.openSwalFromMessage(error.errorCode);\n }\n );\n e.target.value = '';\n }\n }\n\n /**\n * Open remove picture confirmation, and if confirmed, remove picture\n */\n async openRemovePicture(): Promise {\n const result = await Swal.fire({\n title: 'Supprimer la photo ?',\n text: 'Cette action est irreversible.',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui',\n cancelButtonText: 'Annuler',\n });\n\n if (result.value) {\n try {\n this.isPictureUploading = true;\n const res = await this.profilesService.deleteSitePicture(this.site._id);\n this.site.info.img = res.data.info.img;\n } catch (err) {\n this.openSwalFromMessage(err.errorCode);\n }\n this.isPictureUploading = false;\n }\n }\n\n /**\n * @returns true if site has a custom picture, false otherwise\n */\n get hasSiteCustomPicture(): boolean {\n return Boolean(this.site && this.site.info && this.site.info.img);\n }\n\n openSwalFromMessage(msg: string) {\n const map = {\n file_type_not_allowed: [\n 'Type de fichier non correct',\n `Le format de fichier n'est pas accepté. Les types de fichiers autorisés sont les suivants : ${this.allowedTypes.join(\n ', '\n )}`,\n 'error',\n ],\n updating_site_picture_failed: [\n \"Erreur lors de l'upload\",\n \"Impossible de changer l'image de ce site. Merci de réessayer ultérieurement.\",\n 'error',\n ],\n file_size_max: ['Fichier trop volumineux', 'La taille maximale autorisée est de 5Mo.', 'error'],\n delete_site_picture_failed: [\n 'Erreur lors de la suppression',\n \"Impossible de supprimer l'image de ce site. Merci de réessayer ultérieurement.\",\n 'error',\n ],\n };\n let values = map[msg];\n if (!values) {\n values = ['Une erreur est survenue', 'Merci de réessayer ultérieurement', 'error'];\n }\n Swal.fire(values[0], values[1], values[2]);\n }\n\n /**\n * Updates the site meteo information\n */\n async updateSiteMeteoInformation(data: {\n meteoStationId?: string;\n temperatureReference?: number;\n temperatureReferenceCold?: number;\n method?: string;\n }): Promise<{\n temperatureReference: number;\n temperatureReferenceCold: number;\n meteoStation: string;\n method: string;\n }> {\n const siteId = this.site._id;\n const { dju, meteoStation } = await this.profilesService.updateSiteMeteoInformation(siteId, data);\n this.site.dju = dju;\n this.site.meteoStation = meteoStation;\n return {\n temperatureReference: dju.temperatureReference,\n temperatureReferenceCold: dju.temperatureReferenceCold,\n method: dju.method,\n meteoStation,\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { ProfilesComponent } from './profiles.component';\n\nconst PROFILES_ROUTE = [\n {\n path: '',\n component: ProfilesComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n\n@NgModule({\n declarations: [ProfilesComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(PROFILES_ROUTE)],\n})\nexport class ProfilesModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS9yYW5raW5nL3JhbmtpbmcuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\n\nimport { RankingService } from './ranking.service';\n\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\n\nimport { DjuService } from 'app/shared/services/dju/dju.service';\n\nimport { QueryFilterRoutingRef } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\n\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-ranking',\n templateUrl: './ranking.component.html',\n styleUrls: ['./ranking.component.scss'],\n providers: [RankingService],\n})\nexport class RankingComponent implements OnInit {\n // Current fluid type page ('water' or 'energy')\n fluidCategory = 'energy';\n // Fluids accepted by the category type\n fluidsAccepted: string[] = [];\n // Set true if there is multiple fluids selected\n hasMultipleFluidsSelected = false;\n\n // Properties for top the chart\n topProperties: any = {\n isLoading: true,\n title: 'Top 10',\n datasets: [],\n labels: [],\n colors: [],\n options: {},\n legends: [],\n toggleTitles: [],\n downloadTitles: [],\n };\n\n // Properties for the flop chart\n flopProperties: any = {\n isLoading: true,\n title: 'Flop 10',\n datasets: [],\n labels: [],\n colors: [],\n options: {},\n legends: [],\n toggleTitles: [],\n downloadTitles: [],\n };\n\n queryExport: any = null;\n\n constructor(\n private route: ActivatedRoute,\n private energyService: EnergyService,\n private chartService: ChartService,\n private rankingService: RankingService,\n private filterService: FilterService,\n private djuService: DjuService\n ) {}\n\n ngOnInit() {\n if (this.route.data) {\n this.route.data.subscribe(params => {\n this.initComponent(params);\n });\n }\n }\n\n initComponent(params: Params) {\n // Set fluids available\n this.fluidCategory = 'energy';\n if (params && params['fluidCategory'] && params['fluidCategory'] === 'water') {\n this.fluidCategory = 'water';\n }\n this.fluidsAccepted = this.energyService.getFluidsByCategory(this.fluidCategory);\n }\n\n /**\n * Search for the top/flop sites mating criterias of the follow up filter\n * @param {any} filters - Object of filter coming from the follow up filter component\n */\n async search(filters: QueryFilterRoutingRef) {\n try {\n this.topProperties.isLoading = true;\n this.flopProperties.isLoading = true;\n let fluids = [];\n if (filters.energies) {\n fluids = filters.energies.split(',');\n }\n if (!filters.dateStart || !filters.dateEnd) {\n throw new Error('dates_missing');\n }\n this.hasMultipleFluidsSelected = Boolean(fluids.length > 1);\n this.queryExport = filters;\n\n const promiseArray = [this.rankingService.getConsumption(filters)];\n\n if (this.fluidCategory !== 'water') {\n promiseArray.push(this.djuService.getDJUs(filters, 'site'));\n }\n\n // Get consumption\n const response = await Promise.all(promiseArray);\n const sitesConsumptions = response[0].data;\n\n // Format consumption\n let sites = this.rankingService.formatConsumptionDataPerSite(sitesConsumptions, fluids);\n const hasDJU = Boolean(response[1]);\n // If DJUs grabbed, add quantity per DJUs to sites\n if (hasDJU) {\n const sitesDJUs = response[1];\n sites = this.rankingService.formatSitesConsumptionPerDJU(sites, sitesDJUs);\n }\n\n // Handle top sites chart\n this.handleTopSites(sites, hasDJU);\n // Handle flop sites chart\n this.handleFlopSites(sites, hasDJU);\n } catch (e) {\n // Handle top sites chart\n this.handleTopSites([]);\n // Handle flop sites chart\n this.handleFlopSites([]);\n\n if (e.message !== 'dates_missing') {\n Swal.fire(\n 'Erreur',\n 'Une erreur est survenue lors de la récupération de vos données. Merci de réessayer ultérieurement.',\n 'error'\n );\n }\n }\n }\n\n /**\n * Handle top sites chart\n * @param {Array} sites - list of sites formatted with the consumption. Must be sort by consumption ascending.\n */\n handleTopSites(sites: any[], hasDJU: boolean = false) {\n this.handleProperties(this.topProperties, sites, 1, hasDJU);\n }\n\n /**\n * Handle flop sites chart\n * @param {Array} sites - list of sites formatted with the consumption. Must be sorted by consumption ascending.\n */\n handleFlopSites(sites: any[], hasDJU: boolean = false) {\n this.handleProperties(this.flopProperties, sites, -1, hasDJU);\n }\n\n /**\n * Handle the chart properties for top or flop.\n * @param {any} properties - property to set the values of (top of flop)\n * @param {Array} sitesRaw - list of sites formatted with the consumption.\n * @param {number} sort - sort type. Set 1 to sort consumption/cost ascending, -1 for descending\n */\n handleProperties(properties: any, sitesRaw: any[], sort, hasDJU: boolean = false) {\n // Reset data\n properties.options = [];\n properties.datasets = [];\n properties.labels = [];\n properties.colors = [];\n properties.legends = [];\n properties.toggleTitles = [];\n properties.downloadTitles = [];\n\n const toggleProperties = ['quantity', 'totalHT', 'totalTTC'];\n\n if (hasDJU) {\n toggleProperties.splice(1, 0, 'quantityDju');\n }\n\n toggleProperties.forEach(toggleProperty => {\n // Sort sites list by consumption ascending\n const sites = this.sortSiteByProperty(sitesRaw, toggleProperty, sort);\n\n // Reset data\n // Get config\n const options = this.chartService.getConfig('horizontalBar', {\n tooltips: this.chartService.getTooltipHTMLConfig('stack', null, { isHorizontal: true }),\n });\n properties.options.push(options);\n const datasets = [];\n const labels = [];\n const colors = [];\n const legends = [];\n // Object to create one property per fluid (faster to access than array with find)\n const fluidDatasets = {};\n // For each site, get the consumption.\n // Create a dataset if not already existing for the fluid.\n sites.forEach(site => {\n labels.push(site.name || 'NC');\n Object.keys(site.conso).forEach(fluid => {\n if (fluid !== 'total') {\n if (!fluidDatasets[fluid]) {\n fluidDatasets[fluid] = { data: [] };\n }\n fluidDatasets[fluid].data.push(site.conso[fluid][toggleProperty]);\n }\n });\n });\n const unit = this.getCurrentUnit(toggleProperty);\n // For each dataset ( = for each fluid)\n Object.keys(fluidDatasets).forEach(fluid => {\n // Get the energy full text\n fluidDatasets[fluid].label = fluid;\n fluidDatasets[fluid].unit = unit;\n // Add the dataset to the chart\n datasets.push(fluidDatasets[fluid]);\n // Get the fluid color\n colors.push(this.chartService.getColor(fluid));\n // Get the fluid legend\n legends.push(this.chartService.getLegend(fluid));\n });\n properties.datasets.push(datasets);\n properties.labels.push(labels);\n properties.colors.push(colors);\n properties.legends.push(legends);\n const toggleTitle = this.getPropertyToggleTitle(toggleProperty);\n properties.toggleTitles.push(`${toggleTitle} (${unit})`);\n properties.downloadTitles.push(`${toggleTitle} (${unit})`);\n });\n\n properties.isLoading = false;\n }\n\n /**\n * Sort sites by a given conso property. Create a copy of sites list (just the order, not the items).\n * @param {Object[]} sites - sites list\n * @param {string} property - property to compare to sort sites by consumption\n * @param {1|-1} sort - sort order. 1 to sort by consumption ascending, -1 descending.\n */\n private sortSiteByProperty(sites: any[], property: string, sort: 1 | -1) {\n return sites\n .concat()\n .sort((a, b) => {\n if (!a.conso.total[property] && a.conso.total[property] !== 0) {\n return 1;\n }\n return (a.conso.total[property] - b.conso.total[property]) * sort;\n })\n .slice(0, 10);\n }\n\n getCurrentUnit(property) {\n if (property === 'totalTTC' || property === 'totalHT') {\n return '€';\n }\n if (this.fluidCategory === 'water') {\n return 'm³';\n }\n const baseUnit = this.hasMultipleFluidsSelected ? 'kWhep' : 'kWh';\n return baseUnit + (property === 'quantityDju' ? '/DJU' : '');\n }\n\n getPropertyToggleTitle(property) {\n switch (property) {\n default:\n case 'quantity':\n return 'Consommation';\n case 'totalTTC':\n return 'Total TTC';\n case 'totalHT':\n return 'Total HT';\n case 'quantityDju':\n return 'Consommation/DJU';\n }\n }\n\n getExportName(type) {\n const txt = 'Classement des sites';\n const date = moment()\n .format('YYYYMMDD')\n .toString();\n return `${txt}-${type}-${date}.xlsx`;\n }\n\n getExportUrl(type) {\n if (type && this.queryExport) {\n let url = `/api/export/excel/sites-consumptions/ranking`;\n url += this.filterService.formatQueryToUrl(this.queryExport);\n url += type === 'flop' ? `&ranking=flop` : `&ranking=top`;\n\n return url;\n }\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { RankingComponent } from './ranking.component';\n\nconst RANKING_ROUTE = [\n {\n path: '',\n component: RankingComponent,\n canActivate: [AccessGuard],\n },\n];\n\n@NgModule({\n declarations: [RankingComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(RANKING_ROUTE)],\n})\nexport class RankingModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { EnergyService } from '../../../shared/services/energy/energy.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\n@Injectable()\nexport class RankingService extends PageService {\n constructor(public apiService: ApiService, private energyService: EnergyService) {\n super(apiService);\n this.fake = false;\n }\n\n getConsumption(filters) {\n return this.post('/api/common/consumption', filters);\n }\n\n /**\n * Format consumption data (PDL/Site) to consumption data per site.\n * @param {Array} data - consumption data. ID is the pair routing reference / site\n * @param {Array} fluids - list of fluids to accept\n * @returns {Array} list of sites with consumption object with one property per fluid with properties totalHT, totalTTC & quantity\n */\n formatConsumptionDataPerSite(data: any[], fluids: string[]): any[] {\n // Aggregate site data\n // Not using an array as find is slow on big lists\n // Instead we use an object where each key is a site id.\n const sites = {};\n data.forEach(sitePdl => {\n let site = sites[sitePdl._id.siteId];\n // If site not in list, init simple site object with conso and name\n if (!site) {\n const initConso = {};\n fluids.forEach(fluid => {\n initConso[fluid] = {};\n initConso[fluid].totalHT = 0;\n initConso[fluid].totalTTC = 0;\n initConso[fluid].quantity = 0;\n });\n sites[sitePdl._id.siteId] = {\n _id: sitePdl._id.siteId,\n name: sitePdl.name,\n conso: initConso,\n };\n site = sites[sitePdl._id.siteId];\n }\n // Get site conso\n // If site is multi zone, check the conso of each zone and add it to the global of the site\n if (sitePdl.info.diviser) {\n sitePdl.batiments.forEach(zone => {\n if (zone.routingReferencesConso) {\n zone.routingReferencesConso.forEach(routingReferenceConso => {\n const conso = routingReferenceConso.conso;\n if (conso) {\n fluids.forEach(fluid => {\n if (site.conso[fluid] && conso[fluid]) {\n site.conso[fluid].totalHT += conso[fluid].totalHT;\n site.conso[fluid].totalTTC += conso[fluid].totalTTC;\n site.conso[fluid].quantity += conso[fluid].quantity;\n }\n });\n }\n });\n }\n });\n } else {\n const conso = sitePdl.conso;\n if (conso) {\n fluids.forEach(fluid => {\n if (site.conso[fluid] && conso[fluid]) {\n site.conso[fluid].totalHT += conso[fluid].totalHT;\n site.conso[fluid].totalTTC += conso[fluid].totalTTC;\n site.conso[fluid].quantity += conso[fluid].quantity;\n }\n });\n }\n }\n });\n // Tranform object into array, create a total property and convert fluids if needed.\n const sitesArray = Object.keys(sites).map(key => {\n const site = sites[key];\n const total = {\n totalHT: 0,\n totalTTC: 0,\n quantity: 0,\n };\n Object.keys(site.conso).forEach(fluid => {\n if (fluids.length > 1) {\n site.conso[fluid].quantity = this.energyService.convertEnergyKwhToKwhep(\n fluid,\n site.conso[fluid].quantity\n );\n }\n total.quantity += site.conso[fluid].quantity;\n total.totalHT += site.conso[fluid].totalHT;\n total.totalTTC += site.conso[fluid].totalTTC;\n });\n site.conso.total = total;\n return site;\n });\n return sitesArray;\n }\n\n formatSitesConsumptionPerDJU(sites, sitesDJUs) {\n return sites.map(site => {\n const dju = sitesDJUs.find(x => x.site === site._id);\n let djuValue = null;\n if (dju && dju.hot) {\n djuValue = dju.hot;\n }\n for (const item in site.conso) {\n if (site.conso[item] && djuValue) {\n site.conso[item].quantityDju = site.conso[item].quantity / djuValue;\n } else {\n site.conso[item].quantityDju = null;\n }\n }\n return site;\n });\n }\n\n fakeData(route) {\n let response;\n\n switch (route) {\n default:\n response = [];\n break;\n }\n\n return response;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS9yZXBhcnRpdGlvbi9yZXBhcnRpdGlvbi5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport Swal from 'sweetalert2';\nimport { RepartitionService } from './repartition.service';\n\n@Component({\n selector: 'ga-repartition',\n templateUrl: './repartition.component.html',\n styleUrls: ['./repartition.component.scss'],\n providers: [RepartitionService],\n})\nexport class RepartitionComponent implements OnInit {\n sankeyProperties: any = {\n options: {},\n legend: [],\n title: 'Répartition des flux de consommation',\n };\n\n sankeyToggle = [\n {\n name: 'Consommations',\n display: true,\n isCurrency: false,\n },\n {\n name: 'Coût (HTVA)',\n display: false,\n isCurrency: true,\n },\n {\n name: 'Coûts (TTC)',\n display: false,\n isCurrency: true,\n },\n ];\n\n sankeyData: any[] = [];\n\n // For creating sides labels as Highcharts doesn't includes it\n sankeyHighchartsData: any[] = [];\n\n isLoadingData = false;\n\n hasConsumptionData = false;\n\n filters: any = {};\n\n // The display is, for now, always true\n columnsUser: Array<{\n name: string;\n display: boolean;\n }> = [\n {\n name: 'energyType',\n display: true,\n },\n {\n name: 'nature',\n display: true,\n },\n ];\n\n unit = '';\n\n constructor(\n private chartService: ChartService,\n private repartitionService: RepartitionService,\n private energieService: EnergyService,\n private sitesService: SitesService\n ) {}\n\n ngOnInit() {\n this.isLoadingData = true;\n }\n\n /**\n * Create the sankey chart with data loading.\n * @param filters from the filter component for the search query.\n */\n handleSankeyChart(filters) {\n this.repartitionService\n .getSitesWithContracts(filters)\n .then(sites => {\n return this.repartitionService.getSitesProperties().then(properties => {\n sites.data.forEach(site => {\n this.sitesService.setSiteProperties(site, properties.data);\n });\n this.sankeyData = sites.data;\n this.updateUnit();\n return this.treeRunSankey(this.sankeyData).then((data: any) => {\n if (data.data.length > 0) {\n this.sankeyProperties.options = this.chartService.getHightchartSankeyConfig(data);\n this.hasConsumptionData = true;\n } else {\n this.hasConsumptionData = false;\n }\n this.isLoadingData = false;\n });\n });\n })\n .catch(error => {\n this.hasConsumptionData = false;\n this.isLoadingData = false;\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite lors du chargement des données de vos sites\",\n 'error'\n );\n });\n }\n\n /**\n * Refresh the diagram without loading new data. For example, when adding/removing/changing a column or toggling from cost to consumption\n */\n public refreshSankey() {\n this.isLoadingData = true;\n this.updateUnit();\n this.treeRunSankey(this.sankeyData).then((data: any) => {\n if (data.data.length > 0) {\n this.sankeyProperties.options = this.chartService.getHightchartSankeyConfig(data);\n this.hasConsumptionData = true;\n } else {\n this.hasConsumptionData = false;\n }\n this.isLoadingData = false;\n });\n }\n\n /**\n * Start the research with new criterias\n * @param filters from the filter component\n */\n public search(filters) {\n this.isLoadingData = true;\n this.filters = filters;\n this.handleSankeyChart(filters);\n }\n\n /**\n * Process data to create Highchart sankey formatted series\n * @param data from the request\n * @returns {Promise} Promise with the series at the Highcharts sankey format : [[from, to, weight], ...]\n */\n private treeRunSankey(data: any) {\n return new Promise(resolve => {\n const registre = [];\n const sites = data;\n\n for (let i = 0; i < this.columnsUser.length - 1; i++) {\n registre[i] = [];\n }\n\n sites.forEach(site => {\n if (site) {\n if (!site.info.diviser && site.category && site.nature) {\n if (site.conso) {\n for (const key in site.conso) {\n if (!site.conso.hasOwnProperty(key)) {\n continue;\n }\n const weight = this.calculateWeight(site.conso[key], key);\n if (weight > 0) {\n for (let i = 0; i < this.columnsUser.length - 1; i++) {\n if (this.columnsUser[i].display) {\n this.sankeyDuplicatesHighcharts(\n registre[i],\n this.createSegment(\n this.columnsUser[i].name,\n this.columnsUser[i + 1].name,\n site,\n weight,\n key\n )\n );\n }\n }\n }\n }\n }\n } else if (site.info.diviser && site.conso) {\n for (const key in site.conso) {\n if (!site.conso.hasOwnProperty(key)) {\n continue;\n }\n site.category = 'PDL Non Associé';\n site.nature = 'PDL Non Associé ';\n site.name = site.name ? site.name : 'PDL Non Associé ';\n const weight = this.calculateWeight(site.conso[key], key);\n if (weight > 0) {\n for (let i = 0; i < this.columnsUser.length - 1; i++) {\n if (this.columnsUser[i].display) {\n this.sankeyDuplicatesHighcharts(\n registre[i],\n this.createSegment(\n this.columnsUser[i].name,\n this.columnsUser[i + 1].name,\n site,\n weight,\n key\n )\n );\n }\n }\n }\n }\n } else if (site.info.diviser && site.batiments.length > 0) {\n site.batiments.forEach(zone => {\n if (zone.category && zone.nature && zone.name) {\n if (zone.routingReferencesConso && zone.routingReferencesConso.length > 0) {\n zone.routingReferencesConso.forEach(rfConso => {\n if (rfConso.conso && Object.keys(rfConso.conso).length !== 0) {\n for (const key in rfConso.conso) {\n if (!rfConso.conso.hasOwnProperty(key)) {\n continue;\n }\n const weight = this.calculateWeight(rfConso.conso[key], key);\n if (weight > 0) {\n for (let i = 0; i < this.columnsUser.length - 1; i++) {\n if (this.columnsUser[i].display) {\n zone.parent = site.name;\n zone.zipcode = site.zipcode;\n this.sankeyDuplicatesHighcharts(\n registre[i],\n this.createSegment(\n this.columnsUser[i].name,\n this.columnsUser[i + 1].name,\n zone,\n weight,\n key\n )\n );\n }\n }\n }\n }\n }\n });\n }\n }\n });\n }\n }\n });\n\n const series = [];\n // Get the total weight for percentages\n const total = registre[0].reduce((a, b) => a + b[2], 0);\n for (let i = 0; i < this.columnsUser.length - 1; i++) {\n if (this.columnsUser[i].display) {\n series[i] = registre[i];\n }\n }\n\n // Here we sort the series, to have it displayed clearer (avoid unecessary segements crossing)\n series.forEach(serie => {\n serie.sort((a, b) => {\n if (!a[0]) {\n return 1;\n }\n if (!b[0]) {\n return -1;\n }\n const sort1 = a[0].localeCompare(b[0]);\n if (sort1 !== 0) {\n return sort1;\n }\n if (!a[1]) {\n return 1;\n }\n if (!b[1]) {\n return -1;\n }\n return a[1].localeCompare(b[1]);\n });\n });\n\n this.sankeyHighchartsData = series;\n resolve({ data: series, total, unit: this.unit });\n });\n }\n\n /**\n * Create one segment for highcharts sankey diagram\n * @param {string} colFrom name of the origin column\n * @param {string} colTo name of the destination column\n * @param site object of the site\n * @param {number} weight of the segment\n * @param {string} key energy type\n * @returns {Array} the segment [from, to, weight]\n */\n private createSegment(colFrom: string, colTo: string, site, weight: number, key: string): any[] {\n let from;\n let to;\n const fillCol = (col, ts) => {\n let res;\n switch (col) {\n case 'energyType':\n res = ts.energyFullText(key);\n break;\n case 'zone':\n res = site.name + ' ';\n break;\n case 'name':\n res = site.parent ? site.parent : site[col];\n break;\n case 'zipcode':\n if (site.region) {\n res = site.region;\n } else {\n res = site.zipcode ? site.zipcode : 'Code postal inconnu';\n }\n break;\n case 'category':\n res = site[col] ? site[col] : 'Catégorie inconnue';\n break;\n case 'nature':\n res = site[col] ? site[col] : 'Nature inconnue';\n break;\n case 'subcategory':\n res = site[col] ? site[col] : 'Sous-catégorie inconnue';\n break;\n case 'complement':\n res = site[col] ? site[col] : 'Complément inconnu';\n break;\n default:\n res = site[col] ? site[col] : 'Erreur inconnue';\n break;\n }\n return res;\n };\n from = fillCol(colFrom, this.energieService);\n to = fillCol(colTo, this.energieService);\n return [from, to, weight];\n }\n\n /**\n * Add value to the registre if not a duplicate. Increment otherwise.\n * Applicable for Highcharts only\n **/\n private sankeyDuplicatesHighcharts(registre: any[], value: any[]) {\n let found = false;\n for (const r of registre) {\n if (r[0] === value[0] && r[1] === value[1]) {\n r[2] += value[2];\n found = true;\n }\n }\n if (!found) {\n registre.push(value);\n }\n }\n\n /**\n * Calculate the weight. Convert it if multiple energies\n * @param conso consumption object\n * @param key energy type of the consumption\n * @returns {number} Weight\n */\n private calculateWeight(conso, key) {\n let weight = 0;\n if (this.sankeyToggle[0].display) {\n if (this.filters.energies && this.filters.energies.split(',').length > 1) {\n weight = this.energieService.convertEnergyKwhToKwhep(key, conso.quantity);\n } else {\n weight = conso.quantity;\n }\n } else if (this.sankeyToggle[1].display) {\n weight = conso.totalHT;\n } else if (this.sankeyToggle[2].display) {\n weight = conso.totalTTC;\n }\n return weight;\n }\n\n public hasDataForSankey() {\n return !this.isLoadingData && this.hasConsumptionData;\n }\n\n public updateUnit() {\n const selected = this.sankeyToggle.filter(x => x.display);\n if (selected.length > 0) {\n if (selected[0].isCurrency) {\n this.unit = '€';\n } else {\n if (this.filters.energies) {\n if (this.filters.energies.split(',').length > 1) {\n this.unit = 'kWhep';\n } else {\n this.unit = 'kWh';\n }\n }\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { RepartitionComponent } from './repartition.component';\n\nconst REPARTITION_ROUTE = [\n {\n path: '',\n component: RepartitionComponent,\n canActivate: [AccessGuard],\n data: { page: 'energy' },\n },\n];\n\n@NgModule({\n declarations: [RepartitionComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(REPARTITION_ROUTE)],\n})\nexport class RepartitionModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\n@Injectable()\nexport class RepartitionService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n }\n\n getSitesWithContracts(filters) {\n filters.companyIdTargeted = filters.companyId;\n return this.post('/api/common/consumption', filters);\n }\n\n getSitesProperties() {\n return this.get('/api/sites/company/available/properties');\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS9zaXRlcy1saXN0L3NpdGVzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\n\n// services\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\nimport { SitesListService } from './sites-list.service';\n\nimport { combineLatest, Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\n// interfaces\nimport { Marker, MarkerType } from 'app/shared/models/marker.interface';\nimport { RoutingReferencePopulated } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulated, SitePopulatedContracts } from 'app/shared/models/site.interface';\nimport { VehiclePopulated } from 'app/shared/models/vehicle.interface';\nimport { SortService } from 'app/shared/services/sort/sort.service';\n\n@Component({\n selector: 'ga-sites-list',\n templateUrl: './sites-list.component.html',\n styleUrls: ['./sites-list.component.scss'],\n providers: [SitesListService],\n})\nexport class SitesListComponent implements OnInit, OnDestroy {\n sites: SitePopulated[];\n pdls: RoutingReferencePopulated[];\n vehicles: VehiclePopulated[];\n markers: Marker[] = [];\n dataTiles: any[] = [];\n subTableTitle = '';\n subTableItems: Array = []; // elements from sites to display under the sites list (routing references / vehicles)\n currentSelection: SitePopulatedContracts = null;\n fluidCategory: string;\n fluidCategoryClass: string;\n fluidsAccepted: string[] = [];\n companies: Array<{ displayName: string; value: string }> = [];\n companyId: string = null;\n /**\n * Holds the Ids of the selected companies\n * @private\n */\n private companyIds: string[] = [];\n\n siteSubscription: Subscription = null;\n\n /**\n * Indicates if sites list is loading\n */\n public isLoading = false;\n\n constructor(\n private pdlService: SitesListService,\n private tilesService: TilesService,\n private route: ActivatedRoute,\n private router: Router,\n private mapService: MapService,\n private energyService: EnergyService,\n private filterService: FilterService,\n private sortService: SortService\n ) {}\n\n ngOnInit() {\n /**\n * combineLatest : When any observable emits a value, emit the latest value from each.\n * We don't want it to be triggered by a siteId param change\n */\n combineLatest([this.route.queryParams, this.route.data]).subscribe({\n next: ([params, data]) => {\n /**\n * Update fluid category if it has changed\n */\n const hasRouteDataChanged: boolean = this.handleRouteDataChanges(data);\n const hasCompaniesChanged: boolean = this.handleCompanyIdsChanges(params);\n /**\n * If one of the data above changed, refresh sites list\n */\n if (hasRouteDataChanged || hasCompaniesChanged) {\n this.refreshSitesDisplayed(params);\n }\n },\n });\n this.initCompanies();\n }\n\n /**\n * Handles the changes in the Router data. Returns true if the data changed\n * @param {any} data\n * @returns {boolean} hasDataChanged\n */\n private handleRouteDataChanges(data: any): boolean {\n const hasDataChanged: boolean = Boolean(\n data && data.fluidCategory && data.fluidCategory !== this.fluidCategory\n );\n if (!hasDataChanged) {\n return false;\n }\n this.fluidCategory = 'energy'; // default value\n if (data && data.fluidCategory && this.energyService.getAllFluidCategories().includes(data.fluidCategory)) {\n this.fluidCategory = data.fluidCategory;\n }\n this.fluidsAccepted = this.energyService.getFluidsByCategory(this.fluidCategory);\n this.fluidCategoryClass = this.energyService.getFluidCategoryFrench(this.fluidCategory);\n this.setSubTableProperties();\n return true;\n }\n\n /**\n * Checks if company Ids' in parameters changed and updates the component internal state accordingly\n * @param {Params} params - the parameters containing the companyIds\n * @returns {boolean} hasCompanyIdsChanged - true if the companyIds have changed\n */\n private handleCompanyIdsChanges(params: Params): boolean {\n if (\n !params ||\n !this.filterService.getParamAliasValue(params, 'companies') ||\n this.companyIds.join(',') === this.filterService.getParamAliasValue(params, 'companies')\n ) {\n return false;\n }\n this.companyIds = this.filterService.getParamAliasValues(params, 'companies', []);\n return true;\n }\n\n /**\n * Checks if the companyIds in the url parameters changed and updates the internal companyIds if necessary\n * @param {Params} params - the parameters containing the companyIds\n * @returns {Promise}\n */\n private async refreshSitesDisplayed(params: Params): Promise {\n this.emptyRoutingReferencesTable();\n const loadDefaultSite: boolean = !Boolean(params && params.siteId);\n await this.refreshSites(loadDefaultSite);\n }\n\n /**\n * Refresh sites list with current company and fluid\n * @param {boolean} loadDefaultSite - if true, will load default site in list (unless it can't be loaded), if false doesn't load default site\n * Default site is the first in list.\n * @returns {Promise}\n */\n private async refreshSites(loadDefaultSite: boolean = true): Promise {\n try {\n const energies: string = this.fluidsAccepted.join(',');\n this.isLoading = true;\n this.sites = [];\n const response: SitePopulated[] = await this.pdlService.getSitesPopulatedFiltered({\n energies,\n companyId: this.companyId,\n companies: this.companyIds.join(','),\n });\n\n this.currentSelection = null;\n\n this.sites = response;\n\n if (this.sites && this.sites.length && (loadDefaultSite || !this.isCurrentSiteInSitesList)) {\n let currentSite = this.sites[0];\n\n for (let i = 0; i < this.sites.length - 1; i++) {\n const siteToCompare = this.sites[i];\n const result = this.sortService.compareStrings(currentSite.complement, siteToCompare.complement);\n currentSite = result === 1 ? siteToCompare : currentSite;\n }\n\n this.selectSite(currentSite._id);\n }\n\n let type: MarkerType = 'energy';\n if (this.fluidCategory === 'water') {\n type = 'water';\n } else if (this.fluidCategory === 'vehicle') {\n type = 'fuel';\n }\n this.markers = this.mapService.getMarkersFromSites(this.sites, type);\n\n /**\n * Refresh subscription of queryParams for siteId on site selected\n */\n this.subscribeSiteParam();\n this.isLoading = false;\n } catch (error) {\n this.sites = [];\n this.pdls = [];\n this.vehicles = [];\n this.markers = [];\n this.subTableItems = [];\n this.isLoading = false;\n Swal.fire('Toutes nos excuses', \"Une erreur s'est produite lors du chargement de vos sites\", 'error');\n }\n }\n\n /**\n * Subscribe to site in queryParameters and change the selected site if necessary\n */\n private subscribeSiteParam() {\n if (this.siteSubscription) {\n this.siteSubscription.unsubscribe();\n }\n this.siteSubscription = this.route.queryParams\n .pipe(\n filter(params => 'siteId' in params),\n map(params => params.siteId),\n distinctUntilChanged()\n )\n .subscribe({\n next: siteId => {\n if (siteId) {\n this.setSelectedSite(siteId);\n }\n },\n });\n }\n\n /**\n * Init companies by getting the branches (for the select box in case of linked companies)\n */\n private async initCompanies() {\n this.companies = await this.filterService.getCompanyAndAllBranchesForFilter();\n }\n\n /**\n * Set the name of the sub table where are displayed the routing references or vehicles.\n * Set if the table's items must be filtered per fluid.\n * Depend on the fluid category.\n */\n private setSubTableProperties() {\n this.subTableTitle = this.isSourceRoutingReference() ? 'Points de livraison du site' : 'Véhicules du site';\n }\n\n /**\n * Empty the routing references table\n */\n private emptyRoutingReferencesTable() {\n this.subTableItems = [];\n }\n\n /**\n * Create data tiles for site information : number of active and inactive for every fluid accepted\n */\n private createTilesFromSite() {\n const total: {\n [key: string]: { enabled: number; disabled: number };\n } = {};\n this.fluidsAccepted.forEach(energy => (total[energy] = { enabled: 0, disabled: 0 }));\n\n this.pdls.forEach(pdl => {\n if (Array.isArray(pdl)) {\n pdl = pdl[0];\n }\n\n if (this.fluidsAccepted.includes(pdl.energyType)) {\n if (pdl.status && pdl.status.active) {\n total[pdl.energyType].enabled++;\n } else {\n total[pdl.energyType].disabled++;\n }\n }\n });\n\n if (this.fluidsAccepted.includes('fuel')) {\n total['fuel'] = { enabled: this.vehicles.length, disabled: 0 };\n }\n\n const messageSource = this.isSourceRoutingReference() ? 'PDL ACTIF' : 'VEHICULE';\n this.dataTiles = Object.keys(total)\n .filter(energy => total[energy].enabled > 0 || total[energy].disabled > 0)\n .map(energy => {\n const messagePlural = total[energy].enabled > 1 ? 'S' : '';\n const tile: any = this.tilesService.getTile(\n energy,\n total[energy].enabled,\n messageSource + messagePlural\n );\n tile.modifier = 'full';\n return tile;\n });\n }\n\n /**\n * Returns true if fluid category is either energy or water, false if vehicles\n * @returns {boolean}\n */\n private isSourceRoutingReference() {\n return ['energy', 'water'].includes(this.fluidCategory);\n }\n\n /**\n * Set selected site\n * @param {string} siteId - site string id\n */\n private async setSelectedSite(siteId: string) {\n try {\n this.currentSelection = await this.pdlService.getSitePopulatedWithContractsDates(siteId);\n\n this.setItemsForSubtable(this.currentSelection.vehicles, this.currentSelection.routingReferences);\n\n this.createTilesFromSite();\n } catch (error) {\n this.pdls = [];\n this.vehicles = [];\n this.createTilesFromSite();\n }\n }\n\n /**\n * Set routing references & vehicles for sub-table. Selected the items to display.\n * @param {VehiclePopulated[]} vehicles\n * @param {RoutingReferencePopulated[]} routingReferences\n */\n private setItemsForSubtable(vehicles: VehiclePopulated[], routingReferences: RoutingReferencePopulated[]) {\n this.vehicles = vehicles;\n this.pdls = routingReferences;\n this.subTableItems = this.isSourceRoutingReference() ? this.pdls : this.vehicles;\n }\n\n /**\n * Synchonously get site by id in sites list\n * @param {string} siteId - site id to get\n * @returns {SitePopulated} site object\n */\n private getSiteById(siteId: string): SitePopulated {\n return this.sites.find(site => site._id === siteId);\n }\n\n /**\n * Is current site in sites list\n * @returns {boolean} true if currently selected site is in sites list or no selection, false otherwise.\n */\n private isCurrentSiteInSitesList(): boolean {\n if (!this.currentSelection) {\n return true;\n }\n return Boolean(this.getSiteById(this.currentSelection._id));\n }\n\n /**\n * Select site in table when a map marker is selected.\n * @param marker\n */\n onMarkerSelect(marker: Marker) {\n this.selectSite(marker.data._id);\n }\n\n /**\n * Action on site selected in list.\n * Update queryParams for siteId that will trigger queryParams subscription for site id\n * @param {string} siteId - site id selected\n */\n public selectSite(siteId: string) {\n // changes the route without moving from the current view or\n // triggering a navigation event\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: { siteId },\n // preserve the existing query params in the route\n queryParamsHandling: 'merge',\n skipLocationChange: false,\n });\n }\n\n ngOnDestroy() {\n if (this.siteSubscription) {\n this.siteSubscription.unsubscribe();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from 'app/shared/services/guards/access-guard.service';\nimport { SitesListComponent } from './sites-list.component';\n\nconst SITES_LIST_ROUTE = [\n {\n path: '',\n component: SitesListComponent,\n canActivate: [AccessGuard],\n },\n];\n\n@NgModule({\n declarations: [SitesListComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(SITES_LIST_ROUTE)],\n})\nexport class SitesListModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\nimport { SitePopulated, SitePopulatedContracts } from 'app/shared/models/site.interface';\n\nimport * as moment from 'moment';\n@Injectable()\nexport class SitesListService extends PageService {\n constructor(\n public apiService: ApiService,\n private sessionService: SessionService,\n private sitesService: SitesService\n ) {\n super(apiService);\n }\n\n /**\n * Get sites matching the filters.\n * Each site is populated with its routing references vehicles.\n * Routing references are populate with their contracts.\n * Vehicles are populated with their fuel cards.\n * @param {{[key: string]: string}} filters\n * @returns {Promise<{SitePopulated[]>}\n */\n async getSitesPopulatedFiltered(filters: { [key: string]: string }): Promise {\n try {\n const sites = await this.sitesService.getSites(filters);\n\n return sites.data;\n } catch (e) {\n throw e;\n }\n }\n\n /**\n * Get site populated with its routing references and vehicles.\n * Routing references and vehicles are populated with their contracts.\n * Inside routing references, contracts are populated with only their own routing references. Each routing ref contains its dates coming from bills (routing ref/contract).\n * Inside vehicles, contracts are populated with their own fuel cards. Each fuel card contains its dates coming from bills (vehicle/contract/fuelcard).\n * @param {string} siteId\n * @returns {Promise} site populated with vehicles/routing references & contracts' dates per routing ref/fuel card\n */\n async getSitePopulatedWithContractsDates(siteId: string): Promise {\n try {\n const site = await this.get('/api/sites/profile/' + siteId);\n return site.data;\n } catch (e) {\n throw e;\n }\n }\n\n /**\n * Returns monthsdata aggregated by month or year between dateStart and dateEnd.\n * If a number of years is specified for historic, we extend the dateStart.\n * @param {string} contractId\n * @param {string} routingReference\n * @param {string} start\n * @param {string} end\n * @param {boolean} isByYear\n * @param {number} nbYearsHistoric\n * @return {Promise} Array of month data aggregated.\n * The only difference between monthly and yearly is on the property \"month\": nb of month for which we have data/ index of the month between 0 and 11.\n * aggregated per year:\n * [{ consumption: {heating: {quantity: 0, amount: 0}, ecs: {quantity: 0, amount: 0}, total: {quantity: 0, amount: 0}}\n dateEnd: \"2016-08-31T23:59:59.999Z\"\n dateStart: \"2016-08-01T00:00:00.000Z\"\n days: 31\n energyType: \"heating\"\n miscellaneous: {telegestion: {amount: 0}, gestion: {amount: 0}}\n month: 7\n regulation: {heating: {quantity: 0, amount: 0}, ecs: {quantity: 0, amount: 0}, total: {quantity: 0, amount: 0}}\n subscription: {heating: {amount: 680.34}, ecs: {amount: 425.21}, total: {amount: 0}}\n totalHT: {amount: 1105.55}\n totalTTC: {amount: 1166.36}\n totalTVA: {amount: 0}\n unit: \"kwh\"\n year: 2016\n }, ...]\n */\n getByMonthOrYear(\n energy: string = '',\n contractId: string = '',\n routingReference: string,\n start: string,\n end: string,\n isByYear: boolean = false,\n nbYearsHistoric: number = 0\n ) {\n let modifiedStart = start;\n if (isByYear) {\n modifiedStart = moment(start, 'DD/MM/YYYY')\n .subtract(nbYearsHistoric, 'y')\n .format('DD/MM/YYYY')\n .replace(/\\//g, '%2F');\n } else {\n modifiedStart = start.replace(/\\//g, '%2F');\n }\n const modifiedEnd = end.replace(/\\//g, '%2F');\n const monthOrYear = isByYear ? 'yearly' : 'monthly';\n let route = `/api/common/bills/${monthOrYear}?routingReference=${routingReference}&start=${modifiedStart}&end=${modifiedEnd}&energy=${energy}`;\n\n if (contractId) {\n route += `&contract=${contractId}`;\n }\n\n return this.get(route);\n }\n\n /**\n * Export Page, graph or table in an Excel document.\n * @param type\n * @return {any}\n */\n getExportExcelUrl(type, periodSelected, routingRef, contract, isDjuActivated, energy) {\n if (type && periodSelected && periodSelected.dateStart && periodSelected.dateEnd && routingRef) {\n const start = moment(periodSelected.dateStart, 'YYYY-MM')\n .startOf('month')\n .format('DD/MM/YYYY');\n const end = moment(periodSelected.dateEnd, 'YYYY-MM')\n .subtract(1, 'months')\n .endOf('month')\n .format('DD/MM/YYYY');\n\n let url = `/api/export/excel/pdl/${type}?routingReferenceId=${routingRef}&start=${start}&end=${end}&energy=${energy}`;\n url += contract ? `&contract=${contract}` : '';\n\n url += isDjuActivated && type === 'consumption' ? `&dju=true` : '';\n return url;\n }\n return null;\n }\n\n /**\n * Return the Excel document name.\n * @param txt\n * @return {any}\n */\n getExportName(txt, periodSelected, routingRef, contract) {\n if (\n routingRef &&\n routingRef.reference &&\n periodSelected &&\n periodSelected.dateStart &&\n periodSelected.dateEnd\n ) {\n const dateForTitle = periodSelected.dateStart + ' - ' + periodSelected.dateEnd;\n\n if (contract && contract.reference) {\n return `${txt}-${routingRef.reference}-${contract.reference}-${dateForTitle}.xlsx`;\n }\n return `${txt}-${routingRef.reference}-${dateForTitle}.xlsx`;\n }\n return null;\n }\n}\n","export default \".back-button {\\n display: -webkit-box;\\n display: flex;\\n line-height: 33px;\\n padding-top: 15px;\\n padding-bottom: 15px;\\n}\\n.back-button .citron-btn {\\n margin-left: 8px;\\n font-size: 15px;\\n height: 29px;\\n padding-top: 3px;\\n padding-bottom: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2ZpeC1yZWdleC1wcm9wZXJ0eS9maXgtcmVnZXgtcHJvcGVydHkuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2ZpeC1yZWdleC1wcm9wZXJ0eS9maXgtcmVnZXgtcHJvcGVydHkuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QUNDSjtBRENJO0VBQ0ksZ0JBQUE7RUFDQSxlQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxhQUFBO0VBQ0EsZ0JBQUE7QUNDUiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2ZpeC1yZWdleC1wcm9wZXJ0eS9maXgtcmVnZXgtcHJvcGVydHkuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYmFjay1idXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbGluZS1oZWlnaHQ6IDMzcHg7XG4gICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG5cbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgaGVpZ2h0OiAyOXB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogM3B4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG4iLCIuYmFjay1idXR0b24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBsaW5lLWhlaWdodDogMzNweDtcbiAgcGFkZGluZy10b3A6IDE1cHg7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xufVxuLmJhY2stYnV0dG9uIC5jaXRyb24tYnRuIHtcbiAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBoZWlnaHQ6IDI5cHg7XG4gIHBhZGRpbmctdG9wOiAzcHg7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PaginationService } from 'app/shared/components/pagination/front/pagination-front.service';\nimport Swal from 'sweetalert2';\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\nimport { PatternService } from '../../shared/services/pattern/pattern.service';\nimport { RegexService } from '../../shared/services/regex/regex.service';\nimport { FixRegexUploadService } from '../fix-regex-upload/fix-regex-upload.service';\nimport { FixRegexPropertyService } from './fix-regex-property.service';\n\n@Component({\n selector: 'ga-fix-regex-property',\n templateUrl: './fix-regex-property.component.html',\n styleUrls: ['./fix-regex-property.component.scss'],\n providers: [FixRegexUploadService, FixRegexPropertyService, PageService, PaginationService],\n})\nexport class FixRegexPropertyComponent implements OnInit {\n loading = false;\n indexCollectSelectedGroup: any;\n arrayData: any[] = [];\n groupId = '';\n energyType = '';\n property = '';\n provider = '';\n contractType = '';\n concatEnergyProviderContractType = '';\n\n allIdentificationPatternIds = [];\n\n data: any = {\n fileProperties: [],\n regexDictionaryPerIdentPattern: {},\n };\n\n constructor(\n private regexService: RegexService,\n private regexFixPatternService: FixRegexPropertyService,\n private regexFixUploadService: FixRegexUploadService,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private pageService: PageService,\n private patternService: PatternService,\n private paginationService: PaginationService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.subscribe(queryParams => {\n if (queryParams.hasOwnProperty('index')) {\n this.indexCollectSelectedGroup = Number(queryParams.index);\n }\n });\n\n this.route.params.subscribe(params => {\n this.groupId = params.groupId;\n this.property = params.property;\n\n this.energyType = decodeURIComponent(params.energy);\n this.provider = decodeURIComponent(params.provider);\n this.contractType = decodeURIComponent(params.contractType);\n\n switch (this.energyType) {\n case 'gas':\n this.energyType = 'gaz';\n break;\n }\n\n this.initData();\n });\n this.concatEnergyProviderContractType =\n this.removeStringSpaces(this.energyType) +\n this.removeStringSpaces(this.provider) +\n this.removeStringSpaces(this.contractType);\n }\n\n removeStringSpaces(str) {\n return str.replace(/\\s/g, '_');\n }\n\n resetData() {\n this.allIdentificationPatternIds = [];\n\n this.data = {\n fileProperties: [],\n regexDictionaryPerIdentPattern: {},\n };\n }\n\n getConcatEnergyProviderContractType(identificationPattern): string {\n return (\n this.removeStringSpaces(identificationPattern.energyType) +\n this.removeStringSpaces(identificationPattern.provider.name) +\n this.removeStringSpaces(identificationPattern.contractType.name)\n );\n }\n\n startLoading() {\n setTimeout(() => {\n this.loading = true;\n });\n }\n\n stopLoading() {\n setTimeout(() => {\n this.loading = false;\n });\n }\n\n async associateTextContent(uploads) {\n const uploadsWithTextcontent = await Promise.all(\n uploads.map(async upload => {\n if (upload.chunks && upload.chunks.length) {\n upload.chunks = await Promise.all(\n upload.chunks.map(async chunk => {\n const textContent = await new Promise((resolve, reject) => {\n this.regexFixPatternService\n .getUploadChunkTextContentById(upload._id.toString(), chunk._id.toString())\n .then(textContentResult => {\n resolve(textContentResult);\n })\n .catch(error => {\n reject(error);\n });\n });\n\n chunk.textContent = {\n data: textContent,\n };\n\n return chunk;\n })\n );\n } else {\n const textContent = await new Promise((resolve, reject) => {\n this.regexFixPatternService\n .getUploadTextContentById(upload._id.toString())\n .then(textContentResult => {\n resolve(textContentResult);\n })\n .catch(error => {\n reject(error);\n });\n });\n\n upload.textContent = {\n data: textContent,\n };\n }\n\n return upload;\n })\n );\n\n return uploadsWithTextcontent;\n }\n\n async onPaginationChanged() {\n let count = 0;\n\n this.resetData();\n this.startLoading();\n\n // Get upload/chunks from index start to index stop\n const response = await this.regexFixPatternService.searchGroupFiles(\n this.groupId,\n this.energyType,\n this.provider,\n this.contractType,\n this.paginationService.pagination.indexStart,\n this.paginationService.pagination.indexEnd\n );\n\n // Associate textContent with all upload/chunk\n response.data = await this.associateTextContent(response.data);\n\n this.stopLoading();\n\n this.getIdentificationPatternIds(response.data);\n\n this.getPropertyDictionaries().then(async () => {\n const regexToDo = [];\n response.data.forEach(file => {\n let regexToCheck = '';\n if (file.identificationPattern) {\n if (file.identificationPattern.isMultiChunk && file.chunks) {\n file.chunks.forEach(chunk => {\n if (\n chunk.identificationPattern &&\n this.getConcatEnergyProviderContractType(chunk.identificationPattern) ===\n this.concatEnergyProviderContractType &&\n chunk.clothestPattern &&\n chunk.clothestPattern[this.energyType]\n ) {\n regexToCheck = this.fetchFromObject(\n chunk.clothestPattern[this.energyType],\n this.property\n );\n\n count = count + 1;\n const fileProperty = {\n _id: file._id,\n name: file.originalname, // Put original name\n number: count,\n energyType: this.energyType,\n patternId: chunk.clothestPattern[this.energyType]._id,\n identificationPatternId: chunk.identificationPattern._id,\n regex: this.fetchFromObject(chunk.clothestPattern[this.energyType], this.property),\n valueExtract: '',\n potentialValueExtract: '',\n oldRegex: this.fetchFromObject(\n chunk.clothestPattern[this.energyType],\n this.property\n ),\n option: 'Selectionnez un regex',\n propertyToWatch: this.property,\n textContent: chunk.textContent.data,\n closestPattern: chunk.clothestPattern[this.energyType],\n loading: true,\n chunk: chunk._id,\n };\n regexToDo.push({\n content: chunk.textContent.data.toString(),\n regex: regexToCheck,\n fileProperty,\n });\n this.data.fileProperties.push(fileProperty);\n }\n });\n } else {\n if (\n file.identificationPattern &&\n this.getConcatEnergyProviderContractType(file.identificationPattern) ===\n this.concatEnergyProviderContractType &&\n file.clothestPattern &&\n file.clothestPattern[this.energyType]\n ) {\n regexToCheck = this.fetchFromObject(file.clothestPattern[this.energyType], this.property);\n\n count = count + 1;\n const fileProperty = {\n _id: file._id,\n name: file.originalname,\n number: count,\n energyType: this.energyType,\n patternId: file.clothestPattern[this.energyType]._id,\n identificationPatternId: file.identificationPattern._id,\n regex: this.fetchFromObject(file.clothestPattern[this.energyType], this.property),\n valueExtract: '',\n potentialValueExtract: '',\n oldRegex: this.fetchFromObject(file.clothestPattern[this.energyType], this.property),\n option: 'Selectionnez un regex',\n propertyToWatch: this.property,\n textContent: file.textContent.data,\n closestPattern: file.clothestPattern[this.energyType],\n loading: true,\n };\n regexToDo.push({\n content: file.textContent.data.toString(),\n regex: regexToCheck,\n fileProperty,\n });\n this.data.fileProperties.push(fileProperty);\n }\n }\n }\n });\n for (const regexItem of regexToDo) {\n await this.testRegex(regexItem.content, regexItem.regex)\n .then(resultFromMatch => {\n regexItem.fileProperty.valueExtract = JSON.stringify(resultFromMatch);\n regexItem.fileProperty.loading = false;\n })\n .catch(err => {\n regexItem.fileProperty.valueExtract = 'Error : ' + err.errorCode;\n regexItem.fileProperty.loading = false;\n });\n }\n });\n }\n\n async initData() {\n this.resetData();\n\n const itemCount = await this.regexFixPatternService.searchGroupFilesCount(\n this.groupId,\n this.energyType,\n this.provider,\n this.contractType\n );\n this.arrayData = new Array(itemCount.data);\n }\n\n getIdentificationPatternIds(files) {\n // get the identificationPatternId, they all have the same so we get it form the first of the list\n files.forEach(file => {\n if (file.identificationPattern) {\n if (file.identificationPattern.isMultiChunk && file.chunks) {\n file.chunks.forEach(chunk => {\n if (chunk.identificationPattern && chunk.identificationPattern._id) {\n if (this.allIdentificationPatternIds.indexOf(chunk.identificationPattern._id) === -1) {\n this.allIdentificationPatternIds.push(chunk.identificationPattern._id);\n }\n }\n });\n } else {\n if (this.allIdentificationPatternIds.indexOf(file.identificationPattern._id) === -1) {\n this.allIdentificationPatternIds.push(file.identificationPattern._id);\n }\n }\n }\n });\n }\n\n getPropertyDictionaries() {\n // get the regex dictionary of the property given the identification pattern id\n this.data.regexDictionaryPerIdentPattern = {};\n\n return Promise.all(\n this.allIdentificationPatternIds.map(id => {\n return this.getDictionaryForProperty(id).then(listRegexResponse => {\n this.data.regexDictionaryPerIdentPattern[id] = listRegexResponse;\n return;\n });\n })\n ).then(responses => Promise.resolve(responses));\n }\n\n getDictionaryForProperty(identificationPatternId) {\n const route = `/api/patterns/${this.energyType}/search?identificationPatternId=${identificationPatternId}&property=${this.property}`;\n return this.pageService.get(route);\n }\n\n testRegex(text, regex) {\n return this.regexService.testRegex(text, regex);\n }\n\n fetchFromObject(obj, prop) {\n if (typeof obj === 'undefined') {\n return false;\n }\n\n const _index = prop.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));\n }\n\n return obj[prop];\n }\n\n // update the closest pattern / create a pattern with the values in the dataTable\n onSavePattern(action: string, fileProperty) {\n // if (this.regexService.hasPatternChanged(this.dataArray, this.initialDataArray)) {\n\n Swal.fire({\n title: 'Etes-vous sûr ?',\n text: this.regexFixUploadService.getSwalTitleOnSave(action),\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: this.regexFixUploadService.getSwalConfirmButtonTextOnSave(action),\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n }).then(result => {\n if (result.value) {\n /*if ( this.regexFixUploadService.hasEmptyRegex(this.dataArray) ) {\n Swal.fire(\n 'Annulé',\n 'Un regex est vide',\n 'error'\n )\n } else {*/\n\n // save pattern in db\n this.savePattern(action, fileProperty).then(\n res => {\n Swal.fire('OK', this.regexFixUploadService.getSwalSuccessOnSave(action), 'success').then(() => {\n this.onPaginationChanged();\n });\n },\n err => {\n if (err.error_code === 'error_updatePattern' || err.error_code === 'error_createNewPattern') {\n Swal.fire(\n 'Toutes nos excuses',\n this.regexFixUploadService.getSwalFailOnSave(action),\n 'error'\n ).then(() => {\n this.backToCollect();\n });\n }\n }\n );\n // }\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n Swal.fire('Annulé', '', 'error');\n }\n });\n /* } else {\n Swal.fire(\n 'Impossible',\n 'Aucun regex n\\'a été modifié',\n 'error'\n )\n } */\n }\n\n // put in database the new pattern\n savePattern(action, fileProperty) {\n switch (action) {\n case 'update':\n return this.updatePattern(fileProperty);\n\n case 'new':\n return this.createNewPattern(fileProperty);\n }\n }\n\n async updatePattern(fileProperty) {\n try {\n const route = '/api/patterns/' + fileProperty.energyType + '/crud/' + fileProperty.closestPattern._id;\n const response = await this.pageService.put(route, fileProperty.closestPattern, null, true);\n\n // now that the pattern has been successfully updated\n if (response.data.modifiedCount === 1) {\n return;\n } else {\n throw { error_code: 'error_updatePattern' };\n }\n } catch (err) {\n err.error_code = 'error_updatePattern';\n return Promise.reject(err);\n }\n }\n\n async createNewPattern(fileProperty) {\n try {\n delete fileProperty.closestPattern['_id'];\n\n const route = '/api/patterns/' + fileProperty.energyType + '/crud';\n const res: APICitronResponse = await this.pageService.post(route, fileProperty.closestPattern);\n\n fileProperty.closestPattern = res.data;\n\n // add it in db to the identificationPattern patterns list for the specific energy\n await this.addPatternToIndentificationPattern(\n fileProperty.identificationPatternId,\n fileProperty.closestPattern._id\n );\n return;\n } catch (err) {\n err.error_code = 'error_createNewPattern';\n return Promise.reject(err);\n }\n }\n\n addPatternToIndentificationPattern(id, idPattern) {\n const route = '/api/identification-patterns/update-patterns';\n\n const body = {\n id,\n idPattern,\n };\n return this.pageService.post(route, body);\n }\n\n removePatternFromPatternFix(e) {\n const route = '/api/patterns/' + e.energyType + '/crud/' + e.closestPattern._id;\n this.apiService.delete(route).toPromise();\n }\n\n backToCollect() {\n this.regexFixUploadService.backToCollect(this.groupId, this.indexCollectSelectedGroup);\n }\n\n getBackToCollectLink() {\n return this.regexFixUploadService.getBackToCollectLink(this.groupId, this.indexCollectSelectedGroup);\n }\n\n getTitle() {\n return 'Amélioration des regex de la propriété : ' + this.getPropertyTraduction();\n }\n\n getPropertyTraduction() {\n return this.patternService.getPropertyNameFromSlug(this.property, this.energyType);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { FixRegexPropertyComponent } from './fix-regex-property.component';\n\nconst REGEX_ROUTE = [\n {\n path: '',\n component: FixRegexPropertyComponent,\n canActivate: [AccessGuard],\n data: { redirectionForbiddenUrl: '/collecte', page: 'collect' },\n },\n];\n\n@NgModule({\n declarations: [FixRegexPropertyComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(REGEX_ROUTE)],\n})\nexport class FixRegexPropertyModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\nimport { SessionService } from '../../shared/services/session/session.service';\n\n@Injectable()\nexport class FixRegexPropertyService extends PageService {\n constructor(public apiService: ApiService, public sessionService: SessionService) {\n super(apiService);\n this.fake = false;\n }\n\n getDictionaryForProperty(energyType, identificationPatternId, property): Promise {\n const route = `/api/patterns/${energyType}/search?identificationPatternId=${identificationPatternId}&property=${property}`;\n\n return this.get(route);\n }\n\n searchGroupFilesCount(groupId, energyType, provider, contractType): Promise {\n const url = `/api/uploads/group-count/${groupId}`;\n\n const body = {\n companyId: this.sessionService.getCompanyId(),\n energyType,\n provider,\n contractType,\n };\n\n return this.post(url, body);\n }\n\n getUploadTextContentById(id) {\n // load the company from its id\n return this.get('/api/uploads/text-content/' + id).then(\n response => {\n if (response.code === 200) {\n return Promise.resolve(response.data);\n } else {\n const err = { error_code: 'error_loadUpload' };\n return Promise.reject(err);\n }\n },\n err => {\n err.error_code = 'error_loadUpload';\n return Promise.reject(err);\n }\n );\n }\n\n getUploadChunkTextContentById(id, idChunk) {\n // load the company from its id\n return this.get('/api/uploads/text-content/' + id + '/chunk/' + idChunk).then(\n response => {\n if (response.code === 200) {\n return Promise.resolve(response.data);\n } else {\n const err = { error_code: 'error_loadUpload' };\n return Promise.reject(err);\n }\n },\n err => {\n err.error_code = 'error_loadUpload';\n return Promise.reject(err);\n }\n );\n }\n\n searchGroupFiles(groupId, energyType, provider, contractType, indexStart, indexEnd): Promise {\n const url = `/api/uploads/group-content/${groupId}`;\n\n const body = {\n companyId: this.sessionService.getCompanyId(),\n energyType,\n provider,\n contractType,\n startIndex: indexStart,\n stopIndex: indexEnd,\n };\n\n return this.post(url, body);\n }\n\n getPatternProperties(energyType): Promise {\n return this.get('/api/properties/pattern-' + energyType);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport Swal from 'sweetalert2';\n\nimport { UploadService } from 'app/shared/services/files/upload.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport { FixRegexUploadInterface } from '../fix-regex-upload.interface';\nimport { ExtractDataArray, ExtractDataTableProperty, FixRegexUploadService } from '../fix-regex-upload.service';\n\n@Component({\n selector: 'ga-fix-regex-upload-chunk',\n templateUrl: '../fix-regex-upload.component.html',\n styleUrls: ['../fix-regex-upload.component.scss'],\n providers: [FixRegexUploadService],\n})\nexport class FixRegexUploadChunkComponent implements OnInit, FixRegexUploadInterface {\n uploadFile: any;\n chunk: any;\n energyType = '';\n identificationPatternId = '';\n textContent: any;\n indexCollectSelectedGroup: any;\n isPatternFromScratch = false;\n public get isPatternEnabled(): boolean {\n if (\n this.dataArray &&\n this.dataArray.closestPattern &&\n typeof this.dataArray.closestPattern.enabled === 'boolean'\n ) {\n return this.dataArray.closestPattern.enabled;\n }\n\n return true;\n }\n\n dataArray: ExtractDataArray = {\n dataTable: [],\n closestPattern: null,\n otherProperties: [],\n };\n\n initialDataArray: ExtractDataArray = {\n dataTable: [],\n closestPattern: null,\n otherProperties: [],\n };\n\n /** Selectable properties of the treeview */\n public selectableProperties: Array<{ displayName: string; value: string }>;\n /** Selected properties of the treeview */\n public selectedProperties: string[] = [];\n\n constructor(\n private regexService: FixRegexUploadService,\n private route: ActivatedRoute,\n private uploadService: UploadService,\n private translateService: TranslateService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.subscribe(queryParams => {\n if (queryParams.hasOwnProperty('index')) {\n this.indexCollectSelectedGroup = Number(queryParams.index);\n }\n });\n\n this.route.params.subscribe(params => {\n this.fetchPropertiesFromUpload(params.uploadId, params.chunkId);\n });\n }\n\n /**\n * Fetch upload data and retrieves all its corresponding properties.\n * @param uploadId\n * @param chunkId\n */\n private async fetchPropertiesFromUpload(uploadId: string, chunkId: string): Promise {\n try {\n const resUpload = await this.regexService.getUploadFiles(uploadId);\n const resChunk = await this.regexService.getUploadChunk(uploadId, chunkId);\n\n this.uploadFile = resUpload.data;\n this.chunk = resChunk.data;\n\n // if the params are right : the chunk belongs to the file\n if (this.chunk) {\n this.energyType = this.chunk.identificationPattern.energyType\n ? this.chunk.identificationPattern.energyType\n : this.uploadFile.identificationPattern.energyType;\n\n this.identificationPatternId = this.chunk.identificationPattern._id;\n\n this.textContent = this.chunk.textContent.data.toString();\n\n // If chunk's identification pattern first use, there is no clothestPattern\n if (this.chunk.clothestPattern) {\n const closestPatternId = this.chunk.clothestPattern[this.energyType]._id;\n const res = await this.regexService.getClosestPatternById(\n closestPatternId.trim(),\n this.energyType.trim()\n );\n this.dataArray.closestPattern = res.data;\n this.isPatternFromScratch = false;\n } else {\n this.isPatternFromScratch = true;\n this.dataArray.closestPattern = {\n requiredProperties: [],\n };\n }\n\n const allProperties = await this.regexService.getPatternProperties(this.energyType);\n\n // the array 'properties' is filled with all the other properties existing for the fluid patterns which aren't in the required properties\n this.regexService.fillDataTable(\n allProperties,\n this.dataArray,\n this.textContent,\n this.energyType,\n this.identificationPatternId\n );\n\n this.dataArray.otherProperties.sort((a, b) => a.localeCompare(b));\n\n this.selectableProperties = this.regexService.formatPropertiesForTreeview(\n this.dataArray.otherProperties\n );\n\n // Regex are computed asynchronously\n this.regexService.setInitialDataArray(this.initialDataArray, this.dataArray);\n }\n } catch (error) {\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_collect_while_fetching_extracted_properties'),\n icon: 'error',\n });\n }\n }\n\n /**\n * Add each selected treeview item to table\n * @param selectedTreeItems Selected items in treeview\n */\n public addItemsToTable(selectedTreeItems: string[]): void {\n for (let index = 0, len = selectedTreeItems.length; index < len; index++) {\n this.addPropertyToTable(selectedTreeItems[index]);\n }\n\n this.selectableProperties = this.regexService.formatPropertiesForTreeview(this.dataArray.otherProperties);\n }\n\n // update the closest pattern / create a pattern with the values in the dataTable\n onSavePattern(action: string) {\n if (\n this.regexService.hasPatternChanged(this.dataArray, this.initialDataArray) &&\n !this.regexService.hasWrongRegex(this.dataArray)\n ) {\n Swal.fire({\n title: 'Etes-vous sûr ?',\n text: this.regexService.getSwalTitleOnSave(action),\n showCancelButton: true,\n icon: 'warning',\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: this.regexService.getSwalConfirmButtonTextOnSave(action),\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n }).then(result => {\n if (result.value) {\n if (this.regexService.hasEmptyRegex(this.dataArray)) {\n Swal.fire('Annulé', 'Un regex est vide', 'error');\n } else {\n this.regexService.createClosestPattern(\n action,\n this.dataArray,\n this.energyType,\n this.identificationPatternId,\n this.textContent\n );\n\n // save pattern in db\n this.savePattern(action).then(\n res => {\n Swal.fire('OK', this.regexService.getSwalSuccessOnSave(action), 'success').then(() => {\n return this.backToCollect();\n });\n },\n err => {\n if (\n err.error_code === 'error_updatePattern' ||\n err.error_code === 'error_createNewPattern'\n ) {\n Swal.fire(\n 'Toutes nos excuses',\n this.regexService.getSwalFailOnSave(action),\n 'error'\n );\n }\n }\n );\n }\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n Swal.fire('Annulé', '', 'error');\n }\n });\n } else {\n if (!this.regexService.hasPatternChanged(this.dataArray, this.initialDataArray)) {\n Swal.fire('Impossible', \"Aucun regex n'a été modifié\", 'error');\n }\n if (this.regexService.hasWrongRegex(this.dataArray)) {\n Swal.fire('Impossible', 'Un regex est en erreur ou en cours de recherche.', 'error');\n }\n }\n }\n\n // delete from the dataTable array\n deletePropertyFromTable(property: ExtractDataTableProperty) {\n this.regexService.deletePropertyFromTable(property, this.dataArray);\n this.selectableProperties = this.regexService.formatPropertiesForTreeview(this.dataArray.otherProperties);\n }\n\n // put in database the new pattern\n savePattern(action: string): Promise {\n switch (action) {\n case 'update':\n return this.regexService.updatePattern(\n this.energyType,\n this.dataArray,\n this.identificationPatternId,\n this.textContent,\n this.initialDataArray\n );\n\n case 'new':\n return this.regexService.createNewPattern(\n this.energyType,\n this.dataArray,\n this.identificationPatternId\n );\n }\n }\n\n // add the new property to the table\n addPropertyToTable(property) {\n this.regexService.addPropertyToTable(\n property,\n this.initialDataArray,\n this.dataArray,\n this.energyType,\n this.identificationPatternId,\n this.textContent\n );\n }\n\n // when regex in change (typed in or selected in the selectbox)\n executeRegex(property) {\n this.regexService.executeRegex(property, this.textContent);\n }\n\n // reset value with initial value\n // TODO: see if initialDayaArray is really useful since we store the iniital regex and don't leave the page on save\n resetRegex(property) {\n this.regexService.resetRegex(property, this.textContent);\n }\n\n backToCollect() {\n this.regexService.backToCollect(this.uploadFile.group, this.indexCollectSelectedGroup);\n }\n\n getBackToCollectLink() {\n if (this.uploadFile) {\n return this.regexService.getBackToCollectLink(this.uploadFile.group, this.indexCollectSelectedGroup);\n } else {\n return this.regexService.getBackToCollectLink(this.uploadFile, this.indexCollectSelectedGroup);\n }\n }\n\n copyToClipboard() {\n const copied = this.regexService.copyTextToClipboard(this.textContent);\n if (!copied) {\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite pendant la copie du contenu du fichier\",\n 'error'\n );\n }\n }\n\n async openFileInTab() {\n try {\n await this.uploadService.openFileInTab(this.uploadFile._id);\n } catch (e) {\n Swal.fire(\n 'Toutes nos excuses',\n 'Le fichier est inaccessible pour le moment. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from '../../../shared/services/guards/access-guard.service';\nimport { FixRegexUploadChunkComponent } from './fix-regex-upload-chunk.component';\n\nconst REGEX_ROUTE = [\n {\n path: '',\n component: FixRegexUploadChunkComponent,\n canActivate: [AccessGuard],\n data: { redirectionForbiddenUrl: '/collecte', page: 'collect' },\n },\n];\n\n@NgModule({\n declarations: [FixRegexUploadChunkComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(REGEX_ROUTE)],\n})\nexport class FixRegexUploadChunkModule {}\n","export default \".add,\\n.save {\\n padding: 15px;\\n display: -webkit-box;\\n display: flex;\\n line-height: 33px;\\n}\\n.add strong,\\n.save strong {\\n margin-right: 15px;\\n}\\n.add select,\\n.save select {\\n font-size: 12px;\\n height: 29px;\\n}\\n.add .citron-btn,\\n.save .citron-btn {\\n margin-left: 15px;\\n font-size: 15px;\\n height: 29px;\\n}\\n.add .back-collecte-btn,\\n.save .back-collecte-btn {\\n padding-top: 3px;\\n padding-bottom: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\nga-bloc {\\n margin-bottom: -15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2ZpeC1yZWdleC11cGxvYWQvZml4LXJlZ2V4LXVwbG9hZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvZml4LXJlZ2V4LXVwbG9hZC9maXgtcmVnZXgtdXBsb2FkLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVJLGFBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxpQkFBQTtBQ0NKO0FEQUk7O0VBQ0ksa0JBQUE7QUNHUjtBRERJOztFQUNJLGVBQUE7RUFDQSxZQUFBO0FDSVI7QURGSTs7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxZQUFBO0FDS1I7QURISTs7RUFDSSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0FDTVI7QURGQTtFQUNJLG9CQUFBO0FDS0oiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9maXgtcmVnZXgtdXBsb2FkL2ZpeC1yZWdleC11cGxvYWQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYWRkLFxuLnNhdmUge1xuICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBsaW5lLWhlaWdodDogMzNweDtcbiAgICBzdHJvbmcge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgfVxuICAgIHNlbGVjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAyOXB4O1xuICAgIH1cbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIGhlaWdodDogMjlweDtcbiAgICB9XG4gICAgLmJhY2stY29sbGVjdGUtYnRuIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDNweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG5nYS1ibG9jIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMTVweDtcbn1cbiIsIi5hZGQsXG4uc2F2ZSB7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGxpbmUtaGVpZ2h0OiAzM3B4O1xufVxuLmFkZCBzdHJvbmcsXG4uc2F2ZSBzdHJvbmcge1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG4uYWRkIHNlbGVjdCxcbi5zYXZlIHNlbGVjdCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgaGVpZ2h0OiAyOXB4O1xufVxuLmFkZCAuY2l0cm9uLWJ0bixcbi5zYXZlIC5jaXRyb24tYnRuIHtcbiAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgaGVpZ2h0OiAyOXB4O1xufVxuLmFkZCAuYmFjay1jb2xsZWN0ZS1idG4sXG4uc2F2ZSAuYmFjay1jb2xsZWN0ZS1idG4ge1xuICBwYWRkaW5nLXRvcDogM3B4O1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuZ2EtYmxvYyB7XG4gIG1hcmdpbi1ib3R0b206IC0xNXB4O1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport Swal from 'sweetalert2';\n\nimport { UploadService } from 'app/shared/services/files/upload.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport { FixRegexUploadInterface } from './fix-regex-upload.interface';\nimport { ExtractDataArray, ExtractDataTableProperty, FixRegexUploadService } from './fix-regex-upload.service';\n\n@Component({\n selector: 'ga-fix-regex-upload',\n templateUrl: './fix-regex-upload.component.html',\n styleUrls: ['./fix-regex-upload.component.scss'],\n providers: [FixRegexUploadService],\n})\nexport class FixRegexUploadComponent implements OnInit, FixRegexUploadInterface {\n uploadFile: any;\n energyType = '';\n identificationPatternId = '';\n textContent: any;\n indexCollectSelectedGroup: any;\n isPatternFromScratch = false;\n\n dataArray: ExtractDataArray = {\n dataTable: [],\n closestPattern: null,\n otherProperties: [],\n };\n\n initialDataArray: ExtractDataArray = {\n dataTable: [],\n closestPattern: null,\n otherProperties: [],\n };\n public get isPatternEnabled(): boolean {\n if (\n this.dataArray &&\n this.dataArray.closestPattern &&\n typeof this.dataArray.closestPattern.enabled === 'boolean'\n ) {\n return this.dataArray.closestPattern.enabled;\n }\n\n return true;\n }\n\n /** Selectable properties of the treeview */\n public selectableProperties: Array<{ displayName: string; value: string }>;\n /** Selected properties of the treeview */\n public selectedProperties: string[] = [];\n\n constructor(\n private regexService: FixRegexUploadService,\n private route: ActivatedRoute,\n private uploadService: UploadService,\n private translateService: TranslateService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.subscribe(queryParams => {\n if (queryParams.hasOwnProperty('index')) {\n this.indexCollectSelectedGroup = Number(queryParams.index);\n }\n });\n\n this.route.params.subscribe(params => {\n this.fetchPropertiesFromUpload(params.uploadId);\n });\n }\n\n /**\n * Fetch upload data and retrieves all its corresponding properties.\n * @param uploadId\n */\n private async fetchPropertiesFromUpload(uploadId: string): Promise {\n try {\n const response = await this.regexService.getUploadFiles(uploadId);\n\n if (response.code === 200) {\n this.uploadFile = response.data;\n\n this.energyType = this.uploadFile.identificationPattern.energyType;\n this.identificationPatternId = this.uploadFile.identificationPattern._id;\n this.textContent = this.uploadFile.textContent.data.toString();\n\n // If upload has never had been extracted, there is no clothestPattern\n if (this.uploadFile.clothestPattern) {\n this.dataArray.closestPattern = this.uploadFile.clothestPattern[this.energyType];\n this.isPatternFromScratch = false;\n } else {\n this.isPatternFromScratch = true;\n this.dataArray.closestPattern = {\n requiredProperties: [],\n };\n }\n\n // the array 'properties' is filled with all the other properties existing for the fluid patterns which aren't in the required properties\n const allProperties = await this.regexService.getPatternProperties(this.energyType);\n\n this.regexService.fillDataTable(\n allProperties,\n this.dataArray,\n this.textContent,\n this.energyType,\n this.identificationPatternId\n );\n\n this.dataArray.otherProperties.sort((a, b) => a.localeCompare(b));\n\n this.selectableProperties = this.regexService.formatPropertiesForTreeview(\n this.dataArray.otherProperties\n );\n\n this.regexService.setInitialDataArray(this.initialDataArray, this.dataArray);\n }\n } catch (error) {\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_collect_while_fetching_extracted_properties'),\n icon: 'error',\n });\n }\n }\n\n /**\n * Add each selected treeview item to table\n * @param selectedTreeItems Selected items in treeview\n */\n public addItemsToTable(selectedTreeItems: string[]): void {\n for (let index = 0, len = selectedTreeItems.length; index < len; index++) {\n this.addPropertyToTable(selectedTreeItems[index]);\n }\n\n this.selectableProperties = this.regexService.formatPropertiesForTreeview(this.dataArray.otherProperties);\n }\n\n // delete from the dataTable array\n deletePropertyFromTable(property: ExtractDataTableProperty) {\n this.regexService.deletePropertyFromTable(property, this.dataArray);\n this.selectableProperties = this.regexService.formatPropertiesForTreeview(this.dataArray.otherProperties);\n }\n\n // update the closest pattern / create a pattern with the values in the dataTable\n onSavePattern(action: string) {\n if (\n this.regexService.hasPatternChanged(this.dataArray, this.initialDataArray) &&\n !this.regexService.hasWrongRegex(this.dataArray)\n ) {\n Swal.fire({\n title: 'Etes-vous sûr ?',\n text: this.regexService.getSwalTitleOnSave(action),\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: this.regexService.getSwalConfirmButtonTextOnSave(action),\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n }).then(result => {\n if (result.value) {\n if (this.regexService.hasEmptyRegex(this.dataArray)) {\n Swal.fire('Annulé', 'Un regex est vide', 'error');\n } else {\n this.regexService.createClosestPattern(\n action,\n this.dataArray,\n this.energyType,\n this.identificationPatternId,\n this.textContent\n );\n\n // save pattern in db\n this.savePattern(action).then(\n res => {\n Swal.fire('OK', this.regexService.getSwalSuccessOnSave(action), 'success').then(() => {\n return this.backToCollect();\n });\n },\n err => {\n if (err.stack === 'error_updatePattern') {\n Swal.fire(\n 'Toutes nos excuses',\n this.regexService.getSwalFailOnSave(action),\n 'error'\n );\n }\n }\n );\n }\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n Swal.fire('Annulé', '', 'error');\n }\n });\n } else {\n if (!this.regexService.hasPatternChanged(this.dataArray, this.initialDataArray)) {\n Swal.fire('Impossible', \"Aucun regex n'a été modifié\", 'error');\n }\n if (this.regexService.hasWrongRegex(this.dataArray)) {\n Swal.fire('Impossible', 'Un regex est en erreur ou en cours de recherche.', 'error');\n }\n }\n }\n\n // put in database the new pattern\n savePattern(action: string): Promise {\n switch (action) {\n case 'update':\n return this.regexService.updatePattern(\n this.energyType,\n this.dataArray,\n this.identificationPatternId,\n this.textContent,\n this.initialDataArray\n );\n\n case 'new':\n return this.regexService.createNewPattern(\n this.energyType,\n this.dataArray,\n this.identificationPatternId\n );\n }\n }\n\n // add the new property to the table\n addPropertyToTable(property: string) {\n this.regexService.addPropertyToTable(\n property,\n this.initialDataArray,\n this.dataArray,\n this.energyType,\n this.identificationPatternId,\n this.textContent\n );\n }\n\n // when regex in change (typed in or selected in the selectbox)\n executeRegex(property: ExtractDataTableProperty) {\n this.regexService.executeRegex(property, this.textContent);\n }\n\n // reset value with initial value\n resetRegex(property: ExtractDataTableProperty) {\n this.regexService.resetRegex(property, this.textContent);\n }\n\n backToCollect() {\n this.regexService.backToCollect(this.uploadFile.group, this.indexCollectSelectedGroup);\n }\n\n getBackToCollectLink() {\n if (this.uploadFile) {\n return this.regexService.getBackToCollectLink(this.uploadFile.group, this.indexCollectSelectedGroup);\n } else {\n return this.regexService.getBackToCollectLink(this.uploadFile, this.indexCollectSelectedGroup);\n }\n }\n\n copyToClipboard() {\n const copied = this.regexService.copyTextToClipboard(this.textContent);\n if (!copied) {\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite pendant la copie du contenu du fichier\",\n 'error'\n );\n }\n }\n\n async openFileInTab() {\n try {\n await this.uploadService.openFileInTab(this.uploadFile._id);\n } catch (e) {\n Swal.fire(\n 'Toutes nos excuses',\n 'Le fichier est inaccessible pour le moment. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { AccessGuard } from '../../shared/services/guards/access-guard.service';\nimport { FixRegexUploadComponent } from './fix-regex-upload.component';\n\nconst REGEX_ROUTE = [\n {\n path: '',\n component: FixRegexUploadComponent,\n canActivate: [AccessGuard],\n data: { redirectionForbiddenUrl: '/collecte', page: 'collect' },\n },\n];\n\n@NgModule({\n declarations: [FixRegexUploadComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(REGEX_ROUTE)],\n})\nexport class FixRegexUploadModule {}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as clone from 'clone';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\nimport { RegexRequest, RegexResponse, RegexService } from '../../shared/services/regex/regex.service';\n\nexport interface ExtractDataArray {\n dataTable: ExtractDataTableProperty[];\n closestPattern: {\n requiredProperties: string[];\n [key: string]: any;\n enabled?: boolean;\n };\n otherProperties: string[];\n}\n\nexport interface ExtractDataTableProperty {\n name: string;\n number: number;\n regex: string;\n initialRegex: string;\n valueExtract: string;\n countExtract: number;\n energyType: string;\n selectBoxData: SelectBoxData;\n loading: boolean;\n editing?: boolean;\n hide: boolean;\n}\n\ninterface SelectBoxData {\n listOptions: SelectBoxValue[];\n selectedValue: SelectBoxValue;\n}\n\nexport interface SelectBoxValue {\n id: number;\n regex: string;\n valueExtracted: string;\n}\n\n/** Represents the config for one item of a treeview. */\ninterface TreeviewItemConfig {\n displayName: string;\n value: string;\n}\n\n/** Represents a property in a properties group. */\ninterface PropertyItem {\n name: string;\n ref: string;\n}\n\n/** Represents a property with all its children groupped. */\ninterface PropertyGroup {\n item: PropertyItem;\n children: PropertyGroup[];\n}\n\n@Injectable()\nexport class FixRegexUploadService extends PageService {\n /** Regex subject to handle concurrency */\n private regexSubject: BehaviorSubject;\n\n /** Observable with pool to subscribe */\n private regexObservable: Observable;\n\n constructor(\n public apiService: ApiService,\n public router: Router,\n private regexService: RegexService,\n private translateService: TranslateService\n ) {\n super(apiService);\n this.fake = false;\n // Create a subject for service\n this.regexSubject = this.regexService.createRegexSubject();\n // Create observable with pool\n this.regexObservable = this.regexService.pipeRegexSubject(this.regexSubject);\n }\n\n /**\n * Get upload file data\n * @param {string} id - upload id\n * @returns {Promise} upload data\n */\n getUploadFiles(id: string): Promise {\n return this.get('/api/uploads/crud/' + id);\n }\n\n getUploadChunk(id: string, chunkId: string): Promise {\n return this.get(`/api/uploads/crud/${id}/${chunkId}`);\n }\n\n /**\n * Add fluid pattern to identification pattern\n * @param identificationPatternId - identificaiton pattern id\n * @param fluidPatternId - fluid pattern id\n */\n addPatternToIndentificationPattern(\n identificationPatternId: string,\n fluidPatternId: string\n ): Promise {\n const route = '/api/identification-patterns/update-patterns';\n\n const body = {\n id: identificationPatternId,\n idPattern: fluidPatternId,\n };\n return this.post(route, body);\n }\n\n /**\n * Get dictionnary for property. Dictionnary is all regex found in all the patterns of the identification pattern.\n * @param {string} fluid - pattern fuid type\n * @param {string} identificationPatternId - identification pattern id\n * @param {string} propertyName - property name\n * @returns {Promise} regexs found\n */\n getDictionaryForProperty(fluid: string, identificationPatternId: string, propertyName: string): Promise {\n const route = `/api/patterns/${fluid}/search?identificationPatternId=${identificationPatternId}&property=${propertyName}`;\n return this.get(route);\n }\n\n /**\n * Get all properties available for a fluid pattern\n * @param {string} fluid - fluid of pattern to get all properties from\n */\n getPatternProperties(fluid: string): Promise {\n return this.get('/api/properties/pattern-' + fluid);\n }\n\n /**\n * Get fluid pattern by id\n * @param {string} id - fluid pattern id\n * @param {string} energyType - pattern's fluid\n * @returns {Promise} fluid pattern\n */\n getClosestPatternById(id: string, energyType: string): Promise {\n const route = `/api/patterns/${energyType}/crud/${id}`;\n return this.get(route);\n }\n\n /**\n * Get property value from object. Go for deep search (recusively).\n * @param {Object} obj - Object to look into\n * @param {string} property - property value to get from object.\n * @returns {*} value accessed by property.\n */\n fetchFromObject(obj: object, prop: string): any {\n if (typeof obj === 'undefined') {\n return false;\n }\n\n const _index = prop.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));\n }\n\n return obj[prop];\n }\n\n /**\n * Fill data table for display. Also launch regex computation in workers.\n * @param {string[]} allProperties - energy pattern all properties available\n * @param {ExtractDataArray} dataArray - upload/chunk data\n * @param {string} textContent - text content for regex computation\n * @param {string} energyType - energy type of pattern\n * @param {string} identificationPatternId - id of the identification pattern\n */\n fillDataTable(\n allProperties: string[],\n dataArray: ExtractDataArray,\n textContent: string,\n energyType: string,\n identificationPatternId: string\n ): void {\n let count = 0;\n\n // otherProperties is filled with the properties belonging to the identification not included in the closest pattern\n dataArray.otherProperties = allProperties.filter(property => {\n return !dataArray.closestPattern.requiredProperties.includes(property);\n });\n this.regexObservable.subscribe({\n next: res => {\n // fills the array given to the table component\n // order matters - fillSelectedBox needs the 'regex' to be pushed before\n const dataRow = dataArray.dataTable.find(x => x.name === res.id);\n if (!res.error) {\n dataRow.valueExtract = this.displayValuesExtracted(res.result);\n dataRow.countExtract = res.result.length;\n } else {\n dataRow.valueExtract = res.error.errorCode || res.error.message;\n }\n dataRow.loading = false;\n },\n error: err => {\n const dataRow = dataArray.dataTable.find(x => x.name === err.id);\n dataRow.valueExtract = err.errorCode || err.message;\n dataRow.loading = false;\n },\n });\n // fills the data array for all the required properties\n dataArray.closestPattern.requiredProperties.forEach(propertyName => {\n count = count + 1;\n\n const regexSelected = this.fetchFromObject(dataArray.closestPattern, propertyName);\n const dataRow: ExtractDataTableProperty = {\n name: propertyName,\n number: count,\n regex: regexSelected,\n initialRegex: regexSelected,\n valueExtract: '',\n countExtract: 0,\n energyType,\n selectBoxData: {\n listOptions: [],\n selectedValue: null,\n },\n loading: true,\n hide: false,\n };\n dataArray.dataTable.push(dataRow);\n this.regexSubject.next({ text: textContent, regex: regexSelected, id: propertyName });\n });\n\n /**\n * Sort table display alphatically\n */\n dataArray.dataTable.sort(this.sortTablePropertyAlphabetically);\n }\n\n /**\n * Format properties into treeview items using carets for depth.\n * Example: [\"obj.toto\"] => [{displayName: \"obj\", value: \"\"},\n * {displayName: \"- toto\", value: \"obj.toto\"}]\n * @param properties Properties to format\n * @returns Formated properties for treeview\n */\n public formatPropertiesForTreeview(properties: string[]): TreeviewItemConfig[] {\n const groups: PropertyGroup[] = [];\n const propertiesCopy = properties.concat();\n\n while (propertiesCopy.length) {\n const property = propertiesCopy[0];\n this.groupProperties(property, propertiesCopy, groups);\n }\n\n const flatGroup: TreeviewItemConfig[] = this.flattenGroup(groups, []).map(item => {\n return { displayName: item.name, value: item.ref };\n });\n\n const allDisplayName = this.translateService._('all_fp');\n\n // Add base node to treeview\n flatGroup.unshift({ displayName: allDisplayName, value: '' });\n\n return flatGroup;\n }\n\n /**\n * Group properties recursively in a given list of properties string.\n * @param property Property to group by\n * @param list List of properties string (e.g. [\"obj.toto\", \"obj.titi\"])\n * @param groups List containing all groupped properties\n * @param previousRef Reference of the previous property (used for recursivity)\n * @returns Groupped properties for the given properties list\n */\n private groupProperties(property: string, list: string[], groups: PropertyGroup[], previousRef: string = ''): void {\n if (property.includes('.')) {\n // Find reference of property (e.g. \"obj.toto\" => \"obj\")\n const reference = property.split('.').shift();\n\n // Format and store previous reference\n previousRef = previousRef ? `${previousRef}.${reference}` : reference;\n\n // Find children in given list and remove reference from children\n const children = list\n .filter(item => item.startsWith(`${reference}.`))\n .map(child => child.replace(`${reference}.`, ''));\n\n // Remove elements from original array to avoid cycles\n children.forEach(child => list.splice(list.findIndex(element => element === `${reference}.${child}`), 1));\n\n // Find children of children recursively\n const childrenGroup: PropertyGroup[] = [];\n\n while (children.length) {\n const child = children[0];\n this.groupProperties(child, children, childrenGroup, previousRef);\n }\n\n groups.push({ item: { name: reference, ref: '' }, children: childrenGroup });\n } else {\n const reference = previousRef ? `${previousRef}.${property}` : property;\n list.splice(list.indexOf(property), 1);\n groups.push({ item: { name: property, ref: reference }, children: [] });\n }\n }\n\n /**\n * Recursively flatten a list of groupped properties using carrets to indicate each property depth.\n * @param group List of groupped properties to flatten\n * @param flatList Flatten list of groupped properties\n * @param index Depth index\n * @returns Flatten group of properties\n */\n private flattenGroup(group: PropertyGroup[], flatList: PropertyItem[] = [], index: number = 1): PropertyItem[] {\n group.forEach(property => {\n // Format property item name using carrets to indicate depth\n property.item.name = index ? `${'-'.repeat(index)} ${property.item.name}` : property.item.name;\n flatList.push(property.item);\n this.flattenGroup(property.children, flatList, index + 1);\n });\n return flatList;\n }\n\n /**\n * Get list of values extracted\n * @param {string} textContent - test content to extract\n * @param {string} regexToCheck - regex to apply\n * @returns {Promise} values extracted formatted to be displayed\n */\n async getListValuesExtracted(textContent: string, regexToCheck: string): Promise {\n try {\n const resultsFromMatch = await this.regexService.computeRegexInPool(textContent, regexToCheck);\n return this.displayValuesExtracted(resultsFromMatch);\n } catch (err) {\n if (err && err.errorCode) {\n return 'Error : ' + err.errorCode;\n }\n return 'Error : Unknown error';\n }\n }\n\n /**\n * Get display string for extracted values\n * @param {string[]} valuesArray - extracted values array\n * @return {string} formatted string to display extracted values\n */\n private displayValuesExtracted(valuesArray: string[]): string {\n let listValues = '';\n valuesArray.forEach(value => {\n listValues = listValues.concat('[' + value + '] ');\n });\n\n return listValues;\n }\n\n /**\n * Fill selectbox with regexs available from other patterns from the same identification pattern for a given property\n * @param {string} propertyName - property name to find other regex available for\n * @param {string} energyType - pattern energy type\n * @param {string} identificationPatternId - identification pattern id\n * @param {ExtractDataArray} dataArray - values from pattern\n * @param {string} textContent - text content of upload/chunk\n * @returns {SelectBoxData} values for select box\n */\n fillSelectBox(\n propertyName: string,\n energyType: string,\n identificationPatternId: string,\n dataArray: ExtractDataArray,\n textContent: string\n ): SelectBoxData {\n const defaultSelection: SelectBoxValue = {\n id: 0,\n regex: '',\n valueExtracted: null,\n };\n\n const selectBoxData: SelectBoxData = {\n listOptions: [],\n selectedValue: null,\n };\n\n // we need the default option for 2 cases :\n // 1) if there is no existing regex in the select box\n // 2) if the user selects an option, then modifies the regex -> needs the select box to set the default option\n // otherwise clicking on the same option again doesn't activate the onChange and the value in the input isn't reset\n\n selectBoxData.listOptions.push(defaultSelection);\n\n /**\n * Don't use async/await on this part as the function must remain synchronous.\n * Selectbox value will be returned and then filled with property over time.\n * It avoid a long loading time for the user\n */\n this.getDictionaryForProperty(energyType, identificationPatternId, propertyName).then(async listRegex => {\n if (listRegex && listRegex.length) {\n const val = await this.getValuesFromListRegex(listRegex, textContent);\n selectBoxData.listOptions = selectBoxData.listOptions.concat(val);\n // if the regex belongs to the pattern, set preselected value with that regex\n // otherwise if it's a new property the regex is empty and no value is selected\n const regex = dataArray.dataTable.find(prop => prop.name === propertyName).regex;\n selectBoxData.selectedValue = selectBoxData.listOptions.find(option => option.regex === regex);\n } else {\n selectBoxData.selectedValue = defaultSelection;\n }\n });\n\n return selectBoxData;\n }\n\n /**\n * Find values in text content for a list of regex.\n * @param {string[]} listRegex - list of regexs to execute\n * @param {string} textContent - text to test regexs on\n * @returns {Promise} values extracted formatted for a selectbox\n */\n async getValuesFromListRegex(listRegex: string[], textContent: string): Promise {\n const listRegexValue: SelectBoxValue[] = [];\n\n for (let i = 0; i < listRegex.length; i++) {\n const regex = listRegex[i];\n const val = await this.getListValuesExtracted(textContent, regex);\n listRegexValue.push({\n id: i + 1,\n regex,\n valueExtracted: val,\n });\n }\n return listRegexValue;\n }\n\n /**\n * Clone ExtractDataArray to store inital data\n * @param {ExtractDataArray} initialDataArray - data to clone to\n * @param {ExtractDataArray} dataArray - data to be cloned\n */\n setInitialDataArray(initialDataArray: ExtractDataArray, dataArray: ExtractDataArray): void {\n // TODO find why this doesn't work : this.initialDataArray = clone(this.dataArray);\n\n initialDataArray.dataTable = dataArray.dataTable.map(x => Object.assign({}, x));\n initialDataArray.closestPattern = clone(dataArray.closestPattern);\n initialDataArray.otherProperties = clone(dataArray.otherProperties);\n }\n\n /**\n * Execute regex\n * @param {ExtractDataTableProperty} property - property to test\n * @param {string} textContent\n */\n async executeRegex(property: ExtractDataTableProperty, textContent: string): Promise {\n property.loading = true;\n try {\n const extractedValuesArray = await this.regexService.testRegex(textContent, property.regex);\n property.valueExtract = this.displayValuesExtracted(extractedValuesArray);\n property.countExtract = extractedValuesArray.length;\n property.loading = false;\n } catch (err) {\n property.valueExtract = err.errorCode || err.message;\n property.countExtract = 0;\n property.loading = false;\n }\n return;\n }\n\n /**\n * Reset regex in property\n * @param {ExtractDataTableProperty} propertyToReset\n * @param {string} textContent\n */\n async resetRegex(propertyToReset: ExtractDataTableProperty, textContent: string): Promise {\n propertyToReset.regex = propertyToReset.initialRegex;\n await this.executeRegex(propertyToReset, textContent);\n propertyToReset.selectBoxData.selectedValue = propertyToReset.selectBoxData.listOptions.find(\n option => option.regex === propertyToReset.regex\n );\n return;\n }\n\n /**\n * Sort properties by name alphabetically\n * @param {ExtractDataTableProperty} a\n * @param {ExtractDataTableProperty} b\n */\n sortTablePropertyAlphabetically(a: ExtractDataTableProperty, b: ExtractDataTableProperty) {\n if (!a && !b) {\n return 0;\n }\n if (!a || !a.name) {\n return -1;\n }\n if (!b || !b.name) {\n return 1;\n }\n return a.name.localeCompare(b.name);\n }\n\n /**\n * Add property to data table\n * @param {string} property - property to add to table\n * @param {ExtractDataArray} initialDataArray - inital data array\n * @param {ExtractDataArray} dataArray - modified data array\n * @param {string} energyType - pattern fluid\n * @param {string} identificationPatternId - identification pattern id\n * @param {string} textContent - text content of upload/chunk\n */\n addPropertyToTable(\n property: string,\n initialDataArray: ExtractDataArray,\n dataArray: ExtractDataArray,\n energyType: string,\n identificationPatternId: string,\n textContent: string\n ) {\n // if the user deleted a property from the initial closest pattern and put it back\n // we put back the initial data\n if (initialDataArray.closestPattern.requiredProperties.includes(property)) {\n const initialData = clone(initialDataArray.dataTable.find(prop => prop.name === property));\n dataArray.dataTable.push(initialData);\n } else {\n // order matters - fillSelectedBox needs the 'regex' to be pushed before\n dataArray.dataTable.push({\n name: property,\n number: this.setNumberToNewProperty(dataArray.dataTable),\n regex: '',\n valueExtract: '',\n countExtract: 0,\n energyType,\n selectBoxData: {\n listOptions: [],\n selectedValue: null,\n },\n editing: false,\n initialRegex: '',\n loading: false,\n hide: false,\n });\n }\n\n // delete this option from the \"Add property\" select box\n dataArray.otherProperties.splice(dataArray.otherProperties.indexOf(property), 1);\n dataArray.dataTable.sort(this.sortTablePropertyAlphabetically);\n }\n\n /**\n * Get next number for new property\n * @param {ExtractDataTableProperty[]} dataTable - data table to get the next property number\n */\n setNumberToNewProperty(dataTable: ExtractDataTableProperty[]): number {\n // if dataTable isn't empty check its length\n return dataTable.length ? dataTable[dataTable.length - 1].number + 1 : 1;\n }\n\n /**\n * Update fluid pattern, then reset select boxes of all properties in pattern.\n * @param {fluid} energyType - pattern fluid\n * @param {ExtractDataArray} dataArray - data array value\n * @param {string} identificationPatternId - identification pattern id\n * @param {string} textContent - text content\n * @param {ExtractDataArray} initialDataArray - initial data array value\n */\n async updatePattern(\n energyType: string,\n dataArray: ExtractDataArray,\n identificationPatternId: string,\n textContent: string,\n initialDataArray: ExtractDataArray\n ): Promise {\n // update the closest pattern in db\n const route = '/api/patterns/' + energyType + '/crud/' + dataArray.closestPattern._id;\n\n try {\n const response: APICitronResponse = await this.put(route, dataArray.closestPattern, null, true);\n\n // now that the pattern has been successfully updated\n if (response.data.modifiedCount === 1) {\n // the select boxes might change if a new regex was saved\n dataArray.dataTable.forEach(property => {\n property.selectBoxData = {\n listOptions: [],\n selectedValue: null,\n };\n // set the current regex as the initial one\n property.initialRegex = property.regex;\n });\n\n // clone that dataArray as the initial one\n this.setInitialDataArray(initialDataArray, dataArray);\n\n return;\n } else {\n throw new Error('error_updatePattern');\n }\n } catch (error) {\n const err = { error_code: 'error_updatePattern' };\n return Promise.reject(err);\n }\n }\n\n /**\n * Create new fluid pattern and add it to the same identification pattern.\n * @param {string} energyType - pattern's fluid\n * @param {ExtractDataArray} dataArray - data containing pattern to save\n * @param {string} identificationPatternId - identification pattern id\n * @returns {Promise} created fluid pattern's _id\n */\n async createNewPattern(\n energyType: string,\n dataArray: ExtractDataArray,\n identificationPatternId: string\n ): Promise {\n // save the new closest pattern in the patterns db\n const route = '/api/patterns/' + energyType + '/crud';\n try {\n const res: APICitronResponse = await this.post(route, dataArray.closestPattern);\n\n // retrieve the id to add it in db to the identificationPattern\n const closestPatternSaved = res.data;\n\n // add it in db to the identificationPattern patterns list for the specific energy\n await this.addPatternToIndentificationPattern(identificationPatternId, closestPatternSaved._id);\n\n return closestPatternSaved._id;\n } catch (err) {\n err.error_code = 'error_createNewPattern';\n return Promise.reject(err);\n }\n }\n\n /**\n * Delete property from table (fluid pattern)\n * @param {ExtractDataTableProperty} property - property to delete\n * @param {ExtractDataArray} dataArray - data\n */\n deletePropertyFromTable(property: ExtractDataTableProperty, dataArray: ExtractDataArray): void {\n // -- delete from data array\n const indexToDelete = dataArray.dataTable.findIndex(x => x.name === property.name);\n\n if (indexToDelete > -1) {\n dataArray.dataTable.splice(indexToDelete, 1);\n dataArray.otherProperties.push(property.name);\n dataArray.otherProperties.sort((a, b) => a.localeCompare(b));\n }\n }\n\n /**\n * Find if there are differences between inital pattern and current state of pattern\n * @param {ExtractDataArray} dataArray - current data\n * @param {boolean} initialDataArray - initial data\n * @returns {boolean} true if pattern changed, false otherwise.\n */\n hasPatternChanged(dataArray: ExtractDataArray, initialDataArray: ExtractDataArray): boolean {\n let foundDifference = false;\n\n // difference can be : a new property was added / a property was deleted / the regex has changed\n if (dataArray.dataTable.length !== initialDataArray.dataTable.length) {\n // more properties were deleted than added, changes were obviously made\n foundDifference = true;\n } else {\n // if the change isn't obvious, check the regex\n // a new property has an \"initalRegex\" undefined\n foundDifference = dataArray.dataTable.some(element => {\n return element.initialRegex !== element.regex;\n });\n }\n\n return foundDifference;\n }\n\n /**\n * Find if there is a wrong regex in data (regex still loading or value extracted is an object)\n * @param {ExtractDataArray} dataArray - data\n * @returns {boolean} true if there is a wrong regex, false otherwise\n */\n hasWrongRegex(dataArray: ExtractDataArray): boolean {\n return dataArray.dataTable.some(element => {\n return element.loading || typeof element.valueExtract === 'object';\n });\n }\n\n /**\n * Get swal title on create/update action\n * @param {string} action - must be 'update' or 'new'\n * @return {string} swal title\n */\n getSwalTitleOnSave(action: string): string {\n if (action === 'update') {\n return 'Voulez-vous mettre à jour le pattern existant ?';\n } else if (action === 'new') {\n return 'Voulez-vous créer un nouveau pattern ?';\n }\n }\n\n /**\n * Get swal title on create/update action confirmation\n * @param {string} action - must be 'update' or 'new'\n * @return {string} swal title\n */\n getSwalConfirmButtonTextOnSave(action: string) {\n if (action === 'update') {\n return 'Mettre à jour';\n } else if (action === 'new') {\n return 'Ajouter';\n }\n }\n\n /**\n * Get swal title on create/update action successful\n * @param {string} action - must be 'update' or 'new'\n * @return {string} swal title\n */\n getSwalSuccessOnSave(action: string) {\n if (action === 'update') {\n return 'Le pattern a été mis à jour.';\n } else if (action === 'new') {\n return 'Le nouveau pattern a été enregistré';\n }\n }\n\n /**\n * Get swal title on create/update action failed\n * @param {string} action - must be 'update' or 'new'\n * @return {string} swal title\n */\n getSwalFailOnSave(action: string) {\n if (action === 'update') {\n return 'Le pattern n\\'a pas pu être mis à jour.';\n } else if (action === 'new') {\n return 'Le nouveau pattern n\\'a pas pu être enregistré.';\n }\n }\n\n /**\n * Find if there is an empty regex in data\n * @param {ExtractDataArray} dataArray - data with dataTable filled\n * @returns {boolean} true if there is an empty regex, false otherwise\n */\n hasEmptyRegex(dataArray: ExtractDataArray): boolean {\n return dataArray.dataTable.some(property => {\n return Boolean(!property.regex || property.regex === '');\n });\n }\n\n /**\n * Create closest pattern\n * @param {string} action\n * @param {ExtractDataArray} dataArray\n * @param {string} energyType\n * @param {string} identificationPatternId\n * @param {string} textContent\n */\n createClosestPattern(\n action: string,\n dataArray: ExtractDataArray,\n energyType: string,\n identificationPatternId: string,\n textContent: string\n ): void {\n const oldId = dataArray.closestPattern._id;\n // empty the current closest pattern\n // if it's an update, set the id the old one\n dataArray.closestPattern = {\n requiredProperties: [],\n };\n if (action === 'update') {\n dataArray.closestPattern['_id'] = oldId;\n }\n\n // fill it with the dataTable regexs\n dataArray.dataTable.forEach(property => {\n this.addPropertyToClosestPattern(property, dataArray);\n property.selectBoxData = {\n listOptions: [],\n selectedValue: null,\n };\n });\n }\n\n /**\n * Add property to closest pattern\n * @param {ExtractDataTableProperty} property - property to add\n * @param {ExtractDataArray} dataArray - data\n */\n addPropertyToClosestPattern(property: ExtractDataTableProperty, dataArray: ExtractDataArray): void {\n if (property.name.indexOf('.') !== -1) {\n // call recursive function to get further inside property\n // turpe\n const firstElement = property.name.split('.')[0];\n if (!dataArray.closestPattern[firstElement]) {\n dataArray.closestPattern[firstElement] = {};\n }\n const currentPointer = dataArray.closestPattern[firstElement];\n\n // rackingFee.HC.dateStart\n const rightPartToExplore = property.name.substring(firstElement.length + 1);\n\n this.setRegexRecursively(property.regex, rightPartToExplore, currentPointer);\n } else {\n dataArray.closestPattern[property.name] = property.regex;\n }\n\n // add it to the required properties if it's a new property\n dataArray.closestPattern.requiredProperties.push(property.name);\n }\n\n /**\n * Set regex recursively\n * @param regex\n * @param rightPartToExplore\n * @param currentPointer\n */\n setRegexRecursively(regex: string, rightPartToExplore: string, currentPointer: any) {\n // need to go furher inside property\n // 1. rackingFee.HC.dateStart\n // 2. HC.dateStart\n // 3. dateStart\n if (rightPartToExplore.indexOf('.') !== -1) {\n // go 1 step further\n // 1. turpe -> turpe.rackingFee\n // 2. turpe.rackingFee -> turpe.rackingFee.HC\n const firstElement = rightPartToExplore.split('.')[0];\n if (!currentPointer[firstElement]) {\n currentPointer[firstElement] = {};\n }\n currentPointer = currentPointer[firstElement];\n\n // 1. rackingFee.HC.dateStart -> HC.dateStart\n // 2. HC.dateStart -> dateStart\n rightPartToExplore = rightPartToExplore.substring(rightPartToExplore.split('.')[0].length + 1);\n\n return this.setRegexRecursively(regex, rightPartToExplore, currentPointer);\n }\n\n // 3. closestPattern[turpe.rackingFee.HC.dateStart] is set to regex value\n currentPointer[rightPartToExplore] = regex;\n }\n\n /**\n * Navigate back to collect\n * @param {string} group - upload's group id\n * @param {number} indexSelectedGroupType - index of contract type selected in group\n */\n backToCollect(group: string, indexSelectedGroupType: number = null) {\n if (group) {\n if (indexSelectedGroupType !== null) {\n this.router.navigate(['collecte/' + group], { queryParams: { index: indexSelectedGroupType } });\n } else {\n this.router.navigateByUrl('collecte/' + group);\n }\n } else {\n this.router.navigateByUrl('collecte');\n }\n }\n\n /**\n * Get back to collect link\n * @param {string} group - upload's group id\n * @param {number} indexSelectedGroupType - index of contract type selected in group\n * @returns {{url: string, queryParams: any}} link and potential query params\n */\n getBackToCollectLink(group: string, indexSelectedGroupType: number = null): { url: string; queryParams: any } {\n const link = {\n url: null,\n queryParams: null,\n };\n if (group) {\n if (indexSelectedGroupType !== null) {\n link.url = ['/collecte/' + group];\n link.queryParams = { index: indexSelectedGroupType };\n } else {\n link.url = ['/collecte/' + group];\n }\n } else {\n link.url = ['/collecte'];\n }\n return link;\n }\n\n /**\n * Copy text to clipboard\n * @param {string} text - text to copy yo clipboard\n * @returns {boolean} true if copy was a success, false otherwise\n */\n copyTextToClipboard(text: string): boolean {\n // need to create a fake textArea, put the text inside it, and call the execCommand 'copy' on it\n const txtArea = document.createElement('textarea');\n txtArea.value = text;\n document.body.appendChild(txtArea);\n txtArea.select();\n try {\n const resultCopy = document.execCommand('copy');\n document.body.removeChild(txtArea);\n\n if (resultCopy) {\n return true;\n }\n\n return false;\n } catch (err) {\n return false;\n }\n }\n}\n","export default \".picto-data-container {\\n margin-bottom: 25px;\\n}\\n\\n.data-tile {\\n width: 33.3333333%;\\n float: left;\\n padding: 5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL2hvbWUvaG9tZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvaG9tZS9ob21lLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksbUJBQUE7QUNDSjs7QURFQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2hvbWUvaG9tZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5waWN0by1kYXRhLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmRhdGEtdGlsZSB7XG4gICAgd2lkdGg6IDMzLjMzMzMzMzMlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDVweDtcbn1cbiIsIi5waWN0by1kYXRhLWNvbnRhaW5lciB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5kYXRhLXRpbGUge1xuICB3aWR0aDogMzMuMzMzMzMzMyU7XG4gIGZsb2F0OiBsZWZ0O1xuICBwYWRkaW5nOiA1cHg7XG59Il19 */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FilterQuery } from 'app/shared/components/common/filter/filter.component';\nimport Swal from 'sweetalert2';\nimport { KeyFigures } from '../../shared/models/key-figure.interface';\nimport { LastVisitedSites } from '../../shared/models/last-visited-sites.interface';\nimport { Marker } from '../../shared/models/marker.interface';\nimport { ChartService } from '../../shared/services/chart/chart.service';\nimport { MapService } from '../../shared/services/map/map.service';\nimport { SessionService } from '../../shared/services/session/session.service';\nimport { HomeChartData, HomeDonutData, HomeMonthlyConsumptionData, HomeService } from './home.service';\n\nexport interface LoadingHome {\n chartBar: boolean;\n chartDonut: boolean;\n keyFigures: boolean;\n lastVisited: boolean;\n}\n\n@Component({\n selector: 'ga-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n providers: [HomeService],\n})\nexport class HomeComponent implements OnInit {\n keyFigures: KeyFigures;\n filterName = 'main';\n lastVisitedSites: LastVisitedSites[] = [];\n\n loading: LoadingHome = {\n chartBar: false,\n chartDonut: false,\n keyFigures: false,\n lastVisited: false,\n };\n\n dataTiles: any[] = [];\n markers: Marker[] = [];\n sites = [];\n\n currentBarDataset = 0;\n\n // bar chart\n monthlyChartProperties: any = {\n data: [],\n labels: [],\n colors: [],\n width: 1250,\n height: 340,\n options: [],\n legend: [],\n toggleTitles: ['HTVA (€)', 'TTC (€)'],\n downloadTitles: [\n 'Répartition des coûts énergétiques HTVA sur l’année (€)',\n 'Répartition des coûts énergétiques TTC sur l’année (€)',\n ],\n units: ['€', '€'],\n };\n\n // doughnut chart\n fluidsChartProperties = {\n data: [],\n legend: [],\n toggleTitles: ['HTVA (€)', 'TTC (€)'],\n downloadFileNames: [\n 'Répartition de la facture énergétique HTVA sur la période',\n 'Répartition de la facture énergétique TTC sur la période',\n ],\n };\n\n monthToTheEnd = [];\n refreshFilters = false;\n\n constructor(\n private chartService: ChartService,\n private homeService: HomeService,\n private mapService: MapService,\n private sessionService: SessionService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit() {\n this.getKeyFigures();\n this.route.queryParams.subscribe(queryParams => {\n // the home url has '?refresh=true' when the user has changed the company in the navbartop while he was already on the Home page\n if (queryParams.hasOwnProperty('refresh') && queryParams.refresh === 'true') {\n this.refreshFilters = true; // need to reload the filters\n this.router.navigateByUrl('accueil'); // reload the page to take into account the new company looged in\n\n this.getKeyFigures();\n }\n });\n }\n\n initializeLeftComponents() {\n // These queries do not need to be reloaded with filters, so we do them only once\n this.updateLastVisitedSites();\n }\n\n canShowKeyFigures() {\n return Boolean(!this.loading.keyFigures && this.keyFigures && this.keyFigures.sites);\n }\n\n setLoading() {\n this.loading.chartBar = true;\n this.loading.chartDonut = true;\n }\n\n /**\n * Launch search to update sites list and consumption data.\n * Fired by filters\n * @param {FilterQuery} query - query from filter\n */\n search(query: FilterQuery): void {\n this.setLoading();\n\n this.updateGlobalMonthlyConsumption(query);\n if (!this.lastVisitedSites.length || this.refreshFilters) {\n this.loading.lastVisited = true;\n this.lastVisitedSites = [];\n }\n // Better not using async/await here because callback is only linked to the function\n // Search function has multiple async function that doesn't require to wait for each other\n this.setMarkers(query).then(sites => {\n this.sites = sites;\n if (!this.lastVisitedSites.length) {\n this.initializeLeftComponents();\n }\n });\n }\n\n /**\n * Update last visited sites list\n */\n updateLastVisitedSites(): void {\n const lastVisitedSites = this.sessionService.getLastVisitedSites(); // contains only userId and siteId\n const lastVisitedSitesIds = lastVisitedSites.map(site => site.id);\n\n this.lastVisitedSites = this.sites\n .reduce((memo, site) => {\n if (lastVisitedSitesIds.includes(site._id)) {\n const siteName = site.complement || site.name;\n let address = site.streetName;\n\n if (site.streetNumber) {\n address = site.streetNumber + ' ' + site.streetName;\n }\n const siteDate = lastVisitedSites.find(element => element.id === site._id).date;\n\n memo.push({\n id: site._id,\n complement: siteName,\n address,\n zipcode: site.zipcode,\n city: site.city,\n date: siteDate,\n image: this.mapService.getSitePicture(site),\n });\n }\n return memo;\n }, [])\n .sort((a: any, b: any) => {\n return a.date < b.date ? 1 : -1;\n });\n this.loading.lastVisited = false;\n }\n\n /**\n * Main query handling charts and tiles from same data\n * @param {FilterQuery} filters\n */\n async updateGlobalMonthlyConsumption(filters: FilterQuery): Promise {\n // TODO: push into filters le nom de la catégorie dans l'array de la catégorie\n try {\n const response = await this.homeService.getMonthlyGlobalEnergyRepartition(filters);\n const data = response.data;\n\n // create array with all months between dateStart and dateEnd from filters\n this.monthToTheEnd = this.arrayWithMonthFilters(filters);\n\n const monthlyFormatedConsumption = this.homeService.formateToMonthlyConsumption(data, this.monthToTheEnd);\n\n const dataForDonut = this.homeService.refactoDataForDonut(monthlyFormatedConsumption);\n this.handleFluidRepartitionChartData(dataForDonut);\n\n this.handleMonthlyRepartitionChart(monthlyFormatedConsumption);\n this.handleTiles(data);\n this.refreshFilters = false;\n } catch (error) {\n this.loading.chartBar = false;\n this.loading.chartDonut = false;\n }\n }\n\n /**\n * Handle fluid repartition chart data\n * @param {HomeDonutData} data\n */\n handleFluidRepartitionChartData(data: HomeDonutData): void {\n const optionsDonutHT = this.chartService.getHighchartDonutConfig(data.data.ht, data.labels, '€');\n const optionsDonutTTC = this.chartService.getHighchartDonutConfig(data.data.ttc, data.labels, '€');\n const legend = this.chartService.getChartLegends(data.labels);\n\n this.fluidsChartProperties.data = [optionsDonutHT, optionsDonutTTC];\n this.fluidsChartProperties.legend = [legend, legend];\n this.loading.chartDonut = false;\n }\n\n /**\n * Get keyfigures for company and set it to component property keyfigures.\n */\n async getKeyFigures(): Promise {\n this.loading.keyFigures = true;\n try {\n this.keyFigures = await this.homeService.getKeyFigures();\n this.loading.keyFigures = false;\n } catch (err) {\n this.loading.keyFigures = false;\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des chiffres clefs',\n 'error'\n );\n }\n }\n\n /**\n * Get sites then set markers\n * @param {FilterQuery} query\n * @returns {Promise>} sites list\n */\n async setMarkers(query: FilterQuery): Promise {\n try {\n const response = await this.homeService.getSites(query);\n const sites: any[] = response.data;\n this.markers = sites.map(site => {\n const m: Marker = {\n lat: site.latitude,\n lng: site.longitude,\n config: 'site',\n data: this.mapService.getSiteDataForMarkersAddress(site),\n };\n return m;\n });\n return sites;\n } catch (err) {\n this.markers = [];\n return [];\n }\n }\n\n /**\n * Handle monthly repartition chart data\n */\n handleMonthlyRepartitionChart(monthlyFormatedConsumption: HomeMonthlyConsumptionData) {\n this.loading.chartBar = false;\n\n // TODO find better fix\n if (!monthlyFormatedConsumption.data.chart[0].length) {\n this.monthlyChartProperties = {\n data: [],\n labels: [],\n colors: [],\n width: 900,\n height: 340,\n options: [],\n legend: [],\n toggleTitles: ['€ HTVA', '€ TTC'],\n downloadTitles: [\n 'Répartition des coûts énergétiques HTVA sur l’année (€)',\n 'Répartition des coûts énergétiques TTC sur l’année (€)',\n ],\n units: ['€', '€'],\n };\n\n return;\n }\n\n const labels = this.getLabelsFromData(monthlyFormatedConsumption.data.chart[0]);\n const legend = this.chartService.getChartLegends(labels);\n const colors = this.chartService.getBarChartColors(labels);\n\n this.monthlyChartProperties.labels = this.monthToTheEnd;\n\n // We use it as toggled chart, so array of two times the same legend and colors here\n this.monthlyChartProperties.legend = [legend, legend];\n this.monthlyChartProperties.colors = [colors, colors];\n\n this.monthlyChartProperties.data = monthlyFormatedConsumption.data.chart;\n\n this.monthlyChartProperties.options[0] = this.chartService.getConfig('groupable-stacked-bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('stack', null),\n });\n\n this.monthlyChartProperties.options[1] = this.chartService.getConfig('groupable-stacked-bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('stack', null),\n });\n\n this.setUnit(this.monthlyChartProperties.data, this.monthlyChartProperties.units);\n }\n\n /**\n * Extract months from filters dateStart and dateEnd\n * @param {FilterQuery} filters\n * @returns {string[]} list of month at format MM/YYYY\n */\n arrayWithMonthFilters(filters: FilterQuery): string[] {\n const filterDateStart = filters.dateStart;\n const filterDateEnd = filters.dateEnd;\n let maxYear: number;\n\n const monthToTheEnd: string[] = [];\n\n for (maxYear = Number(filterDateStart.substr(0, 4)); maxYear <= Number(filterDateEnd.substr(0, 4)); maxYear++) {\n for (let currentMonth = 1; currentMonth <= 12; currentMonth++) {\n if (\n maxYear === Number(filterDateEnd.substr(0, 4)) &&\n currentMonth > Number(filterDateEnd.substr(5, 2))\n ) {\n break;\n }\n if (\n maxYear === Number(filterDateStart.substr(0, 4)) &&\n currentMonth < Number(filterDateStart.substr(5, 2))\n ) {\n continue;\n }\n if (currentMonth >= 10) {\n monthToTheEnd.push(currentMonth + '/' + maxYear);\n } else {\n monthToTheEnd.push('0' + currentMonth + '/' + maxYear);\n }\n }\n }\n\n return monthToTheEnd;\n }\n\n /**\n * Create data tiles\n * @param {*} data\n */\n handleTiles(data: any) {\n this.dataTiles = this.homeService.refactoDataForTiles(data);\n }\n\n /**\n * Change bar dataset\n * @param dataset\n */\n changeBarDataset(dataset: any) {\n this.currentBarDataset = dataset;\n }\n\n /**\n * Get labels from data\n * @param {Array} data\n * @returns {Array}\n */\n getLabelsFromData(data: HomeChartData[]): string[] {\n return data.map(d => d.label);\n }\n\n /**\n * Populate the unit property of each fluid dataset of each toggle data array\n * @param dataTabs all tab in the view [ tab htva, tab ttc]\n * each tab contains an array of dataset for each fluid\n * tab htva =[ {data: [...], label: 'elec'}, {data: [...], label: 'gaz'} ]\n * set tab htva =[ {data: [...], label: 'elec', unit :'€'}, {data: [...], label: 'gaz', unit :'€'} ]\n */\n private setUnit(dataTabs, units) {\n return dataTabs.map((dataTab, index) => {\n return dataTab.map(dataset => {\n dataset.unit = units[index];\n return dataset;\n });\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\nimport { HomeComponent } from './home.component';\n\nconst HOME_ROUTE = [{ path: '', component: HomeComponent }];\n\n@NgModule({\n declarations: [HomeComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(HOME_ROUTE)],\n})\nexport class HomeModule {}\n","import { Injectable } from '@angular/core';\n\n// services\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { DefaultTile, TilesService } from 'app/shared/services/tiles/tiles.service';\n\n// interfaces\nimport { FilterQuery } from 'app/shared/components/common/filter/filter.component';\nimport { KeyFigures } from 'app/shared/models/key-figure.interface';\n\nexport interface HomeMonthlyConsumptionData {\n data: {\n chart: HomeChartData[][];\n prices: Array<{ [label: string]: number }>;\n };\n labels: string[];\n}\n\nexport interface HomeChartData {\n data: number[];\n label: string;\n unit: string;\n}\n\nexport interface HomeDonutData {\n data: {\n ht: number[];\n ttc: number[];\n };\n labels: string[];\n}\n\n@Injectable()\nexport class HomeService extends PageService {\n constructor(\n public apiService: ApiService,\n public tilesService: TilesService,\n private sessionService: SessionService,\n private energyService: EnergyService,\n private chartService: ChartService\n ) {\n super(apiService);\n }\n\n /***** API *****/\n\n getMonthlyGlobalEnergyRepartition(filters): Promise {\n return this.post('/api/common/global/monthly', filters);\n }\n\n getYearlyGlobalEnergyRepartition(filters): Promise {\n return this.post('/api/common/global/yearly', filters);\n }\n\n /**\n * Get keyfigures for the session company\n * @returns {Promise} keyfigures for the session company\n */\n async getKeyFigures(): Promise {\n const companyId = this.sessionService.getCompanyId();\n try {\n const response = await this.get(`/api/keyfigures/company/${companyId}`);\n return response.data;\n } catch (err) {\n return Promise.reject(err);\n }\n }\n /**\n * Get sites filtered from filters\n * @param {FilterQuery} filters\n * @returns {Promise<*>}\n */\n getSites(filters: FilterQuery = {}): Promise {\n const companyId: string = filters['companyId'] || this.sessionService.getCompany()._id;\n return this.post('/api/companies/' + companyId + '/sites', filters);\n }\n\n /***** FORMATE *****/\n\n /**\n * Format month data to monthly consumption to be displayed in the home page\n * @param {Array<*>} data - month data grouped by month and fluid\n * @param {Array} monthToTheEnd - month labels over the period\n * @returns {{data: {chart: Array<*>, prices: Array<*>}, labels: Array}} chart data (values and labels)\n */\n formateToMonthlyConsumption(data: any[], monthToTheEnd: string[]): HomeMonthlyConsumptionData {\n /**\n * Define default fluid.\n * Used to fill empty month with value 0, and not take a random fluid (will appear in legend)\n */\n const fluidsSet = new Set([]);\n data.forEach(md => {\n if (md.items) {\n md.items.forEach(item => {\n fluidsSet.add(item.energyType);\n });\n }\n });\n const fluidsInData = fluidsSet.values();\n let defaultFluid = fluidsInData.next().value;\n if (!defaultFluid) {\n defaultFluid = 'water';\n }\n\n /**\n * We use a temporary object as it's easy to work with keys (for charts TTC/HT) then indexes\n */\n const res = {\n data: {\n chart: {\n ttc: [],\n ht: [],\n },\n prices: {\n ttc: {},\n ht: {},\n },\n },\n labels: [],\n };\n\n if (data && !data.length) {\n return {\n data: {\n chart: [res.data.chart.ht, res.data.chart.ttc],\n prices: [res.data.prices.ht, res.data.prices.ttc],\n },\n labels: [],\n };\n }\n\n const energies = {\n ttc: {},\n ht: {},\n };\n\n let count = 0;\n\n monthToTheEnd.forEach(month => {\n // month = \"01/2018\"\n const currentMonth = Number(month.substr(0, 2)) - 1;\n const currentYear = Number(month.substr(3, 4));\n\n // Add empty month/year with 0 amount to push the real data forward\n if (data.filter(x => x.year === currentYear && x.month === currentMonth).length < 1) {\n data.splice(count, 0, {\n year: currentYear,\n month: currentMonth,\n items: [\n {\n energyType: defaultFluid,\n totalHT: {\n amount: 0,\n },\n totalTTC: {\n amount: 0,\n },\n year: currentYear,\n month: currentMonth,\n },\n ],\n });\n }\n count = count + 1;\n });\n\n data.sort((a, b) => {\n if (a.year !== b.year) {\n return a.year - b.year;\n }\n return a.month - b.month;\n });\n data.forEach((databyMonth, indexMonth) => {\n databyMonth.month = parseInt(databyMonth.month, 10);\n\n const monthLabel =\n this.chartService.getMonthNumber(databyMonth.month + 1) + '/' + databyMonth.items[0].year.toString();\n\n // We add the current month as new chart label\n res.labels.push(monthLabel);\n\n if (typeof res.data.prices.ttc[monthLabel] === 'undefined') {\n res.data.prices.ttc[monthLabel] = 0;\n }\n\n if (typeof res.data.prices.ht[monthLabel] === 'undefined') {\n res.data.prices.ht[monthLabel] = 0;\n }\n\n databyMonth.items.forEach(energyData => {\n for (const priceType in energies) {\n if (!energies.hasOwnProperty(priceType)) {\n continue;\n }\n if (typeof energies[priceType][energyData.energyType] === 'undefined') {\n // need to initialize the array with 12 zeros and then replace the energies[priceType][energyType][month] with the correct values\n energies[priceType][energyData.energyType] = Array.apply(null, Array(data.length)).map(\n Number.prototype.valueOf,\n 0\n );\n }\n\n // We get the price as we want HT or TTC\n const price = priceType === 'ht' ? energyData.totalHT.amount : energyData.totalTTC.amount;\n\n // We add the price to total price\n res.data.prices[priceType][monthLabel] += price;\n\n // We add the price to energy values, if more than a year index becomes greater than 11\n energies[priceType][energyData.energyType][indexMonth] = price;\n }\n });\n });\n\n // We have all the values HT and TTC by energies. We create the chart data from it\n for (const priceType in energies) {\n if (energies.hasOwnProperty(priceType)) {\n for (const i in energies[priceType]) {\n if (energies[priceType].hasOwnProperty(i)) {\n res.data.chart[priceType].push({\n data: energies[priceType][i],\n label: i,\n });\n }\n }\n }\n }\n\n return {\n data: {\n chart: [res.data.chart.ht, res.data.chart.ttc],\n prices: [res.data.prices.ht, res.data.prices.ttc],\n },\n labels: [],\n };\n }\n\n getFromMapReduce(data: any[]): number[] {\n return data.map((element, index) => {\n return element.data.reduce((memo, currentItem) => {\n return memo + currentItem;\n }, 0);\n });\n }\n\n /**\n * Format monthly data for donut display\n * @param {HomeMonthlyConsumptionData} data - monthly data\n * @returns {HomeDonutData}\n */\n refactoDataForDonut(data: HomeMonthlyConsumptionData): HomeDonutData {\n return {\n // Example of the following function call : [{data: [1100, 15, 55, 80]}, {data: [98, 82, 48, 52]}] => [1250, 280]\n data: {\n ht: this.getFromMapReduce(data.data.chart[0]),\n ttc: this.getFromMapReduce(data.data.chart[1]),\n },\n labels: data.data.chart[0].map(element => element.label),\n };\n }\n\n /**\n * Format data for home tiles\n * @param {Array<*>} data\n * @returns {Array}\n */\n refactoDataForTiles(allData: any[] = []): DefaultTile[] {\n const response: DefaultTile[] = [];\n\n const totals: { [key: string]: number } = {};\n\n this.energyService\n .getAllFluids()\n .concat(['co2', 'ht', 'ttc'])\n .forEach(item => {\n totals[item] = 0;\n });\n\n allData.forEach(monthDatas => {\n monthDatas.items.forEach(singleData => {\n if (singleData && singleData.consumption) {\n const energyType = singleData.energyType;\n\n if (totals.hasOwnProperty(energyType)) {\n totals[energyType] += singleData.consumption.quantity;\n }\n\n if (singleData.co2) {\n totals.co2 += singleData.co2;\n }\n totals.ht += singleData.totalHT.amount;\n totals.ttc += singleData.totalTTC.amount;\n }\n });\n });\n\n // create cost tile first we TTC and HT values - '€ HTVA - TTC'\n if (totals['ttc'] && totals['ht']) {\n const tile = this.tilesService.generateTile('ttc_ht');\n tile.value = totals['ht'];\n tile.value2 = totals['ttc'];\n\n delete totals['ht'];\n delete totals['ttc'];\n response.push(tile); // push the costs in first position\n }\n\n Object.keys(totals).forEach(key => {\n const total = totals[key];\n\n if (total !== 0) {\n const tile = this.tilesService.generateTile(key);\n tile.value = total;\n tile.value2 = null;\n\n response.unshift(tile); // insert in first position so that the cost tile is at the end\n }\n });\n\n return response;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL21hbmFnZXJzL2RldmlzL2RldmlzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-devis',\n templateUrl: './devis.component.html',\n styleUrls: ['./devis.component.scss'],\n providers: [],\n})\nexport class DevisComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { DevisComponent } from './devis.component';\n\nconst DEVIS_ROUTE = [{ path: '', component: DevisComponent }];\n\n@NgModule({\n declarations: [DevisComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(DEVIS_ROUTE)],\n})\nexport class DevisModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL21hbmFnZXJzL2V4Y2hhbmdlL2V4Y2hhbmdlLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-exchange',\n templateUrl: './exchange.component.html',\n styleUrls: ['./exchange.component.scss'],\n providers: [],\n})\nexport class ExchangeComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { ExchangeComponent } from './exchange.component';\n\nconst EXCHANGE_ROUTE = [{ path: '', component: ExchangeComponent }];\n\n@NgModule({\n declarations: [ExchangeComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(EXCHANGE_ROUTE)],\n})\nexport class ExchangeModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL21hbmFnZXJzL21hbmFnZXJzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-managers',\n templateUrl: './managers.component.html',\n styleUrls: ['./managers.component.scss'],\n providers: [],\n})\nexport class ManagersComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { ManagersComponent } from './managers.component';\n\nconst MANAGERS_ROUTE = [{ path: '', component: ManagersComponent }];\n\n@NgModule({\n declarations: [ManagersComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(MANAGERS_ROUTE)],\n})\nexport class ManagersModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3Byb2ZpbGUvYWNjb3VudC9hY2NvdW50LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-account',\n templateUrl: './account.component.html',\n styleUrls: ['./account.component.scss'],\n providers: [],\n})\nexport class AccountComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccountComponent } from './account.component';\n\nconst ACCOUNT_ROUTE = [{ path: '', component: AccountComponent }];\n\n@NgModule({\n declarations: [AccountComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(ACCOUNT_ROUTE)],\n})\nexport class AccountModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3Byb2ZpbGUvZW0vZW0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-em',\n templateUrl: './em.component.html',\n styleUrls: ['./em.component.scss'],\n providers: [],\n})\nexport class EmComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { EmComponent } from './em.component';\n\nconst EM_ROUTE = [{ path: '', component: EmComponent }];\n\n@NgModule({\n declarations: [EmComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(EM_ROUTE)],\n})\nexport class EmModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.scss'],\n providers: [],\n})\nexport class ProfileComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { ProfileComponent } from './profile.component';\n\nconst PROFILE_ROUTE = [{ path: '', component: ProfileComponent }];\n\n@NgModule({\n declarations: [ProfileComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(PROFILE_ROUTE)],\n})\nexport class ProfileModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3Byb2ZpbGUvdXNlcnMvdXNlcnMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-users',\n templateUrl: './users.component.html',\n styleUrls: ['./users.component.scss'],\n providers: [],\n})\nexport class UsersComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { UsersComponent } from './users.component';\n\nconst USERS_ROUTE = [{ path: '', component: UsersComponent }];\n\n@NgModule({\n declarations: [UsersComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(USERS_ROUTE)],\n})\nexport class UsersModule {}\n","export default \".sign-in-background {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n background-image: url('login.jpg');\\n background-color: white;\\n background-size: cover;\\n}\\n\\n.signin-form {\\n background-color: #f3f3f4;\\n color: inherit;\\n padding: 20px;\\n border-color: #e7eaec;\\n -o-border-image: none;\\n -webkit-border-image: none;\\n border-image: none;\\n border-style: solid solid none;\\n border-radius: 10px;\\n border-width: 1px 0;\\n}\\n\\n.signin-middle-box {\\n width: 300px;\\n z-index: 100;\\n margin: 0 auto;\\n text-align: center;\\n -webkit-animation-name: fadeInDown;\\n animation-name: fadeInDown;\\n -webkit-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n animation-fill-mode: both;\\n max-width: 400px;\\n padding-top: 40px;\\n}\\n\\n.signin-middle-box h1 {\\n font-size: 170px;\\n}\\n\\n.main-page-logo {\\n margin-bottom: 40px;\\n width: 100%;\\n}\\n\\n.sign-in-content {\\n background-color: #f3f3f4;\\n color: inherit;\\n padding: 15px 20px 20px 20px;\\n border-color: #e7eaec;\\n -webkit-border-image: none;\\n -o-border-image: none;\\n border-image: none;\\n border-style: solid solid none;\\n border-radius: 10px;\\n border-width: 1px 0;\\n}\\n\\n.form-group,\\n.form-control {\\n margin-bottom: 15px;\\n}\\n\\n.error {\\n color: red;\\n}\\n\\n.middle-box {\\n max-width: 400px;\\n z-index: 100;\\n margin: 0 auto;\\n padding-top: 40px;\\n}\\n\\n.lockscreen.middle-box {\\n width: 200px;\\n padding-top: 110px;\\n}\\n\\n.loginscreen.middle-box {\\n width: 300px;\\n}\\n\\n.loginColumns {\\n max-width: 800px;\\n margin: 0 auto;\\n padding: 100px 20px 20px 20px;\\n}\\n\\n.passwordBox {\\n max-width: 460px;\\n margin: 0 auto;\\n padding: 100px 20px 20px 20px;\\n}\\n\\n.logo-name {\\n color: #e6e6e6;\\n font-size: 180px;\\n font-weight: 800;\\n letter-spacing: -10px;\\n margin-bottom: 0;\\n}\\n\\n.wrapper .middle-box {\\n margin-top: 140px;\\n}\\n\\n.lock-word {\\n z-index: 10;\\n position: absolute;\\n top: 110px;\\n left: 50%;\\n margin-left: -470px;\\n}\\n\\n.lock-word span {\\n font-size: 100px;\\n font-weight: 600;\\n color: #e9e9e9;\\n display: inline-block;\\n}\\n\\n.lock-word .first-word {\\n margin-right: 160px;\\n}\\n\\n.form-group {\\n margin: 0 0 15px 0;\\n}\\n\\n.form-group .form-control {\\n background-color: #ffffff;\\n border: 1px solid #e5e6e7;\\n border-radius: 1px;\\n color: inherit;\\n display: block;\\n padding: 6px 12px;\\n -webkit-transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;\\n transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;\\n width: 100%;\\n font-size: 14px;\\n line-height: normal;\\n height: 35px;\\n}\\n\\n.form-group .form-control:focus {\\n border-color: #1ab394;\\n}\\n\\n.form-group.has-error .form-control {\\n border-color: #d9534f;\\n}\\n\\n.margin-btm-select {\\n margin-bottom: 50px;\\n background-color: white;\\n}\\n\\n.request-error {\\n text-align: left;\\n font-size: 14px;\\n color: #d9534f;\\n margin-bottom: 10px;\\n}\\n\\n.signin-btn {\\n display: block;\\n margin-bottom: 15px;\\n width: 100%;\\n font-weight: normal;\\n text-align: center;\\n vertical-align: middle;\\n touch-action: manipulation;\\n cursor: pointer;\\n border: 1px solid #1ab394;\\n white-space: nowrap;\\n padding: 6px 12px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n background-color: #1ab394;\\n color: #ffffff;\\n border-radius: 3px;\\n}\\n\\n.signin-btn:hover {\\n background-color: #18a689;\\n border-color: #18a689;\\n}\\n\\n.form-error {\\n color: #d9534f;\\n line-height: 1.4;\\n font-size: 13px;\\n margin-top: 5px;\\n text-align: left;\\n}\\n\\nsmall {\\n color: #337ab7;\\n}\\n\\n@-webkit-keyframes fadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -100%, 0);\\n transform: translate3d(0, -100%, 0);\\n }\\n 100% {\\n opacity: 1;\\n -webkit-transform: none;\\n transform: none;\\n }\\n}\\n\\n@keyframes fadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -100%, 0);\\n transform: translate3d(0, -100%, 0);\\n }\\n 100% {\\n opacity: 1;\\n -webkit-transform: none;\\n transform: none;\\n }\\n}\\n\\n.reset-password-instructions {\\n text-align: justify;\\n font-size: 15px;\\n padding: 10px;\\n}\\n\\n#strength {\\n text-align: left;\\n}\\n\\n#strength #strengthBar {\\n display: inline;\\n list-style: none;\\n}\\n\\n#strength #strengthBar .point:last {\\n margin: 0 !important;\\n}\\n\\n#strength #strengthBar .point {\\n background: #ddd;\\n border-radius: 2px;\\n display: inline-block;\\n height: 5px;\\n margin-right: 1px;\\n width: 30px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxrQ0FBQTtFQUNBLHVCQUFBO0VBQ0Esc0JBQUE7QUNDSjs7QURFQTtFQUNJLHlCQUFBO0VBQ0EsY0FBQTtFQUNBLGFBQUE7RUFDQSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtBQ0NKOztBREVBO0VBQ0ksWUFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQ0FBQTtFQUNBLDBCQUFBO0VBQ0EsOEJBQUE7RUFDQSxzQkFBQTtFQUNBLGlDQUFBO0VBQ0EseUJBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0FDQ0o7O0FEQ0k7RUFDSSxnQkFBQTtBQ0NSOztBREdBO0VBQ0ksbUJBQUE7RUFDQSxXQUFBO0FDQUo7O0FER0E7RUFDSSx5QkFBQTtFQUNBLGNBQUE7RUFDQSw0QkFBQTtFQUNBLHFCQUFBO0VBQ0EsMEJBQUE7T0FBQSxxQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0FDQUo7O0FER0E7O0VBRUksbUJBQUE7QUNBSjs7QURHQTtFQUNJLFVBQUE7QUNBSjs7QURHQTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtBQ0FKOztBREdBO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0FDQUo7O0FER0E7RUFDSSxZQUFBO0FDQUo7O0FER0E7RUFDSSxnQkFBQTtFQUNBLGNBQUE7RUFDQSw2QkFBQTtBQ0FKOztBREdBO0VBQ0ksZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsNkJBQUE7QUNBSjs7QURHQTtFQUNJLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7RUFDQSxnQkFBQTtBQ0FKOztBREdBO0VBQ0ksaUJBQUE7QUNBSjs7QURHQTtFQUNJLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFBO0VBQ0EsbUJBQUE7QUNBSjs7QURHQTtFQUNJLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBO0VBQ0EscUJBQUE7QUNBSjs7QURHQTtFQUNJLG1CQUFBO0FDQUo7O0FER0E7RUFDSSxrQkFBQTtBQ0FKOztBREVJO0VBQ0kseUJBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLHNGQUFBO0VBQUEsOEVBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtBQ0FSOztBRENRO0VBQ0kscUJBQUE7QUNDWjs7QURJUTtFQUNJLHFCQUFBO0FDRlo7O0FET0E7RUFDSSxtQkFBQTtFQUNBLHVCQUFBO0FDSko7O0FET0E7RUFDSSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7QUNKSjs7QURPQTtFQUNJLGNBQUE7RUFDQSxtQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0Esc0JBQUE7RUFFQSwwQkFBQTtFQUNBLGVBQUE7RUFDQSx5QkFBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsdUJBQUE7RUFDQSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTtFQUNBLHlCQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0FDSko7O0FETUk7RUFDSSx5QkFBQTtFQUNBLHFCQUFBO0FDSlI7O0FEUUE7RUFDSSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0FDTEo7O0FEUUE7RUFDSSxjQUFBO0FDTEo7O0FEUUE7RUFDSTtJQUNJLFVBQUE7SUFDQSwyQ0FBQTtJQUNBLG1DQUFBO0VDTE47RURRRTtJQUNJLFVBQUE7SUFDQSx1QkFBQTtJQUNBLGVBQUE7RUNOTjtBQUNGOztBRFNBO0VBQ0k7SUFDSSxVQUFBO0lBQ0EsMkNBQUE7SUFDQSxtQ0FBQTtFQ1BOO0VEVUU7SUFDSSxVQUFBO0lBQ0EsdUJBQUE7SUFDQSxlQUFBO0VDUk47QUFDRjs7QURXQTtFQUNJLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7QUNUSjs7QURZQTtFQUNJLGdCQUFBO0FDVEo7O0FEVUk7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7QUNSUjs7QURVUTtFQUNJLG9CQUFBO0FDUlo7O0FEV1E7RUFDSSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EscUJBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0FDVFoiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zaWduLWluLWJhY2tncm91bmQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi8uLi8uLi9hc3NldHMvaW1nL2JhY2tncm91bmRzL2xvZ2luLmpwZycpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG59XG5cbi5zaWduaW4tZm9ybSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmNDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJvcmRlci1jb2xvcjogI2U3ZWFlYztcbiAgICAtby1ib3JkZXItaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLWltYWdlOiBub25lO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGJvcmRlci13aWR0aDogMXB4IDA7XG59XG5cbi5zaWduaW4tbWlkZGxlLWJveCB7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluRG93bjtcbiAgICBhbmltYXRpb24tbmFtZTogZmFkZUluRG93bjtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIHBhZGRpbmctdG9wOiA0MHB4O1xuXG4gICAgaDEge1xuICAgICAgICBmb250LXNpemU6IDE3MHB4O1xuICAgIH1cbn1cblxuLm1haW4tcGFnZS1sb2dvIHtcbiAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uc2lnbi1pbi1jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2Y0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHBhZGRpbmc6IDE1cHggMjBweCAyMHB4IDIwcHg7XG4gICAgYm9yZGVyLWNvbG9yOiAjZTdlYWVjO1xuICAgIGJvcmRlci1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkIHNvbGlkIG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3JkZXItd2lkdGg6IDFweCAwO1xufVxuXG4uZm9ybS1ncm91cCxcbi5mb3JtLWNvbnRyb2wge1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG5cbi5lcnJvciB7XG4gICAgY29sb3I6IHJlZDtcbn1cblxuLm1pZGRsZS1ib3gge1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgei1pbmRleDogMTAwO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctdG9wOiA0MHB4O1xufVxuXG4ubG9ja3NjcmVlbi5taWRkbGUtYm94IHtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgcGFkZGluZy10b3A6IDExMHB4O1xufVxuXG4ubG9naW5zY3JlZW4ubWlkZGxlLWJveCB7XG4gICAgd2lkdGg6IDMwMHB4O1xufVxuXG4ubG9naW5Db2x1bW5zIHtcbiAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDEwMHB4IDIwcHggMjBweCAyMHB4O1xufVxuXG4ucGFzc3dvcmRCb3gge1xuICAgIG1heC13aWR0aDogNDYwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMTAwcHggMjBweCAyMHB4IDIwcHg7XG59XG5cbi5sb2dvLW5hbWUge1xuICAgIGNvbG9yOiAjZTZlNmU2O1xuICAgIGZvbnQtc2l6ZTogMTgwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLndyYXBwZXIgLm1pZGRsZS1ib3gge1xuICAgIG1hcmdpbi10b3A6IDE0MHB4O1xufVxuXG4ubG9jay13b3JkIHtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMTBweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IC00NzBweDtcbn1cblxuLmxvY2std29yZCBzcGFuIHtcbiAgICBmb250LXNpemU6IDEwMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICNlOWU5ZTk7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubG9jay13b3JkIC5maXJzdC13b3JkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2MHB4O1xufVxuXG4uZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luOiAwIDAgMTVweCAwO1xuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNWU2ZTc7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0IDBzLCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0IDBzO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMWFiMzk0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5oYXMtZXJyb3Ige1xuICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI2Q5NTM0ZjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1hcmdpbi1idG0tc2VsZWN0IHtcbiAgICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4ucmVxdWVzdC1lcnJvciB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgY29sb3I6ICNkOTUzNGY7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLnNpZ25pbi1idG4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAtbXMtdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMxYWIzOTQ7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWFiMzk0O1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMThhNjg5O1xuICAgICAgICBib3JkZXItY29sb3I6ICMxOGE2ODk7XG4gICAgfVxufVxuXG4uZm9ybS1lcnJvciB7XG4gICAgY29sb3I6ICNkOTUzNGY7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbnNtYWxsIHtcbiAgICBjb2xvcjogIzMzN2FiNztcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbkRvd24ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluRG93biB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cbn1cblxuLnJlc2V0LXBhc3N3b3JkLWluc3RydWN0aW9ucyB7XG4gICAgdGV4dC1hbGlnbjoganVzdGlmeTtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgcGFkZGluZzogMTBweDtcbn1cblxuI3N0cmVuZ3RoIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICNzdHJlbmd0aEJhciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICAgICAucG9pbnQ6bGFzdCB7XG4gICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb2ludCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZGRkO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgaGVpZ2h0OiA1cHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDFweDtcbiAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnNpZ24taW4tYmFja2dyb3VuZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vYXNzZXRzL2ltZy9iYWNrZ3JvdW5kcy9sb2dpbi5qcGdcIik7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuXG4uc2lnbmluLWZvcm0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2Y0O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgcGFkZGluZzogMjBweDtcbiAgYm9yZGVyLWNvbG9yOiAjZTdlYWVjO1xuICAtby1ib3JkZXItaW1hZ2U6IG5vbmU7XG4gIGJvcmRlci1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZCBzb2xpZCBub25lO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBib3JkZXItd2lkdGg6IDFweCAwO1xufVxuXG4uc2lnbmluLW1pZGRsZS1ib3gge1xuICB3aWR0aDogMzAwcHg7XG4gIHotaW5kZXg6IDEwMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluRG93bjtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd247XG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBtYXgtd2lkdGg6IDQwMHB4O1xuICBwYWRkaW5nLXRvcDogNDBweDtcbn1cbi5zaWduaW4tbWlkZGxlLWJveCBoMSB7XG4gIGZvbnQtc2l6ZTogMTcwcHg7XG59XG5cbi5tYWluLXBhZ2UtbG9nbyB7XG4gIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc2lnbi1pbi1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmNDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHBhZGRpbmc6IDE1cHggMjBweCAyMHB4IDIwcHg7XG4gIGJvcmRlci1jb2xvcjogI2U3ZWFlYztcbiAgYm9yZGVyLWltYWdlOiBub25lO1xuICBib3JkZXItc3R5bGU6IHNvbGlkIHNvbGlkIG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJvcmRlci13aWR0aDogMXB4IDA7XG59XG5cbi5mb3JtLWdyb3VwLFxuLmZvcm0tY29udHJvbCB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG5cbi5lcnJvciB7XG4gIGNvbG9yOiByZWQ7XG59XG5cbi5taWRkbGUtYm94IHtcbiAgbWF4LXdpZHRoOiA0MDBweDtcbiAgei1pbmRleDogMTAwO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZy10b3A6IDQwcHg7XG59XG5cbi5sb2Nrc2NyZWVuLm1pZGRsZS1ib3gge1xuICB3aWR0aDogMjAwcHg7XG4gIHBhZGRpbmctdG9wOiAxMTBweDtcbn1cblxuLmxvZ2luc2NyZWVuLm1pZGRsZS1ib3gge1xuICB3aWR0aDogMzAwcHg7XG59XG5cbi5sb2dpbkNvbHVtbnMge1xuICBtYXgtd2lkdGg6IDgwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMTAwcHggMjBweCAyMHB4IDIwcHg7XG59XG5cbi5wYXNzd29yZEJveCB7XG4gIG1heC13aWR0aDogNDYwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAxMDBweCAyMHB4IDIwcHggMjBweDtcbn1cblxuLmxvZ28tbmFtZSB7XG4gIGNvbG9yOiAjZTZlNmU2O1xuICBmb250LXNpemU6IDE4MHB4O1xuICBmb250LXdlaWdodDogODAwO1xuICBsZXR0ZXItc3BhY2luZzogLTEwcHg7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cmFwcGVyIC5taWRkbGUtYm94IHtcbiAgbWFyZ2luLXRvcDogMTQwcHg7XG59XG5cbi5sb2NrLXdvcmQge1xuICB6LWluZGV4OiAxMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDExMHB4O1xuICBsZWZ0OiA1MCU7XG4gIG1hcmdpbi1sZWZ0OiAtNDcwcHg7XG59XG5cbi5sb2NrLXdvcmQgc3BhbiB7XG4gIGZvbnQtc2l6ZTogMTAwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjZTllOWU5O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5sb2NrLXdvcmQgLmZpcnN0LXdvcmQge1xuICBtYXJnaW4tcmlnaHQ6IDE2MHB4O1xufVxuXG4uZm9ybS1ncm91cCB7XG4gIG1hcmdpbjogMCAwIDE1cHggMDtcbn1cbi5mb3JtLWdyb3VwIC5mb3JtLWNvbnRyb2wge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTVlNmU3O1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNnB4IDEycHg7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCAwcywgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dCAwcztcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgaGVpZ2h0OiAzNXB4O1xufVxuLmZvcm0tZ3JvdXAgLmZvcm0tY29udHJvbDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzFhYjM5NDtcbn1cbi5mb3JtLWdyb3VwLmhhcy1lcnJvciAuZm9ybS1jb250cm9sIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDk1MzRmO1xufVxuXG4ubWFyZ2luLWJ0bS1zZWxlY3Qge1xuICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLnJlcXVlc3QtZXJyb3Ige1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjZDk1MzRmO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4uc2lnbmluLWJ0biB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAtbXMtdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMxYWIzOTQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHBhZGRpbmc6IDZweCAxMnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWFiMzk0O1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLnNpZ25pbi1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMThhNjg5O1xuICBib3JkZXItY29sb3I6ICMxOGE2ODk7XG59XG5cbi5mb3JtLWVycm9yIHtcbiAgY29sb3I6ICNkOTUzNGY7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG5zbWFsbCB7XG4gIGNvbG9yOiAjMzM3YWI3O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluRG93biB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuQGtleWZyYW1lcyBmYWRlSW5Eb3duIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG4ucmVzZXQtcGFzc3dvcmQtaW5zdHJ1Y3Rpb25zIHtcbiAgdGV4dC1hbGlnbjoganVzdGlmeTtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4jc3RyZW5ndGgge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuI3N0cmVuZ3RoICNzdHJlbmd0aEJhciB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbiNzdHJlbmd0aCAjc3RyZW5ndGhCYXIgLnBvaW50Omxhc3Qge1xuICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cbiNzdHJlbmd0aCAjc3RyZW5ndGhCYXIgLnBvaW50IHtcbiAgYmFja2dyb3VuZDogI2RkZDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogNXB4O1xuICBtYXJnaW4tcmlnaHQ6IDFweDtcbiAgd2lkdGg6IDMwcHg7XG59Il19 */\"","import { Component, SimpleChange } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ResetPasswordService } from './reset-password.service';\n\n@Component({\n selector: 'ga-reset-password',\n templateUrl: './reset-password.component.html',\n styleUrls: ['./reset-password.component.scss'],\n providers: [ResetPasswordService],\n})\nexport class ResetPasswordComponent {\n isActivation = false;\n isSSOProviderActivation = false;\n providerName: string;\n passwordResetForm: FormGroup;\n apiError: string;\n visibility = 'hidden';\n isPasswordChanged = false;\n isPasswordChanging = false;\n token: string = null;\n /** According to the strength of the password, this object contains :\n * - a table with the missing prerequisites\n * - a table with the validated prerequisites\n * */\n public prerequisites: { prerequisitesMissing: boolean[]; prerequisitesValidated: boolean[] } = {\n prerequisitesMissing: [],\n prerequisitesValidated: [],\n };\n\n /** Colors for strength bar of password*/\n private colors: string[] = ['#D8454A', '#F48C54', '#EBC44E', '#F9C975', '#7E9E7B'];\n constructor(\n fb: FormBuilder,\n private router: Router,\n private resetPasswordService: ResetPasswordService,\n private route: ActivatedRoute\n ) {\n this.isActivation = route.snapshot.data.activation || false;\n this.route.queryParams.subscribe({\n next: params => {\n this.token = params['token'];\n this.isSSOProviderActivation = params['provider'] || false;\n if (this.isSSOProviderActivation) {\n this.providerName = params['provider'];\n }\n },\n });\n this.passwordResetForm = fb.group(\n {\n password: ['', [Validators.required, Validators.minLength(8)]],\n passwordCheck: ['', [Validators.required, Validators.minLength(8)]],\n },\n {\n validator: this.matchPassword.bind(this),\n }\n );\n }\n\n /**\n * Check password prerequisites conformity then check matching of both password inputs\n * @param {AbstractControl} control\n * @returns\n */\n private matchPassword(control: AbstractControl) {\n const password = control.get('password').value; // to get value in input tag\n const confirmPassword = control.get('passwordCheck').value; // to get value in input tag\n this.prerequisites = this.resetPasswordService.getPrerequisitesValuesOfPassword(password);\n if (password && this.prerequisites.prerequisitesMissing.length > 0) {\n control.get('password').setErrors({ Prerequisites: true });\n } else if (password !== confirmPassword) {\n control.get('passwordCheck').setErrors({ MatchPassword: true });\n } else {\n return null;\n }\n }\n\n public getErrorClass(control: FormControl): object {\n return { 'has-error': !control.valid && control.touched };\n }\n\n public inputHasError(control: FormControl, errorType): boolean {\n return control.errors && control.errors[errorType] && control.touched;\n }\n\n public submitForm(form: any): void {\n this.apiError = null;\n if (\n this.isSSOProviderActivation ||\n (this.passwordResetForm.valid && !this.isPasswordChanged && !this.isPasswordChanging)\n ) {\n this.isPasswordChanging = true;\n this.resetPasswordService\n .resetOrActivate(form, this.token, this.isActivation, this.isSSOProviderActivation)\n .then(response => {\n this.isPasswordChanging = false;\n this.isPasswordChanged = true;\n })\n .catch(err => {\n this.isPasswordChanging = false;\n if (err.code === 410) {\n this.apiError = `Le lien n'est pas valide ou a expiré.`;\n } else {\n this.apiError = 'Une erreur est survenue, veuillez réessayer plus tard';\n }\n });\n } else {\n this.touchedAllFields();\n }\n }\n\n private touchedAllFields() {\n Object.keys(this.passwordResetForm.controls).forEach(field => {\n const control = this.passwordResetForm.get(field);\n control.markAsTouched({ onlySelf: true });\n });\n }\n\n public goToLogin() {\n this.router.navigateByUrl('/authentification');\n }\n\n get passwordChangingText() {\n if (this.isActivation) {\n if (!this.isPasswordChanging) {\n return 'Activer mon compte';\n }\n return 'Activation en cours...';\n } else {\n if (!this.isPasswordChanging) {\n return 'Changer le mot de passe';\n }\n return 'Changement en cours...';\n }\n }\n\n get instructionText() {\n if (this.isSSOProviderActivation) {\n return `Activez votre compte et connectez vous avec votre adresse email \"${this.providerName}\".`;\n }\n if (this.isActivation) {\n return 'Pour activer votre compte, veuillez choisir un mot de passe et le confirmer. ';\n }\n return 'Veuillez entrer votre nouveau mot de passe et le confirmer.';\n }\n\n /**\n * return the description of prerequisite\n * @param {string} prerequisite the name of the prerequiste\n * @return {string} description of the prerequisite to show in the view\n */\n public getDescOfPrerequisite(prerequisite: string): string {\n let desc = '';\n if (prerequisite === 'lower') {\n desc = 'au moins une lettre minuscule';\n } else if (prerequisite === 'upper') {\n desc = 'au moins une lettre majuscule';\n } else if (prerequisite === 'digit') {\n desc = 'au moins un chiffre';\n } else if (prerequisite === 'special') {\n desc = 'au moins un caractère spécial';\n } else if (prerequisite === 'charCount') {\n desc = 'au moins 8 caractères';\n }\n return desc;\n }\n\n /**\n * get the color of the scale according to password strength\n * @return {string} color in hexadecimal RGB\n */\n get passwordStrengthColor() {\n return this.colors[this.prerequisites.prerequisitesValidated.length - 1];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\nimport { ResetPasswordComponent } from './reset-password.component';\n\nconst RESETPASSWORD_ROUTE = [{ path: '', component: ResetPasswordComponent }];\n\n@NgModule({\n declarations: [ResetPasswordComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(RESETPASSWORD_ROUTE)],\n})\nexport class ResetPasswordModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\n\n@Injectable()\nexport class ResetPasswordService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n resetOrActivate(data, token, isActivation, isSSOActivation) {\n const form = {\n password: data.password,\n passwordCheck: data.passwordCheck,\n token,\n };\n let route = '/api/auth/reset-password';\n\n if (isActivation) {\n route = isSSOActivation ? '/auth/activate-account' : '/api/auth/activate-account';\n }\n return this.post(route, form);\n }\n /**\n * Fills prerequisitesValidated and prerequisitesMissing according to the result of regex :\n * - contains a lower case\n * - contains a upper case\n * - contains a digit\n * - contains a special character\n * - contains at least 8 characters\n * @param {string} password\n * @return {{ prerequisitesMissing: boolean[]; prerequisitesValidated: boolean[] }}\n */\n public getPrerequisitesValuesOfPassword(\n password: string\n ): { prerequisitesMissing: boolean[]; prerequisitesValidated: boolean[] } {\n const result = {\n prerequisitesMissing: [],\n prerequisitesValidated: [],\n };\n\n const prerequisites = {\n charCount: password.length >= 8,\n lower: /[a-z]/.test(password),\n upper: /[A-Z]/.test(password),\n digit: /\\d/.test(password),\n special: /\\W/.test(password),\n };\n for (const check in prerequisites) {\n if (prerequisites[check]) {\n result.prerequisitesValidated.push(check);\n } else {\n result.prerequisitesMissing.push(check);\n }\n }\n return result;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3JzZS9yc2UuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-rse',\n templateUrl: './rse.component.html',\n styleUrls: ['./rse.component.scss'],\n providers: [],\n})\nexport class RseComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { RseComponent } from './rse.component';\n\nconst RSE_ROUTE = [{ path: '', component: RseComponent }];\n\n@NgModule({\n declarations: [RseComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(RSE_ROUTE)],\n})\nexport class RseModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3J1bGVzL3J1bGVzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-rules',\n templateUrl: './rules.component.html',\n styleUrls: ['./rules.component.scss'],\n providers: [],\n})\nexport class RulesComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { RulesComponent } from './rules.component';\n\nconst RULES_ROUTE = [{ path: '', component: RulesComponent }];\n\n@NgModule({\n declarations: [RulesComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(RULES_ROUTE)],\n})\nexport class RulesModule {}\n","export default \".sign-in-background {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n background-image: url('login.jpg');\\n background-color: white;\\n background-size: cover;\\n}\\n\\n.signin-form {\\n background-color: #f3f3f4;\\n color: inherit;\\n padding: 20px;\\n border-color: #e7eaec;\\n -o-border-image: none;\\n -webkit-border-image: none;\\n border-image: none;\\n border-style: solid solid none;\\n border-radius: 10px;\\n border-width: 1px 0;\\n}\\n\\n.signin-middle-box {\\n width: 300px;\\n z-index: 100;\\n margin: 0 auto;\\n text-align: center;\\n -webkit-animation-name: fadeInDown;\\n animation-name: fadeInDown;\\n -webkit-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n animation-fill-mode: both;\\n max-width: 400px;\\n padding-top: 40px;\\n}\\n\\n.signin-middle-box h1 {\\n font-size: 170px;\\n}\\n\\n.main-page-logo {\\n margin-bottom: 40px;\\n width: 100%;\\n}\\n\\n.sign-in-content {\\n background-color: #f3f3f4;\\n color: inherit;\\n padding: 15px 20px 20px 20px;\\n border-color: #e7eaec;\\n -webkit-border-image: none;\\n -o-border-image: none;\\n border-image: none;\\n border-style: solid solid none;\\n border-radius: 10px;\\n border-width: 1px 0;\\n}\\n\\n.form-group,\\n.form-control {\\n margin-bottom: 15px;\\n}\\n\\n.error {\\n color: red;\\n}\\n\\n.middle-box {\\n max-width: 400px;\\n z-index: 100;\\n margin: 0 auto;\\n padding-top: 40px;\\n}\\n\\n.lockscreen.middle-box {\\n width: 200px;\\n padding-top: 110px;\\n}\\n\\n.loginscreen.middle-box {\\n width: 300px;\\n}\\n\\n.loginColumns {\\n max-width: 800px;\\n margin: 0 auto;\\n padding: 100px 20px 20px 20px;\\n}\\n\\n.passwordBox {\\n max-width: 460px;\\n margin: 0 auto;\\n padding: 100px 20px 20px 20px;\\n}\\n\\n.logo-name {\\n color: #e6e6e6;\\n font-size: 180px;\\n font-weight: 800;\\n letter-spacing: -10px;\\n margin-bottom: 0;\\n}\\n\\n.wrapper .middle-box {\\n margin-top: 140px;\\n}\\n\\n.lock-word {\\n z-index: 10;\\n position: absolute;\\n top: 110px;\\n left: 50%;\\n margin-left: -470px;\\n}\\n\\n.lock-word span {\\n font-size: 100px;\\n font-weight: 600;\\n color: #e9e9e9;\\n display: inline-block;\\n}\\n\\n.lock-word .first-word {\\n margin-right: 160px;\\n}\\n\\n.form-group {\\n margin: 0 0 15px 0;\\n}\\n\\n.form-group .form-control {\\n background-color: #ffffff;\\n border: 1px solid #e5e6e7;\\n border-radius: 1px;\\n color: inherit;\\n display: block;\\n padding: 6px 12px;\\n -webkit-transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;\\n transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;\\n width: 100%;\\n font-size: 14px;\\n line-height: normal;\\n height: 35px;\\n}\\n\\n.form-group .form-control:focus {\\n border-color: #1ab394;\\n}\\n\\n.form-group.has-error .form-control {\\n border-color: #d9534f;\\n}\\n\\n.margin-btm-select {\\n margin-bottom: 50px;\\n background-color: white;\\n}\\n\\n.request-error {\\n text-align: left;\\n font-size: 14px;\\n color: #d9534f;\\n margin-bottom: 10px;\\n}\\n\\n.signin-btn {\\n display: block;\\n margin-bottom: 15px;\\n width: 100%;\\n font-weight: normal;\\n text-align: center;\\n vertical-align: middle;\\n touch-action: manipulation;\\n cursor: pointer;\\n border: 1px solid #1ab394;\\n white-space: nowrap;\\n padding: 6px 12px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n background-color: #1ab394;\\n color: #ffffff;\\n border-radius: 3px;\\n}\\n\\n.signin-btn:hover {\\n background-color: #18a689;\\n border-color: #18a689;\\n}\\n\\n.form-error {\\n color: #d9534f;\\n line-height: 1.4;\\n font-size: 13px;\\n margin-top: 5px;\\n text-align: left;\\n}\\n\\nsmall {\\n color: #337ab7;\\n}\\n\\n@-webkit-keyframes fadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -100%, 0);\\n transform: translate3d(0, -100%, 0);\\n }\\n 100% {\\n opacity: 1;\\n -webkit-transform: none;\\n transform: none;\\n }\\n}\\n\\n@keyframes fadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -100%, 0);\\n transform: translate3d(0, -100%, 0);\\n }\\n 100% {\\n opacity: 1;\\n -webkit-transform: none;\\n transform: none;\\n }\\n}\\n\\n.forgot-password-instructions {\\n text-align: justify;\\n font-size: 15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL3NpZ25pbi9zaWduaW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL3NpZ25pbi9zaWduaW4uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0NBQUE7RUFDQSx1QkFBQTtFQUNBLHNCQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0VBQ0EscUJBQUE7RUFDQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7QUNDSjs7QURFQTtFQUNJLFlBQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0Esa0NBQUE7RUFDQSwwQkFBQTtFQUNBLDhCQUFBO0VBQ0Esc0JBQUE7RUFDQSxpQ0FBQTtFQUNBLHlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtBQ0NKOztBRENJO0VBQ0ksZ0JBQUE7QUNDUjs7QURHQTtFQUNJLG1CQUFBO0VBQ0EsV0FBQTtBQ0FKOztBREdBO0VBQ0kseUJBQUE7RUFDQSxjQUFBO0VBQ0EsNEJBQUE7RUFDQSxxQkFBQTtFQUNBLDBCQUFBO09BQUEscUJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtBQ0FKOztBREdBOztFQUVJLG1CQUFBO0FDQUo7O0FER0E7RUFDSSxVQUFBO0FDQUo7O0FER0E7RUFDSSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7QUNBSjs7QURHQTtFQUNJLFlBQUE7RUFDQSxrQkFBQTtBQ0FKOztBREdBO0VBQ0ksWUFBQTtBQ0FKOztBREdBO0VBQ0ksZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsNkJBQUE7QUNBSjs7QURHQTtFQUNJLGdCQUFBO0VBQ0EsY0FBQTtFQUNBLDZCQUFBO0FDQUo7O0FER0E7RUFDSSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7QUNBSjs7QURHQTtFQUNJLGlCQUFBO0FDQUo7O0FER0E7RUFDSSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUNBLG1CQUFBO0FDQUo7O0FER0E7RUFDSSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0FDQUo7O0FER0E7RUFDSSxtQkFBQTtBQ0FKOztBREdBO0VBQ0ksa0JBQUE7QUNBSjs7QURFSTtFQUNJLHlCQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7RUFDQSxzRkFBQTtFQUFBLDhFQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7QUNBUjs7QURDUTtFQUNJLHFCQUFBO0FDQ1o7O0FESVE7RUFDSSxxQkFBQTtBQ0ZaOztBRE9BO0VBQ0ksbUJBQUE7RUFDQSx1QkFBQTtBQ0pKOztBRE9BO0VBQ0ksZ0JBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtFQUNBLG1CQUFBO0FDSko7O0FET0E7RUFDSSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBRUEsMEJBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLHVCQUFBO0VBQ0EseUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RUFDQSx5QkFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtBQ0pKOztBRE1JO0VBQ0kseUJBQUE7RUFDQSxxQkFBQTtBQ0pSOztBRFFBO0VBQ0ksY0FBQTtFQUNBLGdCQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQ0xKOztBRFFBO0VBQ0ksY0FBQTtBQ0xKOztBRFFBO0VBQ0k7SUFDSSxVQUFBO0lBQ0EsMkNBQUE7SUFDQSxtQ0FBQTtFQ0xOO0VEUUU7SUFDSSxVQUFBO0lBQ0EsdUJBQUE7SUFDQSxlQUFBO0VDTk47QUFDRjs7QURTQTtFQUNJO0lBQ0ksVUFBQTtJQUNBLDJDQUFBO0lBQ0EsbUNBQUE7RUNQTjtFRFVFO0lBQ0ksVUFBQTtJQUNBLHVCQUFBO0lBQ0EsZUFBQTtFQ1JOO0FBQ0Y7O0FEV0E7RUFDSSxtQkFBQTtFQUNBLGVBQUE7QUNUSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3NpZ25pbi9zaWduaW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2lnbi1pbi1iYWNrZ3JvdW5kIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vLi4vLi4vYXNzZXRzL2ltZy9iYWNrZ3JvdW5kcy9sb2dpbi5qcGcnKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuXG4uc2lnbmluLWZvcm0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjQ7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBib3JkZXItY29sb3I6ICNlN2VhZWM7XG4gICAgLW8tYm9yZGVyLWltYWdlOiBub25lO1xuICAgIGJvcmRlci1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkIHNvbGlkIG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3JkZXItd2lkdGg6IDFweCAwO1xufVxuXG4uc2lnbmluLW1pZGRsZS1ib3gge1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd247XG4gICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd247XG4gICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDFzO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICBwYWRkaW5nLXRvcDogNDBweDtcblxuICAgIGgxIHtcbiAgICAgICAgZm9udC1zaXplOiAxNzBweDtcbiAgICB9XG59XG5cbi5tYWluLXBhZ2UtbG9nbyB7XG4gICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnNpZ24taW4tY29udGVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmNDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBwYWRkaW5nOiAxNXB4IDIwcHggMjBweCAyMHB4O1xuICAgIGJvcmRlci1jb2xvcjogI2U3ZWFlYztcbiAgICBib3JkZXItaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZCBzb2xpZCBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbn1cblxuLmZvcm0tZ3JvdXAsXG4uZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuXG4uZXJyb3Ige1xuICAgIGNvbG9yOiByZWQ7XG59XG5cbi5taWRkbGUtYm94IHtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLXRvcDogNDBweDtcbn1cblxuLmxvY2tzY3JlZW4ubWlkZGxlLWJveCB7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIHBhZGRpbmctdG9wOiAxMTBweDtcbn1cblxuLmxvZ2luc2NyZWVuLm1pZGRsZS1ib3gge1xuICAgIHdpZHRoOiAzMDBweDtcbn1cblxuLmxvZ2luQ29sdW1ucyB7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAxMDBweCAyMHB4IDIwcHggMjBweDtcbn1cblxuLnBhc3N3b3JkQm94IHtcbiAgICBtYXgtd2lkdGg6IDQ2MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDEwMHB4IDIwcHggMjBweCAyMHB4O1xufVxuXG4ubG9nby1uYW1lIHtcbiAgICBjb2xvcjogI2U2ZTZlNjtcbiAgICBmb250LXNpemU6IDE4MHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0xMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cmFwcGVyIC5taWRkbGUtYm94IHtcbiAgICBtYXJnaW4tdG9wOiAxNDBweDtcbn1cblxuLmxvY2std29yZCB7XG4gICAgei1pbmRleDogMTA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTEwcHg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNDcwcHg7XG59XG5cbi5sb2NrLXdvcmQgc3BhbiB7XG4gICAgZm9udC1zaXplOiAxMDBweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAjZTllOWU5O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmxvY2std29yZCAuZmlyc3Qtd29yZCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNjBweDtcbn1cblxuLmZvcm0tZ3JvdXAge1xuICAgIG1hcmdpbjogMCAwIDE1cHggMDtcblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTVlNmU3O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCAwcywgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dCAwcztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgaGVpZ2h0OiAzNXB4O1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzFhYjM5NDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaGFzLWVycm9yIHtcbiAgICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICNkOTUzNGY7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5tYXJnaW4tYnRtLXNlbGVjdCB7XG4gICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLnJlcXVlc3QtZXJyb3Ige1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjZDk1MzRmO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5zaWduaW4tYnRuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLW1zLXRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMWFiMzk0O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFhYjM5NDtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE4YTY4OTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMThhNjg5O1xuICAgIH1cbn1cblxuLmZvcm0tZXJyb3Ige1xuICAgIGNvbG9yOiAjZDk1MzRmO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG5zbWFsbCB7XG4gICAgY29sb3I6ICMzMzdhYjc7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5Eb3duIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbkRvd24ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG59XG5cbi5mb3Jnb3QtcGFzc3dvcmQtaW5zdHJ1Y3Rpb25zIHtcbiAgICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbn1cbiIsIi5zaWduLWluLWJhY2tncm91bmQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uL2Fzc2V0cy9pbWcvYmFja2dyb3VuZHMvbG9naW4uanBnXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cblxuLnNpZ25pbi1mb3JtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmNDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIGJvcmRlci1jb2xvcjogI2U3ZWFlYztcbiAgLW8tYm9yZGVyLWltYWdlOiBub25lO1xuICBib3JkZXItaW1hZ2U6IG5vbmU7XG4gIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbn1cblxuLnNpZ25pbi1taWRkbGUtYm94IHtcbiAgd2lkdGg6IDMwMHB4O1xuICB6LWluZGV4OiAxMDA7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd247XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5Eb3duO1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgbWF4LXdpZHRoOiA0MDBweDtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG59XG4uc2lnbmluLW1pZGRsZS1ib3ggaDEge1xuICBmb250LXNpemU6IDE3MHB4O1xufVxuXG4ubWFpbi1wYWdlLWxvZ28ge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnNpZ24taW4tY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBwYWRkaW5nOiAxNXB4IDIwcHggMjBweCAyMHB4O1xuICBib3JkZXItY29sb3I6ICNlN2VhZWM7XG4gIGJvcmRlci1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZCBzb2xpZCBub25lO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBib3JkZXItd2lkdGg6IDFweCAwO1xufVxuXG4uZm9ybS1ncm91cCxcbi5mb3JtLWNvbnRyb2wge1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuXG4uZXJyb3Ige1xuICBjb2xvcjogcmVkO1xufVxuXG4ubWlkZGxlLWJveCB7XG4gIG1heC13aWR0aDogNDAwcHg7XG4gIHotaW5kZXg6IDEwMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmctdG9wOiA0MHB4O1xufVxuXG4ubG9ja3NjcmVlbi5taWRkbGUtYm94IHtcbiAgd2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nLXRvcDogMTEwcHg7XG59XG5cbi5sb2dpbnNjcmVlbi5taWRkbGUtYm94IHtcbiAgd2lkdGg6IDMwMHB4O1xufVxuXG4ubG9naW5Db2x1bW5zIHtcbiAgbWF4LXdpZHRoOiA4MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDEwMHB4IDIwcHggMjBweCAyMHB4O1xufVxuXG4ucGFzc3dvcmRCb3gge1xuICBtYXgtd2lkdGg6IDQ2MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMTAwcHggMjBweCAyMHB4IDIwcHg7XG59XG5cbi5sb2dvLW5hbWUge1xuICBjb2xvcjogI2U2ZTZlNjtcbiAgZm9udC1zaXplOiAxODBweDtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0xMHB4O1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ud3JhcHBlciAubWlkZGxlLWJveCB7XG4gIG1hcmdpbi10b3A6IDE0MHB4O1xufVxuXG4ubG9jay13b3JkIHtcbiAgei1pbmRleDogMTA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMTBweDtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTQ3MHB4O1xufVxuXG4ubG9jay13b3JkIHNwYW4ge1xuICBmb250LXNpemU6IDEwMHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogI2U5ZTllOTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubG9jay13b3JkIC5maXJzdC13b3JkIHtcbiAgbWFyZ2luLXJpZ2h0OiAxNjBweDtcbn1cblxuLmZvcm0tZ3JvdXAge1xuICBtYXJnaW46IDAgMCAxNXB4IDA7XG59XG4uZm9ybS1ncm91cCAuZm9ybS1jb250cm9sIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTZlNztcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDZweCAxMnB4O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQgMHMsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQgMHM7XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIGhlaWdodDogMzVweDtcbn1cbi5mb3JtLWdyb3VwIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICMxYWIzOTQ7XG59XG4uZm9ybS1ncm91cC5oYXMtZXJyb3IgLmZvcm0tY29udHJvbCB7XG4gIGJvcmRlci1jb2xvcjogI2Q5NTM0Zjtcbn1cblxuLm1hcmdpbi1idG0tc2VsZWN0IHtcbiAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbi5yZXF1ZXN0LWVycm9yIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogI2Q5NTM0ZjtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLnNpZ25pbi1idG4ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgLW1zLXRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXI6IDFweCBzb2xpZCAjMWFiMzk0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFhYjM5NDtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbi5zaWduaW4tYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4YTY4OTtcbiAgYm9yZGVyLWNvbG9yOiAjMThhNjg5O1xufVxuXG4uZm9ybS1lcnJvciB7XG4gIGNvbG9yOiAjZDk1MzRmO1xuICBsaW5lLWhlaWdodDogMS40O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuc21hbGwge1xuICBjb2xvcjogIzMzN2FiNztcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbkBrZXlmcmFtZXMgZmFkZUluRG93biB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuLmZvcmdvdC1wYXNzd29yZC1pbnN0cnVjdGlvbnMge1xuICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xuICBmb250LXNpemU6IDE1cHg7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SigninService } from './signin.service';\n\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { AccessGuard } from 'app/shared/services/guards/access-guard.service';\nimport { UserSession } from 'app/shared/services/session/session.interface';\nimport { UsersService } from 'app/shared/services/users/users.service';\n\n@Component({\n selector: 'app-signin',\n templateUrl: './signin.component.html',\n styleUrls: ['./signin.component.scss'],\n providers: [SigninService],\n})\nexport class SigninComponent implements OnInit {\n signinForm: FormGroup;\n passwordForgotForm: FormGroup;\n apiError: string;\n isAuthenticated = false;\n companySelected = null;\n companiesList = [];\n visibility = 'hidden';\n isPasswordForgot = false;\n isEmailSent = false;\n isMailSending = false;\n isSSO = false;\n isSSOProcessing = false;\n\n isSSOProviderLogin = false;\n providers = [\n {\n name: 'saint-gobain',\n domain: 'saint-gobain.com',\n },\n ];\n currentProvider = null;\n\n constructor(\n fb: FormBuilder,\n private router: Router,\n private signInService: SigninService,\n private sessionService: SessionService,\n private companiesService: CompaniesService,\n private route: ActivatedRoute,\n private guardService: AccessGuard,\n private usersService: UsersService\n ) {\n this.signinForm = fb.group({\n email: ['', Validators.email],\n password: ['', Validators.required],\n });\n this.passwordForgotForm = fb.group({\n email: ['', Validators.email],\n });\n }\n\n ngOnInit() {\n this.route.queryParams.subscribe(params => {\n if (params['sso']) {\n this.isSSO = true;\n this.loginSSO(params['sso']);\n }\n if (params['error']) {\n this.isSSOProviderLogin = true;\n this.handleSSOError(params['error']);\n } else if (params['data']) {\n this.isSSOProviderLogin = true;\n this.handleSSOSuccess(params['data']);\n }\n });\n this.signinForm.get('email').valueChanges.subscribe((email: string) => {\n const result = this.providers.filter(p => email.includes(p.domain));\n if (result.length) {\n this.isSSOProviderLogin = true;\n this.currentProvider = result[0];\n } else {\n this.isSSOProviderLogin = false;\n this.currentProvider = null;\n }\n });\n }\n handleSSOSuccess(base64Data: string) {\n const successData = this.signInService.authSSOSuccessHandler(base64Data);\n if (!successData.token || !successData.user || !successData.expiresIn) {\n this.apiError = `Une erreur s'est produite. Veuillez contacter le support.`;\n return;\n }\n this.connectUser(successData);\n }\n handleSSOError(base64Error: string) {\n const errorMessage = this.signInService.authSSOErrorHandler(base64Error);\n this.apiError = errorMessage;\n }\n\n private async loginSSO(token: string) {\n this.isSSOProcessing = true;\n\n try {\n const res = await this.signInService.authSSO(token);\n this.connectUser(res.data);\n } catch (err) {\n switch (err.errorCode) {\n case 'invalid_sso_token':\n this.apiError = 'Token SSO invalide, veuillez réessayer.';\n break;\n case 'user_sso_not_found':\n this.apiError = `Utilisateur Citron non trouvé. Veuillez contacter l'équipe GreenAlternative`;\n break;\n default:\n this.apiError = 'Une erreur est survenue lors de la connexion via le SSO, veuillez réessayer.';\n break;\n }\n }\n this.isSSOProcessing = false;\n }\n\n public getErrorClass(control: FormControl): object {\n return { 'has-error': !control.valid && control.touched };\n }\n\n public inputHasError(control: FormControl, errorType): boolean {\n return control.errors && control.errors[errorType] && control.touched;\n }\n\n public submitForm(form: any): void {\n this.apiError = null;\n if (this.isSSOProviderLogin) {\n try {\n this.signInService.authSSOProvider(this.currentProvider);\n } catch (err) {\n if (err && err.errorCode === 'login_failed') {\n this.apiError = `Le mot de passe ou l'adresse email renseignée est incorrecte`;\n } else if (err && err.errorCode === 'login_account_inactive') {\n this.apiError = `Le compte est inactif, veuillez activer votre compte`;\n } else {\n this.apiError = 'Une erreur est survenue, veuillez réessayer plus tard';\n }\n }\n return;\n }\n if (this.signinForm.valid) {\n this.signInService\n .auth(form)\n .then(response => {\n if (response.data && response.data.token) {\n this.connectUser(response.data);\n }\n })\n .catch(err => {\n if (err && err.errorCode === 'login_failed') {\n this.apiError = `Le mot de passe ou l'adresse email renseignée est incorrecte`;\n } else if (err && err.errorCode === 'login_account_inactive') {\n this.apiError = `Le compte est inactif, veuillez activer votre compte`;\n } else {\n this.apiError = 'Une erreur est survenue, veuillez réessayer plus tard';\n }\n });\n } else {\n this.touchedAllFields();\n }\n }\n\n private async connectUser(data: { token: string; user: UserSession; expiresIn?: number }) {\n this.sessionService.setToken(data.token);\n\n this.sessionService.setUser(data.user);\n\n await this.setCompaniesList();\n\n await this.guardService.load();\n\n this.isAuthenticated = true;\n this.visibility = 'shown';\n }\n\n setCompaniesList(): Promise {\n return this.companiesService.getCompaniesListByUserId(this.sessionService.getUser()._id).then(userCompanies => {\n // all the user's companies in the selectbox\n this.companiesList = userCompanies.sort(this.sortListAlphabetically);\n this.sessionService.setCompanies(userCompanies);\n\n // if there is a favourite company, put it in default selection\n if (this.sessionService.getUser().favouriteCompany) {\n this.companySelected = userCompanies.find(\n comp => comp._id === this.sessionService.getUser().favouriteCompany\n );\n } else {\n this.companySelected = userCompanies[0];\n }\n\n return Promise.resolve(userCompanies);\n });\n }\n\n sortListAlphabetically(companyA, companyB) {\n const a = companyA.name;\n const b = companyB.name;\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n selectCompany() {\n this.sessionService.setCompany(this.companySelected);\n this.router.navigateByUrl('/accueil');\n }\n\n private touchedAllFields() {\n Object.keys(this.signinForm.controls).forEach(field => {\n const control = this.signinForm.get(field);\n control.markAsTouched({ onlySelf: true });\n });\n }\n\n passwordForgot() {\n this.isPasswordForgot = true;\n this.apiError = null;\n }\n\n public submitPasswordForgotForm(form: any) {\n this.apiError = null;\n\n if (this.passwordForgotForm.valid && !this.isEmailSent && !this.isMailSending) {\n this.isMailSending = true;\n this.usersService\n .forgotPassword(form.email)\n .then(res => {\n this.isEmailSent = true;\n this.isMailSending = false;\n })\n .catch(err => {\n this.isMailSending = false;\n this.apiError = 'Une erreur est survenue, veuillez réessayer plus tard';\n });\n }\n }\n public goToLogin() {\n this.isEmailSent = false;\n this.isPasswordForgot = false;\n }\n\n get passwordSendText() {\n if (!this.isMailSending) {\n return 'Envoyer le mail';\n }\n return 'Envoi en cours...';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../shared/shared.module';\nimport { SigninComponent } from './signin.component';\n\nconst SIGNIN_ROUTE = [{ path: '', component: SigninComponent }];\n\n@NgModule({\n declarations: [SigninComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(SIGNIN_ROUTE)],\n})\nexport class SigninModule {}\n","import { Injectable } from '@angular/core';\nimport { UserSession } from 'app/shared/services/session/session.interface';\nimport { environment } from '../../../environments/environment';\nimport { ApiService } from '../../shared/services/api/api.service';\nimport { PageService } from '../../shared/services/page/page.service';\n\ninterface ErrorInterface {\n message: string;\n errorCode: string;\n status: number;\n}\ninterface SSOSuccessResponse {\n accessToken: string;\n user: UserSession;\n expiresIn: number;\n}\n@Injectable()\nexport class SigninService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n auth(data): Promise> {\n const form = {\n email: data.email,\n password: data.password,\n };\n\n return this.post('/api/auth/login', form);\n }\n\n authSSO(token: string): Promise {\n const data = {\n token,\n };\n return this.post('/api/auth/sso', data);\n }\n\n authSSOProvider(provider: Partial<{ name: string }>) {\n window.location.replace(`${environment.apiUrl}/auth/${provider.name}`);\n }\n\n authSSOSuccessHandler(base64Data: string): { token: string; user: UserSession; expiresIn: number } {\n const data: SSOSuccessResponse = JSON.parse(atob(base64Data));\n return { token: data.accessToken, user: data.user, expiresIn: data.expiresIn };\n }\n\n authSSOErrorHandler(base64Error: string): string {\n const error: ErrorInterface = JSON.parse(atob(base64Error));\n return error.message;\n }\n fakeData(route) {\n let response;\n\n switch (route) {\n default:\n response = {};\n break;\n }\n\n return response;\n }\n}\n","export default \"table {\\n width: 100%;\\n}\\n\\ntable.table {\\n font-size: 0.85rem;\\n}\\n\\nthead {\\n border-bottom: 4px solid lightgrey;\\n}\\n\\nthead th,\\nthead td {\\n font-weight: bold;\\n}\\n\\ntbody .procedures-lines {\\n border-top: 1px solid #e9ecef;\\n}\\n\\ntbody .procedures-lines td {\\n padding: 0.5rem;\\n vertical-align: middle;\\n line-height: 1.3;\\n}\\n\\ntbody .procedures-lines td:first-child {\\n font-weight: bold;\\n}\\n\\n.title-site {\\n margin-bottom: 0;\\n font-weight: bold;\\n}\\n\\n.title-site:hover {\\n text-decoration: underline;\\n cursor: pointer;\\n}\\n\\n.site-selected-info {\\n border-left: 1px solid #e9ecef;\\n}\\n\\n.site-row,\\n.procedures-table {\\n margin: 10px 0;\\n}\\n\\n.container-calcul {\\n padding-bottom: 10px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL3NwZWNpZmljL3Jlc2FoL2NvdGlzYXRpb24vY290aXNhdGlvbi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvc3BlY2lmaWMvcmVzYWgvY290aXNhdGlvbi9jb3Rpc2F0aW9uLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksV0FBQTtBQ0RKOztBREdBO0VBQ0ksa0JBQUE7QUNBSjs7QURFQTtFQUNJLGtDQUFBO0FDQ0o7O0FEQUk7O0VBRUksaUJBQUE7QUNFUjs7QURFSTtFQUNJLDZCQUFBO0FDQ1I7O0FEQVE7RUFDSSxlQUFBO0VBQ0Esc0JBQUE7RUFDQSxnQkFBQTtBQ0VaOztBREFRO0VBQ0ksaUJBQUE7QUNFWjs7QURHQTtFQUNJLGdCQUFBO0VBQ0EsaUJBQUE7QUNBSjs7QURHQTtFQUNJLDBCQUFBO0VBQ0EsZUFBQTtBQ0FKOztBREdBO0VBQ0ksOEJBQUE7QUNBSjs7QURHQTs7RUFFSSxjQUFBO0FDQUo7O0FER0E7RUFDSSxvQkFBQTtBQ0FKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvc3BlY2lmaWMvcmVzYWgvY290aXNhdGlvbi9jb3Rpc2F0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzJztcblxudGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xufVxudGFibGUudGFibGUge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cbnRoZWFkIHtcbiAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQgbGlnaHRncmV5O1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxufVxudGJvZHkge1xuICAgIC5wcm9jZWR1cmVzLWxpbmVzIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR0YWJsZS1ib3JkZXI7XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICB9XG4gICAgICAgIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGl0bGUtc2l0ZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnRpdGxlLXNpdGU6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnNpdGUtc2VsZWN0ZWQtaW5mbyB7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkdGFibGUtYm9yZGVyO1xufVxuXG4uc2l0ZS1yb3csXG4ucHJvY2VkdXJlcy10YWJsZSB7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG59XG5cbi5jb250YWluZXItY2FsY3VsIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cbiIsInRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbnRhYmxlLnRhYmxlIHtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xufVxuXG50aGVhZCB7XG4gIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCBsaWdodGdyZXk7XG59XG50aGVhZCB0aCxcbnRoZWFkIHRkIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbnRib2R5IC5wcm9jZWR1cmVzLWxpbmVzIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7XG59XG50Ym9keSAucHJvY2VkdXJlcy1saW5lcyB0ZCB7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cbnRib2R5IC5wcm9jZWR1cmVzLWxpbmVzIHRkOmZpcnN0LWNoaWxkIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi50aXRsZS1zaXRlIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi50aXRsZS1zaXRlOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnNpdGUtc2VsZWN0ZWQtaW5mbyB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2U5ZWNlZjtcbn1cblxuLnNpdGUtcm93LFxuLnByb2NlZHVyZXMtdGFibGUge1xuICBtYXJnaW46IDEwcHggMDtcbn1cblxuLmNvbnRhaW5lci1jYWxjdWwge1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as moment from 'moment';\nimport { CotisationService } from './cotisation.service';\n\n@Component({\n selector: 'ga-cotisation',\n templateUrl: './cotisation.component.html',\n styleUrls: ['./cotisation.component.scss'],\n providers: [CotisationService],\n})\nexport class CotisationComponent implements OnInit {\n cotisationData: any = [];\n siteConsumption: any = [];\n dates: any = {};\n // Site selection\n sites: any = []; // For the list\n site: any = []; // Site selected from the list, to hide it.\n selectedSite: any; // The selected site to display\n\n isLoadingSite = false;\n isLoadingProcedures = false;\n\n constructor(private cotisationService: CotisationService, private router: Router) {}\n\n ngOnInit(): void {\n this.isLoadingProcedures = true;\n this.cotisationService.getCotisationData().then(data => {\n this.cotisationData = data.data;\n this.isLoadingProcedures = false;\n this.cotisationService.getAvailableYears().then(dates => {\n this.dates = dates.data;\n });\n });\n }\n\n onUpdateSite(site) {\n this.selectedSite = site;\n this.isLoadingSite = true;\n this.cotisationService.getSiteConsumption(site._id, this.dates).then(conso => {\n this.siteConsumption = [];\n conso.data.sort((a, b) => b.year - a.year);\n this.siteConsumption.push(...conso.data);\n this.isLoadingSite = false;\n });\n }\n\n getConsommationText(procedure) {\n if (procedure.min && procedure.max) {\n return `Comprise entre ${procedure.min}${procedure.unit} et ${procedure.max}${procedure.unit}`;\n } else if (procedure.min) {\n return `Supérieure à ${procedure.min}${procedure.unit}`;\n } else if (procedure.max) {\n return `Inférieure à ${procedure.max}${procedure.unit}`;\n }\n }\n\n getElectronLibrePrice(consoYearFluid) {\n if (consoYearFluid.priceLibre && consoYearFluid.priceLibre !== 'NC') {\n return consoYearFluid.priceLibre.toLocaleString() + ' €';\n } else {\n return 'NC';\n }\n }\n\n getElectronPlusPrice(consoYearFluid) {\n if (consoYearFluid.pricePlus && consoYearFluid.pricePlus !== 'NC') {\n return consoYearFluid.pricePlus.toLocaleString() + ' €';\n } else {\n return 'NC';\n }\n }\n\n getSiteName(site) {\n if (site.complement) {\n return site.complement;\n }\n if (site.name) {\n return site.name;\n }\n return 'NC';\n }\n\n getSiteAddress(site) {\n let address = '';\n if (site.streetNumber) {\n address += site.streetNumber + ', ';\n }\n if (site.streetName) {\n address += site.streetName;\n }\n return address;\n }\n\n getSiteCity(site) {\n let city = '';\n if (site.zipcode) {\n city += site.zipcode + ' ';\n }\n if (site.city) {\n city += site.city;\n }\n return city;\n }\n\n getFluidDisplayName(fluidType) {\n if (fluidType === 'elec') {\n return 'Électricité';\n }\n if (fluidType === 'gaz') {\n return 'Gaz';\n }\n if (fluidType === 'water') {\n return 'Eau';\n }\n return fluidType;\n }\n\n formatConsumption(consoYearFluid) {\n const rounded = this.roundToDecimal(consoYearFluid.consumption);\n return rounded + ' ' + consoYearFluid.unit;\n }\n\n roundToDecimal(x, decimal = 3) {\n const pow = Math.pow(10, decimal);\n const rounded = Math.round(x * pow) / pow;\n if (rounded === 0 && x !== 0) {\n return '< ' + (rounded + 1 / pow);\n }\n return rounded;\n }\n\n hasSiteAnAddress(site) {\n return this.getSiteAddress(site) && this.getSiteCity(site);\n }\n\n goToSite(site) {\n this.router.navigateByUrl('/energie/profil/' + site._id);\n }\n\n getExportExcelUrl() {\n if (this.selectedSite && this.dates) {\n const start = moment(this.dates.startDate, 'YYYY-MM')\n .startOf('month')\n .format('YYYY-MM');\n const end = moment(this.dates.endDate, 'YYYY-MM')\n .endOf('month')\n .format('YYYY-MM');\n return `/api/export/excel/specific/resah?site=${this.selectedSite._id}&start=${start}&end=${end}&energy=elec`;\n }\n return null;\n }\n\n getExportName(txt) {\n if (this.selectedSite) {\n const name = this.selectedSite.complement ? this.selectedSite.complement : this.selectedSite.name;\n return `${txt}-${name}.xlsx`;\n } else {\n return `${txt}-Site NC.xlsx`;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../../shared/shared.module';\nimport { CotisationComponent } from './cotisation.component';\n\nconst COTISATION_ROUTE = [{ path: '', component: CotisationComponent }];\n\n@NgModule({\n declarations: [CotisationComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(COTISATION_ROUTE)],\n})\nexport class CotisationModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../../shared/services/api/api.service';\nimport { PageService } from '../../../../shared/services/page/page.service';\n\n@Injectable()\nexport class CotisationService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n }\n\n getCotisationData() {\n return this.get('/api/specific/resah/procedures');\n }\n\n getSiteConsumption(site, dates) {\n const options = {\n sites: site,\n dateStart: dates.startDate.substr(0, 7),\n dateEnd: dates.endDate.substr(0, 7),\n energy: 'elec,gaz',\n };\n return this.post('/api/specific/resah/cotisation', options);\n }\n\n getAvailableYears() {\n const companyId = this.apiService.sessionService.getCompanyId();\n return this.get('/api/contracts/dates/' + companyId);\n }\n\n convertConsumption(value, unitConso, unitDestination) {\n let factor = 1;\n let conso = 0;\n\n if (unitDestination === 'GWh') {\n factor = factor / 1000000;\n } else if (unitDestination === 'MWh') {\n factor = factor / 1000;\n }\n\n if (unitConso === 'kWh') {\n conso = value * factor;\n } else if (unitConso === 'MWh') {\n conso = value * factor * 1000;\n } else if (unitConso === 'GWh') {\n conso = value * factor * 1000000;\n } else {\n conso = value;\n }\n return conso;\n }\n}\n","export default \".campaigns__selection-bloc {\\n border-right: 1px solid lightgray;\\n -webkit-transition: all 200ms linear;\\n transition: all 200ms linear;\\n}\\n\\n.campaigns__component {\\n padding-top: 1rem;\\n padding-left: 0.5rem;\\n}\\n\\n.campaigns__data-bloc {\\n margin-top: 2rem;\\n -webkit-transition: all 200ms linear;\\n transition: all 200ms linear;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL3RhcmdldHMvY2FtcGFpZ25zL2NhbXBhaWducy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvdGFyZ2V0cy9jYW1wYWlnbnMvY2FtcGFpZ25zLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksaUNBQUE7RUFDQSxvQ0FKUztFQUlULDRCQUpTO0FDR2I7O0FESUE7RUFDSSxpQkFBQTtFQUNBLG9CQUFBO0FDREo7O0FESUE7RUFDSSxnQkFBQTtFQUNBLG9DQWRTO0VBY1QsNEJBZFM7QUNhYiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3RhcmdldHMvY2FtcGFpZ25zL2NhbXBhaWducy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiR0cmFuc2l0aW9uOiBhbGwgMjAwbXMgbGluZWFyO1xuXG4uY2FtcGFpZ25zX19zZWxlY3Rpb24tYmxvYyB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgbGlnaHRncmF5O1xuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xufVxuXG4uY2FtcGFpZ25zX19jb21wb25lbnQge1xuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuXG4uY2FtcGFpZ25zX19kYXRhLWJsb2Mge1xuICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG59XG4iLCIuY2FtcGFpZ25zX19zZWxlY3Rpb24tYmxvYyB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcbiAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGxpbmVhcjtcbn1cblxuLmNhbXBhaWduc19fY29tcG9uZW50IHtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuXG4uY2FtcGFpZ25zX19kYXRhLWJsb2Mge1xuICBtYXJnaW4tdG9wOiAycmVtO1xuICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgbGluZWFyO1xufSJdfQ== */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { CampaignsNavComponent } from 'app/shared/components/campaigns/campaigns-nav/campaigns-nav.component';\nimport { Animations } from 'app/shared/models/animations';\nimport { Campaign } from 'app/shared/models/campaign.interface';\nimport { CampaignsService } from 'app/shared/services/campaigns/campaigns.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-campaigns',\n templateUrl: './campaigns.component.html',\n styleUrls: ['./campaigns.component.scss'],\n providers: [CampaignsService],\n animations: [Animations.slideInOutHorizontal],\n})\nexport class CampaignsComponent implements OnInit {\n currentAction: 'creation' | 'visualization' = null;\n\n campaign: Campaign;\n\n @ViewChild(CampaignsNavComponent, { static: true }) campaignsNavComponent: CampaignsNavComponent;\n\n isNavMenuExpanded = true;\n\n constructor(private campaignsService: CampaignsService) {}\n\n ngOnInit() {}\n\n createCampaign() {\n this.currentAction = 'creation';\n }\n\n async openCampaign(id) {\n try {\n const result = await this.campaignsService.getCampaign(id);\n this.campaign = result.data;\n this.currentAction = 'visualization';\n } catch (error) {\n this.currentAction = null;\n if (!error.errorCode) {\n error.errorCode = 'error_get_campaign';\n }\n this.handleErrorMessage(error);\n }\n }\n\n get isActionCreate(): boolean {\n return this.currentAction === 'creation';\n }\n\n get isActionVisualization(): boolean {\n return this.currentAction === 'visualization';\n }\n\n campaignCreated(campaign) {\n if (this.campaignsNavComponent) {\n this.campaignsNavComponent.refreshList();\n this.openCampaign(campaign._id);\n }\n }\n\n get navCol() {\n return this.isNavMenuExpanded ? 'col-lg-4 col-xl-3 ' : 'col-md-1';\n }\n\n get visuCol() {\n return this.isNavMenuExpanded ? 'col-lg-8 col-xl-9' : 'col-md-11';\n }\n\n updateNavMenuExpand(isExpanded: boolean) {\n this.isNavMenuExpanded = isExpanded;\n }\n\n private handleErrorMessage(error) {\n const messages = {\n error_get_campaign: {\n title: 'Impossible de récupérer les données de la campagne',\n message:\n 'Une erreur inconnue est survenue pendant la récupération de la campagne. Merci de réessayer ultérieurement.',\n },\n fail_delete_campaign: {\n title: 'Une erreur est survenue',\n message: 'Impossible de supprimer la campagne.',\n },\n error_delete_campaign: {\n title: 'Impossible de supprimer la campagne',\n message: `Soit elle n'existe pas, soit vous n'avez pas les droits pour la supprimer.`,\n },\n not_allowed: {\n title: 'Non autorisé',\n message: \"Vous n'avez pas les droits pour effectuer cette action.\",\n },\n };\n if (error && error.errorCode && messages[error.errorCode]) {\n Swal.fire(messages[error.errorCode].title, messages[error.errorCode].message, 'error');\n } else {\n Swal.fire(\n 'Erreur inconnue',\n 'Une erreur inconnue est survenue. Merci de réessayer. Si le problème persiste, veuillez contacter votre Energy Manager',\n 'error'\n );\n }\n }\n\n /**\n * Delete campaign by id. Id must match the currently selected campaign.\n * @param {string} id - campaign id\n */\n async deleteCampaign(id: string) {\n if (id && this.campaign && id === this.campaign._id) {\n try {\n await this.campaignsService.deleteCampaign(id);\n this.campaignsNavComponent.refreshList();\n this.currentAction = null;\n this.campaign = null;\n Swal.fire('Campagne supprimée', '', 'success');\n } catch (err) {\n this.handleErrorMessage(err.errorCode || 'fail_delete_campaign');\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from 'app/shared/shared.module';\n\nimport { AccessGuard } from 'app/shared/services/guards/access-guard.service';\nimport { CampaignsComponent } from './campaigns.component';\n\nconst CAMPAIGNS_ROUTE = [\n {\n path: '',\n component: CampaignsComponent,\n canActivate: [AccessGuard],\n data: { redirectionForbiddenUrl: '/accueil', page: 'targets' },\n },\n];\n\n@NgModule({\n declarations: [CampaignsComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(CAMPAIGNS_ROUTE)],\n})\nexport class CampaignsModule {}\n","export default \".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n background: none;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n text-transform: none;\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n.discreet-button:focus {\\n box-shadow: none;\\n}\\n\\n.discreet-button .icon {\\n height: 2em;\\n width: 2em;\\n margin-right: 0.5em;\\n}\\n\\n.flex-grow-1 {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n}\\n\\n.periods-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.periods-bloc .list-periods {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.periods-bloc .list-periods i {\\n padding: 0;\\n}\\n\\n.periods-bloc .list-periods i::before {\\n font-size: 1.5em;\\n}\\n\\n.periods-bloc .list-periods .notif {\\n position: absolute;\\n top: -1em;\\n right: -1em;\\n background-color: #db4b47;\\n width: 2em;\\n height: 2em;\\n border-radius: 50%;\\n color: white;\\n font-size: calc(1em - 4px);\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.periods-bloc .list-periods .notif span {\\n color: white;\\n top: 0.2em;\\n position: relative;\\n}\\n\\n.periods-bloc .select-periods {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n padding: 0;\\n margin: 0 2em;\\n font-weight: initial;\\n font-size: inherit;\\n background-color: #f5f5f5;\\n}\\n\\n.periods-bloc .select-periods .dates-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n flex-flow: row-reverse;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0.5em 1em;\\n height: 2em;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span {\\n width: 100%;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span.text-noperiod {\\n text-transform: none;\\n}\\n\\n.periods-bloc .select-periods .quick-modal {\\n width: 100%;\\n}\\n\\n.periods-bloc .quick-modal {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n margin: 1em 0;\\n z-index: 1;\\n border: 1px solid #f8f8f8;\\n border-radius: 5px;\\n background: white;\\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\\n cursor: initial;\\n font-size: calc(1em - 2px);\\n text-transform: none;\\n font-weight: initial;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div {\\n padding: 1em;\\n margin: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n border-radius: 0;\\n max-height: 30vh;\\n overflow-y: auto;\\n cursor: pointer;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div:hover {\\n background: lightgrey;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div.active {\\n box-shadow: 0px 3px 6px #00000029;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal {\\n margin-left: 2.2em;\\n width: 60%;\\n min-width: 35em;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group,\\n.periods-bloc .quick-modal.select-period-modal .form-inline {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group .form-control,\\n.periods-bloc .quick-modal.select-period-modal .form-inline .form-control {\\n font-size: inherit;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .fa {\\n font-size: 2.5em;\\n font-weight: normal;\\n}\\n\\n.page-container {\\n background: white;\\n font-size: 13px;\\n}\\n\\n.page-container.suivis-exploitation {\\n padding-right: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3BhZ2VzL3RhcmdldHMvb3BlcmF0aW5nLW1vbml0b3Jpbmcvb3BlcmF0aW5nLW1vbml0b3JpbmcuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9wYWdlcy90YXJnZXRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BO0VDTkksY0RPaUI7RUNOakIsYURNeUI7RUNMekIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDa0JLO0FDbkJiOztBSElBO0VBQ0ksVUFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTtFQUNBLDJCQUFBO0VBQUEsb0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0FHREo7O0FIR0k7RUFDSSxnQkFBQTtBR0RSOztBSEdJO0VBQ0ksV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtBR0RSOztBSEtBO0VBQ0ksbUJBQUE7VUFBQSxZQUFBO0FHRko7O0FIS0E7RUFHSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FHSko7O0FITUk7RUFDSSxVQUFBO0VBQ0EsU0FBQTtBR0pSOztBSEtRO0VBQ0ksVUFBQTtBR0haOztBSElZO0VBQ0ksZ0JBQUE7QUdGaEI7O0FITVE7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EseUJFOUJKO0VGK0JJLFVBcEJFO0VBcUJGLFdBckJFO0VBc0JGLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLDBCQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtBR0paOztBSE1ZO0VBQ0ksWUFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtBR0poQjs7QUhTSTtFQUNJLG1CQUFBO1VBQUEsWUFBQTtFQUNBLFVBQUE7RUFDQSxhQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQTFFUztBR21FakI7O0FIU1E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0FHUFo7O0FIU1k7RUFDSSxXQUFBO0FHUGhCOztBSFNnQjtFQUNJLG9CQUFBO0FHUHBCOztBSFlRO0VBQ0ksV0FBQTtBR1ZaOztBSGNJO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFQUNBLGFBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaURBQUE7RUFDQSxlQUFBO0VBQ0EsMEJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0FHWlI7O0FIY1E7RUFDSSxZQUFBO0VBQ0EsU0FBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0FHWlo7O0FIY1k7RUFDSSxxQkFBQTtBR1poQjs7QUhjWTtFQUNJLGlDQUFBO0FHWmhCOztBSGdCUTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7QUdkWjs7QUhnQlk7O0VBRUkseUJBQUE7VUFBQSw4QkFBQTtBR2RoQjs7QUhlZ0I7O0VBQ0ksa0JBQUE7QUdacEI7O0FIZ0JZO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtBR2RoQjs7QUNySUE7RUFDSSxpQkFBQTtFQUNBLGVKRE87QUd5SVg7O0FDcklBO0VBQ0ksZ0JBQUE7QUR3SUoiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy90YXJnZXRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbiRmb250U2l6ZTogMTNweDtcbiRiYWNrZ3JvdW5kR3JleTogI2Y1ZjVmNTtcbiRib3JkZXJSYWRpdXM6IDVweDtcblxuLmljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMS41cmVtLCAxLjVyZW0sICR0ZXh0LWNvbG9yKTtcbn1cblxuLmRpc2NyZWV0LWJ1dHRvbiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cbiAgICAuaWNvbiB7XG4gICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgIH1cbn1cblxuLmZsZXgtZ3Jvdy0xIHtcbiAgICBmbGV4LWdyb3c6IDE7XG59XG5cbi5wZXJpb2RzLWJsb2Mge1xuICAgICRzcGFjaW5nOiAyZW07XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAubGlzdC1wZXJpb2RzIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubm90aWYge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAtKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIHJpZ2h0OiAtKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhZG1pbjtcbiAgICAgICAgICAgIHdpZHRoOiAkc3BhY2luZztcbiAgICAgICAgICAgIGhlaWdodDogJHNwYWNpbmc7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IGNhbGMoMWVtIC0gNHB4KTtcbiAgICAgICAgICAgIGJvcmRlcjogc29saWQgMXB4O1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMC4xICogJHNwYWNpbmc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNlbGVjdC1wZXJpb2RzIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmc7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kR3JleTtcblxuICAgICAgICAuZGF0ZXMtYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWZsb3c6IHJvdy1yZXZlcnNlO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbjogKDAuMjUgKiAkc3BhY2luZykgKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIGhlaWdodDogMmVtO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgICYudGV4dC1ub3BlcmlvZCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5xdWljay1tb2RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5xdWljay1tb2RhbCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBtYXJnaW46ICgwLjUgKiAkc3BhY2luZykgMDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Y4ZjhmODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm94LXNoYWRvdzogcmdiYSg5OSwgOTksIDk5LCAwLjIpIDBweCAycHggOHB4IDBweDtcbiAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xuICAgICAgICBmb250LXNpemU6IGNhbGMoMWVtIC0gMnB4KTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuXG4gICAgICAgICYubGlzdC1wZXJpb2RzLW1vZGFsIGRpdiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjUgKiAkc3BhY2luZztcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMzB2aDtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDZweCAjMDAwMDAwMjk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnNlbGVjdC1wZXJpb2QtbW9kYWwge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIuMmVtO1xuICAgICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMzVlbTtcblxuICAgICAgICAgICAgLmZvcm0tZ3JvdXAsXG4gICAgICAgICAgICAuZm9ybS1pbmxpbmUge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmZhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuNWVtO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiIsIi5pY29uIHtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIHdpZHRoOiAxLjVyZW07XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3MTg4O1xufVxuXG4uZGlzY3JlZXQtYnV0dG9uIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG4uZGlzY3JlZXQtYnV0dG9uOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5kaXNjcmVldC1idXR0b24gLmljb24ge1xuICBoZWlnaHQ6IDJlbTtcbiAgd2lkdGg6IDJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbn1cblxuLmZsZXgtZ3Jvdy0xIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4ucGVyaW9kcy1ibG9jIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyBpIHtcbiAgcGFkZGluZzogMDtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyBpOjpiZWZvcmUge1xuICBmb250LXNpemU6IDEuNWVtO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIC5ub3RpZiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMWVtO1xuICByaWdodDogLTFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgd2lkdGg6IDJlbTtcbiAgaGVpZ2h0OiAyZW07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IGNhbGMoMWVtIC0gNHB4KTtcbiAgYm9yZGVyOiBzb2xpZCAxcHg7XG4gIGJvcmRlci1jb2xvcjogd2hpdGU7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgLm5vdGlmIHNwYW4ge1xuICBjb2xvcjogd2hpdGU7XG4gIHRvcDogMC4yZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIHtcbiAgZmxleC1ncm93OiAxO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDAgMmVtO1xuICBmb250LXdlaWdodDogaW5pdGlhbDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogMC41ZW0gMWVtO1xuICBoZWlnaHQ6IDJlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5kYXRlcy1iYXIgc3BhbiB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciBzcGFuLnRleHQtbm9wZXJpb2Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5xdWljay1tb2RhbCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAxZW0gMDtcbiAgei1pbmRleDogMTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y4ZjhmODtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogcmdiYSg5OSwgOTksIDk5LCAwLjIpIDBweCAycHggOHB4IDBweDtcbiAgY3Vyc29yOiBpbml0aWFsO1xuICBmb250LXNpemU6IGNhbGMoMWVtIC0gMnB4KTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwubGlzdC1wZXJpb2RzLW1vZGFsIGRpdiB7XG4gIHBhZGRpbmc6IDFlbTtcbiAgbWFyZ2luOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIG1heC1oZWlnaHQ6IDMwdmg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXY6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaWdodGdyZXk7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5saXN0LXBlcmlvZHMtbW9kYWwgZGl2LmFjdGl2ZSB7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggNnB4ICMwMDAwMDAyOTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwge1xuICBtYXJnaW4tbGVmdDogMi4yZW07XG4gIHdpZHRoOiA2MCU7XG4gIG1pbi13aWR0aDogMzVlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0tZ3JvdXAsXG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWlubGluZSB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0tZ3JvdXAgLmZvcm0tY29udHJvbCxcbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mYSB7XG4gIGZvbnQtc2l6ZTogMi41ZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5wYWdlLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5wYWdlLWNvbnRhaW5lci5zdWl2aXMtZXhwbG9pdGF0aW9uIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbn0iLCJAaW1wb3J0ICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9vcGVyYXRpbmctbW9uaXRvcmluZy5jb21wb25lbnQuc2Nzcyc7XG5cbi5wYWdlLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgZm9udC1zaXplOiAkZm9udFNpemU7XG59XG5cbi5wYWdlLWNvbnRhaW5lci5zdWl2aXMtZXhwbG9pdGF0aW9uIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuIl19 */\"","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ModalComponent } from 'app/shared/components/common/modal/modal.component';\nimport { MonitoringCostsService } from 'app/shared/components/operating-monitoring/monitoring-edition/monitoring-edition-contract/monitoring-costs.service';\nimport { OperatingMonitoringService } from 'app/shared/components/operating-monitoring/operating-monitoring.service';\nimport { MonitoringUpdate } from 'app/shared/components/operating-monitoring/operating-monitoring.update.interface';\n\n@Component({\n selector: 'ga-operating-monitoring',\n templateUrl: './operating-monitoring.component.html',\n styleUrls: ['./operating-monitoring.component.scss'],\n providers: [OperatingMonitoringService, MonitoringCostsService],\n})\nexport class OperatingMonitoringComponent implements OnInit, OnDestroy {\n /**\n * Modals\n */\n @ViewChild('editionMonitoringModal', { static: false }) editionMonitoringModal: ModalComponent;\n @ViewChild('editReadingsModal', { static: false }) editReadingsModal: ModalComponent;\n\n public selectedMonitoring: MonitoringUpdate;\n public isEditingMonitoring: boolean;\n\n /**\n * Subscription to events\n */\n private subscription: Subscription;\n\n constructor(private operatingMonitoringService: OperatingMonitoringService) {}\n\n ngOnInit() {\n this.subscription = this.operatingMonitoringService.toggleEditionMonitoringModal$.subscribe({\n next: value => {\n this.toggleModal(value, this.editionMonitoringModal);\n },\n });\n this.subscription.add(\n this.operatingMonitoringService.toggleEditReadingsModal$.subscribe({\n next: value => {\n this.toggleModal(value, this.editReadingsModal);\n },\n })\n );\n this.subscription.add(\n this.operatingMonitoringService.selectedMonitoring$.subscribe({\n next: value => {\n this.selectedMonitoring = value;\n },\n })\n );\n this.subscription.add(\n this.operatingMonitoringService.editedMonitoring$.subscribe({\n next: value => {\n this.isEditingMonitoring = Boolean(value);\n },\n })\n );\n }\n\n private toggleModal(value: boolean, modal: ModalComponent) {\n if (modal) {\n if (value) {\n modal.show();\n } else {\n modal.close();\n }\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public onCreate() {\n this.editionMonitoringModal.close();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from 'app/shared/shared.module';\n\nimport { AccessGuard } from 'app/shared/services/guards/access-guard.service';\nimport { OperatingMonitoringComponent } from './operating-monitoring.component';\n\nconst OPERATING_MONITORING_ROUTE = [\n {\n path: '',\n component: OperatingMonitoringComponent,\n canActivate: [AccessGuard],\n data: { redirectionForbiddenUrl: '/accueil', page: 'targets' },\n },\n];\n\n@NgModule({\n declarations: [OperatingMonitoringComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(OPERATING_MONITORING_ROUTE)],\n})\nexport class OperatingMonitoringModule {}\n","export default \".btn-transparent {\\n color: transparent;\\n background-color: transparent !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3BhZ2VzL3ZlaGljbGVzL2ZvbGxvd3VwL2ZvbGxvd3VwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy92ZWhpY2xlcy9mb2xsb3d1cC9mb2xsb3d1cC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtCQUFBO0VBQ0Esd0NBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3ZlaGljbGVzL2ZvbGxvd3VwL2ZvbGxvd3VwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmJ0bi10cmFuc3BhcmVudCB7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG4iLCIuYnRuLXRyYW5zcGFyZW50IHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufSJdfQ== */\"","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport swal, { SweetAlertIcon } from 'sweetalert2';\n\n// interfaces\nimport { DoubleDonutProperties } from 'app/pages/energy/followup/followup.interface';\nimport { OptionValueGroup, QueryFilterVeh } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { DoubleDonutSerieIn, DoubleDonutSerieOut } from 'app/shared/models/charts/chart-serie.interface';\nimport { DoublePieOptionsSeries } from 'app/shared/models/charts/charts-config.interface';\nimport { ColorGA, ToggleDonutProperties } from 'app/shared/models/charts/charts.interface';\nimport { CommonEnergyRepartitionMonthly } from 'app/shared/models/energy-data-bills.interface';\nimport { MapOptions, Marker } from 'app/shared/models/marker.interface';\nimport { ChartSerieFollowup, GroupChartsDataFormated, ToggleBarPropertiesFollowUp } from './followup.interface';\n\n// services\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { EnergyDataService } from 'app/shared/services/energy/energy-data.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { FollowupService } from './followup.service';\n\n// components\nimport { FollowupFilterComponent } from 'app/shared/components/filters/followup-filter/followup-filter.component';\nimport { FilterService } from '../../../shared/services/filter/filter.service';\n\ninterface Loading {\n nbQueriesToDo: number;\n nbQueriesDone: number;\n data: boolean;\n\n charts: {\n consoDonut: boolean;\n costDonut: boolean;\n bar: boolean;\n };\n}\n\n@Component({\n selector: 'ga-followup',\n templateUrl: './followup.component.html',\n styleUrls: ['./followup.component.scss'],\n providers: [FollowupService],\n})\nexport class FollowupComponent implements OnInit {\n fakeData = false;\n\n /**\n * Map\n */\n markers: Marker[] = [];\n mapOptions: MapOptions = {\n zoom: 8,\n lat: 49.894067,\n lng: 2.2957529999999906,\n height: 250,\n };\n\n /**\n * Filter\n */\n fuelTypesAvailable: string[]; // existing fuel types\n queryFilterSelected: OptionValueGroup; // selected filter properties\n\n /**\n * Donuts\n */\n donuts: {\n conso: DoubleDonutProperties;\n ttc: DoubleDonutProperties;\n htva: DoubleDonutProperties;\n };\n\n /**\n * Toggle costs donuts\n */\n donutToggle: ToggleDonutProperties = {\n title: 'Répartition des coûts énergétiques sur la période',\n downloadFileNames: [\n 'Répartition des coûts énergétiques HTVA sur la période',\n 'Répartition des coûts énergétiques TTC sur la période',\n ],\n toggleNames: ['HTVA', 'TTC'],\n legend: [],\n optionsSets: [],\n };\n\n dataDonutsInside: { [donutKey: string]: number[][] } = {\n conso: [],\n ttc: [],\n htva: [],\n };\n\n /**\n * Bar chart\n */\n barToggle: ToggleBarPropertiesFollowUp = {\n datasets: [],\n labels: [],\n colors: [],\n width: 1900,\n minHeight: 340,\n maxHeight: 340,\n options: [],\n legend: [],\n title: 'Répartition mensuelle sur la période',\n toggleTitles: [\n { name: 'CONSOMMATION (L)', display: true },\n { name: 'HTVA (€)', display: true },\n { name: 'TTC (€)', display: true },\n ],\n downloadFileNames: ['', 'Coût mensuel HTVA sur la période (€)', 'Coût mensuel TTC sur la période (€)'],\n units: ['L', '€', '€'],\n };\n\n fueltypesSelected: string[] = []; // ['diesel', 'gasoline']\n pieInnerColor: string;\n fuelTypesLabels: string[] = [];\n fuelTypesColors: ColorGA[] = [];\n\n @ViewChild(FollowupFilterComponent, { static: true }) filterComponent: FollowupFilterComponent;\n\n loading: Loading = {\n nbQueriesDone: 0,\n nbQueriesToDo: 1,\n data: true,\n charts: {\n consoDonut: true,\n costDonut: true,\n bar: true,\n },\n };\n\n /** Filter saved for export */\n exportFilters: QueryFilterVeh;\n\n constructor(\n private route: ActivatedRoute,\n private energyService: EnergyService,\n private energyDataService: EnergyDataService,\n private sitesService: SitesService,\n private mapService: MapService,\n private followupService: FollowupService,\n private translateService: TranslateService,\n private chartService: ChartService,\n private filterService: FilterService\n ) {}\n\n ngOnInit() {\n this.fuelTypesAvailable = this.energyService.getAllFuelTypes();\n\n /**\n * {Params} route.queryParams\n * {string} route.queryParams.vehicleId - vehicle id to preselect\n */\n\n if (this.route.queryParams) {\n // subscribe to change to launch initiliazation when url is modified\n this.route.queryParams.subscribe(() => {\n this.initComponentSetup();\n });\n }\n }\n\n /**\n * \tINITIALISATION\n */\n\n /**\n * Initialize components.\n */\n initComponentSetup() {\n this.setChartStateLoading(true); // make the charts loading\n this.resetComponents(); // empty components\n }\n\n /**\n * Set all charts loading or not.\n * @param {boolean} isLoading\n */\n setChartStateLoading(isLoading: boolean) {\n this.loading.charts = {\n costDonut: isLoading,\n consoDonut: isLoading,\n bar: isLoading,\n };\n }\n\n /**\n * Empty charts.\n * @param {QueryFilterVeh} filters\n */\n resetComponents() {\n // donuts\n this.donuts = {\n conso: {\n title: 'Répartition de la consommation énergétique sur la période',\n dataInside: [],\n dataOutside: [],\n options: {},\n legend: [],\n unit: 'L',\n },\n htva: {\n dataOutside: [],\n dataInside: [],\n options: {},\n unit: '€',\n },\n ttc: {\n dataOutside: [],\n dataInside: [],\n options: {},\n unit: '€',\n },\n };\n\n this.dataDonutsInside = {\n conso: [],\n ttc: [],\n htva: [],\n };\n\n this.donutToggle.optionsSets = [];\n this.barToggle.datasets = [[], [], []];\n\n this.loading.nbQueriesDone = 0;\n\n this.pieInnerColor = this.chartService.getColorRgbToHex('LIGHTGREY');\n }\n\n /**\n * Set a marker for each site matching the current filters\n * @param {QueryFilterVeh} filters\n */\n async initMarkers(filters: QueryFilterVeh) {\n try {\n const sites = await this.sitesService.getSites(filters);\n this.markers = this.mapService.getMarkersFromSites(sites.data, 'fuel');\n } catch (e) {\n this.markers = this.mapService.getMarkersFromSites([]);\n this.handleError('map_markers');\n }\n }\n\n /**\n * \tLOAD DATA\n */\n\n /**\n * Initialize components and load new data to display with the current filter values.\n * @param {QueryFilterVeh} filters\n */\n async search(filters: QueryFilterVeh) {\n this.queryFilterSelected = this.filterComponent.getMainFilterSelected();\n this.resetComponents();\n this.initComponents(filters);\n }\n\n /**\n * Init labels, colors, markers, and each component with the new filter values.\n * @param {QueryFilterVeh} filters\n */\n async initComponents(filters: QueryFilterVeh): Promise {\n /**\n * Donuts\n */\n\n // labels\n this.fueltypesSelected = filters.fuelTypes.split(',');\n this.fuelTypesLabels = this.fueltypesSelected.map(fluid => this.energyService.fuelProductFullText(fluid));\n\n // colors\n const colorsDonut = this.chartService.getColorsDoughnutChart(this.fueltypesSelected);\n this.fuelTypesColors = colorsDonut.backgroundColor; // for donuts\n\n /**\n * Bar\n */\n\n // labels\n const start = moment.utc(filters.dateStart).startOf('month');\n const end = moment.utc(filters.dateEnd).endOf('month');\n this.barToggle.labels = this.chartService.getPeriodMonthlyLabels(start, end);\n\n /**\n * Markers & components\n */\n this.initMarkers(filters);\n await this.getConsumption(filters);\n return;\n }\n\n /**\n * Get consumption for each selected element inside the filter.\n * Filter groups (tags) are processed one after the other: data grabbed + datasets filled.\n * Once all the tags have been processed the charts configs are set and displayed.\n * @param {QueryFilterVeh} filters\n */\n async getConsumption(filters: QueryFilterVeh) {\n if (filters.fuelTypes && filters.dateStart && filters.dateEnd) {\n this.loading.data = true;\n this.exportFilters = filters;\n\n /**\n * Index of the filter group (tag) being processed.\n * Index must begin at 1 for the chart bar to process each group in the correct order.\n * Index must be incremented of 1 for each new filter group (tag) being processed.\n */\n let filterGroupIndex: number;\n\n /**\n * Get consumption for each selected filter option.\n * When the filter is different from 'all' and 'custom-filters', no need to format it.\n **/\n if (['all', 'custom-filters'].includes(this.queryFilterSelected.value)) {\n this.loading.nbQueriesToDo = 1;\n filterGroupIndex = 1; // only one group for the selection \"all\" or a specific custom filter\n await this.addFilterDataToCharts(filters, filterGroupIndex);\n } else {\n const tagsSelected: string[] = filters[this.queryFilterSelected.value].split(',');\n this.loading.nbQueriesToDo = tagsSelected.length;\n\n // create n queries, for each tag value selected\n for (let i = 0; i < tagsSelected.length; i++) {\n const filterUniqueTag: QueryFilterVeh = Object.assign({}, filters, {\n [this.queryFilterSelected.value]: tagsSelected[i],\n });\n filterGroupIndex = i + 1;\n await this.addFilterDataToCharts(filterUniqueTag, filterGroupIndex);\n }\n }\n } else {\n /**\n * Zero fuel type found when the company is empty (no bill - no fuel type)\n * Same if no date start/end\n * Data for charts is already initialized with empty datasets\n */\n this.loading.data = false;\n this.setChartStateLoading(false);\n }\n }\n\n /**\n * Grab data for the current filter being processed.\n * Add data inside each chart at the right position.\n * @param {QueryFilterVeh} filters\n * @param {number} filterGroupIndex index of the current filter (tag) being processed\n */\n async addFilterDataToCharts(filters: QueryFilterVeh, filterGroupIndex: number) {\n try {\n // 1. get data and format it\n const conso: CommonEnergyRepartitionMonthly[] = await this.energyDataService.getMonthlyGlobalEnergyRepartition(\n filters,\n 'fuelType_monthly'\n );\n const consoFormated: GroupChartsDataFormated = this.followupService.formatToMonthlyConsumption(\n conso,\n filterGroupIndex,\n filters\n );\n this.loading.nbQueriesDone++;\n\n // 2. populate charts\n this.setChartsData(consoFormated);\n } catch (e) {\n this.handleError('set_chart_data');\n return;\n }\n }\n\n /**\n * -------\n * DATA & CHARTS\n * -------\n */\n\n /**\n * Populate each chart, with the current tag data being processed.\n * @param {GroupChartsDataFormated} monthlyFormatedConsumption\n */\n setChartsData(monthlyFormatedConsumption: GroupChartsDataFormated): void {\n this.populateCharts(monthlyFormatedConsumption);\n\n // if it was the last query\n if (this.loading.nbQueriesDone === this.loading.nbQueriesToDo) {\n this.loading.data = false;\n\n this.handleLegends();\n this.handleDonuts();\n this.handleBar();\n\n this.setChartStateLoading(false);\n }\n }\n\n /**\n * Populate charts witt the formated data of the current tag being processed\n * @param {GroupChartsDataFormated} monthlyFormatedConsumption\n */\n populateCharts(monthlyFormatedConsumption: GroupChartsDataFormated): void {\n /**\n * Sum each fuel type data for the current filter group (tag)\n * eg: [ [diesel site 1], [diesel site 2, gasoline site 2] ]\n */\n const indexFilter = monthlyFormatedConsumption.stack - 1;\n\n this.dataDonutsInside.conso[indexFilter] = this.getSumConsoPerFuelType(monthlyFormatedConsumption, 'L');\n this.dataDonutsInside.htva[indexFilter] = this.getSumConsoPerFuelType(monthlyFormatedConsumption, 'ht');\n this.dataDonutsInside.ttc[indexFilter] = this.getSumConsoPerFuelType(monthlyFormatedConsumption, 'ttc');\n\n for (let indexFuelType = 0; indexFuelType < monthlyFormatedConsumption.data.chart.L.length; indexFuelType++) {\n _.values(monthlyFormatedConsumption.data.chart).forEach((fuelTypeData, indexToggle) => {\n this.barToggle.datasets[indexToggle].push(fuelTypeData[indexFuelType]);\n });\n }\n }\n\n /**\n * Sum the conso per fuel type of the given group filter.\n * @param {GroupChartsDataFormated} singleFilterData - data of the current filter being processed\n * @returns {number[]} sums per fuel type\n * @returns {\"L\"|\"ttc\"|\"ht\"} donut type to process\n */\n private getSumConsoPerFuelType(singleFilterData: GroupChartsDataFormated, chartType: 'L' | 'ttc' | 'ht'): number[] {\n const consoPerFuelType: number[] = []; // [ diesel sum, gasoline sum ]\n\n const seriesData: ChartSerieFollowup[] = singleFilterData.data.chart[chartType];\n\n seriesData.forEach(fuelTypeData => {\n const sumMonthsData: number = fuelTypeData.data.reduce((monthA, monthB) => monthA + monthB, 0);\n const indexFuelType = this.fueltypesSelected.findIndex(fuelType => fuelType === fuelTypeData.label);\n if (indexFuelType !== -1) {\n consoPerFuelType[indexFuelType] = sumMonthsData;\n }\n });\n\n return consoPerFuelType;\n }\n\n /**\n * COMMON\n */\n handleLegends() {\n const legend = this.getChartLegends(this.fueltypesSelected);\n this.donuts.conso.legend = legend;\n this.donutToggle.legend = [legend, legend];\n this.barToggle.legend = [legend, legend, legend];\n }\n\n /**\n * \tDONUTS\n */\n\n /**\n * Handle the three donuts, and the toggle for costs.\n * Set datasets, unit, and options config.\n */\n private handleDonuts(): void {\n /**\n * Fill donut datasets.\n * inner donut series = data per filter group (tag)\n * outer donut series = data per fuel type\n */\n _.keys(this.donuts).forEach(donutType => {\n this.setDonutDataForInside(donutType);\n this.setDonutDataForOutside(donutType);\n });\n\n // Create global configs for each double donut\n _.values(this.donuts).forEach(donut => {\n this.getDoubleDonutConfig(donut);\n });\n\n // Create toggle donut for costs htva & ttc\n this.donutToggle.optionsSets = [this.donuts.htva.options, this.donuts.ttc.options];\n }\n\n /**\n * Create donut series per filter for the inner circle.\n */\n private setDonutDataForInside(donutType: string): void {\n const filters = this.filterComponent.getFilters();\n\n // for each filter group, try to create a serie\n filters.forEach((filter, i) => {\n /**\n * Create a donut serie for the filters having data.\n * A serie contains each fuel type value (data), and the sum (y)\n **/\n\n const filterGroupData: number[] = this.dataDonutsInside[donutType][i]; // eg: this.dataDonutsInside.conso = [ [diesel site 1], [diesel site 2, gasoline site 2] ]\n if (filterGroupData) {\n const totalGroupConso = filterGroupData.reduce((a, b) => a + b, 0);\n if (totalGroupConso > 0) {\n const serie: DoubleDonutSerieIn = {\n name: this.chartService.getChartLegendContentByFilter(filter, this.queryFilterSelected.value),\n y: totalGroupConso,\n color: this.pieInnerColor,\n data: filterGroupData,\n };\n this.donuts[donutType].dataInside.push(serie);\n }\n }\n });\n }\n\n /**\n * Create a donut series for the outer circle.\n */\n private setDonutDataForOutside(donutType: string): void {\n const filters = this.filterComponent.getFilters();\n\n // for each filter\n for (let indexFilter = 0; indexFilter < filters.length; indexFilter++) {\n // for each fuel type\n const nbFuelTypes = this.fueltypesSelected.length;\n for (let indexFuelType = 0; indexFuelType < nbFuelTypes; indexFuelType++) {\n // create a serie for each combinaison filter / fuel type\n const filterData = this.donuts[donutType].dataInside[indexFilter];\n if (filterData) {\n const dataFilterFuelType = filterData.data[indexFuelType];\n if (dataFilterFuelType && dataFilterFuelType > 0) {\n const fluidData: DoubleDonutSerieOut = {\n name: this.fuelTypesLabels[indexFuelType],\n y: dataFilterFuelType,\n color: this.fuelTypesColors[indexFuelType],\n };\n if (nbFuelTypes > 1) {\n fluidData.percentageCat = (dataFilterFuelType * 100) / filterData.y;\n }\n this.donuts[donutType].dataOutside.push(fluidData);\n }\n }\n }\n }\n }\n\n /**\n * Create config from the inner and outer circle series\n * @param {DoubleDonutProperties} pieChartProperties\n */\n private getDoubleDonutConfig(pieChartProperties: DoubleDonutProperties) {\n pieChartProperties.options = this.chartService.getHighchartDoublePieConfig(\n pieChartProperties.dataInside,\n pieChartProperties.dataOutside,\n pieChartProperties.unit\n );\n }\n\n /**\n * BAR\n */\n\n /**\n *\n */\n private handleBar(): void {\n // sort\n this.chartService.sortByStack(this.barToggle.datasets);\n\n // units in datasets series\n this.barToggle.datasets.forEach((dataset, unitIndex) => {\n dataset.forEach(serie => {\n serie.unit = this.barToggle.units[unitIndex];\n });\n });\n\n // colors\n this.barToggle.colors = this.chartService.getStackColors(this.barToggle);\n\n // config\n const filters = this.filterComponent.getFilters();\n const groupNamesTooltips = filters.map(filter => {\n return this.chartService.getChartLegendContentByFilter(filter, this.queryFilterSelected.value);\n });\n const options = this.chartService.getConfig('groupable-stacked-bar', {\n tooltips: this.chartService.getTooltipHTMLConfig(\n 'groupable-stack-followup',\n null,\n groupNamesTooltips,\n this.queryFilterSelected.totalGroupName\n ),\n });\n this.barToggle.options = this.chartService.getDatasetsAxesOptions(this.barToggle.datasets, options);\n }\n\n /**\n * --------\n * CHARTS\n * --------\n */\n\n /**\n * Used to disable filter search.\n * @returns {boolean} true if at least one graph is loading.\n */\n isSomeChartLoading(): boolean {\n return _.values(this.loading.charts).some(elem => elem === true);\n }\n\n /**\n * @param {string} title - begining of the full filename\n * @returns {string} name of the export file correctly formatted\n */\n getExportName(title: string): string {\n const date = moment()\n .format('YYYYMMDD')\n .toString();\n const filterType = this.queryFilterSelected ? this.translateService._(this.queryFilterSelected.value) : '';\n return `${title}-${date}-${filterType}.xlsx`;\n }\n\n getExportExcelUrl(type: string) {\n if (type && this.exportFilters) {\n this.exportFilters.dju = false;\n let url = `/api/export/excel/followup/${type}`;\n url += this.filterService.formatQueryToUrl(this.exportFilters);\n\n return url;\n }\n return null;\n }\n\n getSiteConsumptionExportExcelUrl(type: string) {\n if (type && this.exportFilters) {\n this.exportFilters.dju = false;\n let url = `/api/export/excel/${type}`;\n url += this.filterService.formatQueryToUrl(this.exportFilters);\n\n return url;\n }\n return null;\n }\n\n public isLoadingData(): boolean {\n return Boolean(this.loading.data);\n }\n\n /**\n * @returns {boolean} true if chart has data for both circles (inside & outside)\n */\n public hasDataForConsoDonut(): boolean {\n try {\n const series: DoublePieOptionsSeries[] = this.donuts.conso.options.series;\n return Boolean(series.length && series.every(serie => Boolean(serie.data.length)));\n } catch (err) {\n return false;\n }\n }\n\n /**\n * @returns {boolean} true if one of the toggle has data for both circles (inside & outside)\n */\n public hasDataForToggleDonut(): boolean {\n try {\n const chartOptionSets = this.donutToggle.optionsSets;\n return Boolean(\n chartOptionSets.length === 2 &&\n chartOptionSets.some(set => set.series.every(serie => serie.data.length))\n );\n } catch (err) {\n return false;\n }\n }\n\n /**\n * @returns {boolean} true if one of the toggle datasets has data to display\n */\n public hasDataForBar(): boolean {\n try {\n return this.barToggle.datasets.length && this.barToggle.datasets.some(dataSet => Boolean(dataSet.length));\n } catch (e) {\n return false;\n }\n }\n\n /**\n * @returns {boolean} true if both data and charts have loaded\n */\n public isReadyToDisplay(): boolean {\n return !this.isLoadingData() && !this.isSomeChartLoading();\n }\n\n getChartLegends(labels: any, options = {}) {\n return labels.map(label => this.chartService.getLegend(label, options));\n }\n\n /**\n * Display error message for the user.\n * @param {string} errorCode - error code\n */\n private handleError(errorCode: string = null) {\n const errors: { [code: string]: [string, string, SweetAlertIcon] } = {\n default: ['Une erreur inconnue est survenue', 'Merci de réessayer ultérieurement.', 'error'],\n map_markers: [\"Impossible d'afficher les sites\", 'Merci de réessayer ultérieurement.', 'error'],\n set_chart_data: [\n \"Impossible d'afficher les données de consommation.\",\n 'Merci de réessayer ultérieurement.',\n 'error',\n ],\n };\n let e = errors.default;\n if (errorCode && errors[errorCode]) {\n e = errors[errorCode];\n }\n swal.fire(e[0], e[1], e[2]);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from 'app/shared/services/guards/access-guard.service';\nimport { FollowupComponent } from './followup.component';\n\nconst FOLLOWUP_ROUTE = [\n {\n path: '',\n component: FollowupComponent,\n canActivate: [AccessGuard],\n data: { page: 'vehicles' },\n },\n];\n\n@NgModule({\n declarations: [FollowupComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(FOLLOWUP_ROUTE)],\n})\nexport class FollowUpModule {}\n","import { Injectable } from '@angular/core';\nimport * as moment from 'moment';\n\n// interfaces\nimport { QueryFilterVeh } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { CommonEnergyRepartitionMonthly } from 'app/shared/models/energy-data-bills.interface';\nimport { ChartSerieFollowup, GroupChartsDataFormated } from './followup.interface';\n\n// services\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\n@Injectable()\nexport class FollowupService extends PageService {\n constructor(public apiService: ApiService, private chartService: ChartService) {\n super(apiService);\n this.fake = false;\n }\n\n /**\n * @todo: refacto with followup from energy page.\n * This function is a copy paste from the energy followup service.\n * The only difference is the DJU part (removed here).\n * Format data from monthly consumptions for charts datasets\n * @todo: typng & improve visibility.\n * @param {CommonEnergyRepartitionMonthly[]} data\n * @param {number} filterGroupIndex id of the current filter group being processed (tag)\n * @param {QueryFilterVeh} filters\n */\n formatToMonthlyConsumption(\n data: CommonEnergyRepartitionMonthly[],\n filterGroupIndex: number,\n filters: QueryFilterVeh\n ): GroupChartsDataFormated {\n const chart: { [consoType: string]: ChartSerieFollowup[] } = {\n L: [],\n ht: [],\n ttc: [],\n };\n\n const total: { [consoType: string]: { [monthLabel: string]: number } } = {\n L: {},\n ht: {},\n ttc: {},\n };\n\n const consoCostPerFuelType: { [consoType: string]: { [fuelType: string]: number[] } } = {\n ttc: {}, // {diesel: [100, 2000, 126, ...]}\n ht: {},\n L: {},\n };\n\n const start = moment.utc(filters.dateStart).startOf('month');\n const end = moment.utc(filters.dateEnd).startOf('month');\n const indexMonthYears = this.chartService.getIndexMonthYears(start, end);\n const nbMonths = indexMonthYears[end.year()][end.month()] + 1; // +1 cause index starts with 0\n\n data.forEach(databyMonth => {\n const labelMonth: string =\n this.chartService.getMonthNumber(databyMonth.month + 1) + '/' + databyMonth.items[0].year.toString();\n\n // if first item found on this month, init ttc htva and conso with zero\n if (typeof total.ttc[labelMonth] === 'undefined') {\n total.ttc[labelMonth] = 0;\n }\n if (typeof total.ht[labelMonth] === 'undefined') {\n total.ht[labelMonth] = 0;\n }\n if (typeof total.L[labelMonth] === 'undefined') {\n total.L[labelMonth] = 0;\n }\n\n /**\n * 1. compute total per conso type (ht, ttc, L)\n * 2. fill array of values per month, per fuel type (diesel/gasoline), per conso type (ht, ttc, L)\n */\n databyMonth.items.forEach(fuelData => {\n for (const consoType in consoCostPerFuelType) {\n if (!fuelData.fuelType) {\n continue;\n }\n\n // if first data on this month, init an array of n zeros, n being the number of months\n if (typeof consoCostPerFuelType[consoType][fuelData.fuelType] === 'undefined') {\n consoCostPerFuelType[consoType][fuelData.fuelType] = Array.apply(null, Array(nbMonths)).map(\n Number.prototype.valueOf,\n 0\n );\n }\n\n let currentValue = 0;\n\n // get the current value being processed\n switch (consoType) {\n case 'ht':\n currentValue = fuelData.totalHT.amount;\n break;\n\n case 'ttc':\n currentValue = fuelData.totalTTC.amount;\n break;\n\n case 'L':\n currentValue = fuelData.consumption.quantity;\n break;\n }\n\n // add the value (conso qty or cost amount) to its total\n total[consoType][labelMonth] += currentValue; // add the price to total price\n\n // add the value (conso qty or cost amount) inside the global formated monthly data object\n consoCostPerFuelType[consoType][fuelData.fuelType][\n indexMonthYears[databyMonth.year][databyMonth.month]\n ] = currentValue;\n }\n });\n });\n\n for (const consoOrCost in consoCostPerFuelType) {\n if (consoCostPerFuelType.hasOwnProperty(consoOrCost)) {\n let idStackFilter = 0; // order of each stack\n\n for (const fuelType in consoCostPerFuelType[consoOrCost]) {\n if (consoCostPerFuelType[consoOrCost].hasOwnProperty(fuelType)) {\n const chartSerie: ChartSerieFollowup = {\n data: consoCostPerFuelType[consoOrCost][fuelType],\n label: fuelType,\n stack: filterGroupIndex, // = site n° / categorie n° / region n°\n idStackFilter,\n yAxisID: 'y-axis-0',\n type: 'bar',\n };\n chart[consoOrCost].push(chartSerie);\n idStackFilter++;\n } else {\n // TODO: Check Needed (Else to keep old behavior)\n idStackFilter++;\n }\n }\n }\n }\n\n const formatedData: GroupChartsDataFormated = {\n data: {\n chart: { L: chart.L, ht: chart.ht, ttc: chart.ttc },\n totalPrices: [total.ht, total.ttc],\n totalConsumptions: [total.L],\n },\n labels: this.chartService.getPeriodMonthlyLabels(start, end),\n stack: filterGroupIndex,\n };\n\n return formatedData;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3ZlaGljbGVzL3BhcmstbW9uaXRvcmluZy9wYXJrLW1vbml0b3JpbmcuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as moment from 'moment';\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n\n// services\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { VehiclesService } from 'app/shared/services/vehicles/vehicles.service';\nimport { ParkMonitoringService } from './park-monitoring.service';\n\n// interfaces\nimport { QueryFilterVeh } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { BarChartProperties } from 'app/shared/models/charts/charts.interface';\nimport { CO2eEmission } from 'app/shared/models/co2emissions.interface';\nimport { MapOptions, Marker } from 'app/shared/models/marker.interface';\n\ninterface Loading {\n evolution: boolean;\n emissionAvg: boolean;\n emissionTotal: boolean;\n}\n\n@Component({\n selector: 'ga-park-monitoring',\n templateUrl: './park-monitoring.component.html',\n styleUrls: ['./park-monitoring.component.scss'],\n providers: [ParkMonitoringService],\n})\nexport class ParkMonitoringComponent implements OnInit {\n /**\n * Charts\n */\n evolutionChartProperties: BarChartProperties = {\n datasets: [],\n colors: [],\n labels: [],\n options: {},\n width: 9000,\n maxHeight: 350,\n legends: [],\n };\n\n emissionAvgChartProperties: BarChartProperties = {\n datasets: [],\n colors: [],\n labels: [],\n options: {},\n width: 9000,\n maxHeight: 350,\n legends: [],\n };\n\n emissionTotalChartProperties: BarChartProperties = {\n datasets: [],\n colors: [],\n labels: [],\n options: {},\n width: 9000,\n maxHeight: 350,\n legends: [],\n };\n\n loading: Loading = {\n evolution: true,\n emissionAvg: true,\n emissionTotal: true,\n };\n\n /**\n * Map\n */\n markers: Marker[] = [];\n mapOptions: MapOptions = {\n zoom: 8,\n lat: 49.894067,\n lng: 2.2957529999999906,\n height: 250,\n };\n\n /** Filter saved for export */\n exportFilters: QueryFilterVeh;\n\n constructor(\n private route: ActivatedRoute,\n private parkMonitoringService: ParkMonitoringService,\n private chartService: ChartService,\n private vehicleService: VehiclesService,\n private translate: TranslateService,\n private filterService: FilterService,\n private sitesService: SitesService,\n private mapService: MapService\n ) {}\n\n ngOnInit() {\n /**\n * {Params} route.queryParams\n * {string} route.queryParams.siteId - site id to preselect\n */\n\n if (this.route.queryParams) {\n // subscribe to change to launch initiliazation when url is modified\n this.route.queryParams.subscribe(() => {\n this.initComponentSetup();\n });\n }\n }\n\n /**\n * Initialize components.\n */\n initComponentSetup() {\n // make the charts loading\n this.setChartStateLoading();\n\n // @todo: empty charts\n }\n\n /**\n * Set all charts as loading.\n */\n setChartStateLoading() {\n this.loading.evolution = true;\n this.loading.emissionAvg = true;\n this.loading.emissionTotal = true;\n }\n\n /**\n * \tLOAD DATA\n */\n\n /**\n * Triggers search with filters.\n * @param {QueryFilterVeh} filters\n */\n public async search(filters: QueryFilterVeh) {\n this.exportFilters = filters;\n this.setChartStateLoading();\n this.initMarkers(filters); // dont need to wait, the following operations don't need the sites\n\n /**\n * Get markers of the sites matching the filters\n * Get emissions data\n **/\n const emissions = await this.vehicleService.getVehiclesCO2e(null, filters);\n\n /**\n * Format emissions data\n * Fill charts with data and display\n */\n this.parkMonitoringService.formatCo2eEmissions(emissions);\n this.handleEvolution(emissions);\n this.handleEmissions(emissions);\n }\n\n /**\n * Set a marker for each site matching the current filters\n * @param {QueryFilterVeh} filters\n */\n async initMarkers(filters: QueryFilterVeh) {\n try {\n const sites = await this.sitesService.getSites(filters);\n this.markers = this.mapService.getMarkersFromSites(sites.data, 'fuel');\n } catch (e) {\n this.handleError('map_markers');\n this.markers = [];\n }\n }\n\n /**\n * Used to disable filter search.\n * @returns {boolean} true if at least one graph is loading.\n */\n isSomeGraphLoading(): boolean {\n return Object.keys(this.loading).some(key => this.loading[key]);\n }\n\n /**************\n * EVOLUTION MANAGEMENT\n **************/\n\n /**\n * Handle evolution chart data and chart properties\n * @param {*} filters - filters data on vehicles\n * @param {Moment[]} dates - dates to be display in x axis in charts\n */\n private async handleEvolution(emissions: CO2eEmission[]) {\n try {\n this.loading.evolution = true;\n\n /**\n * Create datasets and set chart properties.\n */\n this.setEvolutionChartProperties(emissions);\n } catch (e) {\n this.handleError('evolution_chart');\n }\n this.loading.evolution = false;\n }\n\n /**\n * Set evolution properties\n * @param {EvolutionDate[]} data - evolution data for status by date.\n */\n private setEvolutionChartProperties(data: CO2eEmission[]) {\n /**\n * For each month, push value to dataset\n */\n const commonProperties = { type: 'bar', stack: 'stack-0', unit: '' };\n const inDataset = Object.assign({ data: [], label: 'vehicles' }, commonProperties);\n const incomingDataset = Object.assign({ data: [], label: 'vehicles_incoming' }, commonProperties);\n const outgingDataset = Object.assign({ data: [], label: 'vehicles_outgoing' }, commonProperties);\n const labels: string[] = [];\n const keys = ['vehicle_quantity', 'vehicle_incoming', 'vehicle_outgoing'];\n\n data.forEach(d => {\n inDataset.data.push(d.in.length - d.incoming.length);\n incomingDataset.data.push(d.incoming.length);\n outgingDataset.data.push(d.outgoing.length * -1);\n labels.push(d.date);\n });\n\n /**\n * Chart properties filling\n */\n this.evolutionChartProperties.datasets = [inDataset, incomingDataset, outgingDataset];\n this.evolutionChartProperties.labels = labels;\n this.evolutionChartProperties.colors = this.chartService.getBarChartColors(keys);\n this.evolutionChartProperties.options = this.chartService.getConfig('stacked', {\n tooltips: this.chartService.getTooltipHTMLConfig('stack', null, {\n displayPercentage: false,\n displayTotal: false,\n }),\n });\n this.evolutionChartProperties.legends = keys.map((label, i) => {\n const legend = this.chartService.getLegend(label);\n legend.name = this.translate._(this.evolutionChartProperties.datasets[i].label);\n return legend;\n });\n }\n\n /**\n * Handle emissions charts data and charts\n * @param {*} filters - filters to get emissions\n * @param {Moment[]} dates - dates to be display in x axis in charts\n */\n private async handleEmissions(emissions: CO2eEmission[]) {\n try {\n this.loading.emissionAvg = true;\n this.loading.emissionTotal = true;\n\n this.setEmissionAvgChartProperties(emissions);\n this.setEmissionTotalChartProperties(emissions);\n } catch (e) {\n this.handleError('emission_charts');\n }\n this.loading.emissionAvg = false;\n this.loading.emissionTotal = false;\n }\n\n /**\n * Set vehicle average emission chart properties\n * @param {EmissionData[]} data\n */\n private setEmissionAvgChartProperties(data: CO2eEmission[]) {\n /**\n * For each month, push value to dataset\n */\n const dataset = { data: [], label: this.translate._('vehicles_emissions_avg') };\n const labels: string[] = [];\n const keys = ['vehicles_emissions'];\n\n data.forEach(d => {\n dataset.data.push(d.co2eAvg);\n labels.push(d.date);\n });\n\n /**\n * Chart properties filling\n */\n this.emissionAvgChartProperties.datasets = [dataset];\n this.emissionAvgChartProperties.labels = labels;\n this.emissionAvgChartProperties.colors = this.chartService.getBarChartColors(keys);\n this.emissionAvgChartProperties.options = this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', 'TCO2e/véhicule'),\n });\n this.emissionAvgChartProperties.legends = keys.map((label, i) => {\n const legend = this.chartService.getLegend(label);\n legend.name = this.emissionAvgChartProperties.datasets[i].label;\n return legend;\n });\n }\n\n /**\n * Set total vehicle emissions chart properties\n * @param {EmissionData[]} data\n */\n private setEmissionTotalChartProperties(data: CO2eEmission[]) {\n /**\n * For each month, push value to dataset\n */\n const dataset = { data: [], label: this.translate._('vehicles_emissions_total') };\n const labels: string[] = [];\n const keys = ['vehicles_emissions'];\n\n data.forEach(d => {\n dataset.data.push(d.co2e);\n labels.push(d.date);\n });\n\n /**\n * Chart properties filling\n */\n this.emissionTotalChartProperties.datasets = [dataset];\n this.emissionTotalChartProperties.labels = labels;\n this.emissionTotalChartProperties.colors = this.chartService.getBarChartColors(keys);\n this.emissionTotalChartProperties.options = this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('ng-chart-bar-line', 'TCO2e'),\n });\n this.emissionTotalChartProperties.legends = keys.map((label, i) => {\n const legend = this.chartService.getLegend(label);\n legend.name = this.emissionTotalChartProperties.datasets[i].label;\n return legend;\n });\n }\n\n get hasEvolutionData(): boolean {\n return this.evolutionChartProperties.datasets.some(x => (x.data as number[]).some(y => y !== 0));\n }\n\n get hasEmissionData(): boolean {\n return this.emissionTotalChartProperties.datasets.some(x => (x.data as number[]).some(y => y !== 0));\n }\n\n /**\n * Display error message for the user.\n * @param {string} errorCode - error code\n */\n private handleError(errorCode: string = null) {\n const errors: { [code: string]: [string, string, SweetAlertIcon] } = {\n default: ['Une erreur inconnue est survenue', 'Merci de réessayer ultérieurement.', 'error'],\n map_markers: [\"Impossible d'afficher les sites\", 'Merci de réessayer ultérieurement.', 'error'],\n evolution_chart: [\"Impossible d'afficher l'évolution.\", 'Merci de réessayer ultérieurement.', 'error'],\n emission_charts: [\"Impossible d'afficher les émissions.\", 'Merci de réessayer ultérieurement.', 'error'],\n };\n let e = errors.default;\n if (errorCode && errors[errorCode]) {\n e = errors[errorCode];\n }\n Swal.fire(e[0], e[1], e[2]);\n }\n\n /**\n * Export management\n */\n /**\n * @param {string} title - begining of the full filename\n * @returns {string} name of the export file correctly formatted\n */\n getExportName(title: string): string {\n const date = moment()\n .format('YYYYMMDD')\n .toString();\n return `${title}-${date}.xlsx`;\n }\n\n getExportExcelUrl(type: string) {\n if (type && this.exportFilters) {\n this.exportFilters.dju = false;\n let url = `/api/export/excel/vehicles-park/${type}`;\n url += this.filterService.formatQueryToUrl(this.exportFilters);\n\n return url;\n }\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../../../shared/shared.module';\n\nimport { AccessGuard } from 'app/shared/services/guards/access-guard.service';\nimport { ParkMonitoringComponent } from './park-monitoring.component';\n\nconst PRK_ROUTE = [\n {\n path: '',\n component: ParkMonitoringComponent,\n canActivate: [AccessGuard],\n data: { page: 'vehicles' },\n },\n];\n\n@NgModule({\n declarations: [ParkMonitoringComponent],\n imports: [CommonModule, SharedModule, RouterModule.forChild(PRK_ROUTE)],\n})\nexport class ParkMonitoringModule {}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../../shared/services/api/api.service';\nimport { PageService } from '../../../shared/services/page/page.service';\n\nimport { CO2eEmission } from 'app/shared/models/co2emissions.interface';\nimport * as moment from 'moment';\n\n@Injectable()\nexport class ParkMonitoringService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n /**\n * Format CO2eEmission data dates to be display in charts correctly instead of ISO Strings.\n * Also check emission units to set convert to ton (T)\n * Mutates original objects.\n * @param {CO2eEmission[]} emissions\n * @returns {CO2eEmission[]}\n */\n formatCo2eEmissions(emissions: CO2eEmission[]): CO2eEmission[] {\n emissions.forEach(emission => {\n emission.date = moment.utc(emission.date).format('MM-YYYY');\n this.convertEmissionToT(emission);\n });\n return emissions;\n }\n\n /**\n * Convert emission values co2e et co2eAvg to ton.\n * Mutates original object.\n * @param {CO2eEmission} emission - emission to convert values from.\n */\n private convertEmissionToT(emission: CO2eEmission) {\n switch (emission.co2Unit) {\n case 'kg':\n emission.co2e = emission.co2e / 1000;\n emission.co2eAvg = emission.co2eAvg / 1000;\n break;\n case 'g':\n emission.co2e = emission.co2e / 1000000;\n emission.co2eAvg = emission.co2eAvg / 1000000;\n break;\n default:\n break;\n }\n }\n}\n","import { ErrorHandler, Inject, Injectable, InjectionToken } from '@angular/core';\nimport * as Rollbar from 'rollbar';\nimport { environment } from '../environments/environment';\n\nconst rollbarConfig: Rollbar.Configuration = {\n enabled: environment.APP_ENV === 'production' || environment.APP_ENV === 'staging',\n accessToken: environment.ROLLBAR_TOKEN,\n captureUncaught: true,\n captureUnhandledRejections: true,\n nodeSourceMaps: false,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n scrubRequestBody: true,\n exitOnUncaughtException: false,\n payload: {\n environment: environment.APP_ENV,\n client: {\n javascript: {\n code_version: environment.REVISION_SHA1,\n },\n },\n },\n};\n\nexport const RollbarService = new InjectionToken('rollbar');\n\n@Injectable()\nexport class RollbarErrorHandler implements ErrorHandler {\n constructor(@Inject(RollbarService) private rollbar: Rollbar) {}\n handleError(err: any): void {\n // tslint:disable-next-line: no-console\n console.error(err.originalError || err);\n const isIEOrEdge = /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n if (!isIEOrEdge) {\n this.rollbar.error(err.originalError || err);\n }\n }\n}\n\nexport function rollbarFactory(): Rollbar {\n return new Rollbar(rollbarConfig);\n}\n\nexport default Rollbar;\n","export default \".bloc-element {\\n -webkit-box-align: center;\\n align-items: center;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n padding-top: 15px;\\n padding-bottom: 15px;\\n}\\n.bloc-element .element {\\n width: 200px;\\n height: 200px;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n.bloc-element .element img {\\n position: absolute;\\n height: 200px;\\n width: 200px;\\n opacity: 0.8;\\n}\\n.bloc-element .element .bloc-text.has-logo {\\n opacity: 0;\\n}\\n.bloc-element .element .bloc-text {\\n position: absolute;\\n height: 200px;\\n width: 200px;\\n color: white;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: center;\\n justify-content: center;\\n text-align: center;\\n}\\n.bloc-element .element .bloc-text .name.has-no-logo,\\n.bloc-element .element .bloc-text .subText.has-no-logo {\\n background: rgba(0, 0, 0, 0.5);\\n /* Black background with 0.5 opacity */\\n}\\n.bloc-element .element .bloc-text .bottom-border {\\n border-color: white;\\n border-bottom: solid thin;\\n padding-bottom: 5px;\\n}\\n.bloc-element .element .bloc-text .name {\\n border-top: solid thin;\\n border-color: white;\\n font-weight: bold;\\n font-size: 16px;\\n padding-top: 5px;\\n}\\n.bloc-element .element .bloc-text .subText {\\n font-weight: thin;\\n font-size: 12px;\\n}\\n.bloc-element .element:hover {\\n cursor: pointer;\\n background-color: #db4b47;\\n -webkit-transition: background-color 300ms linear;\\n transition: background-color 300ms linear;\\n}\\n.bloc-element .element:hover img {\\n opacity: 0.2;\\n -webkit-transition: opacity 300ms linear;\\n transition: opacity 300ms linear;\\n}\\n.bloc-element .element:hover .bloc-text {\\n opacity: 1;\\n -webkit-transition: opacity 300ms linear;\\n transition: opacity 300ms linear;\\n}\\n.bloc-element .element:hover .bloc-text .name,\\n.bloc-element .element:hover .bloc-text .subText {\\n background: none;\\n -webkit-transition: background 300ms linear;\\n transition: background 300ms linear;\\n}\\n.bloc-element .element-add {\\n line-height: 200px;\\n width: 200px;\\n font-size: 200px;\\n border: 2px solid #db4b47;\\n text-align: center;\\n color: #db4b47;\\n}\\n.bloc-element .element-add:hover {\\n cursor: pointer;\\n background-color: #db4b47;\\n color: white;\\n -webkit-transition: border-color 300ms linear, background-color 300ms linear, color 300ms linear;\\n transition: border-color 300ms linear, background-color 300ms linear, color 300ms linear;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2FkbWluLXNlbGVjdGlvbi9hZG1pbi1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2FkbWluLXNlbGVjdGlvbi9hZG1pbi1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0kseUJBQUE7VUFBQSxtQkFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QUNESjtBREdJO0VBQ0ksWUFBQTtFQUNBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FDRFI7QURHUTtFQUNJLGtCQUFBO0VBRUEsYUFBQTtFQUNBLFlBQUE7RUFDQSxZQUFBO0FDRlo7QURLUTtFQUNJLFVBQUE7QUNIWjtBRE1RO0VBQ0ksa0JBQUE7RUFDQSxhQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFFQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0VBQ0Esa0JBQUE7QUNMWjtBRE9ZOztFQUVJLDhCQUFBO0VBQWdDLHNDQUFBO0FDSmhEO0FET1k7RUFDSSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7QUNMaEI7QURRWTtFQUNJLHNCQUFBO0VBQ0EsbUJBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQ05oQjtBRFNZO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0FDUGhCO0FEV0k7RUFDSSxlQUFBO0VBQ0EseUJFMUNBO0VGMkNBLGlEQUFBO0VBRUEseUNBQUE7QUNUUjtBRFdRO0VBQ0ksWUFBQTtFQUNBLHdDQUFBO0VBRUEsZ0NBQUE7QUNUWjtBRFlRO0VBQ0ksVUFBQTtFQUNBLHdDQUFBO0VBRUEsZ0NBQUE7QUNWWjtBRFlZOztFQUVJLGdCQUFBO0VBQ0EsMkNBQUE7RUFFQSxtQ0FBQTtBQ1ZoQjtBRGVJO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsY0U1RUE7QUQrRFI7QURnQkk7RUFDSSxlQUFBO0VBQ0EseUJFakZBO0VGa0ZBLFlBQUE7RUFFQSxnR0FBQTtFQUVBLHdGQUFBO0FDZlIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9hZG1pbi1zZWxlY3Rpb24vYWRtaW4tc2VsZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5cbi5ibG9jLWVsZW1lbnQge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmctdG9wOiAxNXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuXG4gICAgLmVsZW1lbnQge1xuICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ibG9jLXRleHQuaGFzLWxvZ28ge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ibG9jLXRleHQge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgLm5hbWUuaGFzLW5vLWxvZ28sXG4gICAgICAgICAgICAuc3ViVGV4dC5oYXMtbm8tbG9nbyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpOyAvKiBCbGFjayBiYWNrZ3JvdW5kIHdpdGggMC41IG9wYWNpdHkgKi9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJvdHRvbS1ib3JkZXIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgdGhpbjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubmFtZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogc29saWQgdGhpbjtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc3ViVGV4dCB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHRoaW47XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5lbGVtZW50OmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XG4gICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAzMDBtcyBsaW5lYXI7XG4gICAgICAgIC1tcy10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGxpbmVhcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAzMDBtcyBsaW5lYXI7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBsaW5lYXI7XG4gICAgICAgICAgICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBsaW5lYXI7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIGxpbmVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ibG9jLXRleHQge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBsaW5lYXI7XG4gICAgICAgICAgICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBsaW5lYXI7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIGxpbmVhcjtcblxuICAgICAgICAgICAgLm5hbWUsXG4gICAgICAgICAgICAuc3ViVGV4dCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQgMzAwbXMgbGluZWFyO1xuICAgICAgICAgICAgICAgIC1tcy10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDMwMG1zIGxpbmVhcjtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDMwMG1zIGxpbmVhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5lbGVtZW50LWFkZCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgd2lkdGg6IDIwMHB4O1xuICAgICAgICBmb250LXNpemU6IDIwMHB4O1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkZXJyb3I7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICRlcnJvcjtcbiAgICB9XG5cbiAgICAuZWxlbWVudC1hZGQ6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlcnJvcjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuXG4gICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDMwMG1zIGxpbmVhciwgYmFja2dyb3VuZC1jb2xvciAzMDBtcyBsaW5lYXIsIGNvbG9yIDMwMG1zIGxpbmVhcjtcbiAgICAgICAgLW1zLXRyYW5zaXRpb246IGJvcmRlci1jb2xvciAzMDBtcyBsaW5lYXIsIGJhY2tncm91bmQtY29sb3IgMzAwbXMgbGluZWFyLCBjb2xvciAzMDBtcyBsaW5lYXI7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAzMDBtcyBsaW5lYXIsIGJhY2tncm91bmQtY29sb3IgMzAwbXMgbGluZWFyLCBjb2xvciAzMDBtcyBsaW5lYXI7XG4gICAgfVxufVxuIiwiLmJsb2MtZWxlbWVudCB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmctdG9wOiAxNXB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbn1cbi5ibG9jLWVsZW1lbnQgLmVsZW1lbnQge1xuICB3aWR0aDogMjAwcHg7XG4gIGhlaWdodDogMjAwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uYmxvYy1lbGVtZW50IC5lbGVtZW50IGltZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgd2lkdGg6IDIwMHB4O1xuICBvcGFjaXR5OiAwLjg7XG59XG4uYmxvYy1lbGVtZW50IC5lbGVtZW50IC5ibG9jLXRleHQuaGFzLWxvZ28ge1xuICBvcGFjaXR5OiAwO1xufVxuLmJsb2MtZWxlbWVudCAuZWxlbWVudCAuYmxvYy10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBoZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMjAwcHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5ibG9jLWVsZW1lbnQgLmVsZW1lbnQgLmJsb2MtdGV4dCAubmFtZS5oYXMtbm8tbG9nbyxcbi5ibG9jLWVsZW1lbnQgLmVsZW1lbnQgLmJsb2MtdGV4dCAuc3ViVGV4dC5oYXMtbm8tbG9nbyB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgLyogQmxhY2sgYmFja2dyb3VuZCB3aXRoIDAuNSBvcGFjaXR5ICovXG59XG4uYmxvYy1lbGVtZW50IC5lbGVtZW50IC5ibG9jLXRleHQgLmJvdHRvbS1ib3JkZXIge1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xuICBib3JkZXItYm90dG9tOiBzb2xpZCB0aGluO1xuICBwYWRkaW5nLWJvdHRvbTogNXB4O1xufVxuLmJsb2MtZWxlbWVudCAuZWxlbWVudCAuYmxvYy10ZXh0IC5uYW1lIHtcbiAgYm9yZGVyLXRvcDogc29saWQgdGhpbjtcbiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgcGFkZGluZy10b3A6IDVweDtcbn1cbi5ibG9jLWVsZW1lbnQgLmVsZW1lbnQgLmJsb2MtdGV4dCAuc3ViVGV4dCB7XG4gIGZvbnQtd2VpZ2h0OiB0aGluO1xuICBmb250LXNpemU6IDEycHg7XG59XG4uYmxvYy1lbGVtZW50IC5lbGVtZW50OmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMzAwbXMgbGluZWFyO1xuICAtbXMtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAzMDBtcyBsaW5lYXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMzAwbXMgbGluZWFyO1xufVxuLmJsb2MtZWxlbWVudCAuZWxlbWVudDpob3ZlciBpbWcge1xuICBvcGFjaXR5OiAwLjI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBsaW5lYXI7XG4gIC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIGxpbmVhcjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBsaW5lYXI7XG59XG4uYmxvYy1lbGVtZW50IC5lbGVtZW50OmhvdmVyIC5ibG9jLXRleHQge1xuICBvcGFjaXR5OiAxO1xuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMzAwbXMgbGluZWFyO1xuICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBsaW5lYXI7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMzAwbXMgbGluZWFyO1xufVxuLmJsb2MtZWxlbWVudCAuZWxlbWVudDpob3ZlciAuYmxvYy10ZXh0IC5uYW1lLFxuLmJsb2MtZWxlbWVudCAuZWxlbWVudDpob3ZlciAuYmxvYy10ZXh0IC5zdWJUZXh0IHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDMwMG1zIGxpbmVhcjtcbiAgLW1zLXRyYW5zaXRpb246IGJhY2tncm91bmQgMzAwbXMgbGluZWFyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDMwMG1zIGxpbmVhcjtcbn1cbi5ibG9jLWVsZW1lbnQgLmVsZW1lbnQtYWRkIHtcbiAgbGluZS1oZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMjAwcHg7XG4gIGZvbnQtc2l6ZTogMjAwcHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNkYjRiNDc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICNkYjRiNDc7XG59XG4uYmxvYy1lbGVtZW50IC5lbGVtZW50LWFkZDpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgY29sb3I6IHdoaXRlO1xuICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlci1jb2xvciAzMDBtcyBsaW5lYXIsIGJhY2tncm91bmQtY29sb3IgMzAwbXMgbGluZWFyLCBjb2xvciAzMDBtcyBsaW5lYXI7XG4gIC1tcy10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMzAwbXMgbGluZWFyLCBiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGxpbmVhciwgY29sb3IgMzAwbXMgbGluZWFyO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMzAwbXMgbGluZWFyLCBiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGxpbmVhciwgY29sb3IgMzAwbXMgbGluZWFyO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { UserTypes } from '../../../constants/user-types-list.constants';\n\n// subtext to display in each tile under the title: label followed by the element.property\ninterface SubText {\n label: string;\n property: string;\n}\n\n/**\n * Only Companies, but we keep a generic name\n */\ninterface ElementAdmin {\n _id: string;\n logo: {\n _id?: string;\n url: string;\n } | null;\n}\n\n@Component({\n selector: 'ga-admin-selection',\n templateUrl: './admin-selection.component.html',\n styleUrls: ['./admin-selection.component.scss'],\n providers: [],\n})\nexport class AdminSelectionComponent implements OnInit {\n @Input() elementList: ElementAdmin[] = [];\n @Input() subTexts: SubText[] = [];\n @Input() redirection = '';\n @Input() userSession: any = null;\n\n defaultPictures = {\n entreprise:\n 'https://maps.googleapis.com/maps/api/streetview?size=650x725&location=74%20' +\n 'Rue%20du%20Révérend%20Père%20Christian%20Gilbert%2092600%20Asnières-sur-Seine&key=AIzaSyBhzQGzbrFE_V0Lot8-DicgBnxhglT0Jko',\n utilisateur: 'assets/img/backgrounds/default-avatar.jpg',\n };\n\n userFilter = '';\n\n ngOnInit() {}\n\n /**\n * Get company link\n * @param {string} action\n * @param {ElementAdmin} element\n * @returns {string} url to redirect to\n */\n getPageLink(action: string, element: ElementAdmin = null): string {\n switch (action) {\n case 'create':\n return `/admin/${this.redirection}s/creer`;\n case 'edit':\n return `/admin/${this.redirection}/${element._id}/profil`;\n }\n }\n\n hasLogo(element: ElementAdmin): string {\n // POL-206 disable pictures in view page due to perf issues\n return ' has-no-logo';\n return element.logo && element.logo.url ? ' has-logo' : ' has-no-logo';\n }\n\n getLogo(element: ElementAdmin): string {\n // POL-206 disable pictures in view page due to perf issues\n return this.defaultPictures[this.redirection];\n return element.logo && element.logo.url ? element.logo.url : this.defaultPictures[this.redirection];\n }\n\n hasSubTexts() {\n return this.subTexts.length ? '' : ' bottom-border';\n }\n\n // admin, EM, and useradmin can create new users\n // admin and EM can create new companies\n canCreateNewItem() {\n if (this.redirection === 'utilisateur') {\n return [UserTypes.ENERGY_MANAGER, UserTypes.ADMIN, UserTypes.USER_ADMIN].includes(this.userSession.type);\n } else if (this.redirection === 'entreprise') {\n return [UserTypes.ENERGY_MANAGER, UserTypes.ADMIN].includes(this.userSession.type);\n }\n }\n\n get placeHolder() {\n if (this.redirection === 'utilisateur') {\n return 'Rechercher par nom, prénom';\n } else if (this.redirection === 'entreprise') {\n return 'Rechercher par nom, adresse';\n }\n }\n}\n","export default \".search-input {\\n border: none;\\n padding: 0.85em 0.7em;\\n font-size: 14px;\\n margin: 0.7em 0;\\n -webkit-transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);\\n transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);\\n}\\n.search-input:active, .search-input:focus {\\n background-color: white;\\n}\\n.search-input:hover, .search-input:active, .search-input:focus {\\n box-shadow: 0 14px 26px -12px rgba(255, 255, 255, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(255, 255, 255, 0.2);\\n}\\n.table {\\n width: 100%;\\n background-color: white;\\n font-size: 0.875rem;\\n color: #607188;\\n margin: 1em 0 0 0;\\n text-align: center;\\n}\\n.table td {\\n vertical-align: middle;\\n}\\n.table .table__column-checkbox {\\n padding-left: 1.75em;\\n width: 4.5em;\\n}\\n.table .table__column-checkbox input {\\n vertical-align: middle;\\n}\\n.table thead .table__header-download {\\n background-color: whitesmoke;\\n}\\n.table thead .table__header-download .trash-icon {\\n vertical-align: middle;\\n font-size: 1.2em;\\n}\\n.table tbody .table__row:hover {\\n background-color: whitesmoke;\\n}\\n.table tbody .table__column-picture img {\\n border-radius: 50%;\\n width: 2em;\\n height: 2em;\\n}\\n.table tbody .table__column-picture i {\\n font-size: 1.2em;\\n}\\n.table tbody .table_column_clickable a {\\n display: block;\\n}\\n.table tbody .table_column_clickable a:hover, .table tbody .table_column_clickable a:link, .table tbody .table_column_clickable a:visited, .table tbody .table_column_clickable a:active {\\n color: #607188;\\n cursor: default;\\n}\\n.table tbody .table__column-checkbox {\\n padding-left: 1.75em;\\n width: 4.5em;\\n}\\n.table tbody .table__column-reset {\\n width: 5em;\\n padding-right: 1.75em;\\n}\\n.table tbody .table__column-reset-mail-icon {\\n mask-image: url(\\\"/assets/img/pictos-svg/resend-mail.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/resend-mail.svg\\\");\\n mask-repeat: no-repeat;\\n -webkit-mask-repeat: no-repeat;\\n mask-size: contain;\\n -webkit-mask-size: contain;\\n background-color: #607188;\\n cursor: pointer;\\n height: 1.4em;\\n width: 1.4em;\\n}\\n.table tbody .table__column-spin {\\n -webkit-animation: fa-spin 3s infinite linear;\\n animation: fa-spin 3s infinite linear;\\n animation-direction: reverse;\\n}\\n.table tbody .table__column-companies-info-icon {\\n font-size: 1rem;\\n float: left;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2FkbWluLXVzZXJzLWxpc3QvYWRtaW4tdXNlcnMtbGlzdC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vYWRtaW4tdXNlcnMtbGlzdC9hZG1pbi11c2Vycy1saXN0LmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxZQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQVdBLGtIQUFBO0VBQUEsMEdBQUE7QUNaSjtBREVJO0VBRUksdUJBQUE7QUNEUjtBREdJO0VBR0kscUlBQUE7QUNIUjtBRFNBO0VBQ0ksV0FBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxjRUNTO0VGQVQsaUJBQUE7RUFDQSxrQkFBQTtBQ05KO0FEUUk7RUFDSSxzQkFBQTtBQ05SO0FEU0k7RUFDSSxvQkFBQTtFQUNBLFlBQUE7QUNQUjtBRFNRO0VBQ0ksc0JBQUE7QUNQWjtBRFlRO0VBQ0ksNEJBQUE7QUNWWjtBRFlZO0VBQ0ksc0JBQUE7RUFDQSxnQkFBQTtBQ1ZoQjtBRGdCUTtFQUNJLDRCQUFBO0FDZFo7QURrQlk7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBO0FDaEJoQjtBRG1CWTtFQUNJLGdCQUFBO0FDakJoQjtBRHNCWTtFQUNJLGNBQUE7QUNwQmhCO0FEc0JnQjtFQUlJLGNFcERQO0VGcURPLGVBQUE7QUN2QnBCO0FENEJRO0VBQ0ksb0JBQUE7RUFDQSxZQUFBO0FDMUJaO0FENEJRO0VBQ0ksVUFBQTtFQUNBLHFCQUFBO0FDMUJaO0FENkJRO0VHN0RKLHlESDhEUTtFRzdEUixpRUg2RFE7RUd6RFIsc0JIMERRO0VHekRSLDhCSHlEUTtFR3BFUixrQkhxRTJCO0VHcEUzQiwwQkhvRTJCO0VBQ25CLHlCRXZFQztFRndFRCxlQUFBO0VBQ0EsYUFBQTtFQUNBLFlBQUE7QUN4Qlo7QUQyQlE7RUFDSSw2Q0FBQTtVQUFBLHFDQUFBO0VBQ0EsNEJBQUE7QUN6Qlo7QUQ0QlE7RUFDSSxlQUFBO0VBQ0EsV0FBQTtBQzFCWiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2FkbWluLXVzZXJzLWxpc3QvYWRtaW4tdXNlcnMtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuXG4uc2VhcmNoLWlucHV0IHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMC44NWVtIDAuN2VtO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBtYXJnaW46IDAuN2VtIDA7XG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiAwIDE0cHggMjZweCAtMTJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpLCAwIDRweCAyM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpLFxuICAgICAgICAgICAgMCA4cHggMTBweCAtNXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICB9XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cblxuLnRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICBtYXJnaW46IDFlbSAwIDAgMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICB0ZCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgLnRhYmxlX19jb2x1bW4tY2hlY2tib3gge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNzVlbTtcbiAgICAgICAgd2lkdGg6IDQuNWVtO1xuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGVhZCB7XG4gICAgICAgIC50YWJsZV9faGVhZGVyLWRvd25sb2FkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XG5cbiAgICAgICAgICAgIC50cmFzaC1pY29uIHtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0Ym9keSB7XG4gICAgICAgIC50YWJsZV9fcm93OmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XG4gICAgICAgIH1cblxuICAgICAgICAudGFibGVfX2NvbHVtbi1waWN0dXJlIHtcbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAudGFibGVfY29sdW1uX2NsaWNrYWJsZSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgJjpsaW5rLFxuICAgICAgICAgICAgICAgICY6dmlzaXRlZCxcbiAgICAgICAgICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJsZV9fY29sdW1uLWNoZWNrYm94IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMS43NWVtO1xuICAgICAgICAgICAgd2lkdGg6IDQuNWVtO1xuICAgICAgICB9XG4gICAgICAgIC50YWJsZV9fY29sdW1uLXJlc2V0IHtcbiAgICAgICAgICAgIHdpZHRoOiA1ZW07XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjc1ZW07XG4gICAgICAgIH1cblxuICAgICAgICAudGFibGVfX2NvbHVtbi1yZXNldC1tYWlsLWljb24ge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcmVzZW5kLW1haWwuc3ZnJykpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1yZXBlYXQobm8tcmVwZWF0KTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hc2stc2l6ZShjb250YWluKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgaGVpZ2h0OiAxLjRlbTtcbiAgICAgICAgICAgIHdpZHRoOiAxLjRlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJsZV9fY29sdW1uLXNwaW4ge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBmYS1zcGluIDNzIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IHJldmVyc2U7XG4gICAgICAgIH1cblxuICAgICAgICAudGFibGVfX2NvbHVtbi1jb21wYW5pZXMtaW5mby1pY29uIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnNlYXJjaC1pbnB1dCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMC44NWVtIDAuN2VtO1xuICBmb250LXNpemU6IDE0cHg7XG4gIG1hcmdpbjogMC43ZW0gMDtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cbi5zZWFyY2gtaW5wdXQ6YWN0aXZlLCAuc2VhcmNoLWlucHV0OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uc2VhcmNoLWlucHV0OmhvdmVyLCAuc2VhcmNoLWlucHV0OmFjdGl2ZSwgLnNlYXJjaC1pbnB1dDpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyNnB4IC0xMnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MiksIDAgNHB4IDIzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgOHB4IDEwcHggLTVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59XG5cbi50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICM2MDcxODg7XG4gIG1hcmdpbjogMWVtIDAgMCAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4udGFibGUgdGQge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLnRhYmxlIC50YWJsZV9fY29sdW1uLWNoZWNrYm94IHtcbiAgcGFkZGluZy1sZWZ0OiAxLjc1ZW07XG4gIHdpZHRoOiA0LjVlbTtcbn1cbi50YWJsZSAudGFibGVfX2NvbHVtbi1jaGVja2JveCBpbnB1dCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4udGFibGUgdGhlYWQgLnRhYmxlX19oZWFkZXItZG93bmxvYWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlO1xufVxuLnRhYmxlIHRoZWFkIC50YWJsZV9faGVhZGVyLWRvd25sb2FkIC50cmFzaC1pY29uIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1zaXplOiAxLjJlbTtcbn1cbi50YWJsZSB0Ym9keSAudGFibGVfX3Jvdzpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XG59XG4udGFibGUgdGJvZHkgLnRhYmxlX19jb2x1bW4tcGljdHVyZSBpbWcge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiAyZW07XG4gIGhlaWdodDogMmVtO1xufVxuLnRhYmxlIHRib2R5IC50YWJsZV9fY29sdW1uLXBpY3R1cmUgaSB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG4udGFibGUgdGJvZHkgLnRhYmxlX2NvbHVtbl9jbGlja2FibGUgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnRhYmxlIHRib2R5IC50YWJsZV9jb2x1bW5fY2xpY2thYmxlIGE6aG92ZXIsIC50YWJsZSB0Ym9keSAudGFibGVfY29sdW1uX2NsaWNrYWJsZSBhOmxpbmssIC50YWJsZSB0Ym9keSAudGFibGVfY29sdW1uX2NsaWNrYWJsZSBhOnZpc2l0ZWQsIC50YWJsZSB0Ym9keSAudGFibGVfY29sdW1uX2NsaWNrYWJsZSBhOmFjdGl2ZSB7XG4gIGNvbG9yOiAjNjA3MTg4O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4udGFibGUgdGJvZHkgLnRhYmxlX19jb2x1bW4tY2hlY2tib3gge1xuICBwYWRkaW5nLWxlZnQ6IDEuNzVlbTtcbiAgd2lkdGg6IDQuNWVtO1xufVxuLnRhYmxlIHRib2R5IC50YWJsZV9fY29sdW1uLXJlc2V0IHtcbiAgd2lkdGg6IDVlbTtcbiAgcGFkZGluZy1yaWdodDogMS43NWVtO1xufVxuLnRhYmxlIHRib2R5IC50YWJsZV9fY29sdW1uLXJlc2V0LW1haWwtaWNvbiB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcmVzZW5kLW1haWwuc3ZnXCIpO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcmVzZW5kLW1haWwuc3ZnXCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgLXdlYmtpdC1tYXNrLXNpemU6IGNvbnRhaW47XG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDcxODg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgaGVpZ2h0OiAxLjRlbTtcbiAgd2lkdGg6IDEuNGVtO1xufVxuLnRhYmxlIHRib2R5IC50YWJsZV9fY29sdW1uLXNwaW4ge1xuICBhbmltYXRpb246IGZhLXNwaW4gM3MgaW5maW5pdGUgbGluZWFyO1xuICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlO1xufVxuLnRhYmxlIHRib2R5IC50YWJsZV9fY29sdW1uLWNvbXBhbmllcy1pbmZvLWljb24ge1xuICBmb250LXNpemU6IDFyZW07XG4gIGZsb2F0OiBsZWZ0O1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { debounceTime } from 'rxjs/operators';\n\nimport Swal from 'sweetalert2';\n\nimport { UserPopulated } from 'app/shared/models/users.interface';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { TextService } from 'app/shared/services/utils/text.service';\nimport { UserTypes } from '../../../constants/user-types-list.constants';\n@Component({\n selector: 'ga-admin-users-list',\n templateUrl: './admin-users-list.component.html',\n styleUrls: ['./admin-users-list.component.scss'],\n})\nexport class AdminUsersListComponent implements OnInit {\n private _usersList: UserPopulated[] = [];\n @Input()\n set usersList(list) {\n // Select or deselect all users according to the value of the checkbox \"all\"\n if (this.userSession && list) {\n this._usersList = list;\n }\n }\n\n get usersList() {\n return this._usersList;\n }\n\n private usersSelectedList: UserPopulated[] = [];\n\n @Input() userSession: any = null;\n @Input() redirection: string = null;\n @Input() isLoading = true;\n\n /** Default profile picture if user has no donwloaded picture */\n private defaultPictureUrl = 'assets/img/backgrounds/default-avatar.jpg';\n\n /** ID of the user for which the password is being reset */\n private resetUserId: string = null;\n\n /** SweetAlert options */\n private resetSwalOptions: any = {\n type: 'warning',\n showCancelButton: true,\n confirmButtonText: \"Oui, envoyer l'email\",\n cancelButtonText: 'Annuler',\n };\n\n private userHovered: UserPopulated = null;\n\n @Output() searchInputChanged = new EventEmitter();\n public searchControl = new FormControl(); // needed to add a debounce time\n\n constructor(private usersService: UsersService, private textService: TextService) {}\n\n ngOnInit(): void {\n this.searchControl.valueChanges.pipe(debounceTime(300)).subscribe({ next: newSearch => this.search() });\n this.searchControl.setValue('');\n }\n\n /**\n * Text for table rows\n * @param {boolean} isActive\n * @returns {string}\n */\n getStatusText(isActive: boolean): string {\n return isActive ? 'Actif' : 'Inactif';\n }\n\n /**\n * @param {string} firstname\n * @param {string} name\n * @returns {string}\n */\n getUserName(firstname: string, name: string): string {\n return name.toUpperCase() + ' ' + this.textService.toTitleCase(firstname);\n }\n\n /**\n * @param {UserPopulated} user\n * @returns {string}\n */\n getCompaniesText(user: UserPopulated): string {\n return !user.companies || !user.companies.length\n ? ''\n : this.hasMultipleCompanies(user)\n ? 'Multiple'\n : user.companies[0];\n }\n\n /**\n * Get the right text for the tooltip whether the user is active or not\n * @param {UserPopulated} user\n * @returns {string}\n */\n getTooltipText(user: UserPopulated): string {\n return user.active ? 'send_forgot_password_mail' : 'send_activate_mail';\n }\n\n /**\n * @param {UserPopulated} user\n * @returns {boolean}\n */\n hasMultipleCompanies(user: UserPopulated): boolean {\n return user.companies && user.companies.length > 1;\n }\n\n /**\n * @param {UserPopulated} user\n * @returns {string}\n */\n getPicture(user: UserPopulated): string {\n return user.logoUrl || this.defaultPictureUrl;\n }\n\n /**\n * Selection of the user\n * @param {string} userId\n * @returns {string}\n */\n getUserProfileLink(userId: string): string {\n return '/admin/utilisateur/' + userId + '/profil';\n }\n\n /**\n * @param {UserPopulated} user\n * @returns {void}\n */\n hoverUser(user: UserPopulated): void {\n this.userHovered = user;\n }\n\n /**\n * Returns appropriate placeholder depending on the redirection (`utilisateur` or `entreprise`)\n */\n get placeHolder() {\n if (this.redirection === 'utilisateur') {\n return 'Rechercher par prénom, nom, poste, e-mail, téléphone';\n } else if (this.redirection === 'entreprise') {\n return 'Rechercher par Nom, Adresse';\n }\n }\n\n /**\n * Reset password action\n * @param {UserPopulated} user\n * @returns {void}\n * */\n resetAction(user: UserPopulated): void {\n this.setSwalOptions(user);\n Swal.fire(this.resetSwalOptions).then(result => {\n if (result.value) {\n this.resetUserId = user._id;\n this.sendMail(user);\n }\n });\n }\n\n /**\n * Set SWAL options whether the user is active or not\n * @param {UserPopulated} user\n */\n setSwalOptions(user: UserPopulated) {\n if (user.active) {\n this.resetSwalOptions.title = 'Réinitialiser le mot de passe';\n this.resetSwalOptions.text =\n \"Vous êtes sur le point d'envoyer un email de réinitialisation du mot de passe, êtes-vous certain(e) de vouloir effectuer cette action ?\";\n } else {\n this.resetSwalOptions.title = 'Activation du compte';\n this.resetSwalOptions.text =\n \"Vous êtes sur le point d'envoyer un email d'activation de compte, êtes-vous certain(e) de vouloir effectuer cette action ?\";\n }\n }\n\n /**\n * Send activation mail or forgot password mail depend on the user status\n * @param {UserPopulated} user\n * @returns {Promise}\n */\n async sendMail(user: UserPopulated): Promise {\n try {\n if (!user.active) {\n await this.usersService.sendEmailActivation(user);\n } else {\n const email = user.contact.mail;\n await this.usersService.forgotPassword(email);\n }\n this.resetUserId = null;\n } catch (err) {\n this.resetUserId = null;\n this.sweetAlert(err.errorCode);\n }\n }\n\n /**\n * Display the icon only if the user is hovered + no user is currently selected.\n * Display the icon if mail is being sent to that user. Spin the icon when its being sent.\n * @param {UserPopulated} user\n * @return {string} classes\n */\n getResetIconClasses(user: UserPopulated): string {\n let classes = '';\n\n // Display if a mail is being sent to that user\n if (user._id === this.resetUserId) {\n classes += 'display table__column-spin';\n } else if (\n this.userHovered &&\n user._id === this.userHovered._id &&\n !this.hasUserSelected() &&\n this.canEdit(user)\n ) {\n // display only if it's hovered && no users are being selected && user has the right to do so\n classes += 'display ';\n } else {\n classes += 'display-none ';\n }\n\n return classes;\n }\n\n /**\n * Add the user to the selected users list if he's not there. Remove him from it otherwise.\n * @param {UserPopulated} user\n * @returns {void}\n */\n switchUserSelection(user: UserPopulated): void {\n const indexAlreadySelected = this.usersSelectedList.findIndex(u => u._id.toString() === user._id.toString());\n // if user was selected --> unselect him\n if (indexAlreadySelected !== -1) {\n this.usersSelectedList.splice(indexAlreadySelected, 1);\n } else {\n this.usersSelectedList.push(user);\n }\n }\n\n /**\n * Add to the selected users list all the users currently displayed in the table\n * (if there are not already in the list & if the user has the right to do so)\n * @returns {void}\n */\n selectAllUsers(): void {\n this.usersList.forEach(user => {\n if (this.canRemove(user) && !this.isAlreadySelected(user._id)) {\n this.usersSelectedList.push(user);\n }\n });\n }\n\n /**\n * Remove from the selected users all the users currently displayed in the list\n * @returns {void}\n */\n deselectAllUsers(): void {\n this.usersList.forEach(user => {\n if (this.canRemove(user) && this.isAlreadySelected(user._id)) {\n const indexAlreadySelected = this.usersSelectedList.findIndex(\n u => u._id.toString() === user._id.toString()\n );\n this.usersSelectedList.splice(indexAlreadySelected, 1);\n }\n });\n }\n\n /**\n * Returns true if the user's id sent is already in the selected users list.\n * @param userIdToCompare\n * @returns {boolean}\n */\n isAlreadySelected(userIdToCompare): boolean {\n return this.usersSelectedList.some(u => u._id.toString() === userIdToCompare.toString());\n }\n\n /**\n * Returns true if all the users (which can be selected) are selected.\n * @return {boolean}\n */\n isEveryoneSelected(): boolean {\n return Boolean(\n this.usersList.length &&\n this.usersList.every(user => this.isAlreadySelected(user._id) || !this.canRemove(user))\n );\n }\n\n /**\n * Called when the selectbox \"all\" is checked or not\n * @returns {void}\n */\n onClickSelectAll() {\n if (!this.isEveryoneSelected()) {\n this.selectAllUsers();\n } else {\n this.deselectAllUsers();\n }\n }\n\n /**\n * Returns true if at least one user is selected\n * @returns {boolean}\n */\n hasUserSelected() {\n return this.usersSelectedList && this.usersSelectedList.length;\n }\n\n /**\n * Returns the number of users selected\n * @returns {string}\n */\n displayNbUsersSelected(): string {\n if (this.hasUserSelected()) {\n const count = this.usersSelectedList.length;\n return count.toString() + (count > 1 ? ' utilisateurs sélectionnés' : ' utilisateur sélectionné');\n }\n }\n\n /**\n * Delete all the users selected\n * @returns {void}\n */\n deleteUsers(): void {\n if (this.usersSelectedList && this.usersSelectedList.length) {\n Swal.fire({\n title: 'Êtes-vous sûr(e) ?',\n text: `Supprimer un utilisateur est une action irréversible.`,\n icon: 'warning',\n showCancelButton: true,\n }).then(result => {\n if (result.value) {\n // delete all the users selected & refresh the list\n this.usersService\n .deleteUsers(this.usersSelectedList.map(u => u._id))\n .then(res => {\n if (res && res.code === 200) {\n this.sweetAlert('users_deleted');\n\n this.updateSelectedListAfterRemove(res.data);\n } else {\n this.sweetAlert('error_delete_users');\n }\n this.search();\n })\n .catch(err => {\n // err.errorCode is set to error_delete_users\n this.sweetAlert(err.errorCode);\n // err.message = [{id: string, success: true/false}] --> true if was successfully removed, false if something wrong happened\n // keep all the users that weren't deleted\n this.search();\n });\n }\n });\n }\n }\n\n /**\n * Called once the DELETE function has returned.\n * Update the list of the selected users according to the results.\n * For each user id, a boolean \"success\" indicates if the removing was successful\n * @param Array<{string} _id, {boolean} success }> results\n * @returns {void}\n */\n updateSelectedListAfterRemove(results: [{ _id: string; success: boolean }]): void {\n results.forEach(userRemoved => {\n if (userRemoved.success) {\n const indexAlreadySelected = this.usersSelectedList.findIndex(\n u => u._id.toString() === userRemoved._id.toString()\n );\n this.usersSelectedList.splice(indexAlreadySelected, 1);\n }\n });\n }\n\n /**\n * Emit search from the input research field\n * @returns {void}\n */\n search(): void {\n if (!this.isLoading) {\n this.searchInputChanged.emit(this.searchControl.value);\n }\n }\n\n /**\n * @returns {boolean}\n */\n canRemoveAtLeastOne(): boolean {\n return this.usersList.some(user => this.canRemove(user));\n }\n\n /**\n * @param {user} user\n * @returns {boolean}\n */\n canRemove(user: UserPopulated): boolean {\n return this.canEdit(user) && this.userSession._id !== user._id;\n }\n\n /**\n * Set the rules to accept or not the editing action: reset pwd & delete\n * if it's the line of the user logged in -> can edit\n * if user = admin -> can edit\n * if user = energy manager -> can edit if he is one of his clients\n * if user = useradmin -> can edit if he is one of his standard users\n * if user = standard user -> can not edit\n * @param {UserPopulated} user\n * @return {boolean}\n */\n canEdit(user: UserPopulated): boolean {\n // if it's the line of the user logged in -> can edit\n if (this.userSession._id === user._id) {\n return true;\n } else if (this.userSession.type === UserTypes.ADMIN) {\n // if user = admin -> can edit\n return true;\n } else if (\n (this.userSession.type === UserTypes.ENERGY_MANAGER &&\n isRelated(user, this.userSession) &&\n [UserTypes.USER, UserTypes.USER_ADMIN].includes(user.type)) ||\n (this.userSession.type === UserTypes.USER_ADMIN && user.type === UserTypes.USER)\n ) {\n // if user = energy manager -> can edit if he is one of his clients\n // if user = useradmin -> can edit if he is one of his standard users\n return true;\n } else {\n return false;\n }\n\n function isRelated(userToCompare: UserPopulated, userSession: UserPopulated): boolean {\n // Companies are set after objects creation so they can be undefined\n if (!userToCompare.companies || !userSession.companies) {\n return false;\n }\n return userToCompare.companies.some(userCompany => userSession.companies.includes(userCompany));\n }\n }\n\n /**\n * Alerts for errors\n * @param {string} errorCode\n **/\n sweetAlert(errorCode: string) {\n const messages = {\n no_email_provided: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'envoi du mail de réinitialisation.\",\n 'error',\n ],\n user_not_found: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'envoi d'activation du compte.\",\n 'error',\n ],\n users_deleted: ['Supprimés', 'Tous les utilisateurs ont bien été supprimés', 'success'],\n error_delete_users: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la suppression des utilisateurs.',\n 'error',\n ],\n invalid_token: [\n 'Toutes nos excuses',\n \"Il semblerait que le token de validité de l'utilisateur soit invalide ou ait expiré.\",\n 'error',\n ],\n internal_error: [\n 'Toutes nos excuses',\n 'Une erreur est survenue. Veuillez réessayer ultérieurement.',\n 'error',\n ],\n };\n if (errorCode) {\n Swal.fire(messages[errorCode][0], messages[errorCode][1], messages[errorCode][2]);\n }\n }\n\n /**\n * @returns {string}\n */\n getIconCursorClass(): string {\n return this.hasUserSelected() ? 'cursor-pointer' : 'cursor-default';\n }\n\n /**\n * Check if the users list has data\n * @returns {boolean}\n */\n hasData(): boolean {\n return this.usersList.length > 0;\n }\n}\n","export default \".zone-container .tabs {\\n display: -webkit-box;\\n display: flex;\\n padding-top: 16px;\\n padding-bottom: 0;\\n padding-left: 16px;\\n padding-right: 16px;\\n border-bottom: 1px solid #d9d9d9;\\n}\\n.zone-container .tab {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n max-width: 170px;\\n padding: 10px;\\n border-top-right-radius: 4px;\\n border-top-left-radius: 4px;\\n border: 1px solid #d9d9d9;\\n border-left: none;\\n border-bottom: none;\\n cursor: pointer;\\n}\\n.zone-container .tab:first-child {\\n border-left: 1px solid #d9d9d9;\\n}\\n.zone-container .tab.tab-active {\\n background-color: #db4b47;\\n color: #fff;\\n}\\n.zone-container .tab-text {\\n font-size: 14px;\\n overflow: hidden;\\n max-height: 55px;\\n display: -webkit-box;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n line-height: 1.25;\\n text-overflow: ellipsis;\\n}\\n.zone-container .tab-container {\\n padding: 25px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvY29tcGFueS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9jb21wYW55LmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0NBQUE7QUNIUjtBRE1JO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsYUFBQTtFQUNBLDRCQUFBO0VBQ0EsMkJBQUE7RUFDQSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0FDSlI7QURNUTtFQUNJLDhCQUFBO0FDSlo7QURPUTtFQUNJLHlCRUxKO0VGTUksV0FBQTtBQ0xaO0FEU0k7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLG9CQUFBO0VBQ0EscUJBQUE7RUFDQSw0QkFBQTtFQUNBLGlCQUFBO0VBQ0EsdUJBQUE7QUNQUjtBRFVJO0VBQ0ksYUFBQTtBQ1JSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9jb21wYW55LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLnpvbmUtY29udGFpbmVyIHtcbiAgICAudGFicyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgfVxuXG4gICAgLnRhYiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1heC13aWR0aDogMTcwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRib3JkZXJncmV5O1xuICAgICAgICB9XG5cbiAgICAgICAgJi50YWItYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhZG1pbjtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRhYi10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtaGVpZ2h0OiA1NXB4O1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgLnRhYi1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAyNXB4O1xuICAgIH1cbn1cbiIsIi56b25lLWNvbnRhaW5lciAudGFicyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctdG9wOiAxNnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbn1cbi56b25lLWNvbnRhaW5lciAudGFiIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiAxNzBweDtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICBib3JkZXItbGVmdDogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnpvbmUtY29udGFpbmVyIC50YWI6Zmlyc3QtY2hpbGQge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkOWQ5ZDk7XG59XG4uem9uZS1jb250YWluZXIgLnRhYi50YWItYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgY29sb3I6ICNmZmY7XG59XG4uem9uZS1jb250YWluZXIgLnRhYi10ZXh0IHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtaGVpZ2h0OiA1NXB4O1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG4uem9uZS1jb250YWluZXIgLnRhYi1jb250YWluZXIge1xuICBwYWRkaW5nOiAyNXB4O1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Location } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CompanyService } from 'app/shared/components/admin/company/company.service';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { AdminTab } from 'app/shared/models/admin-tab.interface';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-company-table',\n templateUrl: './company.component.html',\n styleUrls: ['./company.component.scss'],\n providers: [CompanyService],\n})\nexport class CompanyComponent implements OnInit {\n @Input() _company: any = null;\n set company(value) {\n this._company = value;\n this.handleBranchesTab();\n }\n get company() {\n return this._company;\n }\n\n @Input() selectedTab: AdminTab = null;\n @Input() tabs: AdminTab[] = [];\n\n isLoading = true;\n user: any = null;\n\n // for tabs \"Utilisateurs\" \"Energy-Mangers\" and \"Energy-Viewers\": rights available in the table\n tableProperties = {\n users: {\n companyRole: 'users',\n rightsAvailable: [{ name: 'Lecture', value: 1 }, { name: 'Ecriture', value: 2 }],\n },\n energyManagers: {\n companyRole: 'users',\n rightsAvailable: [{ name: 'Lecture', value: 1 }, { name: 'Ecriture', value: 2 }],\n },\n energyViewers: { companyRole: 'viewers', rightsAvailable: [{ name: 'Lecture', value: 1 }] },\n };\n\n get UserTypes() {\n return UserTypes;\n }\n\n isDeleting = false;\n @Output() deletingChange: EventEmitter = new EventEmitter();\n\n constructor(\n private location: Location,\n private sessionService: SessionService,\n private usersService: UsersService,\n private router: Router\n ) {}\n\n ngOnInit() {\n this.initData();\n }\n\n async initData() {\n try {\n this.handleBranchesTab();\n this.selectTab(this.selectedTab);\n\n // load the session user info with his relations\n this.user = await this.usersService.getUserByIdWithRelationsAndContacts(this.sessionService.getUser()._id);\n this.isLoading = false;\n } catch (e) {\n // if contacts & users not loaded, go back to the list of companies\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant le chargement des contacts et utilisateurs de l'entreprise.\",\n 'error'\n );\n await this.router.navigateByUrl('/admin/entreprises');\n }\n }\n\n /**\n * Select the tab. Change URL displayed without relaoding the page.\n * @param {AdminTab} tab - tab to select\n */\n selectTab(tab: AdminTab) {\n const isTabSame = this.selectedTab && tab && this.selectedTab.key === tab.key;\n\n if (this.company && !this.isTabDisabled(tab.key) && !isTabSame) {\n // change the URL name as well but without reloading the page\n this.location.go('/admin/entreprise/' + this.company._id + '/' + tab.key);\n this.selectedTab = tab; // they might be different if selectTab is called by the page being refresh (Ctrl R)\n }\n }\n\n isTabActive(key: string) {\n return this.selectedTab.key === key;\n }\n\n getNameCapitalized(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n getTabClasses(key: string): string {\n let classes = '';\n classes += this.isTabActive(key) ? 'tab-active ' : '';\n classes += this.isTabDisabled(key) ? 'cursor-not-allowed' : '';\n return classes;\n }\n\n isTabDisabled(key: string): boolean {\n // if the new company hasn't been saved, allow only the company's profile tab\n if (!this.company && key !== 'profil') {\n return true;\n }\n // prestations isn't implemented yet\n if (key === 'prestations') {\n return true;\n }\n\n // tabs are not clickable during deletion.\n return this.isDeleting;\n }\n\n onSave(newCompany) {\n this.company = newCompany;\n }\n\n /**\n * Handle if the branches tab is displayed or not (update visibility).\n */\n handleBranchesTab() {\n const visibility = this.hasBranches() && this.isTabVisible('filiales');\n this.setTabVisibility('filiales', visibility);\n }\n\n /**\n * Returns true if the company has branches\n * @return {boolean}\n */\n hasBranches(): boolean {\n return this.company && this.company.branches && Boolean(this.company.branches.length);\n }\n\n setTabVisibility(key: string, visibility: boolean) {\n const tab = this.tabs.find(t => t.key === key);\n if (tab) {\n tab.visible = Boolean(visibility);\n }\n }\n\n /**\n * Returns whether the tab is visible or not\n * @param {string} key - key of the tab\n * @return {boolean}\n */\n isTabVisible(key: string): boolean {\n const tab = this.tabs.find(t => t.key === key);\n return tab ? tab.visible : false;\n }\n\n /**\n * Returns whether the tab is editable or not\n * @param {string} key - key of the tab\n * @return {boolean}\n */\n canEditTab(key: string): boolean {\n const tab = this.tabs.find(t => t.key === key);\n return tab ? tab.canEdit : false;\n }\n\n /**\n * Returns true if the user is ADMIN\n * @return {boolean}\n */\n isAdmin(): boolean {\n return this.usersService.isAdmin(this.user);\n }\n\n /**\n * Set deleting param and disable tabs other than profile if deleting\n * @param {boolean} isDeleting - is company being deleted\n */\n setDeleting(isDeleting: boolean) {\n this.isDeleting = isDeleting;\n this.deletingChange.emit(this.isDeleting);\n\n const profileTab = this.tabs.find(x => x.key === 'profil');\n if (profileTab) {\n this.selectTab(profileTab);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CompanyManager } from 'app/shared/models/company.interface';\nimport { User } from 'app/shared/models/users.interface';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { PageService } from 'app/shared/services/page/page.service';\n\n@Injectable()\nexport class CompanyService extends PageService {\n constructor(public apiService: ApiService) {\n super(apiService);\n this.fake = false;\n }\n\n /**\n * Get populated users and filtered by types\n *\n * @param {string[]} companyUsers - list of user id\n * @param {User[]} users - users to filter\n * @param {string[]?} filterTypes - user type filter\n * @returns {User[]}\n */\n getCompanyUsers(companyUsers: string[], users: User[], userTypes?: string[]): User[] {\n if (!Array.isArray(companyUsers)) {\n return [];\n }\n return users.filter(\n u =>\n companyUsers.includes(u._id) &&\n (!Array.isArray(userTypes) || !userTypes.length || userTypes.includes(u.type))\n );\n }\n\n /**\n * Get company Citron manager by manager type\n *\n * @param {{user: string, type: string}} managers - company managers\n * @param {CompanyManager[]} managerType - manager type filter\n * @returns {string} - id of the manager\n */\n getCompanyManager(managers: CompanyManager[], managerType: string[]): string {\n if (!Array.isArray(managerType) || !Array.isArray(managers) || !managers.length) {\n return null;\n }\n const manager = managers.find(m => managerType.includes(m.type));\n return manager ? manager.user : null;\n }\n}\n","export default \".contacts-container {\\n font-size: 14px;\\n}\\n.contacts-container .form-control {\\n font-size: 14px;\\n}\\n.add-icon {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n margin-left: 20px;\\n}\\n.delete-icon-fa {\\n font-size: 16px;\\n color: #db4b47;\\n}\\n.disabled {\\n pointer-events: none;\\n}\\n.selectbox {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n}\\n.citron-btn {\\n padding: 10px;\\n margin-top: 25px;\\n}\\n.section {\\n font-weight: 600;\\n margin-bottom: 25px;\\n}\\n.form {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n.form .margin-bottom {\\n margin-bottom: 15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvY29udGFjdHMvY29tcGFueS1jb250YWN0cy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9jb250YWN0cy9jb21wYW55LWNvbnRhY3RzLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxlQUFBO0FDRko7QURJSTtFQUNJLGVBQUE7QUNGUjtBRE1BO0VFVkksWUZXaUI7RUVWakIsV0ZVdUI7RUVUdkIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDaUJBO0VEYkEsK0RBQUE7VUFBQSx1REFBQTtFRkNKLGlCQUFBO0FDR0o7QURBQTtFQUNJLGVBQUE7RUFDQSxjR09JO0FGSlI7QURBQTtFQUNJLG9CQUFBO0FDR0o7QURBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDhCQUFBO0VBQUEsNkJBQUE7VUFBQSxtQkFBQTtBQ0dKO0FEQUE7RUFDSSxhQUFBO0VBQ0EsZ0JBQUE7QUNHSjtBREFBO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtBQ0dKO0FEQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7QUNHSjtBRERJO0VBQ0ksbUJBQUE7QUNHUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvY29udGFjdHMvY29tcGFueS1jb250YWN0cy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5cbi5jb250YWN0cy1jb250YWluZXIge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxufVxuXG4uYWRkLWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMzBweCwgMzBweCwgJGFkbWluLCAnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19hZGQuc3ZnJyk7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5kZWxldGUtaWNvbi1mYSB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGNvbG9yOiAkYWRtaW47XG59XG5cbi5kaXNhYmxlZCB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5zZWxlY3Rib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbn1cblxuLnNlY3Rpb24ge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC5tYXJnaW4tYm90dG9tIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICB9XG59XG4iLCIuY29udGFjdHMtY29udGFpbmVyIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLmNvbnRhY3RzLWNvbnRhaW5lciAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uYWRkLWljb24ge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19hZGQuc3ZnXCIpO1xuICBtYXJnaW4tbGVmdDogMjBweDtcbn1cblxuLmRlbGV0ZS1pY29uLWZhIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogI2RiNGI0Nztcbn1cblxuLmRpc2FibGVkIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5zZWxlY3Rib3gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIG1hcmdpbi10b3A6IDI1cHg7XG59XG5cbi5zZWN0aW9uIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmZvcm0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLmZvcm0gLm1hcmdpbi1ib3R0b20ge1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufSIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { TextService } from 'app/shared/services/utils/text.service';\nimport Swal from 'sweetalert2';\nimport { AdminCompanyService } from '../../../../../pages/admin/company/company.service';\nimport { ApiService } from '../../../../services/api/api.service';\n\n@Component({\n selector: 'ga-company-contacts-tab',\n templateUrl: './company-contacts.component.html',\n styleUrls: ['./company-contacts.component.scss'],\n providers: [],\n})\nexport class CompanyContactsComponent implements OnInit {\n @Input() company = null;\n @Input() canEdit = false;\n @Input() userSession: any;\n\n contactsListSelectBox = [];\n contactsOfCompany = [];\n contactSelected: any;\n formContact: any;\n isLoading = false;\n\n constructor(private companyService: AdminCompanyService, private textService: TextService) {}\n\n ngOnInit() {\n this.initData();\n }\n\n initData() {\n this.isLoading = true;\n this.initContactForm();\n this.initContactsLists();\n this.setContactsLists();\n }\n\n initContactsLists() {\n this.contactsListSelectBox = [];\n this.contactsOfCompany = [];\n this.contactSelected = null;\n }\n\n initContactForm() {\n this.formContact = {\n name: '',\n mail: '',\n position: '',\n phone: '',\n };\n }\n\n // get all the contacts from the DB and divide them in two lists: the contacts of the company and the others\n setContactsLists() {\n const contacts = this.userSession.contacts || [];\n\n this.contactsOfCompany = [];\n this.contactsListSelectBox = [];\n\n if (contacts.length) {\n // contactsListSelectBox & contactsOfCompany: push all the users belonging to the company\n this.contactsListSelectBox = contacts.filter(\n c => !this.company.contacts.find(contactId => c._id.toString() === contactId)\n );\n this.contactSelected = this.contactsListSelectBox[0];\n this.company.contacts.forEach(contactId =>\n this.contactsOfCompany.push(contacts.find(c => c._id === contactId))\n );\n\n // sort alphabetically\n this.contactsListSelectBox = this.contactsListSelectBox.sort(this.sortListAlphabetically);\n this.contactsOfCompany = this.contactsOfCompany.sort(this.sortListAlphabetically);\n }\n this.isLoading = false;\n }\n\n sortListAlphabetically(contactA, contactB) {\n const a = contactA.name.toUpperCase();\n const b = contactB.name.toUpperCase();\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n hasContacts() {\n return this.contactsOfCompany.length;\n }\n\n async addContact(action: string) {\n // contact selected from selectbox\n if (action === 'selectbox') {\n this.company.contacts.push(this.contactSelected._id);\n\n await this.updateCompany('contact_added');\n return;\n } else {\n // contact created in the form\n\n // check empty fields and unicity (name + mail)\n if (this.isContactValid()) {\n try {\n const contactSaved = await this.createContact();\n this.company.contacts.push(contactSaved._id);\n await this.updateCompany('contact_added');\n return;\n } catch (err) {\n // err.errorCode is set to error_createNewContact\n this.getSwalMsg(err.errorCode);\n }\n }\n }\n }\n\n deleteContactPermanently(contactToDelete) {\n this.companyService.deleteContactPermanently(contactToDelete).then(\n response => {\n if (!response.success) {\n this.initData();\n this.getSwalMsg('error_delete_permantently');\n } else {\n this.initData();\n this.getSwalMsg('contact_deleted');\n }\n },\n err => {\n this.initData();\n this.getSwalMsg('error_delete_permantently');\n }\n );\n }\n\n // check if the form is valid before saving\n isContactValid(): boolean {\n // the fields can't be empty\n if (this.hasEmptyFields()) {\n this.getSwalMsg('form_missing_field');\n return false;\n } else if (this.alreadyInList()) {\n // if we create a company, its name needs to be unique\n this.getSwalMsg('alreadyInList');\n return false;\n }\n\n return true;\n }\n\n // check if some fields are empty before saving\n hasEmptyFields() {\n return (\n !this.formContact.firstname ||\n this.formContact.firstname === '' ||\n !this.formContact.name ||\n this.formContact.name === '' ||\n !this.formContact.mail ||\n this.formContact.mail === '' ||\n !this.formContact.phone ||\n this.formContact.phone === '' ||\n !this.formContact.position ||\n this.formContact.position === ''\n );\n }\n\n // check if the ocntact name + mail matches a contact already DB\n alreadyInList() {\n const isAlreadyInSelectBox = this.contactsListSelectBox.some(c => {\n return c.name === this.formContact.name && c.mail === this.formContact.mail;\n });\n const isAlreadyInCompany = this.contactsOfCompany.some(c => {\n return c.name === this.formContact.name && c.mail === this.formContact.mail;\n });\n return isAlreadyInSelectBox || isAlreadyInCompany;\n }\n\n // create the contact in db\n async createContact(): Promise {\n const contact = await this.companyService.createContact(this.formContact);\n return contact;\n }\n\n isDisabled() {\n return this.contactsListSelectBox.length ? '' : 'disabled';\n }\n\n // sweet alert\n getSwalMsg(msg_code) {\n const messages = {\n error_getListContact: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des contacts.',\n 'error',\n ],\n error_updateCompany: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la mise à jour des contacts.',\n 'error',\n ],\n contact_deleted: ['Supprimé', 'Le contact a bien été supprimé.', 'success'],\n contact_added: ['Ajouté', 'Le contact a bien été ajouté.', 'success'],\n error_createNewContact: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la création du contact.',\n 'error',\n ],\n form_missing_field: ['Attention', \"L'un des champs n'est pas renseigné.\", 'warning'],\n alreadyInList: ['Attention', 'Un autre contact a déjà ce nom et cet email.', 'warning'],\n error_delete_permantently: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la suppression définitive du contact.',\n 'error',\n ],\n };\n\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n\n getSwalDeleteOptions(contactToDelete) {\n Swal.fire({\n title: '',\n text: 'Supprimer le contact...',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: \"de l'entreprise ?\",\n cancelButtonText: 'définitivement',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n }).then(async result => {\n this.company.contacts = this.company.contacts.filter(contact => contact !== contactToDelete._id.toString());\n\n // delete from that company only\"\n if (result.value) {\n await this.updateCompany('contact_deleted');\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n // delete from all companies and delete the contact itself\n this.deleteContactPermanently(contactToDelete);\n }\n });\n }\n\n async updateCompany(swalMsg) {\n try {\n await this.companyService.updateCompany(this.company);\n // update the two components data\n this.initData();\n this.getSwalMsg(swalMsg);\n return;\n } catch (err) {\n this.initData();\n this.getSwalMsg(err.errorCode); // err.errorCode is set to error_updateCompany\n }\n }\n\n getContactName(contact) {\n return contact.firstname\n ? this.textService.toTitleCase(contact.firstname) + ' ' + contact.name.toUpperCase()\n : contact.name.toUpperCase();\n }\n}\n","export default \".provider__bloc {\\n margin-bottom: 15px;\\n}\\n.provider__bloc .provider__content {\\n padding-top: 50px;\\n padding-bottom: 50px;\\n width: 70%;\\n text-align: center;\\n cursor: pointer;\\n}\\n.provider__bloc .provider__bloc--active {\\n color: white;\\n}\\n.provider__bloc .provider__bloc--inactive {\\n border: 1px solid darkgrey;\\n}\\n.column-border {\\n border-right: 1px solid darkgrey;\\n}\\n.row-title {\\n padding-top: 0.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.row-title .column-title {\\n font-weight: bold;\\n text-align: center;\\n}\\n.entity-list__list {\\n margin-top: 15px;\\n}\\n.entity-bloc {\\n border: 1px dashed grey;\\n border-radius: 2px;\\n margin-bottom: 0.5rem;\\n}\\n.entity-bloc.drag-over {\\n background-color: grey;\\n border-color: lightgrey;\\n color: white;\\n}\\n.entity-bloc:hover {\\n cursor: pointer;\\n}\\n.entity-bloc.selected-entity {\\n border-color: #db4b47;\\n}\\n.entity-bloc * {\\n pointer-events: none;\\n}\\n.entity-bloc {\\n padding: 5px 15px;\\n}\\n.fluid-icon-bloc {\\n background-color: lightgrey;\\n margin: 1px;\\n padding: 2px;\\n position: relative;\\n display: inline-block;\\n}\\n.fluid-icon-bloc .fluid-icon {\\n height: 25px;\\n width: 25px;\\n background-color: white;\\n}\\n.fluid-icon-bloc .fluid-icon-badge {\\n position: absolute;\\n top: -5px;\\n right: -5px;\\n font-size: 0.7em;\\n background: #db4b47;\\n color: white;\\n width: 15px;\\n height: 15px;\\n text-align: center;\\n line-height: 15px;\\n border-radius: 50%;\\n box-shadow: 0 0 1px #333;\\n z-index: 1000;\\n}\\n.info-address {\\n font-size: 0.75rem;\\n}\\n.info-entity {\\n padding-top: calc(0.5rem - 1px * 2) !important;\\n padding-bottom: calc(0.5rem - 1px * 2);\\n margin-bottom: 0;\\n white-space: initial;\\n}\\n.info-entity {\\n font-weight: initial;\\n}\\n.data-associated-title {\\n margin: 10px 0;\\n}\\n.data-associated:hover {\\n background-color: antiquewhite;\\n}\\n.error-message {\\n color: red;\\n text-align: end;\\n}\\n.provider-icon-bloc {\\n background-color: transparent;\\n}\\n.linky-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #c1e71b;\\n -webkit-mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n}\\n.ga-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #5bb03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n}\\n.enedis-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #77b03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvbG9hZGluZy1jdXJ2ZXMvY29tcGFueS1sb2FkaW5nLWN1cnZlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9jb21wYW55LWxvYWRpbmctY3VydmVzLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxtQkFBQTtBQ0ZKO0FESUk7RUFDSSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtBQ0ZSO0FES0k7RUFDSSxZQUFBO0FDSFI7QURNSTtFQUNJLDBCQUFBO0FDSlI7QURRQTtFQUNJLGdDQUFBO0FDTEo7QURPQTtFQUNJLG1CQUFBO0VBQ0Esc0JBQUE7QUNKSjtBRE1JO0VBQ0ksaUJBQUE7RUFDQSxrQkFBQTtBQ0pSO0FEUUE7RUFDSSxnQkFBQTtBQ0xKO0FEVUE7RUFDSSx1QkFBQTtFQUNBLGtCQUhXO0VBSVgscUJBTGlCO0FDRnJCO0FEU0k7RUFDSSxzQkFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBQ1BSO0FEU0k7RUFDSSxlQUFBO0FDUFI7QURTSTtFQUNJLHFCRS9CQTtBRHdCUjtBRFdBO0VBQ0ksb0JBQUE7QUNSSjtBRFdBO0VBQ0ksaUJBQUE7QUNSSjtBRFdBO0VBQ0ksMkJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EscUJBQUE7QUNSSjtBRFVJO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtBQ1JSO0FEV0k7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkU3REE7RUY4REEsWUFBQTtFQUNBLFdBUlE7RUFTUixZQVRRO0VBVVIsa0JBQUE7RUFDQSxpQkFYUTtFQVlSLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxhQUFBO0FDVFI7QURhQTtFQUNJLGtCQUFBO0FDVko7QURhQTtFQUNJLDhDQUFBO0VBQ0Esc0NBQUE7RUFDQSxnQkFBQTtFQUNBLG9CQUFBO0FDVko7QURhQTtFQUNJLG9CQUFBO0FDVko7QURhQTtFQUNJLGNBQUE7QUNWSjtBRGNJO0VBQ0ksOEJBQUE7QUNYUjtBRGVBO0VBQ0ksVUFBQTtFQUNBLGVBQUE7QUNaSjtBRGVBO0VBQ0ksNkJBQUE7QUNaSjtBRGdCQTtFR3BJSSxZSG1JTztFR2xJUCxXSGtJTztFR2pJUCw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5Qkg4SG1DO0VHMUhuQyxxREFBQTtVQUFBLDZDQUFBO0FGbUhSO0FEVUE7RUd4SUksWUhtSU87RUdsSVAsV0hrSU87RUdqSVAsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJIa0ltQztFRzlIbkMsa0RBQUE7VUFBQSwwQ0FBQTtBRjZIUjtBRElBO0VHNUlJLFlIbUlPO0VHbElQLFdIa0lPO0VHaklQLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCSHNJbUM7RUdsSW5DLHNEQUFBO1VBQUEsOENBQUE7QUZ1SVIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L2xvYWRpbmctY3VydmVzL2NvbXBhbnktbG9hZGluZy1jdXJ2ZXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL21peGlucy5zY3NzJztcblxuLnByb3ZpZGVyX19ibG9jIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuXG4gICAgLnByb3ZpZGVyX19jb250ZW50IHtcbiAgICAgICAgcGFkZGluZy10b3A6IDUwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA1MHB4O1xuICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAucHJvdmlkZXJfX2Jsb2MtLWFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAucHJvdmlkZXJfX2Jsb2MtLWluYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgZGFya2dyZXk7XG4gICAgfVxufVxuXG4uY29sdW1uLWJvcmRlciB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgZGFya2dyZXk7XG59XG4ucm93LXRpdGxlIHtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XG5cbiAgICAuY29sdW1uLXRpdGxlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG59XG5cbi5lbnRpdHktbGlzdF9fbGlzdCB7XG4gICAgbWFyZ2luLXRvcDogMTVweDtcbn1cblxuJG1hcmdpbkJvdFBkbEVudGl0eTogMC41cmVtO1xuJHNoYWRvd1JhZGl1czogMnB4O1xuLmVudGl0eS1ibG9jIHtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgZ3JleTtcbiAgICBib3JkZXItcmFkaXVzOiAkc2hhZG93UmFkaXVzO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW5Cb3RQZGxFbnRpdHk7XG5cbiAgICAmLmRyYWctb3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogbGlnaHRncmV5O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICAgICYuc2VsZWN0ZWQtZW50aXR5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWRtaW47XG4gICAgfVxufVxuXG4uZW50aXR5LWJsb2MgKiB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5lbnRpdHktYmxvYyB7XG4gICAgcGFkZGluZzogNXB4IDE1cHg7XG59XG5cbi5mbHVpZC1pY29uLWJsb2Mge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTtcbiAgICBtYXJnaW46IDFweDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgIC5mbHVpZC1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgfVxuICAgICRiYWRnZVNpemU6IDE1cHg7XG4gICAgLmZsdWlkLWljb24tYmFkZ2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTVweDtcbiAgICAgICAgcmlnaHQ6IC01cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICRhZG1pbjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB3aWR0aDogJGJhZGdlU2l6ZTtcbiAgICAgICAgaGVpZ2h0OiAkYmFkZ2VTaXplO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkYmFkZ2VTaXplO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAxcHggIzMzMztcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICB9XG59XG5cbi5pbmZvLWFkZHJlc3Mge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLmluZm8tZW50aXR5IHtcbiAgICBwYWRkaW5nLXRvcDogY2FsYygwLjVyZW0gLSAxcHggKiAyKSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuNXJlbSAtIDFweCAqIDIpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgd2hpdGUtc3BhY2U6IGluaXRpYWw7XG59XG5cbi5pbmZvLWVudGl0eSB7XG4gICAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG59XG5cbi5kYXRhLWFzc29jaWF0ZWQtdGl0bGUge1xuICAgIG1hcmdpbjogMTBweCAwO1xufVxuXG4uZGF0YS1hc3NvY2lhdGVkIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYW50aXF1ZXdoaXRlO1xuICAgIH1cbn1cblxuLmVycm9yLW1lc3NhZ2Uge1xuICAgIGNvbG9yOiByZWQ7XG4gICAgdGV4dC1hbGlnbjogZW5kO1xufVxuXG4ucHJvdmlkZXItaWNvbi1ibG9jIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuJGljb25TaXplOiAzNXB4O1xuLmxpbmt5LWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oJGljb25TaXplLCAkaWNvblNpemUsICNjMWU3MWIsICcvYXNzZXRzL2ltZy9sb2dvL2xpbmt5LnN2ZycpO1xufVxuXG4uZ2EtaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigkaWNvblNpemUsICRpY29uU2l6ZSwgIzViYjAzZSwgJy9hc3NldHMvaW1nL2xvZ28vZ2Euc3ZnJyk7XG59XG5cbi5lbmVkaXMtaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigkaWNvblNpemUsICRpY29uU2l6ZSwgIzc3YjAzZSwgJy9hc3NldHMvaW1nL2xvZ28vZW5lZGlzLnN2ZycpO1xufVxuIiwiLnByb3ZpZGVyX19ibG9jIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cbi5wcm92aWRlcl9fYmxvYyAucHJvdmlkZXJfX2NvbnRlbnQge1xuICBwYWRkaW5nLXRvcDogNTBweDtcbiAgcGFkZGluZy1ib3R0b206IDUwcHg7XG4gIHdpZHRoOiA3MCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnByb3ZpZGVyX19ibG9jIC5wcm92aWRlcl9fYmxvYy0tYWN0aXZlIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnByb3ZpZGVyX19ibG9jIC5wcm92aWRlcl9fYmxvYy0taW5hY3RpdmUge1xuICBib3JkZXI6IDFweCBzb2xpZCBkYXJrZ3JleTtcbn1cblxuLmNvbHVtbi1ib3JkZXIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBkYXJrZ3JleTtcbn1cblxuLnJvdy10aXRsZSB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XG59XG4ucm93LXRpdGxlIC5jb2x1bW4tdGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZW50aXR5LWxpc3RfX2xpc3Qge1xuICBtYXJnaW4tdG9wOiAxNXB4O1xufVxuXG4uZW50aXR5LWJsb2Mge1xuICBib3JkZXI6IDFweCBkYXNoZWQgZ3JleTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uZW50aXR5LWJsb2MuZHJhZy1vdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgYm9yZGVyLWNvbG9yOiBsaWdodGdyZXk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5lbnRpdHktYmxvYzpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5lbnRpdHktYmxvYy5zZWxlY3RlZC1lbnRpdHkge1xuICBib3JkZXItY29sb3I6ICNkYjRiNDc7XG59XG5cbi5lbnRpdHktYmxvYyAqIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5lbnRpdHktYmxvYyB7XG4gIHBhZGRpbmc6IDVweCAxNXB4O1xufVxuXG4uZmx1aWQtaWNvbi1ibG9jIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmV5O1xuICBtYXJnaW46IDFweDtcbiAgcGFkZGluZzogMnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5mbHVpZC1pY29uLWJsb2MgLmZsdWlkLWljb24ge1xuICBoZWlnaHQ6IDI1cHg7XG4gIHdpZHRoOiAyNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5mbHVpZC1pY29uLWJsb2MgLmZsdWlkLWljb24tYmFkZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTVweDtcbiAgcmlnaHQ6IC01cHg7XG4gIGZvbnQtc2l6ZTogMC43ZW07XG4gIGJhY2tncm91bmQ6ICNkYjRiNDc7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgd2lkdGg6IDE1cHg7XG4gIGhlaWdodDogMTVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3gtc2hhZG93OiAwIDAgMXB4ICMzMzM7XG4gIHotaW5kZXg6IDEwMDA7XG59XG5cbi5pbmZvLWFkZHJlc3Mge1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5pbmZvLWVudGl0eSB7XG4gIHBhZGRpbmctdG9wOiBjYWxjKDAuNXJlbSAtIDFweCAqIDIpICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuNXJlbSAtIDFweCAqIDIpO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB3aGl0ZS1zcGFjZTogaW5pdGlhbDtcbn1cblxuLmluZm8tZW50aXR5IHtcbiAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG59XG5cbi5kYXRhLWFzc29jaWF0ZWQtdGl0bGUge1xuICBtYXJnaW46IDEwcHggMDtcbn1cblxuLmRhdGEtYXNzb2NpYXRlZDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGFudGlxdWV3aGl0ZTtcbn1cblxuLmVycm9yLW1lc3NhZ2Uge1xuICBjb2xvcjogcmVkO1xuICB0ZXh0LWFsaWduOiBlbmQ7XG59XG5cbi5wcm92aWRlci1pY29uLWJsb2Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmxpbmt5LWljb24ge1xuICBoZWlnaHQ6IDM1cHg7XG4gIHdpZHRoOiAzNXB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MxZTcxYjtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvbG9nby9saW5reS5zdmdcIik7XG59XG5cbi5nYS1pY29uIHtcbiAgaGVpZ2h0OiAzNXB4O1xuICB3aWR0aDogMzVweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1YmIwM2U7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL2xvZ28vZ2Euc3ZnXCIpO1xufVxuXG4uZW5lZGlzLWljb24ge1xuICBoZWlnaHQ6IDM1cHg7XG4gIHdpZHRoOiAzNXB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc3YjAzZTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvbG9nby9lbmVkaXMuc3ZnXCIpO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport Swal from 'sweetalert2';\n\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { ExternalDataService } from 'app/shared/services/external-data/external-data.service';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\nimport {\n ExternalAssociationsLocalType,\n ExternalAssociationsType,\n} from 'app/shared/models/external-associations.interface';\n\nimport { Entity, ExternDataInfo, ProviderItem, SwitchFilterEntity } from './external-data-assignations.interface';\n\n@Component({\n selector: 'ga-company-loading-curves-tab',\n templateUrl: './company-loading-curves.component.html',\n styleUrls: ['./company-loading-curves.component.scss'],\n providers: [ExternalDataService],\n})\n/**\n * @todo refacto entity part as it's not for all providers (only ga for now)\n */\nexport class CompanyLoadingCurvesComponent implements OnInit {\n @Input() company: any;\n\n // List of available providers\n providersList: ProviderItem[] = [\n {\n name: 'Green Analyzer',\n value: 'ga',\n selected: false,\n onlyCompany: false,\n },\n {\n name: 'Enedis',\n value: 'enedis',\n selected: true,\n onlyCompany: true,\n },\n ];\n\n // List of entity types\n entityTypes: SwitchFilterEntity[] = [\n {\n displayName: 'Sites',\n value: 'site',\n items: [],\n propertiesToCheck: ['complement', '_id', 'streetName', 'city', 'zipcode'],\n },\n {\n displayName: 'Zones',\n value: 'zone',\n items: [],\n propertiesToCheck: ['name', '_id', 'streetName', 'city', 'zipcode', 'siteName'],\n },\n {\n displayName: 'PDL',\n value: 'routingreference',\n items: [],\n propertiesToCheck: ['reference', '_id', 'address.streetName', 'address.city', 'address.zipcode'],\n },\n ];\n entityType: SwitchFilterEntity = this.entityTypes[0];\n\n // List of fluids available for the company\n fluidList: Array<{ name: string; value: string }> = [];\n\n // Id of the site whhich the PDL is over while dragging\n dragOverEntity: string = null;\n\n // Site information properties\n /** Selected entity by the user by click or drop of a external data */\n private _selectedEntity: Entity;\n public set selectedEntity(entity: Entity) {\n this.externalDataList = [];\n if (this.entityType) {\n this._selectedEntity = entity;\n this.externalDataService\n .getEntityExternalAssociations(entity._id, this.entityType.value, 'ga')\n .then(associations => {\n if (!associations) {\n return [];\n }\n const promises = associations.map(async association => {\n const dataInfo = {\n title: 'NC',\n subtitle: '',\n startDate: null,\n endDate: null,\n type: association.type,\n sourceData: association.sourceData,\n _id: association._id,\n loaded: false,\n };\n this.externalDataList.push(dataInfo);\n return this.externalDataService.getExternalDataInformation(dataInfo);\n });\n return Promise.all(promises);\n })\n .catch(() => {\n this.swalError('du chargement de la donnée externe');\n });\n }\n }\n public get selectedEntity(): Entity {\n return this._selectedEntity;\n }\n\n // External data associated to the selected entity\n externalDataList: ExternDataInfo[] = [];\n\n // Sites's routing references information to display (colors, count).\n // Each site _id is a key\n entityDisplayInfo: any = {};\n // Limits for the display of sites and routing references\n limits = {\n entities: 10,\n };\n // List of sites to display\n entitiesToDisplay: Entity[] = [];\n\n // Search filters on routing reference and site columns\n search = {\n entity: '',\n };\n\n // Boolean indicating if a saving action in running (link)\n isSaving = false;\n\n // Loading informations for display.\n loading = {\n pdls: true,\n sites: true,\n fluids: true,\n };\n\n constructor(\n private energyService: EnergyService,\n private colorService: ColorService,\n private sitesService: SitesService,\n private routingReferencesService: RoutingReferencesService,\n private externalDataService: ExternalDataService\n ) {}\n\n ngOnInit() {\n this.getEntitiesList();\n }\n\n async getEntitiesList() {\n this.loading.sites = true;\n this.loading.pdls = true;\n\n await this.getSetFluids();\n\n this.sitesService\n .getSites({ companyId: this.company._id })\n .then(response => {\n const sitesList = this.entityTypes.find(x => x.value === 'site');\n const zonesList = this.entityTypes.find(x => x.value === 'zone');\n if (!response.data || !sitesList || !zonesList) {\n return Promise.reject({ errorCode: 'no_sites_loaded' });\n }\n sitesList.items = [];\n zonesList.items = [];\n\n const sitesPopulated = response.data;\n sitesPopulated.forEach(site => {\n const type: ExternalAssociationsLocalType = 'site';\n const entity: Entity = Object.assign(site, { type });\n sitesList.items.push(entity);\n if (site.info.diviser) {\n site.info.batiments.forEach(zone => {\n const pdls = zone.routingReferences\n .map(rR => {\n return site.routingReferences.find(x => x._id === rR);\n })\n .filter(x => x);\n zonesList.items.push(\n Object.assign({}, zone, {\n routingReferences: pdls,\n streetNumber: site.streetNumber,\n streetName: site.streetName,\n zipcode: site.zipcode,\n city: site.city,\n siteName: site.complement || site.name,\n siteId: site._id,\n type: 'zone',\n })\n );\n });\n }\n });\n this.selectEntityType('site');\n this.loading.sites = false;\n })\n .catch(() => {\n const sitesList = this.entityTypes.find(x => x.value === 'site');\n if (sitesList) {\n sitesList.items = [];\n }\n const zonesList = this.entityTypes.find(x => x.value === 'zone');\n if (zonesList) {\n zonesList.items = [];\n }\n this.swalError('du chargement des sites et zones');\n this.loading.sites = false;\n });\n\n this.routingReferencesService\n .getRoutingReferencesPopulated({ companyId: this.company._id })\n .then(response => {\n const pdlsList = this.entityTypes.find(x => x.value === 'routingreference');\n if (!response || !pdlsList) {\n return Promise.reject({ errorCode: 'no_routingreferences_loaded' });\n }\n pdlsList.items = response.map(pdl => {\n const type: ExternalAssociationsLocalType = 'routingreference';\n const entity: Entity = Object.assign(pdl, { type });\n return entity;\n });\n this.loading.pdls = false;\n })\n .catch(() => {\n const pdlsList = this.entityTypes.find(x => x.value === 'routingreference');\n if (pdlsList) {\n pdlsList.items = [];\n }\n this.swalError('du chargement des PDLs');\n this.loading.pdls = false;\n });\n }\n\n /*****************\n * FILTERS COLUMN (PDL & SITES)\n *****************/\n\n /**\n * Get and set fluids available for a customer\n * @returns {Promise}\n */\n private async getSetFluids(): Promise {\n try {\n const fluids = await this.energyService.getFluidsAvailable(this.company._id);\n if (fluids && fluids.length) {\n this.fluidList = fluids.map(fluid => {\n return {\n name: this.energyService.energyFullText(fluid),\n value: fluid,\n };\n });\n this.loading.fluids = false;\n }\n return fluids;\n } catch (e) {\n this.swalError('du chargement des fluides disponibles');\n this.fluidList = [];\n this.loading.fluids = false;\n }\n }\n\n /**\n * Filter entities per value\n * @param {string} value - search criteria\n */\n searchEntity(value: string) {\n this.search.entity = value;\n this.filterEntities();\n }\n\n /**\n * Apply all filters to the entity list\n * @param {boolean} isReset reset the entity list (for example in research true, display more false)\n */\n private filterEntities(isReset: boolean = true) {\n // Reset the entity list\n if (isReset) {\n this.entitiesToDisplay = [];\n }\n // Split the search in multiple words to check each one instead of all of them\n const values = this.search.entity.toLocaleLowerCase().split(' ');\n // Properties of the entities to check in research\n const propertiesToCheck = this.entityType.propertiesToCheck;\n // Function to access embed properties\n const getProp = (obj, path) => path.split('.').reduce((acc, part) => acc && acc[part], obj);\n // Add the right number of entities to the display list\n // Each one is the next one matching filters\n for (let i = this.entitiesToDisplay.length; i < this.limits.entities; i++) {\n const entity = this.entityType.items.find(x => {\n // Check if not already in the list\n if (this.entitiesToDisplay.some(y => x._id === y._id)) {\n return false;\n }\n\n // Check from search input\n return propertiesToCheck.some(property => {\n const val = getProp(x, property);\n return val && this.checkMatch(val, values);\n });\n });\n if (entity) {\n this.entitiesToDisplay.push(entity);\n }\n }\n }\n /**\n * Check is a list of values matches a string\n * @param {string} property to check check the values from\n * @param {string[]} values list of values to test\n * @returns {boolean} true if any values matches, false otherwise\n */\n private checkMatch(property: string = '', values: string[] = []): boolean {\n for (const v of values) {\n if (property.toLocaleLowerCase().includes(v)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Display more entities in the list.\n * @param {number} number of entities to display more. Default : 10\n */\n displayMoreEntities(number: number = 10) {\n this.limits.entities += number;\n this.filterEntities(false);\n }\n\n /**\n * Get entity bloc class.\n * @param {Entity} entity\n * @returns {string} 'drag-over' when hover while dragging, 'selected-site' when selected, empty otherwise\n */\n getEntityClass(entity: Entity): string {\n if (this.dragOverEntity === entity._id) {\n return 'drag-over';\n }\n if (this.selectedEntity && this.selectedEntity._id === entity._id) {\n return 'selected-entity';\n }\n return '';\n }\n\n /**\n * Set selected entity if not the same entity already selected\n * @param {Entity} entity to select\n */\n selectEntity(entity: Entity) {\n if (!this.selectedEntity || (this.selectedEntity && this.selectedEntity._id !== entity._id)) {\n this.selectedEntity = entity;\n }\n }\n\n /*****************\n *(DRAG &) DROP management\n *****************/\n\n /**\n * On drop of an external data to a entity, associate the external data to the entity\n * @param {DragEvent} event - data transferef must be at format : { externalId: any, type: string } (eg. {externalId: '123456789g1g4d5s6', type: 'ga'})\n * @param {Entity} entity\n */\n onDrop(event: DragEvent, entity: Entity) {\n event.preventDefault();\n const dataString = event.dataTransfer.getData('text/plain');\n const data = JSON.parse(dataString);\n\n this.linkExternalData(data, entity);\n }\n\n /**\n * Set the entity dragged over.\n * @param {DragEvent} event\n * @param {Entity} entity object of the entity dragged over\n */\n onDragEnter(event: DragEvent, entity: Entity) {\n event.preventDefault();\n\n this.dragOverEntity = entity._id;\n }\n\n /**\n * Unset the entity dragged over when leaving.\n * @param {DragEvent} event\n * @param {Entity} entity left. Unset only if the site is the one stored.\n */\n onDrageLeave(event: DragEvent, entity: Entity) {\n event.preventDefault();\n\n const id = entity._id;\n\n if (this.dragOverEntity === id) {\n this.dragOverEntity = null;\n }\n }\n\n /**\n * DO NOT REMOVE. ENABLE THE DROP.\n * @param {DragEvent} event\n */\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n\n /*****************\n * COMPUTE ENTITIES DISPLAY INFO\n *****************/\n\n /**\n * Select an entity type to be associated to\n * @param {\"sites\"|\"zones\"|\"routingreferences\"} value - value of entity type selected\n */\n selectEntityType(value: 'site' | 'zone' | 'routingreference') {\n // TODO Load selected entity list of not already loaded\n this.entityType = this.entityTypes.find(x => x.value === value);\n this.computeEntitiesPdlInfo();\n this.filterEntities();\n }\n\n /**\n * Get entity search message for the filter\n */\n get searchEntityMessage() {\n let message = 'Rechercher';\n if (!this.entityType) {\n return message;\n }\n switch (this.entityType.value) {\n case 'site':\n message += ' un site';\n break;\n case 'zone':\n message += ' une zone';\n break;\n case 'routingreference':\n message += ' un PDL';\n break;\n default:\n break;\n }\n return message;\n }\n\n /**\n * Get title for the entity. Site name for sites, zone name for zones & reference for pdls\n * @param {Entity} entity - entity to get the title from\n * @returns {string} name of entity\n */\n getEntityTitle(entity: Entity): string {\n switch (entity.type) {\n default:\n case 'site':\n return entity.complement;\n case 'zone':\n return entity.siteName;\n case 'routingreference':\n return entity.reference;\n }\n }\n\n /**\n * Get subtitle for the entity. Nothing for sites and pdls, zone name for zones\n * @param {Entity} entity - entity to get the subtitle from\n * @returns {string} subtitle of entity\n */\n getEntitySubtitle(entity: Entity): string {\n switch (entity.type) {\n default:\n case 'site':\n case 'routingreference':\n return;\n case 'zone':\n return '> ' + entity.name;\n }\n }\n\n /**\n * Get entity address object root level.\n * @param {Entity} entity - entity to get the address root level from\n * @returns {*} address root object of entity\n */\n getEntityAddressRoot(entity: Entity): any {\n switch (entity.type) {\n default:\n case 'site':\n case 'zone':\n return entity;\n case 'routingreference':\n return entity.address;\n }\n }\n\n /**\n * Get the rgb color of a fluid. Return the color if the site has the fluid, default otherwise.\n * @param {string} fluid - fluid get the color from\n * @param {number} count - number of pdl in an entity\n * @returns {string} get rgb color string\n */\n private getFluidColor(fluid: string, count: number): string {\n const hasFluid = count > 0;\n if (hasFluid) {\n return this.colorService.getSecondRgbColor(fluid);\n }\n return;\n }\n /**\n * Get the number of pdls of a site for a given fluid.\n * @param {string} fluid to look for\n * @param {Entity} entity to get the count of pdls for the fluid\n * @returns {number}\n */\n private getEntityPdlCount(fluid: string, entity: Entity): number {\n if (this.entityType.value !== 'routingreference') {\n return this.sitesService.countRoutingReferencesOfFluid(entity, fluid);\n }\n return entity.energyType === fluid ? 1 : 0;\n }\n\n /**\n * Compute the PDLs information for a given entity.\n * As there is lot of entities displayed, it's calculated when user takes action\n * and not on the angular cycles\n * Objects of type: {\n * color: string,\n * count: number\n * }\n * @param {Entity} entity to compute the information of\n */\n private computeEntityPdlInfo(entity: Entity) {\n this.entityDisplayInfo[entity._id] = {};\n this.fluidList.forEach(fluid => {\n const count = this.getEntityPdlCount(fluid.value, entity);\n this.entityDisplayInfo[entity._id][fluid.value] = {\n color: this.getFluidColor(fluid.value, count),\n count,\n };\n });\n }\n\n /**\n * Compute the PDLS information for all entities for entity type selected.\n */\n private computeEntitiesPdlInfo() {\n this.entityType.items.forEach(entity => {\n this.computeEntityPdlInfo(entity);\n });\n }\n\n /**\n * @returns true if there is more entities to display, false otherwise\n */\n get hasMoreEntityToDisplay(): boolean {\n if (!this.entityType) {\n return false;\n }\n return this.entitiesToDisplay.length < this.entityType.items.length;\n }\n\n /**\n * @returns true is the selected entity list is loading, false otherwise.\n */\n get isEntityListLoading(): boolean {\n if (!this.entityType) {\n return true;\n }\n return this.entityType.value === 'routingreference' ? this.loading.pdls : this.loading.sites;\n }\n\n /*****************\n * ENTITY INFORMATION COLUMN\n *****************/\n\n /**\n * Get selected entity property\n * @param {string} property - property relative to generic entity\n * @returns {string} value fot he property\n */\n getEntitySelectedProperty(property: string): string {\n if (!this.selectedEntity) {\n return null;\n }\n\n if (property === 'title') {\n switch (this.selectedEntity.type) {\n default:\n case 'site':\n return this.selectedEntity['complement'];\n case 'zone':\n return this.selectedEntity['siteName'];\n case 'routingreference':\n return this.selectedEntity['reference'];\n }\n }\n\n if (property === 'subtitle') {\n switch (this.selectedEntity.type) {\n default:\n case 'site':\n case 'routingreference':\n return null;\n case 'zone':\n return this.selectedEntity['name'];\n }\n }\n\n return this.selectedEntity[property];\n }\n\n /**\n * Get selected entity property\n * @param {string} property\n */\n getEntitySelectedAddressProperty(property: string) {\n if (!this.selectedEntity) {\n return null;\n }\n\n switch (this.selectedEntity.type) {\n default:\n case 'site':\n case 'zone':\n return this.selectedEntity[property];\n case 'routingreference':\n return this.selectedEntity.address[property];\n }\n }\n\n /**\n * Get the error message for the address.\n */\n get errorMessage() {\n return null;\n }\n\n /*****************\n * ENTITY INFORMATION EXTERNAL DATA LIST\n *****************/\n\n /**\n * Get the externalData value\n * @param {ExternDataInfo} externalData - external data to get the type of\n * @returns {string} external data value (eg. 'ga')\n */\n getExternalDataType(externalData: ExternDataInfo) {\n switch (externalData.type) {\n default:\n case 'ga':\n return 'ga-icon';\n /*case 'linky' :\n return \"linky-icon\";*/\n case 'enedis':\n return 'enedis-icon';\n }\n }\n\n /*****************\n * ASSOCIATE / DISSOCIATE EXTERNAL DATA\n *****************/\n\n /**\n * Link external data to an entity and update it when done.\n * @param {Object} data - external data\n * @param {Entity} entity - entity to link the external data to\n */\n async linkExternalData(data: any, entity: Entity) {\n try {\n this.isSaving = true;\n\n const entityType = entity.type;\n\n this.prepareDataEntity(entityType, data, entity);\n\n this.dragOverEntity = null;\n\n await this.externalDataService.associateExternalData(entityType, data);\n\n /**\n * Company can't be a selected entity (has its own assignation component)\n */\n if (entity.type !== 'company') {\n this.selectedEntity = entity;\n }\n } catch (e) {\n this.swalError(\"de l'association de la donnée\");\n }\n\n this.isSaving = false;\n }\n\n /**\n * Remove an external data to the associated entity.\n * @param externalData\n */\n async unlinkExternalData(externalData: ExternDataInfo) {\n try {\n if (externalData && externalData.sourceData && externalData.type) {\n const entity = this.selectedEntity;\n const entityType = entity.type;\n const data: any = {\n externalId: externalData.sourceData,\n type: externalData.type,\n };\n\n this.prepareDataEntity(entityType, data, entity);\n\n await this.externalDataService.dissociateExternalData(entity.type, data, externalData._id);\n\n this.selectedEntity = entity;\n }\n } catch (e) {\n this.swalError('de la dissociation de la donnée');\n }\n }\n\n /**\n * Prepare data for request by filling with the correct id(s) depending on the entity type\n * @param {ExternalAssociationsLocalType} entityType - type of entity\n * @param {Object} data - data object to set the id(s)\n * @param {Entity} entity - entity object which\n */\n private prepareDataEntity(entityType: ExternalAssociationsLocalType, data: any, entity: Entity) {\n switch (entityType) {\n case 'site':\n data.site = entity._id;\n break;\n case 'zone':\n data.zone = entity._id;\n data.site = entity.siteId;\n break;\n case 'routingreference':\n data.routingreference = entity._id;\n break;\n case 'company':\n data.company = entity._id;\n break;\n }\n }\n\n /*****************\n * PROVIDERS LIST\n *****************/\n\n /**\n * Get provider class depending if it's selected or not.\n * @param {ProviderItem} provider - data provider to get the class of\n */\n getProviderClass(provider: ProviderItem): string[] {\n return provider.selected ? ['citron-background', 'provider__bloc--active'] : ['provider__bloc--inactive'];\n }\n\n /**\n * Actions when a provider is selected\n * @param {ProviderItem} provider - data provider selected\n */\n selectProvider(provider: ProviderItem) {\n this.providersList.forEach(p => {\n p.selected = p.value === provider.value;\n });\n }\n\n /**\n * Indicates if the provider passed is selected\n * @param {ExternalAssociationsType} value - data provider value to check selection\n * @returns {boolean} true if provider selected, false otherwise\n */\n isProviderSelected(value: ExternalAssociationsType): boolean {\n return this.providersList.some(p => p.selected && p.value === value);\n }\n\n /**\n * Does provider can only be associated to company and not entities\n * @returns {boolean} true if provider for company only, false otherwise\n */\n isSelectedProviderForCompanyOnly(): boolean {\n return this.providersList.some(p => p.selected && p.onlyCompany);\n }\n\n /*****************\n * UTILS\n *****************/\n\n swalError(message = 'du chargement') {\n Swal.fire(\n 'Une erreur est survenue',\n 'Une erreur est survenue lors ' + message + '.
Merci de réessayer ultérieurement.',\n 'error'\n );\n }\n}\n","export default \".provider__bloc {\\n margin-bottom: 15px;\\n}\\n.provider__bloc .provider__content {\\n padding-top: 50px;\\n padding-bottom: 50px;\\n width: 70%;\\n text-align: center;\\n cursor: pointer;\\n}\\n.provider__bloc .provider__bloc--active {\\n color: white;\\n}\\n.provider__bloc .provider__bloc--inactive {\\n border: 1px solid darkgrey;\\n}\\n.column-border {\\n border-right: 1px solid darkgrey;\\n}\\n.row-title {\\n padding-top: 0.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.row-title .column-title {\\n font-weight: bold;\\n text-align: center;\\n}\\n.entity-list__list {\\n margin-top: 15px;\\n}\\n.entity-bloc {\\n border: 1px dashed grey;\\n border-radius: 2px;\\n margin-bottom: 0.5rem;\\n}\\n.entity-bloc.drag-over {\\n background-color: grey;\\n border-color: lightgrey;\\n color: white;\\n}\\n.entity-bloc:hover {\\n cursor: pointer;\\n}\\n.entity-bloc.selected-entity {\\n border-color: #db4b47;\\n}\\n.entity-bloc * {\\n pointer-events: none;\\n}\\n.entity-bloc {\\n padding: 5px 15px;\\n}\\n.fluid-icon-bloc {\\n background-color: lightgrey;\\n margin: 1px;\\n padding: 2px;\\n position: relative;\\n display: inline-block;\\n}\\n.fluid-icon-bloc .fluid-icon {\\n height: 25px;\\n width: 25px;\\n background-color: white;\\n}\\n.fluid-icon-bloc .fluid-icon-badge {\\n position: absolute;\\n top: -5px;\\n right: -5px;\\n font-size: 0.7em;\\n background: #db4b47;\\n color: white;\\n width: 15px;\\n height: 15px;\\n text-align: center;\\n line-height: 15px;\\n border-radius: 50%;\\n box-shadow: 0 0 1px #333;\\n z-index: 1000;\\n}\\n.info-address {\\n font-size: 0.75rem;\\n}\\n.info-entity {\\n padding-top: calc(0.5rem - 1px * 2) !important;\\n padding-bottom: calc(0.5rem - 1px * 2);\\n margin-bottom: 0;\\n white-space: initial;\\n}\\n.info-entity {\\n font-weight: initial;\\n}\\n.data-associated-title {\\n margin: 10px 0;\\n}\\n.data-associated:hover {\\n background-color: antiquewhite;\\n}\\n.error-message {\\n color: red;\\n text-align: end;\\n}\\n.provider-icon-bloc {\\n background-color: transparent;\\n}\\n.linky-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #c1e71b;\\n -webkit-mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n}\\n.ga-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #5bb03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n}\\n.enedis-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #77b03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n}\\n.rref_selection_alert {\\n position: absolute;\\n top: 55%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n text-align: center;\\n font-size: 1.2em;\\n font-weight: bold;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvbG9hZGluZy1jdXJ2ZXMvY29tcGFueS1sb2FkaW5nLWN1cnZlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZW5lZGlzL2Fzc2lnbmF0aW9uLWVuZWRpcy5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL21peGlucy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZW5lZGlzL2Fzc2lnbmF0aW9uLWVuZWRpcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLG1CQUFBO0FDRko7QURJSTtFQUNJLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0FDRlI7QURLSTtFQUNJLFlBQUE7QUNIUjtBRE1JO0VBQ0ksMEJBQUE7QUNKUjtBRFFBO0VBQ0ksZ0NBQUE7QUNMSjtBRE9BO0VBQ0ksbUJBQUE7RUFDQSxzQkFBQTtBQ0pKO0FETUk7RUFDSSxpQkFBQTtFQUNBLGtCQUFBO0FDSlI7QURRQTtFQUNJLGdCQUFBO0FDTEo7QURVQTtFQUNJLHVCQUFBO0VBQ0Esa0JBSFc7RUFJWCxxQkFMaUI7QUNGckI7QURTSTtFQUNJLHNCQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FDUFI7QURTSTtFQUNJLGVBQUE7QUNQUjtBRFNJO0VBQ0kscUJFL0JBO0FEd0JSO0FEV0E7RUFDSSxvQkFBQTtBQ1JKO0FEV0E7RUFDSSxpQkFBQTtBQ1JKO0FEV0E7RUFDSSwyQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxxQkFBQTtBQ1JKO0FEVUk7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0FDUlI7QURXSTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLG1CRTdEQTtFRjhEQSxZQUFBO0VBQ0EsV0FSUTtFQVNSLFlBVFE7RUFVUixrQkFBQTtFQUNBLGlCQVhRO0VBWVIsa0JBQUE7RUFDQSx3QkFBQTtFQUNBLGFBQUE7QUNUUjtBRGFBO0VBQ0ksa0JBQUE7QUNWSjtBRGFBO0VBQ0ksOENBQUE7RUFDQSxzQ0FBQTtFQUNBLGdCQUFBO0VBQ0Esb0JBQUE7QUNWSjtBRGFBO0VBQ0ksb0JBQUE7QUNWSjtBRGFBO0VBQ0ksY0FBQTtBQ1ZKO0FEY0k7RUFDSSw4QkFBQTtBQ1hSO0FEZUE7RUFDSSxVQUFBO0VBQ0EsZUFBQTtBQ1pKO0FEZUE7RUFDSSw2QkFBQTtBQ1pKO0FEZ0JBO0VHcElJLFlIbUlPO0VHbElQLFdIa0lPO0VHaklQLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCSDhIbUM7RUcxSG5DLHFEQUFBO1VBQUEsNkNBQUE7QUZtSFI7QURVQTtFR3hJSSxZSG1JTztFR2xJUCxXSGtJTztFR2pJUCw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkhrSW1DO0VHOUhuQyxrREFBQTtVQUFBLDBDQUFBO0FGNkhSO0FESUE7RUc1SUksWUhtSU87RUdsSVAsV0hrSU87RUdqSVAsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJIc0ltQztFR2xJbkMsc0RBQUE7VUFBQSw4Q0FBQTtBRnVJUjtBR2pKQTtFQUNJLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSx3Q0FBQTtVQUFBLGdDQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0FIb0pKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZW5lZGlzL2Fzc2lnbmF0aW9uLWVuZWRpcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MnO1xuXG4ucHJvdmlkZXJfX2Jsb2Mge1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG5cbiAgICAucHJvdmlkZXJfX2NvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLXRvcDogNTBweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDUwcHg7XG4gICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC5wcm92aWRlcl9fYmxvYy0tYWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cblxuICAgIC5wcm92aWRlcl9fYmxvYy0taW5hY3RpdmUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBkYXJrZ3JleTtcbiAgICB9XG59XG5cbi5jb2x1bW4tYm9yZGVyIHtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBkYXJrZ3JleTtcbn1cbi5yb3ctdGl0bGUge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcblxuICAgIC5jb2x1bW4tdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLmVudGl0eS1saXN0X19saXN0IHtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xufVxuXG4kbWFyZ2luQm90UGRsRW50aXR5OiAwLjVyZW07XG4kc2hhZG93UmFkaXVzOiAycHg7XG4uZW50aXR5LWJsb2Mge1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCBncmV5O1xuICAgIGJvcmRlci1yYWRpdXM6ICRzaGFkb3dSYWRpdXM7XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbkJvdFBkbEVudGl0eTtcblxuICAgICYuZHJhZy1vdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBsaWdodGdyZXk7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgJi5zZWxlY3RlZC1lbnRpdHkge1xuICAgICAgICBib3JkZXItY29sb3I6ICRhZG1pbjtcbiAgICB9XG59XG5cbi5lbnRpdHktYmxvYyAqIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmVudGl0eS1ibG9jIHtcbiAgICBwYWRkaW5nOiA1cHggMTVweDtcbn1cblxuLmZsdWlkLWljb24tYmxvYyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmV5O1xuICAgIG1hcmdpbjogMXB4O1xuICAgIHBhZGRpbmc6IDJweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgLmZsdWlkLWljb24ge1xuICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gICAgJGJhZGdlU2l6ZTogMTVweDtcbiAgICAuZmx1aWQtaWNvbi1iYWRnZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtNXB4O1xuICAgICAgICByaWdodDogLTVweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICAgICAgYmFja2dyb3VuZDogJGFkbWluO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIHdpZHRoOiAkYmFkZ2VTaXplO1xuICAgICAgICBoZWlnaHQ6ICRiYWRnZVNpemU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRiYWRnZVNpemU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDFweCAjMzMzO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgIH1cbn1cblxuLmluZm8tYWRkcmVzcyB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4uaW5mby1lbnRpdHkge1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKDAuNXJlbSAtIDFweCAqIDIpICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtIC0gMXB4ICogMik7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB3aGl0ZS1zcGFjZTogaW5pdGlhbDtcbn1cblxuLmluZm8tZW50aXR5IHtcbiAgICBmb250LXdlaWdodDogaW5pdGlhbDtcbn1cblxuLmRhdGEtYXNzb2NpYXRlZC10aXRsZSB7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG59XG5cbi5kYXRhLWFzc29jaWF0ZWQge1xuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBhbnRpcXVld2hpdGU7XG4gICAgfVxufVxuXG4uZXJyb3ItbWVzc2FnZSB7XG4gICAgY29sb3I6IHJlZDtcbiAgICB0ZXh0LWFsaWduOiBlbmQ7XG59XG5cbi5wcm92aWRlci1pY29uLWJsb2Mge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4kaWNvblNpemU6IDM1cHg7XG4ubGlua3ktaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigkaWNvblNpemUsICRpY29uU2l6ZSwgI2MxZTcxYiwgJy9hc3NldHMvaW1nL2xvZ28vbGlua3kuc3ZnJyk7XG59XG5cbi5nYS1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKCRpY29uU2l6ZSwgJGljb25TaXplLCAjNWJiMDNlLCAnL2Fzc2V0cy9pbWcvbG9nby9nYS5zdmcnKTtcbn1cblxuLmVuZWRpcy1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKCRpY29uU2l6ZSwgJGljb25TaXplLCAjNzdiMDNlLCAnL2Fzc2V0cy9pbWcvbG9nby9lbmVkaXMuc3ZnJyk7XG59XG4iLCIucHJvdmlkZXJfX2Jsb2Mge1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuLnByb3ZpZGVyX19ibG9jIC5wcm92aWRlcl9fY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiA1MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNTBweDtcbiAgd2lkdGg6IDcwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ucHJvdmlkZXJfX2Jsb2MgLnByb3ZpZGVyX19ibG9jLS1hY3RpdmUge1xuICBjb2xvcjogd2hpdGU7XG59XG4ucHJvdmlkZXJfX2Jsb2MgLnByb3ZpZGVyX19ibG9jLS1pbmFjdGl2ZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGRhcmtncmV5O1xufVxuXG4uY29sdW1uLWJvcmRlciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGRhcmtncmV5O1xufVxuXG4ucm93LXRpdGxlIHtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcbn1cbi5yb3ctdGl0bGUgLmNvbHVtbi10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5lbnRpdHktbGlzdF9fbGlzdCB7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG59XG5cbi5lbnRpdHktYmxvYyB7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCBncmV5O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5lbnRpdHktYmxvYy5kcmFnLW92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xuICBib3JkZXItY29sb3I6IGxpZ2h0Z3JleTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLmVudGl0eS1ibG9jOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmVudGl0eS1ibG9jLnNlbGVjdGVkLWVudGl0eSB7XG4gIGJvcmRlci1jb2xvcjogI2RiNGI0Nztcbn1cblxuLmVudGl0eS1ibG9jICoge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmVudGl0eS1ibG9jIHtcbiAgcGFkZGluZzogNXB4IDE1cHg7XG59XG5cbi5mbHVpZC1pY29uLWJsb2Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZXk7XG4gIG1hcmdpbjogMXB4O1xuICBwYWRkaW5nOiAycHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmZsdWlkLWljb24tYmxvYyAuZmx1aWQtaWNvbiB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDI1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuLmZsdWlkLWljb24tYmxvYyAuZmx1aWQtaWNvbi1iYWRnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNXB4O1xuICByaWdodDogLTVweDtcbiAgZm9udC1zaXplOiAwLjdlbTtcbiAgYmFja2dyb3VuZDogI2RiNGI0NztcbiAgY29sb3I6IHdoaXRlO1xuICB3aWR0aDogMTVweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJveC1zaGFkb3c6IDAgMCAxcHggIzMzMztcbiAgei1pbmRleDogMTAwMDtcbn1cblxuLmluZm8tYWRkcmVzcyB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLmluZm8tZW50aXR5IHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtIC0gMXB4ICogMikgIWltcG9ydGFudDtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtIC0gMXB4ICogMik7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xufVxuXG4uaW5mby1lbnRpdHkge1xuICBmb250LXdlaWdodDogaW5pdGlhbDtcbn1cblxuLmRhdGEtYXNzb2NpYXRlZC10aXRsZSB7XG4gIG1hcmdpbjogMTBweCAwO1xufVxuXG4uZGF0YS1hc3NvY2lhdGVkOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYW50aXF1ZXdoaXRlO1xufVxuXG4uZXJyb3ItbWVzc2FnZSB7XG4gIGNvbG9yOiByZWQ7XG4gIHRleHQtYWxpZ246IGVuZDtcbn1cblxuLnByb3ZpZGVyLWljb24tYmxvYyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4ubGlua3ktaWNvbiB7XG4gIGhlaWdodDogMzVweDtcbiAgd2lkdGg6IDM1cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzFlNzFiO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9sb2dvL2xpbmt5LnN2Z1wiKTtcbn1cblxuLmdhLWljb24ge1xuICBoZWlnaHQ6IDM1cHg7XG4gIHdpZHRoOiAzNXB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzViYjAzZTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvbG9nby9nYS5zdmdcIik7XG59XG5cbi5lbmVkaXMtaWNvbiB7XG4gIGhlaWdodDogMzVweDtcbiAgd2lkdGg6IDM1cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzdiMDNlO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9sb2dvL2VuZWRpcy5zdmdcIik7XG59XG5cbi5ycmVmX3NlbGVjdGlvbl9hbGVydCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1NSU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCJAaW1wb3J0ICcuLi8uLi9jb21wYW55LWxvYWRpbmctY3VydmVzLmNvbXBvbmVudC5zY3NzJztcblxuLnJyZWZfc2VsZWN0aW9uX2FsZXJ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1NSU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuIl19 */\"","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { WarrantService } from 'app/shared/services/warrants/warrant.service';\n\nimport { EnedisWarrantService } from './enedis-warrant.service';\n\n@Component({\n selector: 'ga-loadcurve-assignation-enedis',\n templateUrl: './assignation-enedis.component.html',\n styleUrls: ['./assignation-enedis.component.scss'],\n providers: [EnedisWarrantService],\n})\nexport class LoadCurveAssignationEnedisComponent implements OnInit, OnDestroy {\n @Input() company: any;\n\n /** Boolean to show or hide routing reference selection tab */\n public showRrefSelection = false;\n\n /** Component's subscription */\n private subscription: Subscription;\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly warrantService: WarrantService,\n private readonly enedisWarrantService: EnedisWarrantService\n ) {}\n\n async ngOnInit(): Promise {\n // Whenever a warrant is successfully saved, set routing reference selection tab visibility\n this.subscription = this.enedisWarrantService.loadedWarrant$.subscribe(warrant => {\n // Show routing reference selection tab only if current warrant is valid for today date\n this.showRrefSelection = this.warrantService.isValidWarrant(warrant);\n });\n\n // Load page data\n try {\n await this.enedisWarrantService.loadLatestWarrant(this.company._id);\n } catch (error) {\n Swal.fire({\n icon: 'error',\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('warrant_error_loading'),\n });\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { Warrant } from 'app/shared/models/warrant.interface';\nimport { ExternalDataService } from 'app/shared/services/external-data/external-data.service';\nimport { EditWarrantParams } from 'app/shared/services/warrants/interfaces';\nimport { WarrantService } from 'app/shared/services/warrants/warrant.service';\n\n/**\n * This service is designed to load necessary data for Enedis assignation tab.\n */\n@Injectable()\nexport class EnedisWarrantService {\n private readonly ENEDIS_PROVIDER = 'enedis';\n private readonly ENEDIS_FLUID = 'elec';\n\n private readonly loadedWarrant = new Subject();\n\n public get loadedWarrant$(): Observable {\n return this.loadedWarrant.asObservable();\n }\n\n constructor(\n private readonly externalDataService: ExternalDataService,\n private readonly warrantService: WarrantService\n ) {}\n\n /** Load in memory most recent warrant for given company */\n public async loadLatestWarrant(companyId: string): Promise {\n // Load corporate name for current company\n const corporateName = await this.externalDataService.getSocialDenomination(companyId);\n\n if (corporateName) {\n const warrant = await this.warrantService.getLatestWarrant({\n corporateName,\n provider: this.ENEDIS_PROVIDER,\n providerFluid: this.ENEDIS_FLUID,\n });\n\n this.loadedWarrant.next(warrant);\n }\n }\n\n /** Update warrant if provided one is not null, or create a new one otherwise */\n public async editWarrant(\n warrant: Warrant | null,\n fields: { corporateName: string; validityStart: string; validityEnd: string }\n ): Promise {\n const params: EditWarrantParams = {\n ...fields,\n warrantProvider: this.ENEDIS_PROVIDER,\n warrantProviderFluid: this.ENEDIS_FLUID,\n };\n\n if (warrant) {\n params.id = warrant._id;\n }\n\n const editedWarrant = await this.warrantService.editWarrant(params);\n\n this.loadedWarrant.next(editedWarrant);\n\n return editedWarrant;\n }\n}\n","export default \".provider__bloc {\\n margin-bottom: 15px;\\n}\\n.provider__bloc .provider__content {\\n padding-top: 50px;\\n padding-bottom: 50px;\\n width: 70%;\\n text-align: center;\\n cursor: pointer;\\n}\\n.provider__bloc .provider__bloc--active {\\n color: white;\\n}\\n.provider__bloc .provider__bloc--inactive {\\n border: 1px solid darkgrey;\\n}\\n.column-border {\\n border-right: 1px solid darkgrey;\\n}\\n.row-title {\\n padding-top: 0.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.row-title .column-title {\\n font-weight: bold;\\n text-align: center;\\n}\\n.entity-list__list {\\n margin-top: 15px;\\n}\\n.entity-bloc {\\n border: 1px dashed grey;\\n border-radius: 2px;\\n margin-bottom: 0.5rem;\\n}\\n.entity-bloc.drag-over {\\n background-color: grey;\\n border-color: lightgrey;\\n color: white;\\n}\\n.entity-bloc:hover {\\n cursor: pointer;\\n}\\n.entity-bloc.selected-entity {\\n border-color: #db4b47;\\n}\\n.entity-bloc * {\\n pointer-events: none;\\n}\\n.entity-bloc {\\n padding: 5px 15px;\\n}\\n.fluid-icon-bloc {\\n background-color: lightgrey;\\n margin: 1px;\\n padding: 2px;\\n position: relative;\\n display: inline-block;\\n}\\n.fluid-icon-bloc .fluid-icon {\\n height: 25px;\\n width: 25px;\\n background-color: white;\\n}\\n.fluid-icon-bloc .fluid-icon-badge {\\n position: absolute;\\n top: -5px;\\n right: -5px;\\n font-size: 0.7em;\\n background: #db4b47;\\n color: white;\\n width: 15px;\\n height: 15px;\\n text-align: center;\\n line-height: 15px;\\n border-radius: 50%;\\n box-shadow: 0 0 1px #333;\\n z-index: 1000;\\n}\\n.info-address {\\n font-size: 0.75rem;\\n}\\n.info-entity {\\n padding-top: calc(0.5rem - 1px * 2) !important;\\n padding-bottom: calc(0.5rem - 1px * 2);\\n margin-bottom: 0;\\n white-space: initial;\\n}\\n.info-entity {\\n font-weight: initial;\\n}\\n.data-associated-title {\\n margin: 10px 0;\\n}\\n.data-associated:hover {\\n background-color: antiquewhite;\\n}\\n.error-message {\\n color: red;\\n text-align: end;\\n}\\n.provider-icon-bloc {\\n background-color: transparent;\\n}\\n.linky-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #c1e71b;\\n -webkit-mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n}\\n.ga-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #5bb03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n}\\n.enedis-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #77b03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n}\\n.rref_selection_alert {\\n position: absolute;\\n top: 55%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n text-align: center;\\n font-size: 1.2em;\\n font-weight: bold;\\n}\\n.form-control {\\n font-size: 0.875rem;\\n height: 100%;\\n}\\n.search--icon {\\n position: absolute;\\n right: 2rem;\\n}\\n.table-scroll {\\n overflow: auto;\\n height: 75vh;\\n font-size: 0.875rem;\\n /* safari and ios need the tfoot itself to be position:sticky also */\\n}\\n.table-scroll .border--bottom {\\n border-bottom: 1px solid lightgray;\\n}\\n.table-scroll .border--right {\\n border-right: 1px solid lightgray;\\n}\\n.table-scroll table {\\n border-collapse: separate;\\n border-spacing: 0;\\n width: 100%;\\n}\\n.table-scroll th,\\n.table-scroll td {\\n padding: 8px 16px;\\n background: #fff;\\n}\\n.table-scroll thead th,\\n.table-scroll thead td {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n}\\n.table-scroll tbody tr:first td {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n}\\n.table-scroll tfoot,\\n.table-scroll tfoot th,\\n.table-scroll tfoot td {\\n position: -webkit-sticky;\\n position: sticky;\\n bottom: 0;\\n z-index: 4;\\n}\\n.nb-updated {\\n font-style: italic;\\n font-size: 0.75rem;\\n}\\n.action-text, .action-text-underlined {\\n color: #db4b47;\\n cursor: pointer;\\n}\\n.action-text-underlined {\\n text-decoration: underline;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvbG9hZGluZy1jdXJ2ZXMvY29tcGFueS1sb2FkaW5nLWN1cnZlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZW5lZGlzL3JyZWZzLXNlbGVjdGlvbi9ycmVmcy1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvbG9hZGluZy1jdXJ2ZXMvcHJvdmlkZXJzL2VuZWRpcy9hc3NpZ25hdGlvbi1lbmVkaXMuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L2xvYWRpbmctY3VydmVzL3Byb3ZpZGVycy9lbmVkaXMvcnJlZnMtc2VsZWN0aW9uL3JyZWZzLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLG1CQUFBO0FDRko7QURJSTtFQUNJLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0FDRlI7QURLSTtFQUNJLFlBQUE7QUNIUjtBRE1JO0VBQ0ksMEJBQUE7QUNKUjtBRFFBO0VBQ0ksZ0NBQUE7QUNMSjtBRE9BO0VBQ0ksbUJBQUE7RUFDQSxzQkFBQTtBQ0pKO0FETUk7RUFDSSxpQkFBQTtFQUNBLGtCQUFBO0FDSlI7QURRQTtFQUNJLGdCQUFBO0FDTEo7QURVQTtFQUNJLHVCQUFBO0VBQ0Esa0JBSFc7RUFJWCxxQkFMaUI7QUNGckI7QURTSTtFQUNJLHNCQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FDUFI7QURTSTtFQUNJLGVBQUE7QUNQUjtBRFNJO0VBQ0kscUJFL0JBO0FEd0JSO0FEV0E7RUFDSSxvQkFBQTtBQ1JKO0FEV0E7RUFDSSxpQkFBQTtBQ1JKO0FEV0E7RUFDSSwyQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxxQkFBQTtBQ1JKO0FEVUk7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0FDUlI7QURXSTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLG1CRTdEQTtFRjhEQSxZQUFBO0VBQ0EsV0FSUTtFQVNSLFlBVFE7RUFVUixrQkFBQTtFQUNBLGlCQVhRO0VBWVIsa0JBQUE7RUFDQSx3QkFBQTtFQUNBLGFBQUE7QUNUUjtBRGFBO0VBQ0ksa0JBQUE7QUNWSjtBRGFBO0VBQ0ksOENBQUE7RUFDQSxzQ0FBQTtFQUNBLGdCQUFBO0VBQ0Esb0JBQUE7QUNWSjtBRGFBO0VBQ0ksb0JBQUE7QUNWSjtBRGFBO0VBQ0ksY0FBQTtBQ1ZKO0FEY0k7RUFDSSw4QkFBQTtBQ1hSO0FEZUE7RUFDSSxVQUFBO0VBQ0EsZUFBQTtBQ1pKO0FEZUE7RUFDSSw2QkFBQTtBQ1pKO0FEZ0JBO0VHcElJLFlIbUlPO0VHbElQLFdIa0lPO0VHaklQLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCSDhIbUM7RUcxSG5DLHFEQUFBO1VBQUEsNkNBQUE7QUZtSFI7QURVQTtFR3hJSSxZSG1JTztFR2xJUCxXSGtJTztFR2pJUCw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkhrSW1DO0VHOUhuQyxrREFBQTtVQUFBLDBDQUFBO0FGNkhSO0FESUE7RUc1SUksWUhtSU87RUdsSVAsV0hrSU87RUdqSVAsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJIc0ltQztFR2xJbkMsc0RBQUE7VUFBQSw4Q0FBQTtBRnVJUjtBR2pKQTtFQUNJLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSx3Q0FBQTtVQUFBLGdDQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0FIb0pKO0FJdkpBO0VBQ0ksbUJBTE87RUFNUCxZQUFBO0FKMEpKO0FJdkpBO0VBQ0ksa0JBQUE7RUFDQSxXQUFBO0FKMEpKO0FJdkpBO0VBQ0ksY0FBQTtFQUNBLFlBQUE7RUFDQSxtQkFqQk87RUErQ1Asb0VBQUE7QUo2SEo7QUkxSkk7RUFDSSxrQ0FqQkM7QUo2S1Q7QUkxSkk7RUFDSSxpQ0FwQkM7QUpnTFQ7QUkxSkk7RUFDSSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsV0FBQTtBSjRKUjtBSTFKSTs7RUFFSSxpQkFBQTtFQUNBLGdCQUFBO0FKNEpSO0FJekpROztFQUVJLHdCQUFBO0VBQUEsZ0JBQUE7RUFDQSxNQUFBO0FKMkpaO0FJdkpRO0VBQ0ksd0JBQUE7RUFBQSxnQkFBQTtFQUNBLE1BQUE7QUp5Slo7QUlySkk7OztFQUdJLHdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtBSnVKUjtBSW5KQTtFQUNJLGtCQUFBO0VBQ0Esa0JBM0RZO0FKaU5oQjtBSW5KQTtFQUNJLGNIekNJO0VHMENKLGVBQUE7QUpzSko7QUlwSkk7RUFFSSwwQkFBQTtBSnFKUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvbG9hZGluZy1jdXJ2ZXMvcHJvdmlkZXJzL2VuZWRpcy9ycmVmcy1zZWxlY3Rpb24vcnJlZnMtc2VsZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbi5wcm92aWRlcl9fYmxvYyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcblxuICAgIC5wcm92aWRlcl9fY29udGVudCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiA1MHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTBweDtcbiAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnByb3ZpZGVyX19ibG9jLS1hY3RpdmUge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuXG4gICAgLnByb3ZpZGVyX19ibG9jLS1pbmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGRhcmtncmV5O1xuICAgIH1cbn1cblxuLmNvbHVtbi1ib3JkZXIge1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGRhcmtncmV5O1xufVxuLnJvdy10aXRsZSB7XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xuXG4gICAgLmNvbHVtbi10aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxufVxuXG4uZW50aXR5LWxpc3RfX2xpc3Qge1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG59XG5cbiRtYXJnaW5Cb3RQZGxFbnRpdHk6IDAuNXJlbTtcbiRzaGFkb3dSYWRpdXM6IDJweDtcbi5lbnRpdHktYmxvYyB7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIGdyZXk7XG4gICAgYm9yZGVyLXJhZGl1czogJHNoYWRvd1JhZGl1cztcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luQm90UGRsRW50aXR5O1xuXG4gICAgJi5kcmFnLW92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xuICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0Z3JleTtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgICAmLnNlbGVjdGVkLWVudGl0eSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGFkbWluO1xuICAgIH1cbn1cblxuLmVudGl0eS1ibG9jICoge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZW50aXR5LWJsb2Mge1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xufVxuXG4uZmx1aWQtaWNvbi1ibG9jIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZXk7XG4gICAgbWFyZ2luOiAxcHg7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAuZmx1aWQtaWNvbiB7XG4gICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAkYmFkZ2VTaXplOiAxNXB4O1xuICAgIC5mbHVpZC1pY29uLWJhZGdlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC01cHg7XG4gICAgICAgIHJpZ2h0OiAtNXB4O1xuICAgICAgICBmb250LXNpemU6IDAuN2VtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWRtaW47XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgd2lkdGg6ICRiYWRnZVNpemU7XG4gICAgICAgIGhlaWdodDogJGJhZGdlU2l6ZTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogJGJhZGdlU2l6ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMXB4ICMzMzM7XG4gICAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgfVxufVxuXG4uaW5mby1hZGRyZXNzIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5pbmZvLWVudGl0eSB7XG4gICAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtIC0gMXB4ICogMikgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjVyZW0gLSAxcHggKiAyKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xufVxuXG4uaW5mby1lbnRpdHkge1xuICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xufVxuXG4uZGF0YS1hc3NvY2lhdGVkLXRpdGxlIHtcbiAgICBtYXJnaW46IDEwcHggMDtcbn1cblxuLmRhdGEtYXNzb2NpYXRlZCB7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGFudGlxdWV3aGl0ZTtcbiAgICB9XG59XG5cbi5lcnJvci1tZXNzYWdlIHtcbiAgICBjb2xvcjogcmVkO1xuICAgIHRleHQtYWxpZ246IGVuZDtcbn1cblxuLnByb3ZpZGVyLWljb24tYmxvYyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbiRpY29uU2l6ZTogMzVweDtcbi5saW5reS1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKCRpY29uU2l6ZSwgJGljb25TaXplLCAjYzFlNzFiLCAnL2Fzc2V0cy9pbWcvbG9nby9saW5reS5zdmcnKTtcbn1cblxuLmdhLWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oJGljb25TaXplLCAkaWNvblNpemUsICM1YmIwM2UsICcvYXNzZXRzL2ltZy9sb2dvL2dhLnN2ZycpO1xufVxuXG4uZW5lZGlzLWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oJGljb25TaXplLCAkaWNvblNpemUsICM3N2IwM2UsICcvYXNzZXRzL2ltZy9sb2dvL2VuZWRpcy5zdmcnKTtcbn1cbiIsIi5wcm92aWRlcl9fYmxvYyB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ucHJvdmlkZXJfX2Jsb2MgLnByb3ZpZGVyX19jb250ZW50IHtcbiAgcGFkZGluZy10b3A6IDUwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA1MHB4O1xuICB3aWR0aDogNzAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5wcm92aWRlcl9fYmxvYyAucHJvdmlkZXJfX2Jsb2MtLWFjdGl2ZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5wcm92aWRlcl9fYmxvYyAucHJvdmlkZXJfX2Jsb2MtLWluYWN0aXZlIHtcbiAgYm9yZGVyOiAxcHggc29saWQgZGFya2dyZXk7XG59XG5cbi5jb2x1bW4tYm9yZGVyIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgZGFya2dyZXk7XG59XG5cbi5yb3ctdGl0bGUge1xuICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xufVxuLnJvdy10aXRsZSAuY29sdW1uLXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmVudGl0eS1saXN0X19saXN0IHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbn1cblxuLmVudGl0eS1ibG9jIHtcbiAgYm9yZGVyOiAxcHggZGFzaGVkIGdyZXk7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLmVudGl0eS1ibG9jLmRyYWctb3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIGJvcmRlci1jb2xvcjogbGlnaHRncmV5O1xuICBjb2xvcjogd2hpdGU7XG59XG4uZW50aXR5LWJsb2M6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uZW50aXR5LWJsb2Muc2VsZWN0ZWQtZW50aXR5IHtcbiAgYm9yZGVyLWNvbG9yOiAjZGI0YjQ3O1xufVxuXG4uZW50aXR5LWJsb2MgKiB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZW50aXR5LWJsb2Mge1xuICBwYWRkaW5nOiA1cHggMTVweDtcbn1cblxuLmZsdWlkLWljb24tYmxvYyB7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTtcbiAgbWFyZ2luOiAxcHg7XG4gIHBhZGRpbmc6IDJweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uZmx1aWQtaWNvbi1ibG9jIC5mbHVpZC1pY29uIHtcbiAgaGVpZ2h0OiAyNXB4O1xuICB3aWR0aDogMjVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZmx1aWQtaWNvbi1ibG9jIC5mbHVpZC1pY29uLWJhZGdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC01cHg7XG4gIHJpZ2h0OiAtNXB4O1xuICBmb250LXNpemU6IDAuN2VtO1xuICBiYWNrZ3JvdW5kOiAjZGI0YjQ3O1xuICBjb2xvcjogd2hpdGU7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDE1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm94LXNoYWRvdzogMCAwIDFweCAjMzMzO1xuICB6LWluZGV4OiAxMDAwO1xufVxuXG4uaW5mby1hZGRyZXNzIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4uaW5mby1lbnRpdHkge1xuICBwYWRkaW5nLXRvcDogY2FsYygwLjVyZW0gLSAxcHggKiAyKSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjVyZW0gLSAxcHggKiAyKTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgd2hpdGUtc3BhY2U6IGluaXRpYWw7XG59XG5cbi5pbmZvLWVudGl0eSB7XG4gIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xufVxuXG4uZGF0YS1hc3NvY2lhdGVkLXRpdGxlIHtcbiAgbWFyZ2luOiAxMHB4IDA7XG59XG5cbi5kYXRhLWFzc29jaWF0ZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBhbnRpcXVld2hpdGU7XG59XG5cbi5lcnJvci1tZXNzYWdlIHtcbiAgY29sb3I6IHJlZDtcbiAgdGV4dC1hbGlnbjogZW5kO1xufVxuXG4ucHJvdmlkZXItaWNvbi1ibG9jIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5saW5reS1pY29uIHtcbiAgaGVpZ2h0OiAzNXB4O1xuICB3aWR0aDogMzVweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMWU3MWI7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL2xvZ28vbGlua3kuc3ZnXCIpO1xufVxuXG4uZ2EtaWNvbiB7XG4gIGhlaWdodDogMzVweDtcbiAgd2lkdGg6IDM1cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJiMDNlO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9sb2dvL2dhLnN2Z1wiKTtcbn1cblxuLmVuZWRpcy1pY29uIHtcbiAgaGVpZ2h0OiAzNXB4O1xuICB3aWR0aDogMzVweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3N2IwM2U7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL2xvZ28vZW5lZGlzLnN2Z1wiKTtcbn1cblxuLnJyZWZfc2VsZWN0aW9uX2FsZXJ0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDU1JTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEuMmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmZvcm0tY29udHJvbCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLnNlYXJjaC0taWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDJyZW07XG59XG5cbi50YWJsZS1zY3JvbGwge1xuICBvdmVyZmxvdzogYXV0bztcbiAgaGVpZ2h0OiA3NXZoO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICAvKiBzYWZhcmkgYW5kIGlvcyBuZWVkIHRoZSB0Zm9vdCBpdHNlbGYgdG8gYmUgcG9zaXRpb246c3RpY2t5IGFsc28gKi9cbn1cbi50YWJsZS1zY3JvbGwgLmJvcmRlci0tYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcbn1cbi50YWJsZS1zY3JvbGwgLmJvcmRlci0tcmlnaHQge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBsaWdodGdyYXk7XG59XG4udGFibGUtc2Nyb2xsIHRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRhYmxlLXNjcm9sbCB0aCxcbi50YWJsZS1zY3JvbGwgdGQge1xuICBwYWRkaW5nOiA4cHggMTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbn1cbi50YWJsZS1zY3JvbGwgdGhlYWQgdGgsXG4udGFibGUtc2Nyb2xsIHRoZWFkIHRkIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwO1xufVxuLnRhYmxlLXNjcm9sbCB0Ym9keSB0cjpmaXJzdCB0ZCB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbn1cbi50YWJsZS1zY3JvbGwgdGZvb3QsXG4udGFibGUtc2Nyb2xsIHRmb290IHRoLFxuLnRhYmxlLXNjcm9sbCB0Zm9vdCB0ZCB7XG4gIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiA0O1xufVxuXG4ubmItdXBkYXRlZCB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4uYWN0aW9uLXRleHQsIC5hY3Rpb24tdGV4dC11bmRlcmxpbmVkIHtcbiAgY29sb3I6ICNkYjRiNDc7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hY3Rpb24tdGV4dC11bmRlcmxpbmVkIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCJAaW1wb3J0ICcuLi8uLi9jb21wYW55LWxvYWRpbmctY3VydmVzLmNvbXBvbmVudC5zY3NzJztcblxuLnJyZWZfc2VsZWN0aW9uX2FsZXJ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1NSU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuIiwiQGltcG9ydCAnLi4vYXNzaWduYXRpb24tZW5lZGlzLmNvbXBvbmVudC5zY3NzJztcblxuJHRleHRTaXplOiAwLjg3NXJlbTtcbiR0ZXh0U2l6ZVNtYWxsOiAwLjc1cmVtO1xuJGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcblxuLmZvcm0tY29udHJvbCB7XG4gICAgZm9udC1zaXplOiAkdGV4dFNpemU7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc2VhcmNoLS1pY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDJyZW07XG59XG5cbi50YWJsZS1zY3JvbGwge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogNzV2aDtcbiAgICBmb250LXNpemU6ICR0ZXh0U2l6ZTtcbiAgICAuYm9yZGVyLS1ib3R0b20ge1xuICAgICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgIH1cbiAgICAuYm9yZGVyLS1yaWdodCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogJGJvcmRlcjtcbiAgICB9XG4gICAgdGFibGUge1xuICAgICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICAgICAgICBib3JkZXItc3BhY2luZzogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgfVxuICAgIHRoZWFkIHtcbiAgICAgICAgdGgsXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGJvZHkge1xuICAgICAgICB0cjpmaXJzdCB0ZCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qIHNhZmFyaSBhbmQgaW9zIG5lZWQgdGhlIHRmb290IGl0c2VsZiB0byBiZSBwb3NpdGlvbjpzdGlja3kgYWxzbyAqL1xuICAgIHRmb290LFxuICAgIHRmb290IHRoLFxuICAgIHRmb290IHRkIHtcbiAgICAgICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgfVxufVxuXG4ubmItdXBkYXRlZCB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtc2l6ZTogJHRleHRTaXplU21hbGw7XG59XG5cbi5hY3Rpb24tdGV4dCB7XG4gICAgY29sb3I6ICRhZG1pbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmLXVuZGVybGluZWQge1xuICAgICAgICBAZXh0ZW5kIC5hY3Rpb24tdGV4dDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuIl19 */\"","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Subscription } from 'rxjs';\nimport { pairwise, startWith } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\n\nimport { Company } from 'app/shared/models/company.interface';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport { RRefItem } from './rrefs-selection.interface';\nimport { RRefSelectionService } from './rrefs-selection.service';\n\n@Component({\n selector: 'ga-enedis-rrefs-selection',\n templateUrl: './rrefs-selection.component.html',\n styleUrls: ['./rrefs-selection.component.scss'],\n providers: [RRefSelectionService],\n})\nexport class EnedisRRefsSelectionComponent implements OnInit, OnDestroy {\n /** Company */\n @Input() company: Company;\n\n /** Form control responsible of handling display filters for rrefs list */\n public filtersAssignedRrefsControl = new FormControl(null);\n\n /** Selectable filters to apply to routing references list */\n public filtersAssignedRrefs = [\n {\n value: null,\n label: 'routingreferences_all',\n count: 0,\n },\n {\n value: true,\n label: 'routing_reference_associated_p',\n count: 0,\n },\n {\n value: false,\n label: 'routing_reference_not_associated_p',\n count: 0,\n },\n ];\n\n /** Search form control */\n public searchControl: FormControl = new FormControl('');\n\n /** First sticky row */\n @ViewChild('stickyRow', { static: false }) private stickyRowEl: ElementRef;\n\n /** Filtered list of routing references to display */\n public rRefListFiltered: RRefItem[] = [];\n\n /** Select all form group */\n public selectAllGroup: FormGroup;\n\n /** Day of month on which we should update the contractual data */\n public updateDay: FormControl = new FormControl(null);\n\n /** Is updateDay beeing modified */\n public updateDayModified = false;\n\n /** List of days for html select */\n public selectDayValues: Array<{ value: number; text: string }> = [];\n\n /** Saving state off Rref selection button */\n public savingSelection = false;\n\n /** Subscription */\n private subscription: Subscription;\n\n /** Message to explain why some synchronisations can not be done */\n public get debounceTimeTooltip() {\n return this.translateService._('loadcurve_config_debounce_expl');\n }\n\n /** Is loading of routing references still ongoing */\n public isLoading = false;\n\n constructor(\n private service: RRefSelectionService,\n private translateService: TranslateService,\n private snackBar: MatSnackBar\n ) {}\n\n ngOnInit() {\n this.init();\n for (let i = 1; i <= 28; i++) {\n if (i === 1) {\n this.selectDayValues.push({ value: i, text: '1er' });\n } else {\n this.selectDayValues.push({ value: i, text: i.toString() });\n }\n }\n this.getDataUpdateDay();\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n /**\n * First sticky row height for second top offset\n */\n public get stickyRowHeight(): string {\n const height = this.stickyRowEl ? this.stickyRowEl.nativeElement.offsetHeight : 0;\n return `${height}px`;\n }\n\n public get nbSelected(): string {\n return `${this.service.getSelectedRrefCount(this.filtersAssignedRrefsControl.value)}`;\n }\n\n public get nbUpdated(): string {\n const nb = this.service.nbUpdated;\n if (!nb) {\n return '';\n }\n if (nb === 1) {\n return `, ${nb} ${this.translateService._('updated')}`;\n }\n return `, ${nb} ${this.translateService._('updated_p')}`;\n }\n\n public async save() {\n try {\n this.savingSelection = true;\n await this.service.saveUpdatedItems();\n Swal.fire(\n this.translateService._('loadcurve_config_perimeter'),\n `${this.translateService._('loadcurve_config_saved')}

\n ${this.translateService._('loadcurve_config_saved_next')}`,\n 'success'\n );\n } catch (e) {\n Swal.fire('Erreur', `Une erreur s'est produite lors de l'enregistrement
(${e.message})`, 'error');\n } finally {\n this.savingSelection = false;\n }\n }\n\n /**\n * Save the update day for this company\n */\n public async saveUpdateDay() {\n try {\n await this.service.saveDataUpdateDay(this.company, this.updateDay);\n this.updateDayModified = false;\n this.snackBar.open(this.translateService._('loadcurve_config_auto_update_saved'), '', {\n duration: 5000,\n horizontalPosition: 'end',\n verticalPosition: 'top',\n });\n } catch (e) {\n Swal.fire('Erreur', `Une erreur s'est produite lors de l'enregistrement de la périodicité`, 'error');\n }\n }\n\n /**\n * Synchronize the contractual data for a given list of routing references\n * First filters on those that can be synchronized\n */\n public async synchronize(routingReferences: RRefItem[] = this.rRefListFiltered) {\n const rRefToSync = this.service.filterRRefToSync(routingReferences);\n const nbUpdated = rRefToSync.length;\n const nbIgnored = routingReferences.length - rRefToSync.length;\n\n try {\n await this.service.synchronizeContractualData(rRefToSync);\n Swal.fire(\n this.translateService._('loadcurve_config_synchronization'),\n `${this.translateService._('loadcurve_config_synchronization_running')}

\n ${nbUpdated} ${this.translateService._(\n nbUpdated === 1 ? 'loadcurve_config_pdl_sync' : 'loadcurve_config_pdls_sync'\n )}
\n ${nbIgnored} ${this.translateService._(\n nbIgnored === 1 ? 'loadcurve_config_pdl_ignored' : 'loadcurve_config_pdls_ignored'\n )}`,\n 'success'\n );\n } catch (e) {\n Swal.fire('Erreur', this.translateService._('error_loadcurve_config_on_sync'), 'error');\n }\n }\n\n /**\n * Returns the tooltip displayed on the synchronize icon of a routing reference\n */\n public syncTooltipText(rRef: RRefItem): string {\n if (!rRef.lastSync) {\n return this.translateService._('loadcurve_config_never_sync');\n } else {\n return `${this.translateService._(\n 'loadcurve_config_last_sync'\n )} : ${rRef.lastSync.toLocaleDateString()} ${rRef.lastSync.toLocaleTimeString()}`;\n }\n }\n\n private async init() {\n this.isLoading = true;\n const rRefList = await this.service.initRRefList(this.company._id);\n\n // Init filters items counts\n const [filterAll, filterAssigned, filterUnassigned] = this.filtersAssignedRrefs;\n filterAll.count = this.service.totalRrefsCount;\n filterAssigned.count = this.service.assignedRrefsCount;\n filterUnassigned.count = filterAll.count - filterAssigned.count;\n\n this.filterRRefList();\n this.subscription = this.searchControl.valueChanges.subscribe({\n next: value => {\n this.filterRRefList(value);\n },\n });\n\n // Triggers whenever a new display filter options is selected\n this.subscription.add(\n this.filtersAssignedRrefsControl.valueChanges.subscribe({\n next: value => {\n this.service.resetUpdatedItems();\n\n this.rRefListFiltered = this.service.filterRrefItemsByAssignation(value);\n\n this.updateSelectAllStates();\n },\n })\n );\n\n rRefList.forEach(rRefItem => {\n this.service.ensureFieldsCoherence(rRefItem.formGroup);\n this.subscription.add(\n rRefItem.formGroup.valueChanges\n .pipe(\n startWith(rRefItem.formGroup.value),\n pairwise()\n )\n .subscribe({\n next: ([prev, next]) => {\n // If warrant authorization is updated and true, then also enable contractual data\n if (prev.warrantAuthorization !== next.warrantAuthorization && next.warrantAuthorization) {\n rRefItem.formGroup.controls.contractualData.patchValue(true, { emitEvent: false });\n }\n this.service.ensureFieldsCoherence(rRefItem.formGroup);\n this.service.updateItem(rRefItem);\n this.updateSelectAllStates();\n },\n })\n );\n });\n this.initSelectAll();\n this.isLoading = false;\n }\n\n private initSelectAll() {\n this.selectAllGroup = new FormGroup({\n warrantAuthorization: new FormControl(false),\n loadCurveVisualization: new FormControl(false),\n contractualData: new FormControl(false),\n siret: new FormControl(''),\n });\n Object.keys(this.selectAllGroup.controls).forEach(field => {\n this.subscription.add(\n this.selectAllGroup.controls[field].valueChanges.subscribe({\n next: v => {\n this.selectAllField(v, field);\n },\n })\n );\n });\n this.updateSelectAllStates();\n }\n\n private selectAllField(value: boolean, field: string) {\n // Set all rrefs `field` to true\n this.rRefListFiltered.forEach(item => {\n const controls = item.formGroup.controls;\n if (controls[field].enabled && controls[field].value !== value) {\n controls[field].patchValue(value);\n }\n });\n }\n\n private updateSelectAllStates() {\n if (!this.selectAllGroup) {\n return;\n }\n Object.entries(this.selectAllGroup.controls).forEach(([key, control]) => {\n const allSelected = this.rRefListFiltered.every(\n x => x.formGroup.controls[key] && x.formGroup.controls[key].value === true\n );\n if (control.value !== allSelected) {\n control.patchValue(allSelected, { emitEvent: false });\n }\n });\n }\n\n private filterRRefList(search: string = '') {\n const newList = this.service.getRRefItems(search);\n if (newList) {\n this.rRefListFiltered = newList;\n }\n this.updateSelectAllStates();\n }\n\n /**\n * Retrieve the update day of routing references contractual data for the current company\n */\n private async getDataUpdateDay() {\n try {\n const day = await this.service.getDataUpdateDay(this.company);\n this.updateDay.setValue(day);\n } catch (e) {\n Swal.fire('Erreur', this.translateService._('error_loadcurve_config_on_date_retrive'), 'error');\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { isEqual } from 'lodash';\n\nimport { Company } from 'app/shared/models/company.interface';\nimport { CONTRACTUAL_DATA_SOURCE } from 'app/shared/models/contractual-data.interface';\nimport { ENTITY_TYPE, SOURCE_TYPE } from 'app/shared/models/external-providers.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { ContractualDataService } from 'app/shared/services/contractual-data/contractual-data.service';\nimport {\n ExternalProvidersService,\n UpdateExternalProviders,\n} from 'app/shared/services/external-providers/external-providers.service';\nimport { LoadCurveService } from 'app/shared/services/load-curve/load-curve.service';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\nimport { ACTION, SchedulesService } from 'app/shared/services/schedules/schedules.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\nimport { RRefItem } from './rrefs-selection.interface';\n\n@Injectable()\nexport class RRefSelectionService {\n /** List of routing references */\n private rRefList: RRefItem[] = null;\n\n private EnedisRegExp = new RegExp('^[0-9]{14}$');\n\n public get nbUpdated(): number {\n return this.rRefList ? this.rRefList.filter(x => x.isUpdated).length : 0;\n }\n\n /** Counts */\n public totalRrefsCount = 0;\n public assignedRrefsCount = 0;\n\n constructor(\n private contractualDataService: ContractualDataService,\n private routingReferencesService: RoutingReferencesService,\n private sitesService: SitesService,\n private externalProvidersService: ExternalProvidersService,\n private schedulesService: SchedulesService,\n private loadcurveService: LoadCurveService\n ) {}\n\n /** Returns the number of selected rrefs in the list */\n public getSelectedRrefCount(isAssigned: boolean | null): number {\n if (!this.rRefList) {\n return 0;\n }\n\n if (typeof isAssigned !== 'boolean') {\n return this.rRefList.filter(x => x.formGroup.controls.warrantAuthorization.value).length;\n }\n return this.rRefList.filter(x => x.formGroup.controls.warrantAuthorization.value && x.isAssigned === isAssigned)\n .length;\n }\n\n /**\n * Init rref list and returns that list.\n * @param {string} companyId company id to get rref from\n */\n public async initRRefList(companyId: string): Promise {\n if (this.rRefList && Array.isArray(this.rRefList)) {\n return this.rRefList;\n }\n const routingReferences = await this.routingReferencesService.getRoutingReferences({\n companyId,\n });\n\n const assignedRrefsIds = await this.getAssignatedRrefsIdsList(companyId);\n\n const filteredRoutingReferences = routingReferences.filter(\n x => x.energyType === 'elec' && this.isEnedis(x.reference)\n );\n\n this.totalRrefsCount = filteredRoutingReferences.length;\n\n const rrefSyncDates = await this.getRRefSyncDates(filteredRoutingReferences);\n\n this.rRefList = filteredRoutingReferences.map(x => {\n const isAssigned = Boolean(assignedRrefsIds.find(rRefId => rRefId === x._id));\n this.assignedRrefsCount += isAssigned ? 1 : 0;\n\n const extProviders = (x.externalProviders &&\n x.externalProviders.find(e => e.dataProvider === SOURCE_TYPE.ENEDIS)) || {\n dataProvider: SOURCE_TYPE.ENEDIS,\n warrantAuthorization: false,\n loadCurveVisualization: false,\n contractualData: false,\n siret: '',\n };\n const lastSync: Date = rrefSyncDates[x._id];\n\n return {\n id: x._id,\n reference: x.reference,\n isUpdated: false,\n isAssigned,\n formGroup: new FormGroup({\n warrantAuthorization: new FormControl(extProviders.warrantAuthorization),\n loadCurveVisualization: new FormControl(extProviders.loadCurveVisualization),\n contractualData: new FormControl(extProviders.contractualData),\n siret: new FormControl(extProviders.siret),\n }),\n originalValue: {\n warrantAuthorization: extProviders.warrantAuthorization,\n loadCurveVisualization: extProviders.loadCurveVisualization,\n contractualData: extProviders.contractualData,\n siret: extProviders.siret,\n },\n lastSync,\n waitForSync: this.isWaitingForSync(lastSync),\n };\n });\n return this.rRefList;\n }\n\n /**\n * Retrieves the day on which contractual data will be updated for all routing references of a company\n */\n public async getDataUpdateDay(company: Company): Promise {\n const schedules = await this.schedulesService.getSchedules({\n tag: this.getContractualDataScheduleTag(company),\n });\n if (schedules && schedules.length) {\n return schedules[0].recurrence.dayOfMonth;\n }\n }\n\n /**\n * Change the day on which we update the routing references contractual data of a company\n */\n public async saveDataUpdateDay(company: Company, day: FormControl) {\n await this.schedulesService.createUpdateSchedule(\n this.getContractualDataScheduleTag(company),\n ACTION.SYNC_CONTRACTUAL_DATA,\n { dayOfMonth: day.value },\n { source: 'enedis', companyId: company._id }\n );\n }\n\n /**\n * Save updated items\n */\n public async saveUpdatedItems() {\n const updated = this.rRefList.filter(x => x.isUpdated);\n const updates = updated.map(x => ({\n entityId: x.id,\n entityType: ENTITY_TYPE.ROUTING_REFERENCE,\n provider: {\n dataProvider: SOURCE_TYPE.ENEDIS,\n ...x.formGroup.getRawValue(),\n },\n }));\n await this.externalProvidersService.updateExternalProviders(updates);\n // Reset updated\n updated.forEach(x => {\n x.originalValue = x.formGroup.getRawValue();\n x.waitForSync = this.isWaitingForSync(x.lastSync);\n this.updateItem(x);\n });\n }\n\n /** Reset all updated items to their original value */\n public resetUpdatedItems(): void {\n const updatedItems = this.rRefList.filter(rrefItem => rrefItem.isUpdated);\n\n updatedItems.forEach(rrefItem => {\n rrefItem.formGroup.setValue(rrefItem.originalValue);\n rrefItem.isUpdated = false;\n });\n }\n\n /** Ensure external providers fields coherence */\n public ensureFieldsCoherence(formGroup: FormGroup) {\n const { warrantAuthorization, loadCurveVisualization, contractualData, siret } = formGroup.controls;\n // Update fields\n const opt = { emitEvent: false };\n if (warrantAuthorization.value === true) {\n loadCurveVisualization.enable(opt);\n contractualData.enable(opt);\n siret.enable(opt);\n } else {\n loadCurveVisualization.disable(opt);\n loadCurveVisualization.patchValue(false, opt);\n contractualData.disable(opt);\n contractualData.patchValue(false, opt);\n siret.disable(opt);\n }\n }\n\n /**\n * Perform action on updated items.\n * Currently set `isUpdated` to item\n */\n public updateItem(item: RRefItem) {\n item.isUpdated = this.hasItemBeenUpdated(item);\n }\n\n /**\n * Get filtered list of rref items\n * @param search - search string, can be a regex\n */\n public getRRefItems(search: string = ''): RRefItem[] {\n let regExp: RegExp = null;\n try {\n regExp = new RegExp(search, 'g');\n } catch (e) {\n return;\n }\n return this.rRefList.filter(x => regExp.test(x.reference));\n }\n\n public filterRrefItemsByAssignation(isAssigned: boolean | null): RRefItem[] {\n if (typeof isAssigned !== 'boolean') {\n return this.rRefList.concat();\n }\n return this.rRefList.filter(rRefItem => rRefItem.isAssigned === isAssigned);\n }\n\n /**\n * Returns only routing references not wating for sync and having contractual data retrieval activated\n */\n public filterRRefToSync(rRefs: RRefItem[]): RRefItem[] {\n return rRefs.filter(rRef => !rRef.waitForSync && rRef.originalValue.contractualData);\n }\n\n /**\n * Returns wether an item has been updated or not (from last save).\n */\n private hasItemBeenUpdated(item: RRefItem): boolean {\n return !isEqual(item.formGroup.getRawValue(), item.originalValue);\n }\n\n /**\n * Synchronize the contractual data of all routing references given\n */\n public async synchronizeContractualData(routingReferences: RRefItem[]) {\n const identifiers = [];\n for (let i = 0, len = routingReferences.length; i < len; i++) {\n const routingReference = routingReferences[i];\n identifiers.push({ routingReference: routingReference.reference, fluid: 'elec' });\n routingReference.lastSync = new Date();\n routingReference.waitForSync = this.isWaitingForSync(routingReference.lastSync);\n }\n await this.contractualDataService.synchronize(identifiers, CONTRACTUAL_DATA_SOURCE.ENEDIS);\n }\n\n /**\n * Returns if the last synchronization is in debounce time or not\n */\n private isWaitingForSync(date: Date): boolean {\n return date && new Date().getTime() - date.getTime() < 12 * 3600 * 1000;\n }\n\n /**\n * Returns the last synchronization date for a list of routing references\n */\n private async getRRefSyncDates(routingReferences: RoutingReference[]): Promise> {\n const ids = routingReferences.map(rref => rref._id);\n const summaries = await this.loadcurveService.getRoutingReferencesCommunicatingSummaries(ids);\n\n const rrefSyncDates: Record = {};\n for (let i = 0, len = summaries.length; i < len; i++) {\n const summary = summaries[i];\n if (summary.lastSynchronization) {\n rrefSyncDates[summary.routingReference.id] = new Date(summary.lastSynchronization);\n }\n }\n\n return rrefSyncDates;\n }\n\n /**\n * Return the schedule tag for the contractual data update\n */\n private getContractualDataScheduleTag(company): string {\n return `contractual_data_${SOURCE_TYPE.ENEDIS}_${company._id}`;\n }\n\n private isEnedis(ref: string): boolean {\n return this.EnedisRegExp.test(ref);\n }\n\n /** Returns the assignated routing references ids for given company */\n private async getAssignatedRrefsIdsList(companyId: string): Promise {\n const { data: sites } = await this.sitesService.getSites({ companyId });\n\n const assignedRrefsIds = [];\n\n if (sites && sites.length) {\n sites.forEach(site => {\n if (site.routingReferences && site.routingReferences.length) {\n site.routingReferences.forEach(rRef => assignedRrefsIds.push(rRef._id));\n }\n });\n }\n\n return assignedRrefsIds;\n }\n}\n","export default \"@charset \\\"UTF-8\\\";\\n.provider__bloc {\\n margin-bottom: 15px;\\n}\\n.provider__bloc .provider__content {\\n padding-top: 50px;\\n padding-bottom: 50px;\\n width: 70%;\\n text-align: center;\\n cursor: pointer;\\n}\\n.provider__bloc .provider__bloc--active {\\n color: white;\\n}\\n.provider__bloc .provider__bloc--inactive {\\n border: 1px solid darkgrey;\\n}\\n.column-border {\\n border-right: 1px solid darkgrey;\\n}\\n.row-title {\\n padding-top: 0.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.row-title .column-title {\\n font-weight: bold;\\n text-align: center;\\n}\\n.entity-list__list {\\n margin-top: 15px;\\n}\\n.entity-bloc {\\n border: 1px dashed grey;\\n border-radius: 2px;\\n margin-bottom: 0.5rem;\\n}\\n.entity-bloc.drag-over {\\n background-color: grey;\\n border-color: lightgrey;\\n color: white;\\n}\\n.entity-bloc:hover {\\n cursor: pointer;\\n}\\n.entity-bloc.selected-entity {\\n border-color: #db4b47;\\n}\\n.entity-bloc * {\\n pointer-events: none;\\n}\\n.entity-bloc {\\n padding: 5px 15px;\\n}\\n.fluid-icon-bloc {\\n background-color: lightgrey;\\n margin: 1px;\\n padding: 2px;\\n position: relative;\\n display: inline-block;\\n}\\n.fluid-icon-bloc .fluid-icon {\\n height: 25px;\\n width: 25px;\\n background-color: white;\\n}\\n.fluid-icon-bloc .fluid-icon-badge {\\n position: absolute;\\n top: -5px;\\n right: -5px;\\n font-size: 0.7em;\\n background: #db4b47;\\n color: white;\\n width: 15px;\\n height: 15px;\\n text-align: center;\\n line-height: 15px;\\n border-radius: 50%;\\n box-shadow: 0 0 1px #333;\\n z-index: 1000;\\n}\\n.info-address {\\n font-size: 0.75rem;\\n}\\n.info-entity {\\n padding-top: calc(0.5rem - 1px * 2) !important;\\n padding-bottom: calc(0.5rem - 1px * 2);\\n margin-bottom: 0;\\n white-space: initial;\\n}\\n.info-entity {\\n font-weight: initial;\\n}\\n.data-associated-title {\\n margin: 10px 0;\\n}\\n.data-associated:hover {\\n background-color: antiquewhite;\\n}\\n.error-message {\\n color: red;\\n text-align: end;\\n}\\n.provider-icon-bloc {\\n background-color: transparent;\\n}\\n.linky-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #c1e71b;\\n -webkit-mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/linky.svg\\\");\\n}\\n.ga-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #5bb03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/ga.svg\\\");\\n}\\n.enedis-icon {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #77b03e;\\n -webkit-mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n mask-image: url(\\\"/assets/img/logo/enedis.svg\\\");\\n}\\n.rref_selection_alert {\\n position: absolute;\\n top: 55%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n text-align: center;\\n font-size: 1.2em;\\n font-weight: bold;\\n}\\n.form-group {\\n margin: 0 0 1rem 0;\\n position: initial;\\n}\\n.form-control:disabled,\\n.form-control[readonly] {\\n background-color: #e9ecef !important;\\n}\\n.form-check {\\n padding-left: 1.25rem;\\n}\\n.authorization-confirm-label  {\\n font-weight: bold !important;\\n}\\n.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border: 1px solid #c3e6cb;\\n margin-bottom: 0;\\n font-size: 14px;\\n line-height: 1.25em;\\n}\\n.alert-success:hover {\\n border-color: #155724;\\n}\\n.invalid-feedback {\\n display: block;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZW5lZGlzL3dhcnJhbnQtZm9ybS93YXJyYW50LWZvcm0uY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L2xvYWRpbmctY3VydmVzL2NvbXBhbnktbG9hZGluZy1jdXJ2ZXMuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvbG9hZGluZy1jdXJ2ZXMvcHJvdmlkZXJzL2VuZWRpcy9hc3NpZ25hdGlvbi1lbmVkaXMuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L2xvYWRpbmctY3VydmVzL3Byb3ZpZGVycy9lbmVkaXMvd2FycmFudC1mb3JtL3dhcnJhbnQtZm9ybS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0I7QUNHaEI7RUFDSSxtQkFBQTtBRERKO0FDR0k7RUFDSSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtBRERSO0FDSUk7RUFDSSxZQUFBO0FERlI7QUNLSTtFQUNJLDBCQUFBO0FESFI7QUNPQTtFQUNJLGdDQUFBO0FESko7QUNNQTtFQUNJLG1CQUFBO0VBQ0Esc0JBQUE7QURISjtBQ0tJO0VBQ0ksaUJBQUE7RUFDQSxrQkFBQTtBREhSO0FDT0E7RUFDSSxnQkFBQTtBREpKO0FDU0E7RUFDSSx1QkFBQTtFQUNBLGtCQUhXO0VBSVgscUJBTGlCO0FERHJCO0FDUUk7RUFDSSxzQkFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBRE5SO0FDUUk7RUFDSSxlQUFBO0FETlI7QUNRSTtFQUNJLHFCQy9CQTtBRnlCUjtBQ1VBO0VBQ0ksb0JBQUE7QURQSjtBQ1VBO0VBQ0ksaUJBQUE7QURQSjtBQ1VBO0VBQ0ksMkJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EscUJBQUE7QURQSjtBQ1NJO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtBRFBSO0FDVUk7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkM3REE7RUQ4REEsWUFBQTtFQUNBLFdBUlE7RUFTUixZQVRRO0VBVVIsa0JBQUE7RUFDQSxpQkFYUTtFQVlSLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxhQUFBO0FEUlI7QUNZQTtFQUNJLGtCQUFBO0FEVEo7QUNZQTtFQUNJLDhDQUFBO0VBQ0Esc0NBQUE7RUFDQSxnQkFBQTtFQUNBLG9CQUFBO0FEVEo7QUNZQTtFQUNJLG9CQUFBO0FEVEo7QUNZQTtFQUNJLGNBQUE7QURUSjtBQ2FJO0VBQ0ksOEJBQUE7QURWUjtBQ2NBO0VBQ0ksVUFBQTtFQUNBLGVBQUE7QURYSjtBQ2NBO0VBQ0ksNkJBQUE7QURYSjtBQ2VBO0VFcElJLFlGbUlPO0VFbElQLFdGa0lPO0VFaklQLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCRjhIbUM7RUUxSG5DLHFEQUFBO1VBQUEsNkNBQUE7QUhvSFI7QUNTQTtFRXhJSSxZRm1JTztFRWxJUCxXRmtJTztFRWpJUCw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkZrSW1DO0VFOUhuQyxrREFBQTtVQUFBLDBDQUFBO0FIOEhSO0FDR0E7RUU1SUksWUZtSU87RUVsSVAsV0ZrSU87RUVqSVAsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJGc0ltQztFRWxJbkMsc0RBQUE7VUFBQSw4Q0FBQTtBSHdJUjtBSWxKQTtFQUNJLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSx3Q0FBQTtVQUFBLGdDQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0FKcUpKO0FLM0pBO0VBQ0ksa0JBQUE7RUFDQSxpQkFBQTtBTDhKSjtBSzNKQTs7RUFFSSxvQ0FBQTtBTDhKSjtBSzNKQTtFQUNJLHFCQUFBO0FMOEpKO0FLM0pBO0VBQ0ksNEJBQUE7QUw4Sko7QUszSkE7RUFDSSxjQUFBO0VBQ0EseUJBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBSUEsZUFBQTtFQUNBLG1CQUFBO0FMMkpKO0FLL0pJO0VBQ0kscUJBQUE7QUxpS1I7QUszSkE7RUFDSSxjQUFBO0FMOEpKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZW5lZGlzL3dhcnJhbnQtZm9ybS93YXJyYW50LWZvcm0uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4ucHJvdmlkZXJfX2Jsb2Mge1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuLnByb3ZpZGVyX19ibG9jIC5wcm92aWRlcl9fY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiA1MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNTBweDtcbiAgd2lkdGg6IDcwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ucHJvdmlkZXJfX2Jsb2MgLnByb3ZpZGVyX19ibG9jLS1hY3RpdmUge1xuICBjb2xvcjogd2hpdGU7XG59XG4ucHJvdmlkZXJfX2Jsb2MgLnByb3ZpZGVyX19ibG9jLS1pbmFjdGl2ZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGRhcmtncmV5O1xufVxuXG4uY29sdW1uLWJvcmRlciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGRhcmtncmV5O1xufVxuXG4ucm93LXRpdGxlIHtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcbn1cbi5yb3ctdGl0bGUgLmNvbHVtbi10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5lbnRpdHktbGlzdF9fbGlzdCB7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG59XG5cbi5lbnRpdHktYmxvYyB7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCBncmV5O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5lbnRpdHktYmxvYy5kcmFnLW92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xuICBib3JkZXItY29sb3I6IGxpZ2h0Z3JleTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLmVudGl0eS1ibG9jOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmVudGl0eS1ibG9jLnNlbGVjdGVkLWVudGl0eSB7XG4gIGJvcmRlci1jb2xvcjogI2RiNGI0Nztcbn1cblxuLmVudGl0eS1ibG9jICoge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmVudGl0eS1ibG9jIHtcbiAgcGFkZGluZzogNXB4IDE1cHg7XG59XG5cbi5mbHVpZC1pY29uLWJsb2Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZXk7XG4gIG1hcmdpbjogMXB4O1xuICBwYWRkaW5nOiAycHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmZsdWlkLWljb24tYmxvYyAuZmx1aWQtaWNvbiB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDI1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuLmZsdWlkLWljb24tYmxvYyAuZmx1aWQtaWNvbi1iYWRnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNXB4O1xuICByaWdodDogLTVweDtcbiAgZm9udC1zaXplOiAwLjdlbTtcbiAgYmFja2dyb3VuZDogI2RiNGI0NztcbiAgY29sb3I6IHdoaXRlO1xuICB3aWR0aDogMTVweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJveC1zaGFkb3c6IDAgMCAxcHggIzMzMztcbiAgei1pbmRleDogMTAwMDtcbn1cblxuLmluZm8tYWRkcmVzcyB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLmluZm8tZW50aXR5IHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtIC0gMXB4ICogMikgIWltcG9ydGFudDtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtIC0gMXB4ICogMik7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xufVxuXG4uaW5mby1lbnRpdHkge1xuICBmb250LXdlaWdodDogaW5pdGlhbDtcbn1cblxuLmRhdGEtYXNzb2NpYXRlZC10aXRsZSB7XG4gIG1hcmdpbjogMTBweCAwO1xufVxuXG4uZGF0YS1hc3NvY2lhdGVkOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYW50aXF1ZXdoaXRlO1xufVxuXG4uZXJyb3ItbWVzc2FnZSB7XG4gIGNvbG9yOiByZWQ7XG4gIHRleHQtYWxpZ246IGVuZDtcbn1cblxuLnByb3ZpZGVyLWljb24tYmxvYyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4ubGlua3ktaWNvbiB7XG4gIGhlaWdodDogMzVweDtcbiAgd2lkdGg6IDM1cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzFlNzFiO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9sb2dvL2xpbmt5LnN2Z1wiKTtcbn1cblxuLmdhLWljb24ge1xuICBoZWlnaHQ6IDM1cHg7XG4gIHdpZHRoOiAzNXB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzViYjAzZTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvbG9nby9nYS5zdmdcIik7XG59XG5cbi5lbmVkaXMtaWNvbiB7XG4gIGhlaWdodDogMzVweDtcbiAgd2lkdGg6IDM1cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzdiMDNlO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9sb2dvL2VuZWRpcy5zdmdcIik7XG59XG5cbi5ycmVmX3NlbGVjdGlvbl9hbGVydCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1NSU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5mb3JtLWdyb3VwIHtcbiAgbWFyZ2luOiAwIDAgMXJlbSAwO1xuICBwb3NpdGlvbjogaW5pdGlhbDtcbn1cblxuLmZvcm0tY29udHJvbDpkaXNhYmxlZCxcbi5mb3JtLWNvbnRyb2xbcmVhZG9ubHldIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZiAhaW1wb3J0YW50O1xufVxuXG4uZm9ybS1jaGVjayB7XG4gIHBhZGRpbmctbGVmdDogMS4yNXJlbTtcbn1cblxuLmF1dGhvcml6YXRpb24tY29uZmlybS1sYWJlbMKgIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbn1cblxuLmFsZXJ0LXN1Y2Nlc3Mge1xuICBjb2xvcjogIzE1NTcyNDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MzZTZjYjtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMS4yNWVtO1xufVxuLmFsZXJ0LXN1Y2Nlc3M6aG92ZXIge1xuICBib3JkZXItY29sb3I6ICMxNTU3MjQ7XG59XG5cbi5pbnZhbGlkLWZlZWRiYWNrIHtcbiAgZGlzcGxheTogYmxvY2s7XG59IiwiQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbi5wcm92aWRlcl9fYmxvYyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcblxuICAgIC5wcm92aWRlcl9fY29udGVudCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiA1MHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTBweDtcbiAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnByb3ZpZGVyX19ibG9jLS1hY3RpdmUge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuXG4gICAgLnByb3ZpZGVyX19ibG9jLS1pbmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGRhcmtncmV5O1xuICAgIH1cbn1cblxuLmNvbHVtbi1ib3JkZXIge1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGRhcmtncmV5O1xufVxuLnJvdy10aXRsZSB7XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xuXG4gICAgLmNvbHVtbi10aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxufVxuXG4uZW50aXR5LWxpc3RfX2xpc3Qge1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG59XG5cbiRtYXJnaW5Cb3RQZGxFbnRpdHk6IDAuNXJlbTtcbiRzaGFkb3dSYWRpdXM6IDJweDtcbi5lbnRpdHktYmxvYyB7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIGdyZXk7XG4gICAgYm9yZGVyLXJhZGl1czogJHNoYWRvd1JhZGl1cztcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luQm90UGRsRW50aXR5O1xuXG4gICAgJi5kcmFnLW92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xuICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0Z3JleTtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgICAmLnNlbGVjdGVkLWVudGl0eSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGFkbWluO1xuICAgIH1cbn1cblxuLmVudGl0eS1ibG9jICoge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZW50aXR5LWJsb2Mge1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xufVxuXG4uZmx1aWQtaWNvbi1ibG9jIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZXk7XG4gICAgbWFyZ2luOiAxcHg7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAuZmx1aWQtaWNvbiB7XG4gICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAkYmFkZ2VTaXplOiAxNXB4O1xuICAgIC5mbHVpZC1pY29uLWJhZGdlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC01cHg7XG4gICAgICAgIHJpZ2h0OiAtNXB4O1xuICAgICAgICBmb250LXNpemU6IDAuN2VtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWRtaW47XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgd2lkdGg6ICRiYWRnZVNpemU7XG4gICAgICAgIGhlaWdodDogJGJhZGdlU2l6ZTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogJGJhZGdlU2l6ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMXB4ICMzMzM7XG4gICAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgfVxufVxuXG4uaW5mby1hZGRyZXNzIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5pbmZvLWVudGl0eSB7XG4gICAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtIC0gMXB4ICogMikgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjVyZW0gLSAxcHggKiAyKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xufVxuXG4uaW5mby1lbnRpdHkge1xuICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xufVxuXG4uZGF0YS1hc3NvY2lhdGVkLXRpdGxlIHtcbiAgICBtYXJnaW46IDEwcHggMDtcbn1cblxuLmRhdGEtYXNzb2NpYXRlZCB7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGFudGlxdWV3aGl0ZTtcbiAgICB9XG59XG5cbi5lcnJvci1tZXNzYWdlIHtcbiAgICBjb2xvcjogcmVkO1xuICAgIHRleHQtYWxpZ246IGVuZDtcbn1cblxuLnByb3ZpZGVyLWljb24tYmxvYyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbiRpY29uU2l6ZTogMzVweDtcbi5saW5reS1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKCRpY29uU2l6ZSwgJGljb25TaXplLCAjYzFlNzFiLCAnL2Fzc2V0cy9pbWcvbG9nby9saW5reS5zdmcnKTtcbn1cblxuLmdhLWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oJGljb25TaXplLCAkaWNvblNpemUsICM1YmIwM2UsICcvYXNzZXRzL2ltZy9sb2dvL2dhLnN2ZycpO1xufVxuXG4uZW5lZGlzLWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oJGljb25TaXplLCAkaWNvblNpemUsICM3N2IwM2UsICcvYXNzZXRzL2ltZy9sb2dvL2VuZWRpcy5zdmcnKTtcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiQGltcG9ydCAnLi4vLi4vY29tcGFueS1sb2FkaW5nLWN1cnZlcy5jb21wb25lbnQuc2Nzcyc7XG5cbi5ycmVmX3NlbGVjdGlvbl9hbGVydCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTUlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cbiIsIkBpbXBvcnQgJy4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi9hc3NpZ25hdGlvbi1lbmVkaXMuY29tcG9uZW50LnNjc3MnO1xuXG4uZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luOiAwIDAgMXJlbSAwOyAvLyBTZXQgYmFjayBCb290c3RhcCB2YWx1ZSwgYXMgTWF0ZXJpYWxXcmFwIGJyZWFrcyBpdFxuICAgIHBvc2l0aW9uOiBpbml0aWFsO1xufVxuXG4uZm9ybS1jb250cm9sOmRpc2FibGVkLFxuLmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1ib3JkZXIgIWltcG9ydGFudDtcbn1cblxuLmZvcm0tY2hlY2sge1xuICAgIHBhZGRpbmctbGVmdDogMS4yNXJlbTtcbn1cblxuLmF1dGhvcml6YXRpb24tY29uZmlybS1sYWJlbMKgIHtcbiAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xufVxuXG4uYWxlcnQtc3VjY2VzcyB7XG4gICAgY29sb3I6ICMxNTU3MjQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCNjM2U2Y2I7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMTU1NzI0O1xuICAgIH1cbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcbn1cblxuLmludmFsaWQtZmVlZGJhY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuIl19 */\"","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport * as moment from 'moment';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\n\nimport { Warrant } from 'app/shared/models/warrant.interface';\nimport { ExternalDataService } from 'app/shared/services/external-data/external-data.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { WarrantService } from 'app/shared/services/warrants/warrant.service';\n\nimport { EnedisWarrantService } from '../enedis-warrant.service';\n\n@Component({\n selector: 'ga-enedis-warrant-form',\n templateUrl: './warrant-form.component.html',\n styleUrls: ['./warrant-form.component.scss'],\n providers: [],\n})\nexport class EnedisWarrantFormComponent implements OnInit, OnDestroy {\n @Input() companyId: string;\n\n /** Boolean indicating warrant form edition state */\n public editing = false;\n /** Boolean indicating warrant saving result state */\n public saved = false;\n /** Boolean indicating warrant saving state */\n public saving = false;\n\n /** Message to show under corporate name field */\n public searchBarMessage: string;\n\n /** Warrant form group */\n public warrantForm = new FormGroup({\n corporateName: new FormControl('', Validators.required),\n validityStart: new FormControl('', Validators.required),\n validityEnd: new FormControl('', Validators.required),\n confirmation: new FormControl(false, Validators.requiredTrue),\n });\n\n /** Component's subscriptions */\n private subscription: Subscription;\n\n /** Loaded warrant */\n private warrant: Warrant;\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly warrantService: WarrantService,\n private readonly externalDataService: ExternalDataService,\n private readonly enedisWarrantService: EnedisWarrantService\n ) {}\n\n ngOnInit(): void {\n // Whenever we load a new warrant, store it and update form values\n this.subscription = this.enedisWarrantService.loadedWarrant$.subscribe(warrant => {\n this.warrant = warrant;\n\n if (this.warrant) {\n this.patchWarrantFormValues(this.warrant);\n }\n });\n\n // Whenever user enters a new corporate name, finds if any warrant is matching\n this.subscription.add(\n this.warrantForm\n .get('corporateName')\n .valueChanges.pipe(\n debounceTime(500),\n distinctUntilChanged()\n )\n .subscribe(corporateName => this.onSearchWarrant(corporateName))\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public onClickEdit(): void {\n this.editing = true;\n this.warrantForm.get('confirmation').setValue(false);\n this.warrantForm.markAsUntouched();\n }\n\n public async onSubmitWarrant(): Promise {\n this.warrantForm.markAllAsTouched();\n\n if (this.warrantForm.valid) {\n const formValues = this.getWarrantFormValues();\n\n try {\n // Save corporate name in external associations\n await this.externalDataService.associateExternalData('company', {\n company: this.companyId,\n type: 'enedis',\n externalId: {\n socialDenomination: formValues.corporateName,\n },\n });\n\n await this.enedisWarrantService.editWarrant(this.warrant, formValues);\n\n this.searchBarMessage = null;\n this.editing = false;\n\n Swal.fire({\n icon: 'success',\n title: this.translateService._('success'),\n text: this.translateService._('warrant_success_saving'),\n });\n } catch (error) {\n Swal.fire({\n icon: 'error',\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('warrant_error_saving'),\n });\n }\n }\n }\n\n /** Search for a warrant and update current warrant dates with the found ones */\n private async onSearchWarrant(corporateName: string): Promise {\n if (!this.warrant || this.warrant.corporateName !== corporateName) {\n this.warrant = await this.warrantService.getLatestWarrant({\n corporateName,\n provider: 'enedis',\n providerFluid: 'elec',\n });\n\n if (this.warrant) {\n this.searchBarMessage = 'warrant_edition_existing_warrant_message';\n this.patchWarrantFormValues(this.warrant);\n } else {\n this.searchBarMessage = 'warrant_edition_no_warrant_message';\n this.resetWarrantFormValues();\n }\n }\n }\n\n /** Patch warrant form using given warrant */\n private patchWarrantFormValues(warrant: Warrant): void {\n const validityStart = moment.utc(warrant.validityStart).format('YYYY-MM-DD');\n const validityEnd = moment.utc(warrant.validityEnd).format('YYYY-MM-DD');\n\n this.warrantForm.get('corporateName').setValue(warrant.corporateName);\n this.warrantForm.get('validityStart').setValue(validityStart);\n this.warrantForm.get('validityEnd').setValue(validityEnd);\n }\n\n /** Reset dates of warrant form */\n private resetWarrantFormValues(): void {\n this.warrantForm.get('validityStart').setValue('');\n this.warrantForm.get('validityEnd').setValue('');\n }\n\n /** Returns formatted values from warrant form */\n private getWarrantFormValues(): { corporateName: string; validityStart: string; validityEnd: string } {\n return {\n corporateName: this.warrantForm.get('corporateName').value,\n validityStart: moment\n .utc(this.warrantForm.get('validityStart').value)\n .startOf('date')\n .toISOString(),\n validityEnd: moment\n .utc(this.warrantForm.get('validityEnd').value)\n .endOf('date')\n .toISOString(),\n };\n }\n}\n","export default \".grabbable {\\n cursor: move;\\n /* fallback if grab cursor is unsupported */\\n cursor: grab;\\n cursor: -webkit-grab;\\n}\\n\\n/* (Optional) Apply a \\\"closed-hand\\\" cursor during drag operation. */\\n\\n.grabbing {\\n cursor: move;\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n}\\n\\n.data-bloc {\\n -o-box-shadow: -2px 2px 5px 0px #656565;\\n box-shadow: -2px 2px 5px 0px #656565;\\n border-radius: 2px;\\n margin-top: 0.5rem;\\n padding: 5px 15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvbG9hZGluZy1jdXJ2ZXMvcHJvdmlkZXJzL2dyZWVuYW5hbHl6ZXIvYXNzaWduYXRpb24tZ3JlZW5hbmFseXplci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZ3JlZW5hbmFseXplci9hc3NpZ25hdGlvbi1ncmVlbmFuYWx5emVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksWUFBQTtFQUFjLDJDQUFBO0VBQ2QsWUFBQTtFQUVBLG9CQUFBO0FDRUo7O0FEQ0EsbUVBQUE7O0FBQ0E7RUFDSSxZQUFBO0VBQ0EsZ0JBQUE7RUFFQSx3QkFBQTtBQ0VKOztBRElBO0VBR0ksdUNBQUE7RUFDQSxvQ0FBQTtFQUdBLGtCQVJXO0VBVVgsa0JBQUE7RUFDQSxpQkFBQTtBQ0ZKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9sb2FkaW5nLWN1cnZlcy9wcm92aWRlcnMvZ3JlZW5hbmFseXplci9hc3NpZ25hdGlvbi1ncmVlbmFuYWx5emVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmdyYWJiYWJsZSB7XG4gICAgY3Vyc29yOiBtb3ZlOyAvKiBmYWxsYmFjayBpZiBncmFiIGN1cnNvciBpcyB1bnN1cHBvcnRlZCAqL1xuICAgIGN1cnNvcjogZ3JhYjtcbiAgICBjdXJzb3I6IC1tb3otZ3JhYjtcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbn1cblxuLyogKE9wdGlvbmFsKSBBcHBseSBhIFwiY2xvc2VkLWhhbmRcIiBjdXJzb3IgZHVyaW5nIGRyYWcgb3BlcmF0aW9uLiAqL1xuLmdyYWJiaW5nIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgY3Vyc29yOiBncmFiYmluZztcbiAgICBjdXJzb3I6IC1tb3otZ3JhYmJpbmc7XG4gICAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xufVxuXG4kc2hhZG93Q29sb3I6ICM2NTY1NjU7XG4kc2hhZG93RGlyZWN0aW9uczogLTJweCAycHggNXB4IDBweDtcbiRzaGFkb3dSYWRpdXM6IDJweDtcbi5kYXRhLWJsb2Mge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHNoYWRvd0NvbG9yO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHNoYWRvd0RpcmVjdGlvbnMgJHNoYWRvd0NvbG9yO1xuICAgIC1vLWJveC1zaGFkb3c6ICRzaGFkb3dEaXJlY3Rpb25zICRzaGFkb3dDb2xvcjtcbiAgICBib3gtc2hhZG93OiAkc2hhZG93RGlyZWN0aW9ucyAkc2hhZG93Q29sb3I7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkc2hhZG93UmFkaXVzO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHNoYWRvd1JhZGl1cztcbiAgICBib3JkZXItcmFkaXVzOiAkc2hhZG93UmFkaXVzO1xuXG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xufVxuIiwiLmdyYWJiYWJsZSB7XG4gIGN1cnNvcjogbW92ZTtcbiAgLyogZmFsbGJhY2sgaWYgZ3JhYiBjdXJzb3IgaXMgdW5zdXBwb3J0ZWQgKi9cbiAgY3Vyc29yOiBncmFiO1xuICBjdXJzb3I6IC1tb3otZ3JhYjtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG59XG5cbi8qIChPcHRpb25hbCkgQXBwbHkgYSBcImNsb3NlZC1oYW5kXCIgY3Vyc29yIGR1cmluZyBkcmFnIG9wZXJhdGlvbi4gKi9cbi5ncmFiYmluZyB7XG4gIGN1cnNvcjogbW92ZTtcbiAgY3Vyc29yOiBncmFiYmluZztcbiAgY3Vyc29yOiAtbW96LWdyYWJiaW5nO1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG59XG5cbi5kYXRhLWJsb2Mge1xuICAtbW96LWJveC1zaGFkb3c6ICM2NTY1NjU7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogLTJweCAycHggNXB4IDBweCAjNjU2NTY1O1xuICAtby1ib3gtc2hhZG93OiAtMnB4IDJweCA1cHggMHB4ICM2NTY1NjU7XG4gIGJveC1zaGFkb3c6IC0ycHggMnB4IDVweCAwcHggIzY1NjU2NTtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgcGFkZGluZzogNXB4IDE1cHg7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { ExternalDataService } from '../../../../../../services/external-data/external-data.service';\n\ninterface ListItem {\n name: string;\n value: string;\n}\n\n@Component({\n selector: 'ga-loadcurve-assignation-ga',\n templateUrl: './assignation-greenanalyzer.component.html',\n styleUrls: ['./assignation-greenanalyzer.component.scss'],\n providers: [],\n})\nexport class LoadCurveAssignationGAComponent implements OnInit {\n clients: ListItem[] = [];\n sites: ListItem[] = [];\n projects: ListItem[] = [];\n\n projectsGA: any = [];\n\n draggedData: any = null;\n\n loadingProjects = false;\n\n constructor(private externalDataService: ExternalDataService) {}\n\n ngOnInit() {\n this.externalDataService\n .getGAClients()\n .then(response => {\n const clients = response.data;\n this.clients = this.listMapSort(clients);\n })\n .catch(() => {\n this.projectsGA = [];\n this.projects = [];\n this.sites = [];\n this.clients = [];\n });\n }\n\n /**\n * Set selected client\n * @param {string} value - client id from GA\n */\n selectClient(value: string) {\n this.projectsGA = [];\n this.projects = [];\n this.sites = [];\n\n if (!value) {\n return;\n }\n\n this.externalDataService\n .getGASites(value)\n .then(response => {\n const sites = response.data;\n this.sites = this.listMapSort(sites);\n })\n .catch(() => {\n this.projectsGA = [];\n this.projects = [];\n this.sites = [];\n });\n }\n\n /**\n * Set selected site\n * @param {string} value - site id from GA\n */\n selectSite(value: string) {\n this.projectsGA = [];\n this.projects = [];\n\n if (!value) {\n return;\n }\n this.externalDataService\n .getGAProjects(value)\n .then(response => {\n const projects = response.data;\n this.projects = this.listMapSort(projects);\n })\n .catch(() => {\n this.projectsGA = [];\n this.projects = [];\n });\n }\n\n /**\n * Set selected project\n * @param {string} value - project id from GA\n */\n selectProject(value: string) {\n this.projectsGA = [];\n if (!value) {\n return;\n }\n this.loadingProjects = true;\n this.externalDataService\n .getGAProject(value)\n .then(response => {\n this.projectsGA.push(response.data);\n this.loadingProjects = false;\n })\n .catch(() => {\n this.projectsGA = [];\n this.loadingProjects = false;\n });\n }\n\n /**\n * Handle lists from GA, as they're all with the same format ([{name, _id}]).\n * Create objects for a list and sort it by name alphabetically\n * @param list - List of items\n * @returns {Array} list of simple items ready to be used by a selector\n */\n private listMapSort(list: any[]): ListItem[] {\n return list\n .map(item => {\n return {\n name: item.name,\n value: item._id,\n };\n })\n .sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n });\n }\n\n /*********\n * DRAG AND DROP\n */\n\n onDragStart(event: DragEvent, data) {\n // TODO Set transfer to an external data\n const externalData = {\n externalId: data._id,\n type: 'ga',\n };\n const toTransfer = JSON.stringify(externalData);\n event.dataTransfer.setData('text/plain', toTransfer);\n event.dataTransfer.effectAllowed = 'copy';\n }\n}\n","export default \".profile-container {\\n font-size: 14px;\\n}\\n.profile-container .form-control {\\n font-size: 14px;\\n}\\n.btn-container-save {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n.citron-btn {\\n padding: 10px;\\n margin: 20px 0 0 20px;\\n}\\n.add-icon {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n margin-top: 10px;\\n}\\n.remove-icon {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n}\\n.warning-icon {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_warning.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_warning.svg\\\");\\n}\\n.disabled {\\n pointer-events: none;\\n}\\nlabel {\\n font-weight: 600;\\n}\\n.branches ul,\\n.holding {\\n padding-left: 2em;\\n}\\n.citron-icon {\\n height: 40px;\\n width: 32px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n -webkit-mask-position-y: 4px;\\n}\\n.citron-deleting {\\n margin-left: 50px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcHJvZmlsZS9jb21wYW55LXByb2ZpbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcHJvZmlsZS9jb21wYW55LXByb2ZpbGUuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL21peGlucy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLGVBQUE7QUNGSjtBRElJO0VBQ0ksZUFBQTtBQ0ZSO0FETUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxxQkFBQTtVQUFBLHlCQUFBO0FDSEo7QURNQTtFQUNJLGFBQUE7RUFDQSxxQkFBQTtBQ0hKO0FETUE7RUVwQkksWUZxQmlCO0VFcEJqQixXRm9CdUI7RUVuQnZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ2lCQTtFRGJBLCtEQUFBO1VBQUEsdURBQUE7RUZXSixnQkFBQTtBQ0dKO0FEQUE7RUV6QkksWUYwQmlCO0VFekJqQixXRnlCdUI7RUV4QnZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ2lCQTtFRGJBLHFFQUFBO1VBQUEsNkRBQUE7QUR3QlI7QUROQTtFRTdCSSxZRjhCaUI7RUU3QmpCLFdGNkJ1QjtFRTVCdkIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDaUJBO0VEYkEsbUVBQUE7VUFBQSwyREFBQTtBRGtDUjtBRFpBO0VBQ0ksb0JBQUE7QUNlSjtBRFpBO0VBQ0ksZ0JBQUE7QUNlSjtBRFpBOztFQUVJLGlCQUFBO0FDZUo7QURaQTtFRTlDSSxZRitDaUI7RUU5Q2pCLFdGOEN1QjtFRTdDdkIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDaUJBO0VEYkEsa0VBQUE7VUFBQSwwREFBQTtFRnFDSiw0QkFBQTtBQ3FCSjtBRGxCQTtFQUNJLGlCQUFBO0FDcUJKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9wcm9maWxlL2NvbXBhbnktcHJvZmlsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5cbi5wcm9maWxlLWNvbnRhaW5lciB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB9XG59XG5cbi5idG4tY29udGFpbmVyLXNhdmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWFyZ2luOiAyMHB4IDAgMCAyMHB4O1xufVxuXG4uYWRkLWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMjBweCwgMjBweCwgJGFkbWluLCAnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19hZGQuc3ZnJyk7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbn1cblxuLnJlbW92ZS1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDIwcHgsIDIwcHgsICRhZG1pbiwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fdW5jaGVja2VkLnN2ZycpO1xufVxuXG4ud2FybmluZy1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDMwcHgsIDMwcHgsICRhZG1pbiwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fd2FybmluZy5zdmcnKTtcbn1cblxuLmRpc2FibGVkIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxubGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5icmFuY2hlcyB1bCxcbi5ob2xkaW5nIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDJlbTtcbn1cblxuLmNpdHJvbi1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDQwcHgsIDMycHgsICRhZG1pbiwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2l0cm9uLnN2ZycpO1xuICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbi15OiA0cHg7XG59XG5cbi5jaXRyb24tZGVsZXRpbmcge1xuICAgIG1hcmdpbi1sZWZ0OiA1MHB4O1xufVxuIiwiLnByb2ZpbGUtY29udGFpbmVyIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLnByb2ZpbGUtY29udGFpbmVyIC5mb3JtLWNvbnRyb2wge1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5idG4tY29udGFpbmVyLXNhdmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIG1hcmdpbjogMjBweCAwIDAgMjBweDtcbn1cblxuLmFkZC1pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fYWRkLnN2Z1wiKTtcbiAgbWFyZ2luLXRvcDogMTBweDtcbn1cblxuLnJlbW92ZS1pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fdW5jaGVja2VkLnN2Z1wiKTtcbn1cblxuLndhcm5pbmctaWNvbiB7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3dhcm5pbmcuc3ZnXCIpO1xufVxuXG4uZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxubGFiZWwge1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uYnJhbmNoZXMgdWwsXG4uaG9sZGluZyB7XG4gIHBhZGRpbmctbGVmdDogMmVtO1xufVxuXG4uY2l0cm9uLWljb24ge1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiAzMnB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19jaXRyb24uc3ZnXCIpO1xuICAtd2Via2l0LW1hc2stcG9zaXRpb24teTogNHB4O1xufVxuXG4uY2l0cm9uLWRlbGV0aW5nIHtcbiAgbWFyZ2luLWxlZnQ6IDUwcHg7XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { AdminCompanyService } from 'app/pages/admin/company/company.service';\nimport { CompanyService } from 'app/shared/components/admin/company/company.service';\nimport { ManagerTypes } from 'app/shared/constants/manager-types-list.constants';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { FileStorageService } from 'app/shared/services/files/file-storage.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { UploadFilesTileComponent } from '../../../upload/upload-files-tile/upload-files-tile.component';\n\nimport { Location } from '@angular/common';\nimport { HttpErrorResponse, HttpEventType } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Company } from 'app/shared/models/company.interface';\nimport { File } from 'app/shared/models/upload-file.interface';\nimport { User } from 'app/shared/models/users.interface';\nimport * as clone from 'clone';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\n\nconst logoStates = {\n NO_LOGO: 'noLogo',\n HAS_LOGO: 'hasLogo',\n};\n\ninterface Logo {\n _id?: string;\n url: string;\n}\n\n@Component({\n selector: 'ga-company-profile-tab',\n templateUrl: './company-profile.component.html',\n styleUrls: ['./company-profile.component.scss'],\n providers: [],\n})\nexport class CompanyProfileComponent implements OnInit {\n @Input() company: any = null;\n private _canEdit = false;\n @Input()\n set canEdit(canEdit: boolean) {\n this._canEdit = canEdit;\n }\n get canEdit(): boolean {\n return this._canEdit && !this._isDeleting;\n }\n @Input() canDelete = false;\n\n isCreating = true;\n currentStateLogo: string = logoStates.NO_LOGO;\n user: any;\n isAffiliated = false;\n\n organizationsList: any = [];\n companiesList: any = [];\n companiesListFiltered: any = [];\n\n affiliationType: string;\n affiliation: any;\n branchesList: any = [];\n initialBranchesList: any = []; // need to store the initial branches, in case they are removed, we need to remove their holding property in db\n\n uploadTilesData = {\n [logoStates.NO_LOGO]: {\n label: 'Glissez et déposez votre logo',\n subLabel: \"On s'occupe de tout !\",\n imgUrl: 'assets/img/icons/005-hotel-with-three-floors.png',\n },\n [logoStates.HAS_LOGO]: {\n label: '',\n subLabel: '',\n imgUrl: 'assets/img/backgrounds/default-avatar.jpg',\n },\n };\n\n /**\n * Is company being deleted\n */\n private _isDeleting = false;\n set isDeleting(isDeleting: boolean) {\n this._isDeleting = isDeleting;\n this.deletingChange.emit(this._isDeleting);\n }\n get isDeleting(): boolean {\n return this._isDeleting;\n }\n\n /**\n * UPDATE MANAGERS and COMPLEXITY\n */\n\n /** Complexity value list */\n public complexityList: number[] = [null, 1, 2, 3, 4, 5, 6, 7];\n /** Energy manager list */\n public energyManagerList: User[] = [];\n /** data manager list */\n public dataManagerList: User[] = [];\n /** Selected energy manager (user _id) */\n public energyManager: string;\n /** Selected data manager (user _id) */\n public dataManager: string;\n\n /**\n * Emit event when deleting action is started and finished\n */\n @Output() deletingChange: EventEmitter = new EventEmitter();\n\n @Output() save: EventEmitter = new EventEmitter();\n\n @ViewChild('upload', { static: false }) private uploadComponent: UploadFilesTileComponent;\n\n constructor(\n private adminCompanyService: AdminCompanyService,\n private companiesService: CompaniesService,\n private router: Router,\n private location: Location,\n private sessionService: SessionService,\n private usersService: UsersService,\n private utilsService: UtilsService,\n private companyService: CompanyService,\n private fileStorageService: FileStorageService\n ) {}\n\n ngOnInit() {\n this.initData();\n }\n\n /**\n * Returns TRUE if the current user is super admin\n *\n * @returns {boolean}\n */\n get displayManagersAssignation(): boolean {\n return this.usersService.isAdmin(this.sessionService.getUser());\n }\n\n /**\n * Get the full name of the specified user\n *\n * @param {User} user\n * @returns {string}\n */\n public getUserFullName(user: User): string {\n if (!user) {\n return '';\n }\n const lastname = typeof user.name === 'string' ? user.name : '';\n const firstname = typeof user.firstname === 'string' ? user.firstname : '';\n return `${lastname} ${firstname}`;\n }\n\n /**\n * Set energy manager and data manager to the company\n */\n private setCompanyManagers() {\n this.company.managers = [];\n\n if (this.energyManager) {\n this.company.managers.push({\n user: this.energyManager,\n type: ManagerTypes.ENERGY_MANAGER,\n });\n }\n\n if (this.dataManager) {\n this.company.managers.push({\n user: this.dataManager,\n type: ManagerTypes.DATA_MANAGER,\n });\n }\n }\n\n /**\n * Get logo column class by user type\n *\n * @returns {string} - class\n */\n get colLogo(): string {\n return this.displayManagersAssignation ? 'col-md-4' : 'col-md-6';\n }\n\n /**\n * Get profile column class by user type\n *\n * @returns {string} - class\n */\n get colProfile(): string {\n return this.displayManagersAssignation ? 'col-md-8' : 'col-md-6';\n }\n\n /**\n * Get profile sub columns class by user type\n *\n * @returns {string} - class\n */\n get colForm(): string {\n return this.displayManagersAssignation ? 'col-md-6' : 'col-md-12';\n }\n\n /**\n * Set energy manager list\n * Set data manager list\n *\n * @returns {Promise}\n */\n private async initManagersData(): Promise {\n const allUsers = await this.usersService.getAllUsersList(this.company._id, ['users', 'viewers']);\n const userTypes = [UserTypes.ADMIN, UserTypes.ENERGY_MANAGER];\n\n // Set energy managers and data managers selection list\n let energyManagers = this.companyService.getCompanyUsers(this.company.users, allUsers, userTypes);\n energyManagers = this.utilsService.sortAlphabetically(energyManagers, 'name');\n\n const companyViewers = this.companyService.getCompanyUsers(this.company.viewers, allUsers, userTypes);\n let dataManagers = energyManagers.concat(companyViewers);\n dataManagers = this.utilsService.sortAlphabetically(dataManagers, 'name');\n\n this.energyManagerList = [null].concat(energyManagers);\n this.dataManagerList = [null].concat(dataManagers);\n\n // Set selected energy manager\n this.energyManager = this.companyService.getCompanyManager(this.company.managers, [\n ManagerTypes.ENERGY_MANAGER,\n ]);\n\n // Set selected data manager\n this.dataManager = this.companyService.getCompanyManager(this.company.managers, [ManagerTypes.DATA_MANAGER]);\n }\n\n async initData() {\n try {\n this.affiliationType = '1'; // 1: branches, 2: holding - select branches by default\n\n const results = await Promise.all([\n this.adminCompanyService.getCompanyProperties(),\n this.companiesService.getVisibleCompaniesForUser(),\n ]);\n\n this.organizationsList = results[0].data.organizations;\n this.companiesList = results[1];\n this.companiesListFiltered = results[1];\n\n if (this.company) {\n this.isCreating = false;\n this.setAffiliations();\n if (this.displayManagersAssignation) {\n await this.initManagersData();\n }\n } else {\n this.location.go('/admin/entreprises/creer');\n\n this.company = {\n name: '',\n address: '',\n organization: this.organizationsList[0].id,\n };\n }\n this.setCompanyLogo();\n } catch (err) {\n // err.errorCode is set to error_getListCompanies\n this.getSwalMsg(err.errorCode);\n return this.router.navigateByUrl('/admin/entreprises');\n }\n }\n\n /**\n * Load the affiliations from the company being edited\n */\n setAffiliations() {\n // fill branchesList selectbox with the companies whose holding is the current company\n // add also the branches which aren't editable by the user\n this.company.branches.forEach(branch => {\n const branchEditable = this.companiesList.find(c => c._id === branch._id);\n\n if (branchEditable) {\n this.branchesList.push(branchEditable);\n } else {\n this.branchesList.push(branch);\n }\n });\n\n this.branchesList = this.utilsService.sortAlphabetically(this.branchesList, 'name');\n\n // need to record the inital branches in case we have to remove them in db\n this.initialBranchesList = this.branchesList.slice();\n\n // if the company is a holding or has a holding, the 'holding & branches' block is visible\n if (this.company.holding || this.branchesList.length) {\n this.isAffiliated = true;\n }\n\n // holding & branches select box : update it by removing the branches and holding of the current company\n this.filterCompaniesListWithAffiliations();\n }\n\n /**\n * Holding & branches select box : update it by removing the branches and holding of the current company\n */\n filterCompaniesListWithAffiliations() {\n // remove the company's branches\n this.companiesListFiltered = this.companiesList.filter(\n comp => !this.branchesList.find(c => c._id === comp._id)\n );\n\n // remove the company's holding\n if (this.company.holding) {\n this.companiesListFiltered = this.companiesListFiltered.filter(\n comp => comp._id.toString() !== this.company.holding._id\n );\n }\n\n // remove the current company from the selectbox list\n this.companiesListFiltered = this.companiesListFiltered.filter(\n comp => comp._id.toString() !== this.company._id\n );\n this.companiesListFiltered = this.utilsService.sortAlphabetically(this.companiesListFiltered, 'name');\n\n // select the first company in the select box\n this.affiliation = this.companiesListFiltered.length ? this.companiesListFiltered[0] : [];\n }\n\n /**\n * add either a branch or a holding\n */\n addAffiliation() {\n // selection is on 'branches'\n if (this.affiliationType === '1') {\n this.addBranch();\n } else {\n // selection is on 'holding'\n this.addHolding();\n }\n\n // update the list in the companies selectbox\n this.filterCompaniesListWithAffiliations();\n\n // select the new first company in the selectbox\n this.affiliation = this.companiesListFiltered[0];\n }\n\n /**\n * Remove the given branch from the branchList\n *\n * @param {{ _id: string; name: string }} branchToRemove\n */\n removeBranch(branchToRemove: { _id: string; name: string }) {\n this.branchesList = this.branchesList.filter(branch => branch._id !== branchToRemove._id);\n\n // update the list in the companies selectbox\n this.filterCompaniesListWithAffiliations();\n }\n\n /**\n * The user can remove the holding if he can edit the page, and can see the holding\n *\n * @returns {boolean}\n */\n canRemoveHolding(): boolean {\n return this.canEdit && this.companiesList.find(c => c._id === this.company.holding._id);\n }\n\n /**\n * Check if the given branch can be removed\n *\n * @param {string} branchId\n * @returns {boolean}\n */\n canRemoveBranch(branchId: string): boolean {\n return this.canEdit && this.companiesList.find(c => c._id === branchId);\n }\n\n /**\n * Remove the holding from the company\n */\n removeHolding() {\n if (this.company.holding) {\n this.company.holding = null;\n\n // update the list in the companies selectbox\n this.filterCompaniesListWithAffiliations();\n }\n }\n\n /**\n * Used to disable or not the button to add company holding/branch\n *\n * @returns {string}\n */\n isDisabled(): string {\n return this.companiesListFiltered.length ? '' : 'disabled';\n }\n\n /**\n * Add the affiliation to the branch list ordered alphabetically\n */\n addBranch() {\n this.branchesList.push(this.affiliation);\n this.branchesList = this.utilsService.sortAlphabetically(this.branchesList, 'name');\n }\n\n /**\n * Set the company holding\n */\n addHolding() {\n this.company.holding = { _id: this.affiliation._id, name: this.affiliation.name };\n }\n\n /**\n * Delete all affiliations when the 'holding & branches' selectbox is unchecked\n */\n deleteAffiliation() {\n this.isAffiliated = !this.isAffiliated;\n\n // if uncheck the box, delete affiliations\n if (!this.isAffiliated) {\n // delete holding\n if (this.company.holding) {\n delete this.company.holding;\n }\n\n // delete branches\n this.branchesList = [];\n this.affiliation = null;\n }\n\n // update the 'holding & branches' companies selectbox\n this.filterCompaniesListWithAffiliations();\n }\n\n // ******* SAVE COMPANY *****\n\n /**\n * on click on 'Create' or 'Update'\n *\n * @returns {Promise}\n */\n async saveCompanyProfile(): Promise {\n if (this.displayManagersAssignation) {\n this.setCompanyManagers();\n }\n if (this.isCompanyValid()) {\n try {\n const companyToSave = this.getCompanyFormated();\n await this.saveCompany(companyToSave);\n\n // update the branches company in db: add their new holding or delete their old one\n await this.handleBranchesToRemove();\n await this.handleBranchesToAdd();\n this.getSwalMsg('company_saved');\n this.router.navigateByUrl('/admin/entreprise/' + this.company._id);\n this.company.branches = this.branchesList.map(b => ({ _id: b._id, name: b.name }));\n this.save.emit(this.company);\n } catch (err) {\n // err.errorCode : error_createNewCompany || error_add_branch || error_delete_branch\n this.getSwalMsg(err.errorCode);\n }\n }\n }\n\n /**\n * check if the form info are valid before saving\n *\n * @returns {boolean}\n */\n isCompanyValid(): boolean {\n // the fields can't be empty\n if (this.hasEmptyFields()) {\n this.getSwalMsg('empty_field');\n return false;\n } else if (this.isCreating) {\n // if we create a company, its name needs to be unique\n if (this.alreadyInList()) {\n this.getSwalMsg('company_already_exists');\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Get formated Company\n *\n * @returns {Company}\n */\n getCompanyFormated(): Company {\n const companyFormated = clone(this.company);\n if (companyFormated.holding) {\n companyFormated.holding = companyFormated.holding._id;\n }\n return companyFormated;\n }\n\n /**\n * check if some fields are empty before saving\n *\n * @returns {boolean}\n */\n hasEmptyFields(): boolean {\n return (\n !this.company.name ||\n this.company.name === '' ||\n !this.company.address ||\n this.company.address === '' ||\n !this.company.organization\n );\n }\n\n /**\n * Check if the company name already exists\n *\n * @returns {boolean}\n */\n alreadyInList(): boolean {\n return this.companiesList.some(c => {\n return c.name === this.company.name;\n });\n }\n\n /**\n * Create or update the company\n *\n * @param {Company} companyToSave\n * @returns {Promise}\n */\n async saveCompany(companyToSave: Company): Promise {\n if (!this.isCreating) {\n await this.adminCompanyService.updateCompany(companyToSave);\n return;\n } else {\n const res = await this.adminCompanyService.createCompany(companyToSave);\n this.company = res;\n return;\n }\n }\n\n /**\n * if some of the company's branches were removed, their 'holding' property needs to be removed in db\n *\n * @returns {Promise}\n */\n async handleBranchesToRemove(): Promise {\n try {\n const branchesToRemove = this.initialBranchesList.filter(\n oldBranch => !this.branchesList.includes(oldBranch)\n );\n await Promise.all(\n branchesToRemove.map(async branch => {\n branch.holding = null;\n await this.adminCompanyService.updateCompany(branch);\n return;\n })\n );\n return;\n } catch (err) {\n err.errorCode = 'error_delete_branch';\n throw err;\n }\n }\n\n /**\n * if the company has some new holdings, their 'holding' property has to be updated with the company's id\n *\n * @returns {Promise}\n */\n async handleBranchesToAdd(): Promise {\n try {\n const branchesToAdd = this.branchesList.filter(oldBranch => !this.initialBranchesList.includes(oldBranch));\n await Promise.all(\n branchesToAdd.map(async branch => {\n branch.holding = this.company._id;\n await this.adminCompanyService.updateCompany(branch);\n return;\n })\n );\n return;\n } catch (err) {\n err.errorCode = 'error_add_branch';\n throw err;\n }\n }\n\n /**\n * Delete company\n *\n * @returns {Promise}\n */\n async deleteCompany(): Promise {\n const doDelete: boolean = await this.confirmDeleteCompany();\n if (doDelete) {\n try {\n this.isDeleting = true;\n await this.companiesService.deleteCompany(this.company._id);\n this.isDeleting = false;\n Swal.fire(\n this.company.name + ' supprimé',\n 'Toutes les données du client ' + this.company.name + ' ont bien été supprimées',\n 'success'\n );\n } catch (err) {\n this.isDeleting = false;\n this.getSwalMsg('error_delete_company');\n return;\n }\n await this.redirectAfterDelete();\n }\n }\n\n /**\n * Display two confirmation modals to delete company\n *\n * @returns {Promise} returns true if user confirm that they want to delete company, false otherwise.\n */\n private async confirmDeleteCompany(): Promise {\n const result1 = await Swal.fire({\n title: 'Supprimer ' + this.company.name + ' ?',\n text:\n 'Êtes-vous sûr de vouloir supprimer le compte client ' +\n this.company.name +\n \" ?\\\n Cette opération est irréversible, toutes les données du client vont être supprimées (factures, sites, PDLs, ...).\\\n Si vous avez un doute, n'hésitez à contacter Green Alternative.\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, supprimer le compte ' + this.company.name,\n cancelButtonText: 'Annuler',\n });\n if (result1 && result1.value) {\n const result2 = await Swal.fire({\n title: 'Vraiment sûr ?',\n text:\n 'Dernière étape avant la suppression du client ' +\n this.company.name +\n '.\\\n Vous ne pourrez plus annuler cette suppression.',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Supprimer ' + this.company.name,\n cancelButtonText: 'Annuler',\n input: 'checkbox',\n inputPlaceholder: ' Je confirme vouloir supprimer ' + this.company.name,\n inputValidator: value => {\n return !value && 'Veuillez confirmer vouloir supprimer le client';\n },\n });\n if (result2 && result2.value) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Redirect user after the company is deleted\n *\n * @returns {Promise}\n */\n private async redirectAfterDelete(): Promise {\n try {\n const connectedCompany = this.sessionService.getCompany();\n const companies = await this.companiesService.refreshUserCompaniesList();\n if (connectedCompany && connectedCompany._id !== this.company._id) {\n this.router.navigateByUrl('/admin/entreprises');\n return;\n }\n // Go to favorite or first one\n // If the user isn't linked to any company, logout user\n const user = this.sessionService.getUser();\n if (user.favouriteCompany && companies.find(x => x._id === user.favouriteCompany)) {\n this.sessionService.setCompany(companies.find(x => x._id === user.favouriteCompany));\n this.router.navigate(['/accueil'], { queryParams: { refresh: true } });\n } else if (companies.length) {\n this.sessionService.setCompany(companies[0]);\n this.router.navigate(['/accueil'], { queryParams: { refresh: true } });\n } else {\n this.sessionService.clearLocalStorage();\n this.router.navigate(['/authentification']);\n }\n return;\n } catch (error) {\n this.router.navigate(['/accueil'], { queryParams: { refresh: true } });\n }\n }\n\n // **** LOGO UPLOAD AND LOAD ****\n\n /**\n * Click on add a logo\n */\n clickOnFileInput() {\n this.uploadComponent.clickOnInput();\n }\n\n /**\n * Get upload logo path and labels to display\n *\n * @returns {{ label: string; subLabel: string; imgUrl: string }}\n */\n getUploadLogoLabels(): { label: string; subLabel: string; imgUrl: string } {\n return this.uploadTilesData[this.currentStateLogo];\n }\n\n /**\n * Check if there is current state logo\n *\n * @returns {boolean}\n */\n hasCurrentState(): boolean {\n return Boolean(this.currentStateLogo);\n }\n\n /**\n * Check if there is a logo\n *\n * @returns {boolean}\n */\n hasLogo(): boolean {\n return this.currentStateLogo === logoStates.HAS_LOGO;\n }\n\n /**\n * files coming from drag & drop - upload them in db + link their upload id to the company's logo property\n *\n * @param {File[]} files\n * @returns {void}\n */\n addFiles(files: File[]) {\n if (!this.canEdit) {\n return;\n }\n if (files) {\n // the company must be saved first before uploading a file - need to link the upload to the company\n if (!this.isCreating) {\n // if multiple files were uploaded - take the first one\n const file = files[0];\n\n const formatedFile = {\n filename: file.name,\n fileObject: file, // file Object containing raw data\n };\n\n // save logo in db + link its id to the company's logo property\n return this.adminCompanyService.uploadPicture(formatedFile, this.company._id, 'company').subscribe(\n event => {\n if (event.type === HttpEventType.Response) {\n this.company.logo = event.body['data'].logo;\n\n // set the new logo path\n this.setLogoState(this.company.logo);\n this.getSwalMsg('picture_saved');\n }\n },\n (err: HttpErrorResponse) => {\n this.getSwalMsg(err.error.errorCode || 'error_savePicture');\n }\n );\n } else {\n this.getSwalMsg('need_company_saved_before_logo');\n }\n } else {\n this.getSwalMsg('file_type_not_allowed');\n }\n }\n\n /**\n * set the new logo path\n *\n * @param {Logo} logo\n * @returns {void}\n */\n async setLogoState(logo: Logo): Promise {\n if (logo && logo.url) {\n this.fileStorageService\n .getUrl(logo._id)\n .then(res => {\n this.uploadTilesData[logoStates.HAS_LOGO].imgUrl = res;\n this.currentStateLogo = logoStates.HAS_LOGO;\n })\n .catch(() => {\n this.currentStateLogo = logoStates.NO_LOGO;\n });\n } else {\n this.currentStateLogo = logoStates.NO_LOGO;\n }\n }\n\n /**\n * set the logo info\n */\n setCompanyLogo() {\n // if we create a new company, set the default empty logo in background\n if (this.isCreating || !this.company.logo) {\n this.currentStateLogo = logoStates.NO_LOGO;\n } else {\n this.setLogoState(this.company.logo);\n }\n }\n\n /**\n * Get the Save profile button label\n *\n * @returns {string}\n */\n getSaveBtnLabel() {\n return !this.isCreating ? 'Mettre à jour' : 'Créer';\n }\n\n /**\n * Trigger the sweet alert\n * The alert message depends of the given error code\n *\n * @param {string} msg_code\n * @returns {void}\n */\n getSwalMsg(msg_code: string): void {\n const messages = {\n empty_field: ['Attention', \"L'un des champs n'est pas renseigné.\", 'warning'],\n error_getListUsers: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des autres utilisateurs.',\n 'error',\n ],\n error_updateCompany: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement du profil.\",\n 'error',\n ],\n error_createCompany: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement du profil.\",\n 'error',\n ],\n company_already_exists: [\n 'Nom déjà utilisé',\n 'Chaque client doit avoir un nom unique. Veuillez choisir un autre nom.',\n 'error',\n ],\n company_code_not_unique: [\n 'Code déjà utilisé',\n \"Chaque client au sein d'un même groupe doit avoir un code unique. Veuillez choisir un autre code.\",\n 'error',\n ],\n company_saved: ['Sauvegardé', \"L'entreprise a bien été sauvegardée\", 'success'],\n need_company_saved_before_logo: [\n 'Attention',\n \"Le client doit être créée avant d'enregistrer le logo.\",\n 'warning',\n ],\n logo_need_png_extension: ['Attention', \"Le fichier uploadé doit avoir l'extension '.png'\", 'warning'],\n file_type_not_allowed: [\n 'Attention',\n `Le fichier uploadé doit avoir l'extension '.png', '.jpeg' ou '.jpg'`,\n 'warning',\n ],\n file_size_max: ['Attention', `Le fichier uploadé doit faire moins de 5 Mo`, 'warning'],\n error_getListCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des filiales.',\n 'error',\n ],\n error_savePicture: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement de la photo.\",\n 'error',\n ],\n error_deletePicture: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la suppression de la photo.',\n 'error',\n ],\n error_delete_branch: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant la suppression d'une filiale.\",\n 'error',\n ],\n error_add_branch: ['Toutes nos excuses', \"Une erreur est survenue pendant l'ajout d'une filiale.\", 'error'],\n company_holding_branch_looping: [\n 'Impossible',\n 'Il est impossible de créer des boucles entre maisons mères et filiales (ou sous filiales, etc...)',\n 'error',\n ],\n error_delete_company: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la suppression du client.',\n 'error',\n ],\n picture_saved: ['Sauvegardé', 'La photo a bien été enregistrée', 'success'],\n default_error: ['Toutes nos excuses', 'Une erreur est survenue.', 'error'],\n };\n\n if (!messages[msg_code]) {\n msg_code = 'default_error';\n }\n\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n\n /**\n * Delete the company logo\n */\n async deleteLogoPicture() {\n try {\n const company = await this.adminCompanyService.deletePictureCompany(this.company._id);\n this.company = company;\n this.setLogoState(this.company.logo);\n } catch (err) {\n // err.error_code is set to error_deletePicture\n this.getSwalMsg(err.error_code);\n }\n }\n}\n","export default \".rref-card {\\n font-size: 12px;\\n padding: 10px 0;\\n margin: 5px 0;\\n}\\n.rref-card .fluid-icon {\\n height: 20px;\\n width: 20px;\\n}\\n.rref-card .rename-icon {\\n color: #db4b47;\\n}\\n.rref-card .rref-name {\\n margin-bottom: 1rem;\\n font-size: 13px;\\n font-weight: bold;\\n}\\n.rref-card .rref-address {\\n font-size: 12px;\\n margin-bottom: 2rem;\\n}\\n.rref-card .rref-section-title {\\n font-weight: bold;\\n}\\n.highlighted {\\n color: #db4b47;\\n font-weight: bold;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLWtleWZpZ3VyZXMtY2FyZC9ycmVmLWtleWZpZ3VyZXMtY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9ycmVmLW1lcmdlL3JyZWYta2V5ZmlndXJlcy1jYXJkL3JyZWYta2V5ZmlndXJlcy1jYXJkLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQTtFQUNJLGVBTkk7RUFPSixlQUFBO0VBQ0EsYUFBQTtBQ1BKO0FEUUk7RUFDSSxZQVRHO0VBVUgsV0FWRztBQ0lYO0FEUUk7RUFDSSxjRVFBO0FEZFI7QURRSTtFQUNJLG1CQUFBO0VBQ0EsZUFuQkE7RUFvQkEsaUJBQUE7QUNOUjtBRFFJO0VBQ0ksZUF0QkE7RUF1QkEsbUJBQUE7QUNOUjtBRFFJO0VBQ0ksaUJBQUE7QUNOUjtBRFVBO0VBQ0ksY0VUSTtFRlVKLGlCQUFBO0FDUEoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L3JyZWYtbWVyZ2UvcnJlZi1rZXlmaWd1cmVzLWNhcmQvcnJlZi1rZXlmaWd1cmVzLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4kc2l6ZTE6IDEzcHg7XG4kc2l6ZTI6IDEycHg7XG4kaWNvblNpemU6IDIwcHg7XG4kYnRuUGFkZGluZ1k6IDhweDtcbiRjYXJkTWFyZ2luWTogNXB4O1xuXG4ucnJlZi1jYXJkIHtcbiAgICBmb250LXNpemU6ICRzaXplMjtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgbWFyZ2luOiAkY2FyZE1hcmdpblkgMDtcbiAgICAuZmx1aWQtaWNvbiB7XG4gICAgICAgIGhlaWdodDogJGljb25TaXplO1xuICAgICAgICB3aWR0aDogJGljb25TaXplO1xuICAgIH1cbiAgICAucmVuYW1lLWljb24ge1xuICAgICAgICBjb2xvcjogJGFkbWluO1xuICAgIH1cbiAgICAucnJlZi1uYW1lIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAkc2l6ZTE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAucnJlZi1hZGRyZXNzIHtcbiAgICAgICAgZm9udC1zaXplOiAkc2l6ZTI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgfVxuICAgIC5ycmVmLXNlY3Rpb24tdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG59XG5cbi5oaWdobGlnaHRlZCB7XG4gICAgY29sb3I6ICRhZG1pbjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cbiIsIi5ycmVmLWNhcmQge1xuICBmb250LXNpemU6IDEycHg7XG4gIHBhZGRpbmc6IDEwcHggMDtcbiAgbWFyZ2luOiA1cHggMDtcbn1cbi5ycmVmLWNhcmQgLmZsdWlkLWljb24ge1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xufVxuLnJyZWYtY2FyZCAucmVuYW1lLWljb24ge1xuICBjb2xvcjogI2RiNGI0Nztcbn1cbi5ycmVmLWNhcmQgLnJyZWYtbmFtZSB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ucnJlZi1jYXJkIC5ycmVmLWFkZHJlc3Mge1xuICBmb250LXNpemU6IDEycHg7XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG4ucnJlZi1jYXJkIC5ycmVmLXNlY3Rpb24tdGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmhpZ2hsaWdodGVkIHtcbiAgY29sb3I6ICNkYjRiNDc7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\n\nimport { ModalComponent } from 'app/shared/components/common/modal/modal.component';\nimport { SortFilters } from 'app/shared/services/sort/sort-filter/sort-filter.interface';\nimport { RoutingReferenceKeyfigures } from '../rref-merge.interface';\nimport { RRefRename } from '../rref-rename/rref-rename.interface';\n\n@Component({\n selector: 'rref-keyfigures-card',\n templateUrl: './rref-keyfigures-card.component.html',\n styleUrls: ['./rref-keyfigures-card.component.scss'],\n})\nexport class RrefKeyFiguresCardComponent implements OnInit {\n /** Routing refererence keyfigures */\n @Input() keyFigures: RoutingReferenceKeyfigures;\n\n /** Can card be closed */\n @Input() canClose = true;\n\n /** Can routing reference's reference be edited */\n @Input() canRename = false;\n\n /** Event fired on card closed */\n @Output() closeCard: EventEmitter = new EventEmitter();\n\n /**\n * Event fired when rename modal registered a change, so card needs to be refreshed\n */\n @Output() updatedCard: EventEmitter = new EventEmitter();\n\n /** Rename modal component */\n @ViewChild(ModalComponent, { static: true }) public renameModal: ModalComponent;\n\n public modalProperties: RRefRename = {\n _id: null,\n reference: null,\n alias: [],\n };\n\n // Used by orderby pipe to sort contracts by starting date\n public dateStartSortFilters: SortFilters = {\n order: 'asc',\n property: {\n name: 'dateStart',\n type: 'date_string',\n path: 'dateStart',\n },\n };\n\n constructor() {}\n\n ngOnInit() {\n this.modalProperties = {\n _id: this.keyFigures._id,\n reference: this.keyFigures.reference,\n alias: this.keyFigures.alias.map(x => x.reference),\n };\n }\n\n /**\n * Close current card\n */\n public close() {\n if (this.canClose) {\n this.closeCard.emit();\n }\n }\n\n /**\n * Open rename modal\n */\n public openRename() {\n this.modalProperties = {\n _id: this.keyFigures._id,\n reference: this.keyFigures.reference,\n alias: this.keyFigures.alias.map(x => x.reference),\n };\n if (this.canRename) {\n this.renameModal.show();\n }\n }\n\n /**\n * After rename, close modal and triggers changes happened\n * @param {boolean} hasChanged - true if changes made, false otherwise.\n */\n public async afterRename(hasChanged: boolean) {\n this.renameModal.close();\n if (hasChanged) {\n this.updatedCard.emit();\n }\n }\n\n /**\n * @returns {boolean} true is the modal shown, false otherwise\n */\n public get isModalShown(): boolean {\n return this.renameModal.isShown;\n }\n}\n","export default \"#rref-search-input {\\n width: 85%;\\n border-radius: 17px;\\n font-size: 12px;\\n}\\n#rref-search-input::-webkit-input-placeholder {\\n /* Chrome/Opera/Safari */\\n font-size: 12px;\\n}\\n#rref-search-input::-moz-placeholder {\\n font-size: 12px;\\n}\\n#rref-search-input::-ms-input-placeholder {\\n font-size: 12px;\\n}\\n#rref-search-input::placeholder {\\n font-size: 12px;\\n}\\n#site-cards-list {\\n max-height: 60vh;\\n overflow-y: scroll;\\n}\\n.site-card {\\n width: 85%;\\n border-radius: 17px;\\n background-color: #f0f0f0;\\n font-size: 13px;\\n padding: 10px;\\n margin: 5px 0;\\n}\\n.site-card .site-name {\\n margin-bottom: 1rem;\\n}\\n.site-card .site-address {\\n font-size: 12px;\\n margin-bottom: 2rem;\\n}\\n.site-card .rrefs-list {\\n padding: 5px 10px;\\n}\\n.site-card .rrefs-list .site-rref {\\n border-radius: 17px;\\n background-color: #ffffff;\\n margin: 5px 0;\\n padding: 2px 10px;\\n}\\n.site-card .rrefs-list .site-rref .fluid-icon {\\n height: 17px;\\n width: 17px;\\n}\\n.site-card .rrefs-list .site-rref .rref-alias-nb {\\n color: white;\\n background-color: #db4b47;\\n border-radius: 17px;\\n padding: 0 5px;\\n min-width: 1.3rem;\\n text-align: center;\\n}\\n#displayMoreBtn .citron-btn {\\n font-size: 13px;\\n border-radius: 17px !important;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLWxpc3QvcnJlZi1saXN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L3JyZWYtbWVyZ2UvcnJlZi1saXN0L3JyZWYtbGlzdC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0E7RUFDSSxVQVRTO0VBVVQsbUJBWEs7RUFZTCxlQVRJO0FDRFI7QURXSTtFQUNJLHdCQUFBO0VBQ0EsZUFaQTtBQ0dSO0FEV0k7RUFDSSxlQWZBO0FDTVI7QURXSTtFQUNJLGVBbEJBO0FDU1I7QURXSTtFQUNJLGVBckJBO0FDWVI7QURhQTtFQUNJLGdCQUFBO0VBQ0Esa0JBQUE7QUNWSjtBRGFBO0VBQ0ksVUFqQ1M7RUFrQ1QsbUJBbkNLO0VBb0NMLHlCQTdCWTtFQThCWixlQW5DSTtFQW9DSixhQUFBO0VBQ0EsYUFBQTtBQ1ZKO0FEV0k7RUFDSSxtQkFBQTtBQ1RSO0FEV0k7RUFDSSxlQXpDQTtFQTBDQSxtQkFBQTtBQ1RSO0FEV0k7RUFDSSxpQkFBQTtBQ1RSO0FEVVE7RUFDSSxtQkFsREg7RUFtREcseUJBQUE7RUFDQSxhQUFBO0VBQ0EsaUJBQUE7QUNSWjtBRFNZO0VBQ0ksWUFuREw7RUFvREssV0FwREw7QUM2Q1g7QURTWTtFQUNJLFlBQUE7RUFDQSx5QkVyQ1I7RUZzQ1EsbUJBN0RQO0VBOERPLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0FDUGhCO0FEY0k7RUFDSSxlQXRFQTtFQXVFQSw4QkFBQTtFQUNBLGdCQXJFTTtFQXNFTixtQkF0RU07QUMyRGQiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L3JyZWYtbWVyZ2UvcnJlZi1saXN0L3JyZWYtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbiRyYWRpdXM6IDE3cHg7XG4kY2FyZC13aWR0aDogODUlO1xuJHNpemUxOiAxM3B4O1xuJHNpemUyOiAxMnB4O1xuJGljb25TaXplOiAxN3B4O1xuJGJ0blBhZGRpbmdZOiA4cHg7XG4kY2FyZE1hcmdpblk6IDVweDtcbiRjYXJkQmFja2dvdW5kOiAjZjBmMGYwO1xuXG4jcnJlZi1zZWFyY2gtaW5wdXQge1xuICAgIHdpZHRoOiAkY2FyZC13aWR0aDtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICAvKiBDaHJvbWUvT3BlcmEvU2FmYXJpICovXG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgIH1cbiAgICAmOjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgZm9udC1zaXplOiAkc2l6ZTI7XG4gICAgfVxuICAgICY6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgIH1cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgIH1cbn1cblxuI3NpdGUtY2FyZHMtbGlzdCB7XG4gICAgbWF4LWhlaWdodDogNjB2aDtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbi5zaXRlLWNhcmQge1xuICAgIHdpZHRoOiAkY2FyZC13aWR0aDtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJkQmFja2dvdW5kO1xuICAgIGZvbnQtc2l6ZTogJHNpemUxO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWFyZ2luOiAkY2FyZE1hcmdpblkgMDtcbiAgICAuc2l0ZS1uYW1lIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICB9XG4gICAgLnNpdGUtYWRkcmVzcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIH1cbiAgICAucnJlZnMtbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAuc2l0ZS1ycmVmIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgbWFyZ2luOiA1cHggMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgICAgICAgICAgLmZsdWlkLWljb24ge1xuICAgICAgICAgICAgICAgIGhlaWdodDogJGljb25TaXplO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAkaWNvblNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucnJlZi1hbGlhcy1uYiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhZG1pbjtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4O1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMS4zcmVtO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuI2Rpc3BsYXlNb3JlQnRuIHtcbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUxO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAkYnRuUGFkZGluZ1k7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkYnRuUGFkZGluZ1k7XG4gICAgfVxufVxuIiwiI3JyZWYtc2VhcmNoLWlucHV0IHtcbiAgd2lkdGg6IDg1JTtcbiAgYm9yZGVyLXJhZGl1czogMTdweDtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuI3JyZWYtc2VhcmNoLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgLyogQ2hyb21lL09wZXJhL1NhZmFyaSAqL1xuICBmb250LXNpemU6IDEycHg7XG59XG4jcnJlZi1zZWFyY2gtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICBmb250LXNpemU6IDEycHg7XG59XG4jcnJlZi1zZWFyY2gtaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbiNycmVmLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBmb250LXNpemU6IDEycHg7XG59XG5cbiNzaXRlLWNhcmRzLWxpc3Qge1xuICBtYXgtaGVpZ2h0OiA2MHZoO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbi5zaXRlLWNhcmQge1xuICB3aWR0aDogODUlO1xuICBib3JkZXItcmFkaXVzOiAxN3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIG1hcmdpbjogNXB4IDA7XG59XG4uc2l0ZS1jYXJkIC5zaXRlLW5hbWUge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuLnNpdGUtY2FyZCAuc2l0ZS1hZGRyZXNzIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuLnNpdGUtY2FyZCAucnJlZnMtbGlzdCB7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuLnNpdGUtY2FyZCAucnJlZnMtbGlzdCAuc2l0ZS1ycmVmIHtcbiAgYm9yZGVyLXJhZGl1czogMTdweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgbWFyZ2luOiA1cHggMDtcbiAgcGFkZGluZzogMnB4IDEwcHg7XG59XG4uc2l0ZS1jYXJkIC5ycmVmcy1saXN0IC5zaXRlLXJyZWYgLmZsdWlkLWljb24ge1xuICBoZWlnaHQ6IDE3cHg7XG4gIHdpZHRoOiAxN3B4O1xufVxuLnNpdGUtY2FyZCAucnJlZnMtbGlzdCAuc2l0ZS1ycmVmIC5ycmVmLWFsaWFzLW5iIHtcbiAgY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBib3JkZXItcmFkaXVzOiAxN3B4O1xuICBwYWRkaW5nOiAwIDVweDtcbiAgbWluLXdpZHRoOiAxLjNyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuI2Rpc3BsYXlNb3JlQnRuIC5jaXRyb24tYnRuIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBib3JkZXItcmFkaXVzOiAxN3B4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { RrefMergeService } from '../rref-merge.service';\n\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { SortFilters } from 'app/shared/services/sort/sort-filter/sort-filter.interface';\n\n@Component({\n selector: 'rref-merge-list',\n templateUrl: './rref-list.component.html',\n styleUrls: ['./rref-list.component.scss'],\n})\nexport class RrefListComponent implements OnInit {\n /** Number of sites to display by batch (at start, then when displaying more, ...) */\n private readonly nbSitesBatch = 10;\n\n /** Sites to display with routing references. List is filtered with search and paginated */\n public sites: SitePopulated[] = [];\n\n /** Number of sites to display */\n public nbSitesToDisplay = 10;\n\n /** Search text of input */\n private searchText = '';\n\n /** Form control to handle input change */\n public searchFormControl: FormControl;\n\n /** Boolean that indicates if there is more sites that can be displayed */\n public hasMoreSiteToDisplay = false;\n\n /** Used by orderby pipe to sort RRefs by energy type */\n public sortFilters: SortFilters = {\n order: 'asc',\n property: {\n name: 'energy_and_reference',\n type: 'string',\n paths: ['energyType', 'reference'],\n },\n };\n\n constructor(private rrefMergeService: RrefMergeService, private sitesService: SitesService) {}\n\n ngOnInit() {\n // Subscribe to sites list change\n this.rrefMergeService.sites$.subscribe({\n next: sites => {\n if (!sites) {\n return;\n }\n // Reset nb sites to display\n this.nbSitesToDisplay = this.nbSitesBatch;\n // Refresh sites list\n this.refreshSitesDisplay(sites);\n },\n });\n // Init form control\n this.searchFormControl = new FormControl('');\n // Subscribe to form control change. Use debounce time\n this.searchFormControl.valueChanges\n .pipe(\n debounceTime(300),\n // allow the users to correct themselves before the 300ms if necessary to avoid a search\n distinctUntilChanged()\n )\n .subscribe({\n next: newSearch => {\n // Reset nb sites to display\n this.nbSitesToDisplay = this.nbSitesBatch;\n // Refresh sites list with search\n this.searchText = newSearch;\n this.refreshSitesDisplay(this.rrefMergeService.sites$.value);\n },\n });\n }\n\n /**\n * Display more site based on site increment value\n */\n public displayMoreSites() {\n this.nbSitesToDisplay += this.nbSitesBatch;\n this.refreshSitesDisplay(this.rrefMergeService.sites$.value);\n }\n\n /**\n * Refresh sites to display\n * @param {SitePopulated[]} sites - full sites list to use\n */\n private refreshSitesDisplay(sites: SitePopulated[]) {\n const sitesList: SitePopulated[] = [];\n const searchText = this.searchText;\n this.hasMoreSiteToDisplay = true;\n for (let i = 0, len = sites.length; sitesList.length < this.nbSitesToDisplay && i < len; i++) {\n if (this.sitesService.filterSiteOnSearch(sites[i], searchText)) {\n sitesList.push(sites[i]);\n }\n // If we reach the end of all sites and list is still incomplete,\n // then it means there no more site to be displayed\n if (i === len - 1 && sitesList.length < this.nbSitesToDisplay) {\n this.hasMoreSiteToDisplay = false;\n }\n }\n this.sites = sitesList;\n }\n\n /**\n * When start dragging a routing reference, store routing reference data in event as plain.\n * (events can't store json)\n * @param {DragEvent} event\n * @param {RoutingReference} routingReference\n */\n public onDragStart(event: DragEvent, routingReference: RoutingReference) {\n const data = routingReference;\n const toTransfer = JSON.stringify(data);\n event.dataTransfer.setData('text/plain', toTransfer);\n event.dataTransfer.effectAllowed = 'copy';\n }\n}\n","export default \".routing-reference-keyfigures {\\n border-radius: 17px;\\n background-color: #f0f0f0;\\n}\\n\\n#mergeBtn .citron-btn {\\n font-size: 13px;\\n border-radius: 17px !important;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLW1lcmdlLXByZXZpZXcvcnJlZi1tZXJnZS1wcmV2aWV3LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L3JyZWYtbWVyZ2UvcnJlZi1tZXJnZS1wcmV2aWV3L3JyZWYtbWVyZ2UtcHJldmlldy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTtFQUNJLG1CQU5LO0VBT0wseUJBTm1CO0FDRXZCOztBRFFJO0VBQ0ksZUFWQTtFQVdBLDhCQUFBO0VBQ0EsZ0JBWE07RUFZTixtQkFaTTtBQ09kIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9ycmVmLW1lcmdlL3JyZWYtbWVyZ2UtcHJldmlldy9ycmVmLW1lcmdlLXByZXZpZXcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIkcmFkaXVzOiAxN3B4O1xuJGtleWZpZ3VyZS1iYWNrZ3JvdW5kOiAjZjBmMGYwO1xuJHNpemUxOiAxM3B4O1xuJGJ0blBhZGRpbmdZOiA4cHg7XG5cbi5yb3V0aW5nLXJlZmVyZW5jZS1rZXlmaWd1cmVzIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRrZXlmaWd1cmUtYmFja2dyb3VuZDtcbn1cblxuI21lcmdlQnRuIHtcbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUxO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAkYnRuUGFkZGluZ1k7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkYnRuUGFkZGluZ1k7XG4gICAgfVxufVxuIiwiLnJvdXRpbmctcmVmZXJlbmNlLWtleWZpZ3VyZXMge1xuICBib3JkZXItcmFkaXVzOiAxN3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xufVxuXG4jbWVyZ2VCdG4gLmNpdHJvbi1idG4ge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGJvcmRlci1yYWRpdXM6IDE3cHggIWltcG9ydGFudDtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgcGFkZGluZy1ib3R0b206IDhweDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport Swal from 'sweetalert2';\n\nimport { RoutingReferenceKeyfigures } from '../rref-merge.interface';\nimport { RrefMergeService } from '../rref-merge.service';\n\n@Component({\n selector: 'rref-merge-preview',\n templateUrl: './rref-merge-preview.component.html',\n styleUrls: ['./rref-merge-preview.component.scss'],\n})\nexport class RrefMergePreviewComponent implements OnInit {\n /** Merge routing reference preview */\n public rRefPreview: RoutingReferenceKeyfigures = null;\n\n constructor(private rrefMergeService: RrefMergeService) {}\n\n ngOnInit() {\n this.rrefMergeService.rRefPreview$.subscribe({\n next: value => {\n this.rRefPreview = value;\n },\n });\n }\n\n /**\n * Handle merge. Fire confirmation modal then, if accepted, merge routing references.\n */\n public async merge() {\n const destination = this.rrefMergeService.rRefDestination$.value;\n const origin = this.rrefMergeService.rRefOrigin$.value;\n\n const result = await Swal.fire({\n title: `Fusionner les données du PDL ${origin.reference} vers ${destination.reference}`,\n text: `La fusion des données de ces deux PDLs est irréversible. Elle impacte les données de contrats, factures, sites, etc.\\n\\nSouhaitez-vous confirmer cette fusion ?`,\n confirmButtonText: `Confirmer`,\n showCancelButton: true,\n cancelButtonText: `Annuler`,\n });\n\n if (result.value && !result.dismiss) {\n try {\n await this.rrefMergeService.mergeRoutingReferences(destination._id, origin._id);\n } catch (e) {\n this.rrefMergeService.displayError(e.errorCode);\n }\n await this.rrefMergeService.afterMerge();\n }\n }\n}\n","export default \".merge-col:not(:last-child) {\\n border-right: 1px solid darkgray;\\n}\\n\\n.col-title {\\n width: 100%;\\n}\\n\\n.col-title .title {\\n text-align: center;\\n font-size: 14px;\\n font-weight: bold;\\n}\\n\\n.col-title .border-selected {\\n position: absolute;\\n border: 3px solid #db4b47;\\n border-radius: 17px;\\n width: 30%;\\n left: 35%;\\n top: 2rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLW1lcmdlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L3JyZWYtbWVyZ2UvcnJlZi1tZXJnZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTtFQUNJLGdDQUFBO0FDSko7O0FET0E7RUFDSSxXQUFBO0FDSko7O0FES0k7RUFDSSxrQkFBQTtFQUNBLGVBWEk7RUFZSixpQkFBQTtBQ0hSOztBREtJO0VBRUksa0JBQUE7RUFDQSx5QkFBQTtFQUNBLG1CQWpCQztFQWtCRCxVQUpjO0VBS2QsU0FBQTtFQUNBLFNBQUE7QUNKUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLW1lcmdlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcblxuJHRpdGxlU2l6ZTogMTRweDtcbiRyYWRpdXM6IDE3cHg7XG5cbi5tZXJnZS1jb2w6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgZGFya2dyYXk7XG59XG5cbi5jb2wtdGl0bGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC50aXRsZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAkdGl0bGVTaXplO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gICAgLmJvcmRlci1zZWxlY3RlZCB7XG4gICAgICAgICRib3JkZXJXaWR0aDogMzAlO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICRhZG1pbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICAgICAgd2lkdGg6ICRib3JkZXJXaWR0aDtcbiAgICAgICAgbGVmdDogNTAlLSAoJGJvcmRlcldpZHRoLzIpOyAvLyBNdXN0IGJlIGNlbnRlcmVkIHNvIDUwJSAtIGhhbGYgb2YgaXRzIHdpZHRoXG4gICAgICAgIHRvcDogMnJlbTtcbiAgICB9XG59XG4iLCIubWVyZ2UtY29sOm5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBkYXJrZ3JheTtcbn1cblxuLmNvbC10aXRsZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNvbC10aXRsZSAudGl0bGUge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4uY29sLXRpdGxlIC5ib3JkZXItc2VsZWN0ZWQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvcmRlcjogM3B4IHNvbGlkICNkYjRiNDc7XG4gIGJvcmRlci1yYWRpdXM6IDE3cHg7XG4gIHdpZHRoOiAzMCU7XG4gIGxlZnQ6IDM1JTtcbiAgdG9wOiAycmVtO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { combineLatest } from 'rxjs';\n\nimport { Company } from 'app/shared/models/company.interface';\nimport { map } from 'rxjs/operators';\nimport { RrefMergeService } from './rref-merge.service';\n\n@Component({\n selector: 'rref-merge-tab',\n templateUrl: './rref-merge.component.html',\n styleUrls: ['./rref-merge.component.scss'],\n providers: [RrefMergeService],\n})\nexport class RrefMergeComponent implements OnInit {\n /** Company to administrate */\n @Input() company: Company;\n\n /**\n * Indicates current column with action.\n * 0 : no routing reference selected (left col)\n * 1 : destination routing reference selected (middle col)\n * 2 : preview routing reference displayed\n */\n public currentColumn = 0;\n\n constructor(private rrefMergeService: RrefMergeService) {}\n\n async ngOnInit() {\n // Init service\n await this.rrefMergeService.init(this.company);\n this.initCurrentColumnEvent();\n }\n\n /**\n * Init current column display event management\n */\n private initCurrentColumnEvent() {\n combineLatest([this.rrefMergeService.rRefDestination$, this.rrefMergeService.rRefPreview$])\n .pipe(\n map(([destination, preview]) => {\n if (!destination) {\n return 0;\n }\n if (!preview) {\n return 1;\n }\n return 2;\n })\n )\n .subscribe({\n next: index => {\n this.currentColumn = index;\n },\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport moment = require('moment');\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\n\nimport { Company } from 'app/shared/models/company.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { KeyDataService } from 'app/shared/services/key-data/key-data.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\nimport { RoutingReferenceKeyfigures } from './rref-merge.interface';\n\n@Injectable()\nexport class RrefMergeService extends PageService {\n /** Event fired with sites list is updated */\n public sites$: BehaviorSubject = new BehaviorSubject(null);\n\n /** Event fired with destination routing reference keyfigures */\n public rRefDestination$: BehaviorSubject = new BehaviorSubject<\n RoutingReferenceKeyfigures\n >(null);\n\n /** Event fired with origin routing reference keyfigures */\n public rRefOrigin$: BehaviorSubject = new BehaviorSubject(\n null\n );\n\n /** Keyfigures display */\n public rRefPreview$: BehaviorSubject = new BehaviorSubject(\n null\n );\n\n /** Company related to service */\n private company: Company;\n\n constructor(\n public apiService: ApiService,\n private sitesService: SitesService,\n private keyDataService: KeyDataService\n ) {\n super(apiService);\n }\n\n /**\n * Init service data\n * @param {Company} company - company to init in component\n */\n public async init(company: Company) {\n this.company = company;\n await this.refreshSites();\n combineLatest([this.rRefDestination$, this.rRefOrigin$])\n .pipe(\n map(([destination, origin]) => ({\n destination,\n origin,\n }))\n )\n .subscribe({\n next: v => {\n if (v.destination && v.origin) {\n // Get rref preview\n this.getPreviewKeyFigures(v.destination, v.origin);\n } else {\n this.rRefPreview$.next(null);\n }\n },\n });\n // Subscribe to site refresh to refresh keyfigures\n this.sites$.subscribe({\n next: async sites => {\n await this.refreshKeyFigures(sites);\n },\n });\n }\n\n /**\n * Refresh sites and trigger site event\n */\n public async refreshSites() {\n const sites = await this.sitesService.getSites({ companies: this.company._id });\n this.sitesService.sortSitesPopulatedByName(sites.data);\n this.sites$.next(sites.data);\n }\n\n /**\n * Get keyfigures combined related to 1..n routing references\n * @param {string[]} ids\n */\n public async getKeyfigures(\n rRef: { _id: string; reference: string; energyType: string; alias: string[]; address: any },\n ids: string[]\n ): Promise {\n const rRefKeyData = await this.keyDataService.getRRefsKeyData(ids);\n if (!rRefKeyData) {\n throw new Error('Empty routing reference key data');\n }\n const rRefKeyFigures: RoutingReferenceKeyfigures = {\n _id: rRef._id,\n reference: rRef.reference,\n energyType: rRef.energyType,\n alias: rRef.alias.map(x => ({ reference: x })),\n address: rRef.address,\n contracts: rRefKeyData.contracts.map(x => ({\n contractId: x.contractId,\n reference: x.reference,\n dateStart: moment(x.dateStart).format('DD/MM/YYYY'),\n dateEnd: moment(x.dateEnd).format('DD/MM/YYYY'),\n })),\n keyfigures: {\n contracts: rRefKeyData.totalContracts,\n bills: rRefKeyData.totalBills,\n },\n };\n return rRefKeyFigures;\n }\n\n /**\n * Get keyfigures for given routing reference and set it as destination (emit related subject)\n * @param {RoutingReference} rRef\n */\n public async grabDestinationKeyFigures(rRef: RoutingReference): Promise {\n const keyfigures = await this.getKeyfigures(rRef, [rRef._id]);\n this.rRefDestination$.next(keyfigures);\n }\n\n /**\n * Refresh selected key figures\n */\n public async refreshKeyFigures(sites: SitePopulated[]) {\n const destinationId = this.rRefDestination$.value ? this.rRefDestination$.value._id : null;\n const originId = this.rRefOrigin$.value ? this.rRefOrigin$.value._id : null;\n // Get routing references ids related to destination and origin\n const rRefsToGet: string[] = [];\n if (destinationId) {\n rRefsToGet.push(destinationId);\n }\n if (originId) {\n rRefsToGet.push(originId);\n }\n if (!rRefsToGet.length) {\n return;\n }\n // Get routing references related to destination and origin\n const rRefs: RoutingReference[] = [];\n for (let i = 0, len = sites.length; i < len; i++) {\n for (let j = 0, len2 = sites[i].routingReferences.length; j < len2; j++) {\n if (rRefsToGet.includes(sites[i].routingReferences[j]._id)) {\n rRefs.push(sites[i].routingReferences[j]);\n }\n }\n }\n // Grab keyfigures realted to routing references ids related to destination and origin\n if (destinationId) {\n const rRef = rRefs.find(x => x._id === destinationId);\n if (rRef) {\n await this.grabDestinationKeyFigures(rRef);\n }\n }\n if (originId) {\n const rRef = rRefs.find(x => x._id === originId);\n if (rRef) {\n await this.grabOriginKeyFigures(rRef);\n }\n }\n }\n\n /**\n * Clear destination routing reference\n */\n public clearDestination(): null {\n this.rRefDestination$.next(null);\n return null;\n }\n\n /**\n * Get keyfigures for given routing reference and set it as origin (emit related subject)\n * @param {RoutingReference} rRef\n */\n public async grabOriginKeyFigures(rRef: RoutingReference): Promise {\n const keyfigures = await this.getKeyfigures(rRef, [rRef._id]);\n this.rRefOrigin$.next(keyfigures);\n }\n\n /**\n * Clear origin routing reference\n */\n public clearOrigin(): null {\n this.rRefOrigin$.next(null);\n return null;\n }\n\n /**\n * Get keyfigures for preview and set it as preview (emit related subject)\n * @param {RoutingReferenceKeyfigures} destination\n * @param {RoutingReferenceKeyfigures} origin\n */\n public async getPreviewKeyFigures(\n destination: RoutingReferenceKeyfigures,\n origin: RoutingReferenceKeyfigures\n ): Promise {\n // Get merged list of alias of destination and origin\n const aliasMerged: string[] = destination.alias.concat(origin.alias).reduce((memo, x) => {\n if (!memo.includes(x.reference)) {\n memo.push(x.reference);\n }\n return memo;\n }, []);\n const rRefData = {\n _id: destination._id,\n reference: destination.reference,\n energyType: destination.energyType,\n alias: aliasMerged,\n address: destination.address,\n };\n const keyfigures = await this.getKeyfigures(rRefData, [destination._id, origin._id]);\n this.setPreviewHighlighted(keyfigures, destination);\n this.rRefPreview$.next(keyfigures);\n return keyfigures;\n }\n\n /**\n * Compare destination and preview values and set highlighted valued in preview\n * @param {RoutingReferenceKeyfigures} preview\n * @param {RoutingReferenceKeyfigures} destination\n */\n private setPreviewHighlighted(preview: RoutingReferenceKeyfigures, destination: RoutingReferenceKeyfigures) {\n if (!destination || !preview) {\n return;\n }\n // Set new alias as highlighted\n preview.alias.forEach(alias => {\n const destAlias = destination.alias.find(x => x.reference === alias.reference);\n if (!destAlias) {\n alias.highlighted = true;\n } else {\n destAlias.highlighted = alias.reference !== destAlias.reference;\n }\n });\n // Set new contracts as highlights\n // If a contract already exists, check if dates changed and set as highlighted if so\n preview.contracts.forEach(contract => {\n const destContract = destination.contracts.find(x => x.contractId === contract.contractId);\n if (!destContract) {\n contract.dateStartHighlighted = true;\n contract.dateEndHighlighted = true;\n contract.referenceHighlighted = true;\n } else {\n contract.dateStartHighlighted = contract.dateStart !== destContract.dateStart;\n contract.dateEndHighlighted = contract.dateEnd !== destContract.dateEnd;\n }\n });\n // Set number of contracts as highlighted if changed\n preview.keyfigures.contractsHighlighted = destination.keyfigures.contracts !== preview.keyfigures.contracts;\n // Set number of bills as highlighted if changed\n preview.keyfigures.billsHighlighted = destination.keyfigures.bills !== preview.keyfigures.bills;\n }\n\n /**\n * Call API to merge routing references. Destination is kept, origin will be deleted and included in destination\n * @param {string} destinationId - destination routing reference id\n * @param {string} originId - origin routing reference id\n * @returns {Promise} nothing returned. An error is thrown if something fails.\n */\n public async mergeRoutingReferences(destinationId: string, originId: string): Promise {\n if (!destinationId || !originId) {\n throw new Error('Destination and origin must be set');\n }\n const body = {\n destinationRoutingReferenceId: destinationId,\n originRoutingReferenceId: originId,\n };\n const response = await this.post('/api/routing-references-merge', body);\n return response.data;\n }\n\n /**\n * Handle actions after routing references merge\n */\n public async afterMerge() {\n // Reset destination and origin\n this.clearDestination();\n this.clearOrigin();\n // Refresh sites list\n await this.refreshSites();\n }\n\n /**\n * Display error\n * @param {string} errorCode - error code. Leave empty for default unknown error message\n */\n public displayError(errorCode: string) {\n const dict = {\n default: errorCode ? errorCode : 'Une erreur inconnue est survenue',\n };\n if (!dict[errorCode]) {\n errorCode = 'default';\n }\n Swal.fire('Erreur', dict[errorCode], 'error');\n }\n}\n","export default \".rename-title {\\n text-align: center;\\n font-size: 14px;\\n font-weight: bold;\\n}\\n\\n.select-alias__col {\\n border-right: 1px solid grey;\\n}\\n\\n.select-alias__col .alias-label {\\n font-size: 13px;\\n}\\n\\n.add-alias__col .add-alias__input {\\n font-size: 13px;\\n border-radius: 17px 0 0 17px;\\n border-right: none;\\n}\\n\\n.add-alias__col .add-alias__add-btn {\\n padding: 0 15px;\\n border: 1px solid lightgrey;\\n border-left: none;\\n border-top-right-radius: 17px;\\n border-bottom-right-radius: 17px;\\n margin: 0;\\n}\\n\\n.add-alias__alert {\\n font-size: 13px;\\n padding-right: 3rem;\\n border-radius: 17px;\\n}\\n\\n.add-alias__alert.alert-dismissible .close {\\n bottom: 0;\\n}\\n\\n#okBtn.citron-btn {\\n font-size: 13px;\\n border-radius: 17px !important;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLXJlbmFtZS9ycmVmLXJlbmFtZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9ycmVmLW1lcmdlL3JyZWYtcmVuYW1lL3JyZWYtcmVuYW1lLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BO0VBQ0ksa0JBQUE7RUFDQSxlQVJJO0VBU0osaUJBQUE7QUNMSjs7QURRQTtFQUNJLDRCQUFBO0FDTEo7O0FETUk7RUFDSSxlQWRBO0FDVVI7O0FEU0k7RUFDSSxlQXBCQTtFQXFCQSw0QkFBQTtFQUNBLGtCQUFBO0FDTlI7O0FEUUk7RUFDSSxlQUFBO0VBQ0EsMkJBQUE7RUFDQSxpQkFBQTtFQUNBLDZCQTNCQztFQTRCRCxnQ0E1QkM7RUE2QkQsU0FBQTtBQ05SOztBRFVBO0VBQ0ksZUFuQ0k7RUFvQ0osbUJBQUE7RUFDQSxtQkFwQ0s7QUM2QlQ7O0FEU1E7RUFDSSxTQUFBO0FDUFo7O0FEWUE7RUFDSSxlQTlDSTtFQStDSiw4QkFBQTtFQUNBLGdCQTlDVTtFQStDVixtQkEvQ1U7QUNzQ2QiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9jb21wYW55L3JyZWYtbWVyZ2UvcnJlZi1yZW5hbWUvcnJlZi1yZW5hbWUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIkc2l6ZTE6IDE0cHg7XG4kc2l6ZTI6IDEzcHg7XG4kcmFkaXVzOiAxN3B4O1xuJGJ0blBhZGRpbmdZOiA4cHg7XG4kaW5wdXRIZWlnaHQ6IDI3cHg7XG5cbi5yZW5hbWUtdGl0bGUge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6ICRzaXplMTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnNlbGVjdC1hbGlhc19fY29sIHtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBncmV5O1xuICAgIC5hbGlhcy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgIH1cbn1cblxuLmFkZC1hbGlhc19fY29sIHtcbiAgICAuYWRkLWFsaWFzX19pbnB1dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzIDAgMCAkcmFkaXVzO1xuICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuICAgIC5hZGQtYWxpYXNfX2FkZC1idG4ge1xuICAgICAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cblxuLmFkZC1hbGlhc19fYWxlcnQge1xuICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICAmLmFsZXJ0LWRpc21pc3NpYmxlIHtcbiAgICAgICAgLmNsb3NlIHtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuI29rQnRuLmNpdHJvbi1idG4ge1xuICAgIGZvbnQtc2l6ZTogJHNpemUyO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLXRvcDogJGJ0blBhZGRpbmdZO1xuICAgIHBhZGRpbmctYm90dG9tOiAkYnRuUGFkZGluZ1k7XG59XG4iLCIucmVuYW1lLXRpdGxlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uc2VsZWN0LWFsaWFzX19jb2wge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBncmV5O1xufVxuLnNlbGVjdC1hbGlhc19fY29sIC5hbGlhcy1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmFkZC1hbGlhc19fY29sIC5hZGQtYWxpYXNfX2lucHV0IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBib3JkZXItcmFkaXVzOiAxN3B4IDAgMCAxN3B4O1xuICBib3JkZXItcmlnaHQ6IG5vbmU7XG59XG4uYWRkLWFsaWFzX19jb2wgLmFkZC1hbGlhc19fYWRkLWJ0biB7XG4gIHBhZGRpbmc6IDAgMTVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmV5O1xuICBib3JkZXItbGVmdDogbm9uZTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDE3cHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxN3B4O1xuICBtYXJnaW46IDA7XG59XG5cbi5hZGQtYWxpYXNfX2FsZXJ0IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xuICBib3JkZXItcmFkaXVzOiAxN3B4O1xufVxuLmFkZC1hbGlhc19fYWxlcnQuYWxlcnQtZGlzbWlzc2libGUgLmNsb3NlIHtcbiAgYm90dG9tOiAwO1xufVxuXG4jb2tCdG4uY2l0cm9uLWJ0biB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgYm9yZGVyLXJhZGl1czogMTdweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLXRvcDogOHB4O1xuICBwYWRkaW5nLWJvdHRvbTogOHB4O1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { RRefRename } from './rref-rename.interface';\n\n@Component({\n selector: 'rref-rename',\n templateUrl: './rref-rename.component.html',\n styleUrls: ['./rref-rename.component.scss'],\n})\nexport class RrefRenameComponent implements OnInit {\n /** Routing reference with minimal info to display */\n @Input() public rRef: RRefRename;\n\n /**\n * Event fired when routing reference renamed or alias added.\n * True when changes made, false if no changes.\n */\n @Output() private rRefRenamed: EventEmitter = new EventEmitter();\n\n /**\n * Form group to handle inputs\n */\n public form: FormGroup;\n\n /**\n * Message to display\n */\n public message: string = null;\n\n /** Is message to display an error message */\n public isMessageError = false;\n\n /** Initial values to detect if changes have been made */\n private iniValues: {\n reference: string;\n alias: string[];\n } = {\n reference: null,\n alias: [],\n };\n\n constructor(\n private routingReferencesService: RoutingReferencesService,\n private fb: FormBuilder,\n private translateService: TranslateService\n ) {\n this.form = fb.group({\n reference: ['', Validators.required],\n newAlias: [''],\n });\n }\n\n ngOnInit() {\n this.form.setValue({\n reference: this.rRef.reference,\n newAlias: '',\n });\n this.iniValues = {\n reference: this.rRef.reference,\n alias: [].concat(this.rRef.alias),\n };\n }\n\n /**\n * Add alias\n */\n public async addAlias() {\n const value = this.form.get('newAlias').value;\n if (!value) {\n return;\n }\n // API Call to add alias to routing reference\n // Add alias to list\n this.rRef.alias.push(value);\n this.form.get('newAlias').setValue('');\n this.message = this.translateService._('alias_added') + ` : ${value}`;\n this.isMessageError = false;\n }\n\n /**\n * Save routing reference's new reference and alias list\n */\n public async renameRRef() {\n try {\n const reference = this.form.get('reference').value;\n if (!reference) {\n return;\n }\n const alias = this.rRef.alias;\n const hasChanged = this.hasValuesChanged(reference, alias);\n if (hasChanged) {\n // Add alias to list\n await this.routingReferencesService.updateRRefAlias({\n routingReferenceId: this.rRef._id,\n reference,\n alias,\n });\n }\n\n this.rRefRenamed.emit(hasChanged);\n } catch (e) {\n if (e.errorCode === 'reference_already_existing') {\n this.message = `L'alias existe déjà`;\n this.isMessageError = true;\n } else {\n this.message = `Une erreur s'est produite pendant l'enregistrement (${e.message})`;\n this.isMessageError = true;\n throw e;\n }\n }\n }\n\n /**\n * Returns true if reference or alias list has changed\n * @param {string} reference - last reference value\n * @param {string[]} alias - last alias list\n */\n private hasValuesChanged(reference: string, alias: string[]): boolean {\n if (reference !== this.iniValues.reference) {\n return true;\n }\n if (alias.length !== this.iniValues.alias.length) {\n return true;\n }\n if (alias.some(x => !this.iniValues.alias.includes(x))) {\n return true;\n }\n return false;\n }\n\n /**\n * Clear message\n */\n public clearMessage() {\n this.message = null;\n }\n\n /**\n * Get alert message classes\n */\n public get alertClasses(): string[] {\n return [this.isMessageError ? 'alert-danger' : 'alert-success'];\n }\n}\n","export default \"#dnd-merge-info__bloc {\\n text-align: center;\\n font-size: 12px;\\n font-style: italic;\\n}\\n\\n.routing-reference-dropzone {\\n font-size: 12px;\\n color: #f2bbba;\\n min-height: 117px;\\n border: 0.5px dashed #f2bbba;\\n border-radius: 17px;\\n margin: 5px 0;\\n}\\n\\n.routing-reference-dropzone .routing-reference-dropzone__text {\\n text-align: center;\\n margin: 40px 0;\\n}\\n\\n.routing-reference-dropzone .routing-reference-dropzone__icon {\\n text-align: center;\\n font-size: 2rem;\\n margin-bottom: 40px;\\n}\\n\\n.routing-reference-keyfigures {\\n border-radius: 17px;\\n background-color: #f0f0f0;\\n margin: 5px 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLXNlbGVjdGVkL3JyZWYtc2VsZWN0ZWQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLXNlbGVjdGVkL3JyZWYtc2VsZWN0ZWQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUE7RUFDSSxrQkFBQTtFQUNBLGVBTkk7RUFPSixrQkFBQTtBQ1BKOztBRFVBO0VBQ0ksZUFYSTtFQVlKLGNBVlE7RUFXUixpQkFBQTtFQUNBLDRCQUFBO0VBQ0EsbUJBakJLO0VBa0JMLGFBQUE7QUNQSjs7QURRSTtFQUNJLGtCQUFBO0VBQ0EsY0FBQTtBQ05SOztBRFFJO0VBQ0ksa0JBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7QUNOUjs7QURTQTtFQUNJLG1CQTlCSztFQStCTCx5QkFBQTtFQUNBLGFBQUE7QUNOSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvcnJlZi1tZXJnZS9ycmVmLXNlbGVjdGVkL3JyZWYtc2VsZWN0ZWQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4kcmFkaXVzOiAxN3B4O1xuJHNpemUxOiAxM3B4O1xuJHNpemUyOiAxMnB4O1xuJGNhcmRNYXJnaW5ZOiA1cHg7XG4kY29sb3Jab25lOiAjZjJiYmJhO1xuXG4jZG5kLW1lcmdlLWluZm9fX2Jsb2Mge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6ICRzaXplMjtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5yb3V0aW5nLXJlZmVyZW5jZS1kcm9wem9uZSB7XG4gICAgZm9udC1zaXplOiAkc2l6ZTI7XG4gICAgY29sb3I6ICRjb2xvclpvbmU7XG4gICAgbWluLWhlaWdodDogMTE3cHg7XG4gICAgYm9yZGVyOiAwLjVweCBkYXNoZWQgJGNvbG9yWm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIG1hcmdpbjogJGNhcmRNYXJnaW5ZIDA7XG4gICAgLnJvdXRpbmctcmVmZXJlbmNlLWRyb3B6b25lX190ZXh0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDQwcHggMDtcbiAgICB9XG4gICAgLnJvdXRpbmctcmVmZXJlbmNlLWRyb3B6b25lX19pY29uIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgfVxufVxuLnJvdXRpbmctcmVmZXJlbmNlLWtleWZpZ3VyZXMge1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbiAgICBtYXJnaW46ICRjYXJkTWFyZ2luWSAwO1xufVxuIiwiI2RuZC1tZXJnZS1pbmZvX19ibG9jIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLnJvdXRpbmctcmVmZXJlbmNlLWRyb3B6b25lIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogI2YyYmJiYTtcbiAgbWluLWhlaWdodDogMTE3cHg7XG4gIGJvcmRlcjogMC41cHggZGFzaGVkICNmMmJiYmE7XG4gIGJvcmRlci1yYWRpdXM6IDE3cHg7XG4gIG1hcmdpbjogNXB4IDA7XG59XG4ucm91dGluZy1yZWZlcmVuY2UtZHJvcHpvbmUgLnJvdXRpbmctcmVmZXJlbmNlLWRyb3B6b25lX190ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW46IDQwcHggMDtcbn1cbi5yb3V0aW5nLXJlZmVyZW5jZS1kcm9wem9uZSAucm91dGluZy1yZWZlcmVuY2UtZHJvcHpvbmVfX2ljb24ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogNDBweDtcbn1cblxuLnJvdXRpbmctcmVmZXJlbmNlLWtleWZpZ3VyZXMge1xuICBib3JkZXItcmFkaXVzOiAxN3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xuICBtYXJnaW46IDVweCAwO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { combineLatest } from 'rxjs';\n\nimport { RoutingReferenceKeyfigures } from '../rref-merge.interface';\nimport { RrefMergeService } from '../rref-merge.service';\n\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { KeyDataService } from 'app/shared/services/key-data/key-data.service';\n\n@Component({\n selector: 'rref-merge-selected',\n templateUrl: './rref-selected.component.html',\n styleUrls: ['./rref-selected.component.scss'],\n})\nexport class RrefSelectedComponent implements OnInit {\n /** Destination routing reference keyfigures */\n public rRefDestination: RoutingReferenceKeyfigures = null;\n /** Origin routing reference keyfigures */\n public rRefOrigin: RoutingReferenceKeyfigures = null;\n\n constructor(private rrefMergeService: RrefMergeService, private keyDataService: KeyDataService) {}\n\n ngOnInit() {\n this.rrefMergeService.rRefDestination$.subscribe({\n next: value => {\n this.rRefDestination = value;\n },\n });\n this.rrefMergeService.rRefOrigin$.subscribe({\n next: value => {\n this.rRefOrigin = value;\n },\n });\n }\n\n /**\n * Handle drop event for target routing reference\n * @param {DragEvent} event\n * @param {'destination' | 'origin'} target - routing reference target\n */\n async onDrop(event: DragEvent, target: 'destination' | 'origin') {\n event.preventDefault();\n // Prevent dropping origin if destination not dropped\n if (target === 'origin' && !this.rRefDestination) {\n return;\n }\n const dataString = event.dataTransfer.getData('text/plain');\n const rRef: RoutingReference = JSON.parse(dataString);\n // Prevent dropping same routing reference\n if (\n target === 'origin' &&\n (rRef._id === this.rRefDestination._id || rRef.energyType !== this.rRefDestination.energyType)\n ) {\n return;\n }\n await this.grabKeyFigures(rRef, target);\n }\n\n /**\n * Unselect routing reference\n * @param {'destination' | 'origin'} target - routing refrence target unselected\n */\n public unselectRoutingReference(target: 'destination' | 'origin') {\n if (target === 'destination') {\n this.rRefDestination = this.rrefMergeService.clearDestination();\n } else if (target === 'origin') {\n this.rRefOrigin = this.rrefMergeService.clearOrigin();\n }\n }\n\n /**\n * DO NOT REMOVE. ENABLE THE DROP.\n * @param {DragEvent} event\n */\n public onDragOver(event: DragEvent, target: 'destination' | 'origin') {\n if (target === 'origin') {\n if (this.rRefDestination) {\n event.preventDefault();\n }\n } else {\n event.preventDefault();\n }\n }\n\n /**\n * Get routing reference keyfigures\n * @param {RoutingReference} rRef - routing reference to get keyfigures from\n * @returns {Promise}\n */\n private async grabKeyFigures(rRef: RoutingReference, target: 'destination' | 'origin'): Promise {\n try {\n // Get keyfigures but don't assign them directly, they are handled by event management\n if (target === 'destination') {\n await this.rrefMergeService.grabDestinationKeyFigures(rRef);\n } else if (target === 'origin') {\n await this.rrefMergeService.grabOriginKeyFigures(rRef);\n }\n } catch (e) {\n this.rrefMergeService.displayError(e.errorCode);\n }\n }\n\n /**\n * Refresh keyfigures data.\n * Refreshing sites triggers keyfigure refresh\n * @param {'destination' | 'origin'} target\n */\n public async refreshKeyfigure(target: 'destination' | 'origin') {\n // Currently only needs to handle destination refresh as no update can be done in origin\n if (target === 'destination') {\n await this.rrefMergeService.refreshSites();\n }\n }\n\n /**\n * Can unselect destination\n */\n public get canUnselectDestination(): boolean {\n return this.rRefDestination && !this.rRefOrigin;\n }\n\n /**\n * Can rename destination\n * @returns {boolean}\n */\n public get canRenameDestination(): boolean {\n return this.rRefDestination && !this.rRefOrigin;\n }\n}\n","export default \".filtersHidden {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n\\n.filtersToggle {\\n cursor: pointer;\\n}\\n\\n.filters-row {\\n margin-top: 15px;\\n}\\n\\n.column-border {\\n border-right: 1px solid darkgrey;\\n}\\n\\n.row-title {\\n padding-top: 0.5rem;\\n padding-bottom: 1.5rem;\\n}\\n\\n.row-title .column-title {\\n font-weight: bold;\\n text-align: center;\\n}\\n\\n.entity-bloc {\\n -o-box-shadow: -2px 2px 5px 0px #656565;\\n box-shadow: -2px 2px 5px 0px #656565;\\n border-radius: 2px;\\n margin-bottom: 0.5rem;\\n}\\n\\n.entity-bloc .svg-icon {\\n display: inline-block;\\n vertical-align: sub;\\n height: 20px;\\n width: 20px;\\n}\\n\\n.grabbable {\\n cursor: move;\\n /* fallback if grab cursor is unsupported */\\n cursor: grab;\\n cursor: -webkit-grab;\\n}\\n\\n.grabbable:active {\\n cursor: move;\\n /* fallback if grab cursor is unsupported */\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n}\\n\\n.filter-fluid-row {\\n margin-bottom: calc(2rem + 2px + 0.5rem);\\n margin-top: 0.5rem;\\n}\\n\\n.entity-bloc {\\n padding: 5px 15px;\\n}\\n\\n.info-address {\\n font-size: 0.75rem;\\n}\\n\\n.info-site-label,\\n.info-site {\\n padding-top: calc(0.5rem - 1px * 2) !important;\\n padding-bottom: calc(0.5rem - 1px * 2);\\n margin-bottom: 0;\\n white-space: initial;\\n}\\n\\n.info-site {\\n font-weight: initial;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvc2l0ZXMtZW50aXRpZXMtYXR0cmlidXRpb24vZW50aXR5LWF0dHJpYnV0aW9uLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9zaXRlcy1lbnRpdGllcy1hdHRyaWJ1dGlvbi9lbnRpdHktYXR0cmlidXRpb24uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUNvREksaUNEbkRBO0VDdURBLHlCRHZEQTtBRUVKOztBRkNBO0VBQ0ksZUFBQTtBRUVKOztBRkNBO0VBQ0ksZ0JBQUE7QUVFSjs7QUZDQTtFQUNJLGdDQUFBO0FFRUo7O0FGQUE7RUFDSSxtQkFBQTtFQUNBLHNCQUFBO0FFR0o7O0FGREk7RUFDSSxpQkFBQTtFQUNBLGtCQUFBO0FFR1I7O0FGT0E7RUNVSSx1Q0RUQTtFQ1VBLG9DRFZBO0VDZ0JBLGtCRGZBO0VBQ0EscUJBTGtCO0FFTXRCOztBRkNJO0VBQ0kscUJBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0FFQ1I7O0FGR0E7RUFDSSxZQUFBO0VBQWMsMkNBQUE7RUFDZCxZQUFBO0VBRUEsb0JBQUE7QUVDSjs7QUZFQTtFQUNJLFlBQUE7RUFBYywyQ0FBQTtFQUNkLGdCQUFBO0VBRUEsd0JBQUE7QUVFSjs7QUZDQTtFQUNJLHdDQUFBO0VBQ0Esa0JBaENrQjtBRWtDdEI7O0FGQ0E7RUFDSSxpQkFBQTtBRUVKOztBRkNBO0VBQ0ksa0JBQUE7QUVFSjs7QUZDQTs7RUFFSSw4Q0FBQTtFQUNBLHNDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxvQkFBQTtBRUVKOztBRkNBO0VBQ0ksb0JBQUE7QUVFSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvc2l0ZXMtZW50aXRpZXMtYXR0cmlidXRpb24vZW50aXR5LWF0dHJpYnV0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbi5maWx0ZXJzSGlkZGVuIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKC05MGRlZykpO1xufVxuXG4uZmlsdGVyc1RvZ2dsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZmlsdGVycy1yb3cge1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG59XG5cbi5jb2x1bW4tYm9yZGVyIHtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBkYXJrZ3JleTtcbn1cbi5yb3ctdGl0bGUge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcblxuICAgIC5jb2x1bW4tdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuJHNoYWRvd0NvbG9yOiAjNjU2NTY1O1xuJHNoYWRvd0RpcmVjdGlvbnM6IC0ycHggMnB4IDVweCAwcHg7XG4kc2hhZG93UmFkaXVzOiAycHg7XG4kbWFyZ2luVG9wRW50aXR5U2l0ZTogMC41cmVtO1xuJG1hcmdpbkJvdEVudGl0eVNpdGU6IDAuNXJlbTtcblxuLmVudGl0eS1ibG9jIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRzaGFkb3dEaXJlY3Rpb25zICRzaGFkb3dDb2xvcik7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkc2hhZG93UmFkaXVzKTtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luQm90RW50aXR5U2l0ZTtcblxuICAgIC5zdmctaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHN1YjtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICB9XG59XG5cbi5ncmFiYmFibGUge1xuICAgIGN1cnNvcjogbW92ZTsgLyogZmFsbGJhY2sgaWYgZ3JhYiBjdXJzb3IgaXMgdW5zdXBwb3J0ZWQgKi9cbiAgICBjdXJzb3I6IGdyYWI7XG4gICAgY3Vyc29yOiAtbW96LWdyYWI7XG4gICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG59XG5cbi5ncmFiYmFibGU6YWN0aXZlIHtcbiAgICBjdXJzb3I6IG1vdmU7IC8qIGZhbGxiYWNrIGlmIGdyYWIgY3Vyc29yIGlzIHVuc3VwcG9ydGVkICovXG4gICAgY3Vyc29yOiBncmFiYmluZztcbiAgICBjdXJzb3I6IC1tb3otZ3JhYmJpbmc7XG4gICAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xufVxuXG4uZmlsdGVyLWZsdWlkLXJvdyB7XG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYygycmVtICsgMnB4ICsgI3skbWFyZ2luQm90RW50aXR5U2l0ZX0pO1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW5Ub3BFbnRpdHlTaXRlO1xufVxuXG4uZW50aXR5LWJsb2Mge1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xufVxuXG4uaW5mby1hZGRyZXNzIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5pbmZvLXNpdGUtbGFiZWwsXG4uaW5mby1zaXRlIHtcbiAgICBwYWRkaW5nLXRvcDogY2FsYygwLjVyZW0gLSAxcHggKiAyKSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuNXJlbSAtIDFweCAqIDIpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgd2hpdGUtc3BhY2U6IGluaXRpYWw7XG59XG5cbi5pbmZvLXNpdGUge1xuICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xufVxuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiLmZpbHRlcnNIaWRkZW4ge1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5cbi5maWx0ZXJzVG9nZ2xlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZmlsdGVycy1yb3cge1xuICBtYXJnaW4tdG9wOiAxNXB4O1xufVxuXG4uY29sdW1uLWJvcmRlciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGRhcmtncmV5O1xufVxuXG4ucm93LXRpdGxlIHtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcbn1cbi5yb3ctdGl0bGUgLmNvbHVtbi10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5lbnRpdHktYmxvYyB7XG4gIC1tb3otYm94LXNoYWRvdzogLTJweCAycHggNXB4IDBweCAjNjU2NTY1O1xuICAtd2Via2l0LWJveC1zaGFkb3c6IC0ycHggMnB4IDVweCAwcHggIzY1NjU2NTtcbiAgLW8tYm94LXNoYWRvdzogLTJweCAycHggNXB4IDBweCAjNjU2NTY1O1xuICBib3gtc2hhZG93OiAtMnB4IDJweCA1cHggMHB4ICM2NTY1NjU7XG4gIC1tb3otYm9yZGVyLXJhZGl1czogMnB4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uZW50aXR5LWJsb2MgLnN2Zy1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogc3ViO1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xufVxuXG4uZ3JhYmJhYmxlIHtcbiAgY3Vyc29yOiBtb3ZlO1xuICAvKiBmYWxsYmFjayBpZiBncmFiIGN1cnNvciBpcyB1bnN1cHBvcnRlZCAqL1xuICBjdXJzb3I6IGdyYWI7XG4gIGN1cnNvcjogLW1vei1ncmFiO1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbn1cblxuLmdyYWJiYWJsZTphY3RpdmUge1xuICBjdXJzb3I6IG1vdmU7XG4gIC8qIGZhbGxiYWNrIGlmIGdyYWIgY3Vyc29yIGlzIHVuc3VwcG9ydGVkICovXG4gIGN1cnNvcjogZ3JhYmJpbmc7XG4gIGN1cnNvcjogLW1vei1ncmFiYmluZztcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xufVxuXG4uZmlsdGVyLWZsdWlkLXJvdyB7XG4gIG1hcmdpbi1ib3R0b206IGNhbGMoMnJlbSArIDJweCArIDAuNXJlbSk7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLmVudGl0eS1ibG9jIHtcbiAgcGFkZGluZzogNXB4IDE1cHg7XG59XG5cbi5pbmZvLWFkZHJlc3Mge1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5pbmZvLXNpdGUtbGFiZWwsXG4uaW5mby1zaXRlIHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtIC0gMXB4ICogMikgIWltcG9ydGFudDtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtIC0gMXB4ICogMik7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xufVxuXG4uaW5mby1zaXRlIHtcbiAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG59Il19 */\"","import { Injectable, Input, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\n\n// Services\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\n// Interfaces\nimport { Company } from 'app/shared/models/company.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\n\n/**\n * Minimum requirements for an entity\n */\ninterface Entity {\n _id: string;\n}\n\n/**\n * Component to handle entities attributions to sites such as routing references or vehicles.\n */\n@Injectable()\nexport abstract class EntitiesAttributionComponent implements OnInit {\n @Input() company: Company;\n\n // List of fluids availale\n fluidList: Array<{\n name: string;\n value: string;\n }> = [];\n\n // Entities not assigned to any site\n entities: T[] = [];\n\n // Entities assigned to a site\n entitiesAssigned: T[] = [];\n\n // Site list\n sites: SitePopulated[] = [];\n\n /**\n * Site information properties\n * Selected site by the user by click or drop of an entity\n */\n selectedSite: SitePopulated;\n\n // Limits for the display of sites and entities\n limits = {\n entities: 10,\n };\n\n // List of entities to display in first column\n entitiesToDisplay: T[] = [];\n\n // Search filters on entities and sites columns\n searchFilter = {\n entities: '',\n fluid: '',\n };\n\n // Loading informations for display.\n loading = {\n entities: true,\n sites: true,\n fluids: true,\n };\n\n constructor(public energyService: EnergyService, public sitesService: SitesService) {}\n\n /**\n * Get entities list\n */\n abstract async getEntities(): Promise;\n\n /**\n * Get site's entities list\n * @param {SitePopulated} site - site to get entities from\n * @returns {T[]} list of entities of the site\n */\n abstract getSiteEntities(site: SitePopulated): T[];\n\n /**\n * Set site's entities\n * @param {SitePopulated} site - site to set entities to\n * @param {T[]} entities - entities to set\n */\n abstract setSiteEntities(site: SitePopulated, entities: T[]): void;\n\n /**\n * Get properties to searched for an entity\n * @returns {string[]} list of properties\n */\n abstract get searchProperties(): string[];\n\n /**\n * Get entity title\n * @param {T} entity\n * @returns {string} entity title\n */\n abstract getEntityTitle(entity: T): string;\n\n /**\n * Get entity energy icon\n * @param {T} entity\n * @returns {string} entity icon\n */\n abstract getEntityIcon(entity: T): string;\n\n /**\n * Get entity first subtitle\n * @param {T} entity\n * @returns {string} entity first subtitle\n */\n abstract getEntitySubtitle1(entity: T): string;\n\n /**\n * Get entity second subtitle\n * @param {T} entity\n * @returns {string} entity second subtitle\n */\n abstract getEntitySubtitle2(entity: T): string;\n\n /**\n * Get fluids related to the attribution\n * @returns {Promise}\n */\n abstract async getFluids(): Promise;\n\n /**\n * Filter entity based on filters\n * Executed before search properties analyze\n * @param {T} entity - entity to filter\n * @param {{entities: string, fluid: string}} filters - filter to test.\n * @returns {boolean} true to continue entity analyze, false to reject entity (not match custom filtering)\n */\n abstract isEntityFiltered(entity: T, filters: { entities: string; fluid: string }): boolean;\n\n /**\n * Get entity name plural key\n * @returns {string} entity name key\n */\n abstract get entityKeyPlural(): string;\n\n /**\n * Entity search input placeholder text\n * @returns {string} search input text\n */\n abstract get searchPlaceholder(): string;\n\n /**\n * Get entity type.\n * Currently supporting 'vehicles' and 'routingReferences'\n * @returns {'vehicles'|'routingReferences'}\n */\n abstract get entityType(): 'vehicles' | 'routingReferences';\n\n // tslint:disable-next-line: contextual-lifecycle\n ngOnInit() {\n this.init();\n }\n\n /**\n * Init component.\n * 1. Get sites\n * 1. Get entities\n * 1. Get and set fluids\n * 2. Split assigned entities and non assigned entities\n */\n private async init() {\n try {\n const [resSites, resEntities] = await Promise.all([\n this.sitesService.getSites({ companyId: this.company._id }),\n this.getEntities(),\n this.getSetFluids(),\n ]);\n if (resSites && resSites.data && resSites.data.length) {\n this.sites = resSites.data;\n }\n\n if (resEntities && resEntities.length) {\n // Split entities associated and entities not associated\n this.entities = resEntities;\n const assigned: { [id: string]: boolean } = {};\n this.sites.forEach(site => {\n this.getSiteEntities(site).forEach(entity => {\n const entityFound = this.entities.find(x => x._id === entity._id);\n if (entityFound) {\n // Add it to the list of entities assigned\n if (!assigned[entityFound._id]) {\n this.entitiesAssigned.push(entityFound);\n assigned[entityFound._id] = true;\n }\n }\n });\n });\n // Just keep entities not assigned\n this.entities = this.entities.filter(entity => {\n return !assigned[entity._id];\n });\n\n // Init display entities\n this.filterEntities();\n }\n this.loading.sites = false;\n this.loading.entities = false;\n } catch (e) {\n this.sites = [];\n this.entities = [];\n this.loading.sites = false;\n this.loading.entities = false;\n this.loading.fluids = false;\n }\n }\n\n /**\n * True if site's needed info are loading, false otherwise\n * @returns {boolean}\n */\n get isSiteLoading(): boolean {\n return Boolean(this.loading.sites || this.loading.fluids);\n }\n\n /*****************\n * FILTERS COLUMN (ENTITIES)\n *****************/\n\n /**\n * Get and set fluids available for a customer\n * @returns {Promise} fluids available for the company\n */\n private async getSetFluids(): Promise {\n try {\n const fluids = await this.getFluids();\n if (fluids && fluids.length) {\n this.fluidList = fluids.map(fluid => {\n return {\n name: this.energyService.energyFullText(fluid),\n value: fluid,\n };\n });\n }\n this.loading.fluids = false;\n return fluids;\n } catch (e) {\n this.fluidList = [];\n this.loading.fluids = false;\n return [];\n }\n }\n\n /**\n * Filter entities per value\n * @param {string} value search criteria\n */\n searchEntity(value: string) {\n this.searchFilter.entities = value;\n this.filterEntities();\n }\n\n /**\n * Filter entities per fluid type\n * @param {string} value fluid type (eg. 'elec')\n */\n onFluidChange(value: string) {\n this.searchFilter.fluid = value;\n this.filterEntities();\n }\n\n /**\n * Apply all filters to the entities list\n * @param {boolean} isReset reset the entities list (for example in research true, display more false)\n */\n private filterEntities(isReset: boolean = true) {\n // Reset the entity list\n if (isReset) {\n this.entitiesToDisplay = [];\n }\n // Split the search in multiple words to check each one instead of all of them\n const searchWords = this.searchFilter.entities.toLocaleLowerCase().split(' ');\n\n // Add the right number of entities to the display list\n // Each one is the next one matching filters\n for (let i = this.entitiesToDisplay.length; i < this.limits.entities; i++) {\n // Find unassociated entities matching filters\n const entity = this.entities.find(x => {\n // Check if not already in the list\n if (this.entitiesToDisplay.some(y => x._id === y._id)) {\n return false;\n }\n\n const isEntityMatchingSearch = this.isEntityFiltered(x, this.searchFilter);\n if (isEntityMatchingSearch === false) {\n return false;\n }\n\n // Check from search input\n return this.searchProperties.some(property => {\n const val = _.get(x, property);\n return val && this.checkMatch(val, searchWords);\n });\n });\n if (entity) {\n // If found, add it to the display list\n this.entitiesToDisplay.push(entity);\n }\n }\n }\n\n /**\n * Check if each one of the values is included in property string value\n * @param {string} property to check check the values from\n * @param {string[]} values list of values to test\n * @returns {boolean} true if all values matches, false otherwise\n */\n private checkMatch(property: string = '', values: string[] = []): boolean {\n return values.every(value => {\n return property.toLocaleLowerCase().includes(value);\n });\n }\n\n /**\n * Display more entities in the list.\n * @param {number} number of entities to display more. Default : 10\n */\n displayMoreEntities(number: number = 10) {\n this.limits.entities += number;\n this.filterEntities(false);\n }\n\n /*****************\n * ENTITY ASSOCIATION TO SITE (DRAG & DROP)\n *****************/\n\n /**\n * Associate an entity to a site (front operation, back end action already done)\n * @param {T} entity - entity to associate\n * @param {SitePopulated} site - to be associated to\n * @param {boolean} isNew - is the site new or not.\n */\n associateEntityToSite({ entity, site, isNew }: { entity: T; site: SitePopulated; isNew: true }) {\n /**\n * If the association triggered a site creation, display the site in first position\n */\n if (isNew) {\n this.sites.unshift(site);\n }\n\n // Associate the entity\n if (!this.getSiteEntities(site).some(x => x._id === entity._id)) {\n // Not using push to trigger change detection\n const entities = this.getSiteEntities(site).concat(entity);\n this.setSiteEntities(site, entities);\n }\n // Add to assigned list\n if (!this.entitiesAssigned.some(x => x._id === entity._id)) {\n this.entitiesAssigned.push(entity);\n }\n // Remove from free list\n this.entities = this.entities.filter(x => x._id !== entity._id);\n\n // Remove from display list\n this.entitiesToDisplay = this.entitiesToDisplay.filter(x => x._id !== entity._id);\n // Add next pdl to display list\n this.filterEntities(false);\n }\n\n /**\n * When a user starts dragging an entity, store it.\n * @param {DragEvent} event\n * @param {T} entity\n */\n onDragStart(event: DragEvent, entity: T) {\n const data = entity;\n const toTransfer = JSON.stringify(data);\n event.dataTransfer.setData('text/plain', toTransfer);\n event.dataTransfer.effectAllowed = 'copy';\n }\n\n /*****************\n * SITE INFORMATION MANAGEMENT\n *****************/\n\n /**\n * Remove a site from sites list\n * @param {SitePopulated} site - site to remove from sites list\n */\n removeSiteFromList(site: SitePopulated) {\n this.selectedSite = null;\n this.sites = this.sites.filter(x => x._id !== site._id);\n }\n\n /**\n * Add entity to entities list and in first position of entity display list.\n * @param {T} entity - entity to add to lists\n */\n addEntityToList(entity: T) {\n // Add the entity at the top of the unassociated list\n if (!this.entities.some(x => x._id === entity._id)) {\n this.entities.unshift(entity);\n }\n if (!this.entitiesToDisplay.some(x => x._id === entity._id)) {\n this.entitiesToDisplay.unshift(entity);\n this.limits.entities++;\n }\n // Remove the entity from the assigned list\n this.entitiesAssigned = this.entitiesAssigned.filter(x => x._id !== entity._id);\n }\n}\n","import { Component } from '@angular/core';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { EntitiesAttributionComponent } from '../entity-attribution.component';\n\n@Component({\n selector: 'ga-company-routing-references-tab',\n templateUrl: '../entity-attribution.component.html',\n styleUrls: ['../entity-attribution.component.scss'],\n providers: [],\n})\nexport class CompanyRoutingReferencesComponent extends EntitiesAttributionComponent {\n constructor(\n public energyService: EnergyService,\n public sitesService: SitesService,\n private routingReferencesService: RoutingReferencesService\n ) {\n super(energyService, sitesService);\n }\n\n async getEntities() {\n return this.routingReferencesService.getRoutingReferencesPopulated({ companyId: this.company._id });\n }\n\n getSiteEntities(site: SitePopulated): RoutingReference[] {\n return site && site.routingReferences ? site.routingReferences : [];\n }\n\n setSiteEntities(site: SitePopulated, entities: RoutingReference[]): void {\n site.routingReferences = entities;\n }\n\n get searchProperties(): string[] {\n return ['reference', '_id', 'address.streetName', 'address.city', 'address.zipcode'];\n }\n\n isEntityFiltered(entity: RoutingReference, filters: { entities: string; fluid: string }) {\n if (this.searchFilter.fluid && entity.energyType !== this.searchFilter.fluid) {\n return false;\n }\n return true;\n }\n\n getEntityTitle(entity: RoutingReference): string {\n return entity.reference;\n }\n\n getEntityIcon(entity: RoutingReference): string {\n return `${entity.energyType}-icon`;\n }\n\n getEntitySubtitle1(entity: RoutingReference): string {\n const streetNumber = entity.address && entity.address.streetNumber ? entity.address.streetNumber : '';\n const streetName = entity.address && entity.address.streetName ? entity.address.streetName : '';\n return `${streetNumber} ${streetName}`;\n }\n\n getEntitySubtitle2(entity: RoutingReference): string {\n const zipcode = entity.address && entity.address.zipcode ? entity.address.zipcode : '';\n const city = entity.address && entity.address.city ? entity.address.city : '';\n return `${zipcode} ${city}`;\n }\n\n get entityKeyPlural(): string {\n return 'routingReferences';\n }\n\n get searchPlaceholder(): string {\n return 'Numéro de PDL, adresse, ...';\n }\n\n get entityType(): 'routingReferences' {\n return 'routingReferences';\n }\n\n async getFluids() {\n const routingReferencesFluids = this.energyService.getAllRoutingReferenceFluids();\n const fluids = await this.energyService.getFluidsAvailable(this.company._id);\n return fluids.filter(x => routingReferencesFluids.includes(x));\n }\n}\n","import { Component } from '@angular/core';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport { Vehicle } from 'app/shared/models/vehicle.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { VehiclesService } from 'app/shared/services/vehicles/vehicles.service';\nimport { EntitiesAttributionComponent } from '../entity-attribution.component';\n\n@Component({\n selector: 'ga-company-vehicles-tab',\n templateUrl: '../entity-attribution.component.html',\n styleUrls: ['../entity-attribution.component.scss'],\n providers: [],\n})\nexport class CompanyVehiclesComponent extends EntitiesAttributionComponent {\n constructor(\n public energyService: EnergyService,\n public sitesService: SitesService,\n private vehiclesService: VehiclesService\n ) {\n super(energyService, sitesService);\n }\n\n async getEntities(): Promise {\n return this.vehiclesService.getVehicles({ companyId: this.company._id });\n }\n\n getSiteEntities(site: SitePopulated): Vehicle[] {\n return site && site.vehicles ? site.vehicles : [];\n }\n\n setSiteEntities(site: SitePopulated, entities: Vehicle[]): void {\n site.vehicles = entities;\n }\n\n get searchProperties(): string[] {\n return ['registrationNumber', 'name', '_id', 'fuelType'];\n }\n\n isEntityFiltered(entity: Vehicle, filters: { entities: string; fluid: string }) {\n // Don't apply specific filters on entities name or fluid\n return true;\n }\n\n getEntityTitle(entity: Vehicle): string {\n return entity.registrationNumber;\n }\n\n getEntityIcon(entity: Vehicle): string {\n return 'fuel-icon';\n }\n\n getEntitySubtitle1(entity: Vehicle): string {\n return entity.name;\n }\n\n getEntitySubtitle2(entity: Vehicle): string {\n return '';\n }\n\n get entityKeyPlural(): string {\n return 'vehicles';\n }\n\n get searchPlaceholder(): string {\n return 'Immatriculation';\n }\n\n get entityType(): 'vehicles' {\n return 'vehicles';\n }\n\n async getFluids() {\n return this.energyService.getAllVehicleFluids();\n }\n}\n","export default \".branches__row {\\n font-size: 14px;\\n}\\n\\n.col-company {\\n border-color: #db4b47;\\n border-right: dashed #db4b47 1px;\\n}\\n\\n.branch-container {\\n margin: 15px;\\n}\\n\\n.branch-container .drag-drop-zone {\\n min-width: 350px;\\n max-width: 450px;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n}\\n\\n.branch-container .drag-drop-zone.dragged-over {\\n border: dashed 1px;\\n border-color: #db4b47;\\n}\\n\\n.branch-container .drag-drop-zone:not(.dragged-over) {\\n border: solid 1px;\\n border-color: #db4b47;\\n}\\n\\n.branch-container .drag-drop-zone label {\\n background-color: #db4b47;\\n color: white;\\n overflow: hidden;\\n}\\n\\n.branch-container .drag-drop-zone .sites-box {\\n background-color: white;\\n overflow: hidden;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n height: 100%;\\n padding: 20px;\\n overflow: scroll;\\n max-height: 500px;\\n}\\n\\n.branch-container .drag-drop-zone .sites-box .site {\\n width: 100%;\\n text-align: center;\\n padding: 4px 10px;\\n margin: 0 0 5px 0;\\n border: 1px solid;\\n border-color: lightgrey;\\n border-radius: 5px;\\n}\\n\\n.branches__company-label {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: center;\\n justify-content: center;\\n padding: 5px;\\n margin-bottom: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvc2l0ZXMvY29tcGFueS1zaXRlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS9zaXRlcy9jb21wYW55LXNpdGVzLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLGVBQUE7QUNESjs7QURHQTtFQUNJLHFCRW1CSTtFRmxCSixnQ0FBQTtBQ0FKOztBREdBO0VBQ0ksWUFBQTtBQ0FKOztBREVJO0VBQ0ksZ0JBQUE7RUFDQSxnQkFBQTtFQUVBLDJCQUFBO0VBQ0EsNEJBQUE7QUNEUjs7QURHUTtFQUNJLGtCQUFBO0VBQ0EscUJFR0o7QURKUjs7QURHUTtFQUNJLGlCQUFBO0VBQ0EscUJFREo7QURBUjs7QURJUTtFQUNJLHlCRUxKO0VGTUksWUFBQTtFQUNBLGdCQUFBO0FDRlo7O0FES1E7RUFDSSx1QkFBQTtFQUNBLGdCQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBRUEsZ0JBQUE7RUFDQSxpQkFBQTtBQ0paOztBRE1ZO0VBQ0ksV0FBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0VBQ0EsdUJBQUE7RUFDQSxrQkFBQTtBQ0poQjs7QURVQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7QUNQSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvc2l0ZXMvY29tcGFueS1zaXRlcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5icmFuY2hlc19fcm93IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4uY29sLWNvbXBhbnkge1xuICAgIGJvcmRlci1jb2xvcjogJGFkbWluO1xuICAgIGJvcmRlci1yaWdodDogZGFzaGVkICRhZG1pbiAxcHg7XG59XG5cbi5icmFuY2gtY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDE1cHg7XG5cbiAgICAuZHJhZy1kcm9wLXpvbmUge1xuICAgICAgICBtaW4td2lkdGg6IDM1MHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDQ1MHB4O1xuXG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDtcblxuICAgICAgICAmLmRyYWdnZWQtb3ZlciB7XG4gICAgICAgICAgICBib3JkZXI6IGRhc2hlZCAxcHg7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRhZG1pbjtcbiAgICAgICAgfVxuICAgICAgICAmOm5vdCguZHJhZ2dlZC1vdmVyKSB7XG4gICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGFkbWluO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFkbWluO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaXRlcy1ib3gge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcblxuICAgICAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuXG4gICAgICAgICAgICAuc2l0ZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDVweCAwO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogbGlnaHRncmV5O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJyYW5jaGVzX19jb21wYW55LWxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuIiwiLmJyYW5jaGVzX19yb3cge1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5jb2wtY29tcGFueSB7XG4gIGJvcmRlci1jb2xvcjogI2RiNGI0NztcbiAgYm9yZGVyLXJpZ2h0OiBkYXNoZWQgI2RiNGI0NyAxcHg7XG59XG5cbi5icmFuY2gtY29udGFpbmVyIHtcbiAgbWFyZ2luOiAxNXB4O1xufVxuLmJyYW5jaC1jb250YWluZXIgLmRyYWctZHJvcC16b25lIHtcbiAgbWluLXdpZHRoOiAzNTBweDtcbiAgbWF4LXdpZHRoOiA0NTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xufVxuLmJyYW5jaC1jb250YWluZXIgLmRyYWctZHJvcC16b25lLmRyYWdnZWQtb3ZlciB7XG4gIGJvcmRlcjogZGFzaGVkIDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjZGI0YjQ3O1xufVxuLmJyYW5jaC1jb250YWluZXIgLmRyYWctZHJvcC16b25lOm5vdCguZHJhZ2dlZC1vdmVyKSB7XG4gIGJvcmRlcjogc29saWQgMXB4O1xuICBib3JkZXItY29sb3I6ICNkYjRiNDc7XG59XG4uYnJhbmNoLWNvbnRhaW5lciAuZHJhZy1kcm9wLXpvbmUgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBjb2xvcjogd2hpdGU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYnJhbmNoLWNvbnRhaW5lciAuZHJhZy1kcm9wLXpvbmUgLnNpdGVzLWJveCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIG92ZXJmbG93OiBzY3JvbGw7XG4gIG1heC1oZWlnaHQ6IDUwMHB4O1xufVxuLmJyYW5jaC1jb250YWluZXIgLmRyYWctZHJvcC16b25lIC5zaXRlcy1ib3ggLnNpdGUge1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiA0cHggMTBweDtcbiAgbWFyZ2luOiAwIDAgNXB4IDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBib3JkZXItY29sb3I6IGxpZ2h0Z3JleTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuXG4uYnJhbmNoZXNfX2NvbXBhbnktbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogNXB4O1xuICBtYXJnaW4tYm90dG9tOiAwO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport Swal from 'sweetalert2';\nimport { AdminCompanyService } from '../../../../../pages/admin/company/company.service';\nimport { CartographyService } from '../../../../../pages/cartography/cartography.service';\nimport { ColorService } from '../../../../services/color/color.service';\nimport { CompaniesService } from '../../../../services/companies/companies.service';\nimport { SitesService } from '../../../../services/sites/sites.service';\n\n@Component({\n selector: 'ga-company-sites-tab',\n templateUrl: './company-sites.component.html',\n styleUrls: ['./company-sites.component.scss'],\n providers: [CartographyService, ColorService],\n})\nexport class CompanySitesComponent implements OnInit {\n @Input() company: any = null;\n\n branchesList = [];\n companyClone = null;\n isLoading = true;\n\n siteDragged = null; // needed to add a darker background-color on the dragged site div\n companyOrigin = null; // needed to know which company we need to remove the site from\n\n constructor(\n private cartographyService: CartographyService,\n private companyService: AdminCompanyService,\n private colorService: ColorService,\n private companiesService: CompaniesService,\n private sitesService: SitesService\n ) {}\n\n ngOnInit(): void {\n // need to clone the company object because it is the one that travels between tabs\n // we modify it by addind the branches --> not part of the model\n // --> if saved on another tab, it would try to save the branches as well\n this.companyClone = Object.assign({}, this.company);\n\n this.initBranches();\n }\n\n async initBranches() {\n // get all the branches\n const res = await this.companiesService.getBranches(this.companyClone._id, true);\n\n this.branchesList = res.data;\n\n this.setAffiliationDegrees();\n\n // asynchronously get all the sites of both the company and its branches\n const PromiseArray = this.branchesList.concat(this.companyClone).map(company => {\n return this.getSitesPopulated(company._id);\n });\n const results = await Promise.all(PromiseArray);\n\n // set a field sites in both the main company and its branches\n this.branchesList.forEach(branch => {\n // creates the sites in the branchList & in the company.branches (same reference)\n const branchSites = results.find(company => company.companyId === branch._id).sites;\n branch.sites = this.sortAscByProperty(branchSites, 'complement');\n });\n\n const companySites = results.find(company => company.companyId === this.companyClone._id).sites;\n this.companyClone.sites = this.sortAscByProperty(companySites, 'complement');\n\n this.companyClone.branches = this.sortAscByProperty(this.companyClone.branches, 'name');\n\n this.isLoading = false;\n }\n\n setAffiliationDegrees() {\n this.companyClone.branches.forEach(branch => {\n const result = this.findMaxAffiliationDegreePerFirstBranch(branch);\n if (!branch.maxDegree || branch.maxDegree < result) {\n branch.maxAffiliationDegree = result;\n }\n });\n }\n\n findMaxAffiliationDegreePerFirstBranch(branch) {\n if (branch.branches && branch.branches.length) {\n let max = 0;\n branch.branches.forEach(b => {\n const res = this.findMaxAffiliationDegreePerFirstBranch(b);\n max = res > max ? res : max;\n });\n return max;\n } else {\n return branch.affiliationDegree;\n }\n }\n\n // when dragged, background-color is red opacity 0.3,\n // when not dragged, the company's istes are red opacity 0.1 (lighter), and the branches are white\n getLightRedBackgroundColor(site) {\n let color = 'ADMIN';\n let opacity = null;\n\n if (this.siteDragged && site._id === this.siteDragged._id) {\n color = 'ADMIN';\n opacity = 0.3;\n } else if (this.companyClone.sites.some(s => s._id === site._id)) {\n color = 'ADMIN';\n opacity = 0.1;\n } else {\n color = 'WHITE';\n opacity = 1;\n }\n\n const rgba = this.colorService.hexToRgba(this.colorService.getHexColor(color), opacity);\n return `rgba(${rgba})`;\n }\n\n // return the sites of the company (populated with contracts and rfc)\n getSitesPopulated(companyId): Promise {\n return new Promise((resolve, reject) => {\n return this.cartographyService.getSites({ companies: companyId }).then(\n sites => {\n this.sitesService.createGoogleAddressToDisplay(sites);\n return resolve({\n companyId,\n sites: this.sortAscByProperty(sites, 'complement'),\n });\n },\n err => {\n // err.error_code is set to 'error_load_sites'\n this.sweetAlert(err.error_code);\n }\n );\n });\n }\n\n async moveSite(site, destinationCompany) {\n try {\n site.company = destinationCompany._id;\n await this.companyService.updateSite(site._id, site);\n\n destinationCompany.sites.push(site);\n this.companyOrigin.sites = this.companyOrigin.sites.filter(s => s._id !== site._id);\n\n this.companyOrigin = null;\n this.siteDragged = null;\n destinationCompany.draggedOver = false;\n } catch (error) {\n this.sweetAlert(error.errorCode);\n destinationCompany.draggedOver = false;\n }\n }\n\n getSiteClass(site) {\n let classes = 'site ';\n classes += this.siteDragged && site._id === this.siteDragged._id ? 'dragged' : '';\n return classes;\n }\n\n getBranchColClass(branch) {\n return branch.draggedOver ? 'dragged-over' : '';\n }\n\n // when an item is grabbed\n drag(site, company) {\n this.siteDragged = site;\n this.companyOrigin = company;\n }\n\n // when drop the item to move the company to that destination company\n async drop(destinationCompany) {\n // do no move the site if it is dropped in its own initial company\n if (!destinationCompany.sites.some(s => s._id.toString() === this.siteDragged._id.toString())) {\n await this.moveSite(this.siteDragged, destinationCompany);\n } else {\n this.companyOrigin = null;\n this.siteDragged = null;\n destinationCompany.draggedOver = false;\n }\n }\n\n // when dragged item is over the drop zone\n onDragOver(event, branch) {\n event.preventDefault(); // do not delete, fires (drop)\n branch.draggedOver = true;\n }\n\n // when dragged item leaves the drop zone\n onDragLeave(branch) {\n branch.draggedOver = false;\n }\n\n // if item is dropped, happens after the drop action\n // if drag ends but not over a drop zone, onDrageEnd si fired without the drop\n onDragEnd() {\n this.siteDragged = null;\n }\n\n sweetAlert(code) {\n const messages = {\n error_load_sites: [\n 'Toutes nos excuses',\n 'Une erreur est surveneue pendant le chargement de vos sites.',\n 'error',\n ],\n error_move_site: [\n 'Toutes nos excuses',\n \"Une erreur est surveneue lors du changement d'entreprise. Veuillez contacter votre Energy-Manager.\",\n 'error',\n ],\n error_default: [\n 'Toutes nos excuses',\n 'Une erreur est surveneue, veuillez réessayer ultérieurement.',\n 'error',\n ],\n };\n\n if (!messages[code]) {\n code = 'error_default';\n }\n\n Swal.fire(messages[code][0], messages[code][1], messages[code][2]);\n }\n\n hasNoBranches() {\n return !this.companyClone.branches || !this.companyClone.branches.length;\n }\n\n private sortAscByProperty(array, propertyToSortBy) {\n return array.sort(sortAsc);\n function sortAsc(optionA, optionB) {\n if (optionA[propertyToSortBy] < optionB[propertyToSortBy]) {\n return -1;\n } else if (optionA[propertyToSortBy] > optionB[propertyToSortBy]) {\n return 1;\n } else {\n return 0;\n }\n }\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvdXBsb2Fkcy9jb21wYW55LXVwbG9hZHMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AdminCompanyService } from 'app/pages/admin/company/company.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-company-uploads-tab',\n templateUrl: './company-uploads.component.html',\n styleUrls: ['./company-uploads.component.scss'],\n providers: [],\n})\nexport class CompanyUploadsComponent implements OnInit {\n @Input() company: any = null;\n @Input() canEdit = false;\n\n companyUploadsPatternMissing: any = [];\n companyUploadsNoPatterns: any = [];\n\n constructor(private companyService: AdminCompanyService, private router: Router) {}\n\n ngOnInit() {\n Promise.all([this.setUploadsPatternMissingList(), this.setUploadsNoPatternsList()]).then(\n results => {},\n error => {\n this.getSwalMsg(error.error_code);\n }\n );\n }\n\n getUploadRegexUrl(upload): string[] {\n return ['/collecte/regex/upload', upload._id];\n }\n\n getChunkRegexUrl(upload, chunk): string[] {\n return ['/collecte/regex/upload', upload._id, chunk._id];\n }\n\n getUploadIdentificationPatternUrl(upload): string[] {\n return ['/admin/entreprise', this.company._id, 'uploads', upload._id];\n }\n\n getChunkIdentificationPatternUrl(upload, chunk): string[] {\n return ['/admin/entreprise', this.company._id, 'uploads', upload._id, 'chunks', chunk._id];\n }\n\n getSwalMsg(msg_code) {\n const messages = {\n error_getListUploads: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des uploads.',\n 'error',\n ],\n };\n\n if (messages[msg_code]) {\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n }\n\n setUploadsPatternMissingList(): Promise {\n return new Promise((resolve, reject) => {\n this.companyService.getUploadPatternMissingList(this.company).then(\n allUploads => {\n if (allUploads.length) {\n // companyUsers: push all the users belonging to the company + being of type 'user' or 'energy manager'\n this.companyUploadsPatternMissing = allUploads;\n }\n },\n err => {\n // err.code is set to 'error_getListUsers';\n reject(err);\n }\n );\n });\n }\n\n setUploadsNoPatternsList(): Promise {\n return new Promise((resolve, reject) => {\n this.companyService.getUploadNoPatternsList(this.company).then(\n allUploads => {\n if (allUploads.length) {\n // companyUsers: push all the users belonging to the company + being of type 'user' or 'energy manager'\n this.companyUploadsNoPatterns = allUploads;\n }\n },\n err => {\n // err.code is set to 'error_getListUsers';\n reject(err);\n }\n );\n });\n }\n}\n","export default \".collapsed-chevron {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n margin-bottom: 3px;\\n -webkit-transition: 0.3s all;\\n transition: 0.3s all;\\n}\\n\\n.users-container {\\n font-size: 14px;\\n}\\n\\n.users-container .form-control {\\n font-size: 14px;\\n width: auto;\\n min-width: 100px;\\n}\\n\\n.uncollapsed-chevron {\\n margin-bottom: 3px;\\n -webkit-transition: 0.3s all;\\n transition: 0.3s all;\\n}\\n\\n.cursor-pointer {\\n cursor: pointer;\\n}\\n\\ntd {\\n vertical-align: middle;\\n}\\n\\ntd .delete-icon-fa {\\n font-size: 16px;\\n color: #db4b47;\\n}\\n\\n.citron-btn {\\n padding: 10px;\\n}\\n\\n.svg-icon {\\n height: 33px;\\n width: 33px;\\n}\\n\\n.checkbox {\\n width: 24px;\\n max-width: 24px;\\n}\\n\\n.new-page {\\n color: #8fc3e6;\\n}\\n\\n.add-icon {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n margin-left: 20px;\\n}\\n\\n.disabled {\\n pointer-events: none;\\n}\\n\\n.add-user {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-align: start;\\n align-items: flex-start;\\n}\\n\\n.add-user .citron-btn {\\n margin-left: 15px;\\n}\\n\\nlabel {\\n font-weight: 600;\\n}\\n\\n.table-borderless thead td {\\n border: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvdXNlcnMvY29tcGFueS11c2Vycy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vY29tcGFueS91c2Vycy9jb21wYW55LXVzZXJzLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxnQ0FBQTtVQUFBLHdCQUFBO0VBQ0Esa0JBQUE7RUFDQSw0QkFBQTtFQUFBLG9CQUFBO0FDRko7O0FESUE7RUFDSSxlQUFBO0FDREo7O0FER0k7RUFDSSxlQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0FDRFI7O0FES0E7RUFDSSxrQkFBQTtFQUNBLDRCQUFBO0VBQUEsb0JBQUE7QUNGSjs7QURLQTtFQUNJLGVBQUE7QUNGSjs7QURLQTtFQUNJLHNCQUFBO0FDRko7O0FESUk7RUFDSSxlQUFBO0VBQ0EsY0VQQTtBREtSOztBRE1BO0VBQ0ksYUFBQTtBQ0hKOztBRE1BO0VBQ0ksWUFBQTtFQUNBLFdBQUE7QUNISjs7QURNQTtFQUNJLFdBQUE7RUFDQSxlQUFBO0FDSEo7O0FETUE7RUFDSSxjQUFBO0FDSEo7O0FETUE7RUdyREksWUhzRGlCO0VHckRqQixXSHFEdUI7RUdwRHZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCRGlCQTtFQ2JBLCtEQUFBO1VBQUEsdURBQUE7RUg0Q0osaUJBQUE7QUNHSjs7QURBQTtFQUNJLG9CQUFBO0FDR0o7O0FEQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDZCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDR0o7O0FEREk7RUFDSSxpQkFBQTtBQ0dSOztBRENBO0VBQ0ksZ0JBQUE7QUNFSjs7QURHUTtFQUNJLFlBQUE7QUNBWiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2NvbXBhbnkvdXNlcnMvY29tcGFueS11c2Vycy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5cbi5jb2xsYXBzZWQtY2hldnJvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgICB0cmFuc2l0aW9uOiAwLjNzIGFsbDtcbn1cbi51c2Vycy1jb250YWluZXIge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgIH1cbn1cblxuLnVuY29sbGFwc2VkLWNoZXZyb24ge1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgICB0cmFuc2l0aW9uOiAwLjNzIGFsbDtcbn1cblxuLmN1cnNvci1wb2ludGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbnRkIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgLmRlbGV0ZS1pY29uLWZhIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBjb2xvcjogJGFkbWluO1xuICAgIH1cbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cbi5zdmctaWNvbiB7XG4gICAgaGVpZ2h0OiAzM3B4O1xuICAgIHdpZHRoOiAzM3B4O1xufVxuXG4uY2hlY2tib3gge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIG1heC13aWR0aDogMjRweDtcbn1cblxuLm5ldy1wYWdlIHtcbiAgICBjb2xvcjogIzhmYzNlNjtcbn1cblxuLmFkZC1pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDMwcHgsIDMwcHgsICRhZG1pbiwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fYWRkLnN2ZycpO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uZGlzYWJsZWQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYWRkLXVzZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAgIC5jaXRyb24tYnRuIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgfVxufVxuXG5sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnRhYmxlLWJvcmRlcmxlc3Mge1xuICAgIHRoZWFkIHtcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmNvbGxhcHNlZC1jaGV2cm9uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gIHRyYW5zaXRpb246IDAuM3MgYWxsO1xufVxuXG4udXNlcnMtY29udGFpbmVyIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLnVzZXJzLWNvbnRhaW5lciAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB3aWR0aDogYXV0bztcbiAgbWluLXdpZHRoOiAxMDBweDtcbn1cblxuLnVuY29sbGFwc2VkLWNoZXZyb24ge1xuICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gIHRyYW5zaXRpb246IDAuM3MgYWxsO1xufVxuXG4uY3Vyc29yLXBvaW50ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbnRkIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbnRkIC5kZWxldGUtaWNvbi1mYSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICNkYjRiNDc7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuLnN2Zy1pY29uIHtcbiAgaGVpZ2h0OiAzM3B4O1xuICB3aWR0aDogMzNweDtcbn1cblxuLmNoZWNrYm94IHtcbiAgd2lkdGg6IDI0cHg7XG4gIG1heC13aWR0aDogMjRweDtcbn1cblxuLm5ldy1wYWdlIHtcbiAgY29sb3I6ICM4ZmMzZTY7XG59XG5cbi5hZGQtaWNvbiB7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2FkZC5zdmdcIik7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmFkZC11c2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG4uYWRkLXVzZXIgLmNpdHJvbi1idG4ge1xuICBtYXJnaW4tbGVmdDogMTVweDtcbn1cblxubGFiZWwge1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4udGFibGUtYm9yZGVybGVzcyB0aGVhZCB0ZCB7XG4gIGJvcmRlcjogbm9uZTtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiJdfQ== */\"","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AdminCompanyService } from 'app/pages/admin/company/company.service';\nimport { AutoCompleteItem } from 'app/shared/components/common/ultra-simple-autocomplete/ultra-simple-autocomplete.interface';\nimport { MultipleAutocompleteFilterComponent } from 'app/shared/components/filters/multiple-autocomplete-filter/multiple-autocomplete-filter.component';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { PagesList } from 'app/shared/services/rights/rights.interface';\nimport { RightsService } from 'app/shared/services/rights/rights.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { TextService } from 'app/shared/services/utils/text.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-company-users-tab',\n templateUrl: './company-users.component.html',\n styleUrls: ['./company-users.component.scss'],\n providers: [],\n})\nexport class CompanyUsersComponent implements OnInit {\n @Input() company: any = null;\n @Input() userSession: any = null;\n @Input() canEdit = false;\n\n @Input() userTypesAvailable: string[] = [UserTypes.USER, UserTypes.USER_ADMIN];\n userRolesExisting = ['users', 'viewers']; // to remove from the selectbox options the users already stored as users / viewers\n\n // to associate readOnly or Editable values\n @Input() tableProperties: {\n companyRole: string; // \"users\" or \"viewers\": the name of the property inside the Company Model in which we find the users to display in the table\n rightsAvailable: Array<{ name: string; value: number }>;\n };\n\n @ViewChild(MultipleAutocompleteFilterComponent, { static: false })\n multipleAutocompleteFilterComponent: MultipleAutocompleteFilterComponent;\n\n usersSelectBox: any[] = [];\n companyUsers: any[] = []; // includes the whole User Object\n\n usersCollapsed: any = {};\n pagesName: PagesList = {};\n rightsListPerUser: any = [];\n\n constructor(\n private companyService: AdminCompanyService,\n private router: Router,\n private usersService: UsersService,\n private rightsService: RightsService,\n private textService: TextService\n ) {}\n\n ngOnInit() {\n this.setUsersList().catch(err => {\n // err.error_code is set to error_getListUsers / error_getListPages /error_getRightsByCompany\n this.getSwalMsg(err.error_code);\n });\n }\n\n /**\n * Add a user to the company\n */\n async addUser(user: any) {\n try {\n // add the user to the company before saving it\n this.company[this.tableProperties.companyRole].push(user._id);\n\n // empty the values in currentValuesSelected so they can be reselected\n this.multipleAutocompleteFilterComponent.resetCurrentValuesSelected();\n\n await this.companyService.updateCompany(this.company);\n\n // add the default rights to the new user in the rightsList\n this.addRightToUser(user);\n\n // save the rights\n await this.saveUserRights(user, 'create');\n\n await this.setUsersList();\n\n this.collapse(user);\n\n this.getSwalMsg('saveRights');\n } catch (error) {\n const code = error.error_code ? error.error_code : error.errorCode;\n this.getSwalMsg(code);\n }\n }\n\n getSwalMsg(msg_code) {\n const messages = {\n error_getListUsers: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des utilisateurs.',\n 'error',\n ],\n error_getAllUsers: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des utilisateurs.',\n 'error',\n ],\n error_getListPages: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des noms de pages.',\n 'error',\n ],\n error_getRightsByCompany: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des droits.',\n 'error',\n ],\n error_updateCompany: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la mise à jour des utilisateurs.',\n 'error',\n ],\n error_updateNewRights: [\n 'Toutes nos excuses',\n \"Une erreur est surevenue pendant la création des droits de l'utilisateur.\",\n 'error',\n ],\n error_createNewRights: [\n 'Toutes nos excuses',\n \"Une erreur est surevenue pendant la mise à jour des droits de l'utilisateur.\",\n 'error',\n ],\n saveRights: ['Sauvegardé', 'Les droits ont bien été sauvegardés', 'success'],\n company_saved: ['Supprimé', \"L'utilisateur a bien été supprimé\", 'success'],\n error_deleteRights: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la suppression des droits.',\n 'error',\n ],\n };\n\n if (messages[msg_code]) {\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n }\n\n /**\n * Get visible users\n *\n * @returns {Promise}\n */\n async getVisibleUsers(): Promise {\n if ([UserTypes.ADMIN, UserTypes.ENERGY_MANAGER].includes(this.userSession.type)) {\n return this.usersService.getAllUsersByFilter({\n types: this.userTypesAvailable,\n });\n } else {\n return this.userSession.relations;\n }\n }\n\n async setUsersList(): Promise {\n const allUsers = await this.getVisibleUsers();\n this.usersSelectBox = [];\n this.companyUsers = [];\n\n if (allUsers.length) {\n // usersSelectBox: push all the users NOT belonging to the company's users'/viewers + having the correct type\n\n this.usersSelectBox = allUsers.filter(\n user =>\n // don't keep the users already added inside the company's users or viewers\n !this.userRolesExisting.some(userRole => {\n return this.company[userRole].find(userId => userId === user._id.toString());\n }) && this.userTypesAvailable.includes(user.type)\n ); // keep the users having the correct type (user or viewer depending on the tab)\n\n // companyUsers: push all the users belonging to the company + having an available type\n this.companyUsers = allUsers.filter(\n user =>\n this.company[this.tableProperties.companyRole].find(userId => userId === user._id.toString()) &&\n this.userTypesAvailable.includes(user.type)\n );\n this.usersSelectBox.forEach(user => (user.displayName = this.getDisplayName(user)));\n }\n\n this.usersSelectBox.sort(this.sortListAlphabetically);\n this.companyUsers.sort(this.sortListAlphabetically);\n\n this.initCollapse();\n\n await this.setPagesName();\n await this.setRightsList();\n return;\n }\n\n sortListAlphabetically(userA, userB) {\n const a = userA.name + userA.firstname;\n const b = userB.name + userB.firstname;\n return a.localeCompare(b);\n }\n\n isDisabled() {\n return this.usersSelectBox.length ? '' : 'disabled';\n }\n\n getUserName(user): string {\n return user.firstname ? user.firstname + ' ' + user.name : user.name;\n }\n\n /*\n * Returns the name of a user as we want it to be displayed in the auto-complete list\n */\n getDisplayName(user: any): string {\n return user.firstname\n ? user.name.toUpperCase() + ' ' + this.textService.toTitleCase(user.firstname)\n : user.name.toUpperCase();\n }\n\n initCollapse() {\n this.companyUsers.forEach(user => {\n this.usersCollapsed[user._id] = true;\n });\n }\n\n collapse(user) {\n this.usersCollapsed[user._id] = !this.usersCollapsed[user._id];\n }\n\n isCollapsedClass(user) {\n return this.usersCollapsed[user._id] ? 'uncollapsed-chevron' : 'collapsed-chevron';\n }\n\n isCollapsed(user) {\n return this.usersCollapsed[user._id];\n }\n\n hasUsers() {\n return this.companyUsers.length;\n }\n\n async setPagesName(): Promise {\n const pagesList = await this.rightsService.getPagesListURLs();\n this.pagesName = pagesList;\n }\n\n async setRightsList(): Promise {\n this.rightsListPerUser = [];\n const rightsList = await this.rightsService.getRightsListByCompany(this.company._id);\n\n // rightList : rights per user per company already initialized\n this.companyUsers.forEach(user => {\n const userRights = rightsList.find(right => right.user === user._id && right.company === this.company._id);\n\n // if the user already has some rights stored, create and display them\n if (!userRights) {\n this.addRightToUser(user);\n } else {\n this.checkRightsConstistency(userRights);\n this.rightsListPerUser.push(userRights);\n }\n });\n }\n\n addRightToUser(user) {\n const rightPerUser = {\n user: user._id,\n company: this.company._id,\n rights: this.initializeUserRights(), // initialize all the user rights with \"read only\"\n };\n\n this.rightsListPerUser.push(rightPerUser);\n }\n\n getPageName(page) {\n return this.pagesName[page.page].name;\n }\n\n getSubPageName(page, subPage) {\n return this.pagesName[page.page].subPages[subPage.name].name;\n }\n\n // initialize all the user rights with \"read only\"\n initializeUserRights() {\n const rights = [];\n Object.keys(this.pagesName).forEach(page => {\n this.initializePageRights(page, rights); // initialize the whole page/subpages rights with \"read only\"\n });\n return rights;\n }\n\n // initialize the whole page/subpages rights with \"read only\"\n initializePageRights(page, rights) {\n const pageRights = {\n page,\n subPages: [],\n right: null,\n state: 'new',\n };\n\n if (this.pagesName[page].subPages) {\n pageRights.right = null;\n delete pageRights.state;\n Object.keys(this.pagesName[page].subPages).forEach(subPage => {\n pageRights.subPages.push({\n name: subPage,\n right: 1,\n state: 'new',\n });\n });\n } else {\n pageRights.right = 1;\n }\n\n rights.push(pageRights);\n }\n\n // 1. if the user rights have extra pages -> delete them\n // 2. if the user rights have extra subpages -> delete them\n // 3. if a page had subpages and is now a single one - delete the entire page\n // 4. if the user rights don't have all the pages/subpages -> add them\n checkRightsConstistency(userRights) {\n // delete the pages or subpages that don't exist anymore\n // 1. keep only the pages that are included in pagesName\n userRights.rights = userRights.rights.filter(pageRight => {\n return this.pagesName.hasOwnProperty(pageRight.page);\n });\n\n // 2. keep only the subPages that are included in pagesName\n userRights.rights.forEach(pageRight => {\n pageRight.subPages = pageRight.subPages.filter(subpageRight => {\n return (\n this.pagesName[pageRight.page].subPages &&\n this.pagesName[pageRight.page].subPages.hasOwnProperty(subpageRight.name)\n );\n });\n });\n\n // 3. if a page had subpages before and is now a single page -> its right is null and subPages just got deleted\n // we delete the whole page so that it appears blue and new\n userRights.rights = userRights.rights.filter(pageRight => {\n return !(pageRight.right === null && !pageRight.subPages.length);\n });\n\n // 4. add the missing pages or subPages\n // pagesName is the reference : it has all the pages for which a right should be filled in\n Object.keys(this.pagesName).forEach(page => {\n const currentPageRights = userRights.rights.find(right => right.page === page);\n\n // check if the page is missing\n if (!currentPageRights) {\n this.initializePageRights(page, userRights.rights); // initialize the whole page/subpages rights with \"read only\"\n } else if (this.pagesName[page].subPages) {\n // check if any subPage is missing\n // every official subpage must be included in the current subPages list\n Object.keys(this.pagesName[page].subPages).forEach(subPage => {\n if (!currentPageRights.subPages.some(subP => subP.name === subPage)) {\n currentPageRights.subPages.push({\n name: subPage,\n right: 1,\n state: 'new',\n });\n }\n });\n }\n });\n }\n\n getClassForCheckbox(valueForChecked, page) {\n return page.right === valueForChecked ? 'fa-check-square' : 'fa-square-o';\n }\n\n isNewPage(page) {\n return page.state === 'new' ? 'new-page' : '';\n }\n\n hasSubPages(page) {\n return page.subPages.length;\n }\n\n async onSaveBtn(user) {\n try {\n await this.saveUserRights(user, 'update');\n\n await this.setRightsList();\n this.getSwalMsg('saveRights');\n } catch (error) {\n this.getSwalMsg(error.error_code);\n }\n }\n\n async saveUserRights(user, action): Promise {\n const userRights = this.rightsListPerUser.find(rights => rights.user.toString() === user._id.toString());\n // the rights need to be created, the user doesn't have any rights for that company yet\n\n switch (action) {\n case 'update':\n await this.rightsService.updateUserRightsById(userRights);\n break;\n\n case 'create':\n await this.rightsService.createUserRights(userRights);\n break;\n\n case 'delete':\n await this.rightsService.deleteUserRightsById(userRights);\n break;\n }\n }\n\n isloadingTableRights() {\n return this.rightsListPerUser.length < this.companyUsers.length;\n }\n\n onCheckboxChange(value, page) {\n if (page.right === value) {\n page.right = 0;\n } else {\n page.right = value;\n }\n }\n\n async removeUserFromCompany(userToDelete) {\n try {\n this.company[this.tableProperties.companyRole] = this.company[this.tableProperties.companyRole].filter(\n user => user !== userToDelete._id.toString()\n );\n await this.companyService.updateCompany(this.company);\n\n await this.saveUserRights(userToDelete, 'delete');\n\n await this.setUsersList();\n\n this.getSwalMsg('company_saved');\n } catch (err) {\n const code = err.error_code ? err.error_code : err.errorCode;\n this.getSwalMsg(code);\n }\n }\n\n createUser() {\n this.router.navigateByUrl(\n `/admin/utilisateurs/creer/${this.company._id}?l=${this.tableProperties.companyRole}`\n );\n }\n}\n","export default \".btn-container-save {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n\\n.citron-btn {\\n padding: 10px;\\n}\\n\\nlabel {\\n font-weight: 600;\\n}\\n\\n.component-margin-top-bottom {\\n margin: 20px 0px 20px 0px;\\n}\\n\\n.container-padding {\\n padding: 30px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2lkZW50aWZpY2F0aW9uLXBhdHRlcm4tc2VhcmNoL2lkZW50aWZpY2F0aW9uLXBhdHRlcm4tc2VhcmNoLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi9pZGVudGlmaWNhdGlvbi1wYXR0ZXJuLXNlYXJjaC9pZGVudGlmaWNhdGlvbi1wYXR0ZXJuLXNlYXJjaC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHFCQUFBO1VBQUEseUJBQUE7QUNDSjs7QURFQTtFQUNJLGFBQUE7QUNDSjs7QURFQTtFQUNJLGdCQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtBQ0NKOztBREVBO0VBQ0ksYUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vaWRlbnRpZmljYXRpb24tcGF0dGVybi1zZWFyY2gvaWRlbnRpZmljYXRpb24tcGF0dGVybi1zZWFyY2guY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnRuLWNvbnRhaW5lci1zYXZlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG5sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmNvbXBvbmVudC1tYXJnaW4tdG9wLWJvdHRvbSB7XG4gICAgbWFyZ2luOiAyMHB4IDBweCAyMHB4IDBweDtcbn1cblxuLmNvbnRhaW5lci1wYWRkaW5nIHtcbiAgICBwYWRkaW5nOiAzMHB4O1xufVxuIiwiLmJ0bi1jb250YWluZXItc2F2ZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgcGFkZGluZzogMTBweDtcbn1cblxubGFiZWwge1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uY29tcG9uZW50LW1hcmdpbi10b3AtYm90dG9tIHtcbiAgbWFyZ2luOiAyMHB4IDBweCAyMHB4IDBweDtcbn1cblxuLmNvbnRhaW5lci1wYWRkaW5nIHtcbiAgcGFkZGluZzogMzBweDtcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport {\n ContractType,\n IdentificationPatternService,\n} from 'app/shared/services/identification-pattern/identification-pattern.service';\nimport { RegexService } from 'app/shared/services/regex/regex.service';\nimport { IdentificationPattern } from '../../../models/identification-pattern.interface';\n\ninterface IdentificationPatternResult extends IdentificationPattern {\n tests: {\n provider: string;\n option: string;\n contractType: string;\n };\n}\n@Component({\n selector: 'ga-identification-pattern-search',\n templateUrl: './identification-pattern-search.component.html',\n styleUrls: ['./identification-pattern-search.component.scss'],\n})\nexport class IdentificationPatternSearchComponent implements OnInit {\n isMultiChunk = false;\n currentFluid: string = null;\n currentProvider: string = null;\n currentContractType: string = null;\n fluids: string[] = [];\n providers: string[] = [];\n contractTypes: ContractType[] = [];\n identificationPatterns: IdentificationPatternResult[] = [];\n identificationPatternId: string;\n\n @Output() search = new EventEmitter();\n @Input() textContent: any = null;\n\n constructor(\n private identificationPatternService: IdentificationPatternService,\n private regexService: RegexService,\n private energyService: EnergyService\n ) {\n this.loadFluidsAvailable(false);\n }\n\n ngOnInit() {}\n\n resetData(arrayPropertiesToReset, propertiesToReset) {\n arrayPropertiesToReset.forEach(property => {\n this[property] = [];\n });\n propertiesToReset.forEach(property => {\n this[property] = null;\n });\n }\n\n testRegex(regex) {\n return this.regexService.testRegex(this.textContent, regex);\n }\n\n /**\n * Load fluids available and reset related data (providers, ...)\n * @param {boolean} isMultiChunk - true if upload is multichunk\n */\n loadFluidsAvailable(isMultiChunk: boolean) {\n this.isMultiChunk = isMultiChunk;\n this.resetData(\n ['energies', 'providers', 'contractTypes', 'identificationPatterns'],\n ['currentEnergyType', 'currentProvider', 'currentContractType', 'identificationPatternId']\n );\n this.fluids = this.energyService.getAllFluids();\n }\n\n /**\n * Load proviers avaible for a given fluid\n * @param {string} fluid\n */\n async loadProvidersAvailable(fluid: string) {\n try {\n this.currentFluid = fluid;\n const providers = await this.identificationPatternService.getProviders(\n this.isMultiChunk,\n this.currentFluid\n );\n this.resetData(\n ['providers', 'contractTypes', 'identificationPatterns'],\n ['currentProvider', 'currentContractType', 'identificationPatternId']\n );\n this.providers = providers;\n } catch (e) {\n this.providers = [];\n }\n }\n\n loadContractOrIdentification(provider) {\n this.currentProvider = provider;\n if (this.isMultiChunk) {\n this.loadIdentificationPatternsAvailable();\n } else {\n this.loadContractTypesAvailable();\n }\n }\n\n /**\n * Load contract types avaible for the current provider and fluid.\n */\n async loadContractTypesAvailable() {\n try {\n const contractTypes = await this.identificationPatternService.getContractTypes(\n this.isMultiChunk,\n this.currentFluid,\n this.currentProvider\n );\n this.resetData(\n ['contractTypes', 'identificationPatterns'],\n ['currentContractType', 'identificationPatternId']\n );\n this.contractTypes = contractTypes;\n } catch (e) {\n this.contractTypes = [];\n }\n }\n\n /**\n * Load identification patterns available and compute tests on regex.\n * Get identification patterns with current fluid, provider and contract type.\n * @param {string} contractType\n */\n async loadIdentificationPatternsAvailable(contractType?: string) {\n try {\n this.currentContractType = contractType;\n const patterns = await this.identificationPatternService.getIdentificationPatterns(\n this.isMultiChunk,\n this.currentFluid,\n this.currentProvider,\n this.currentContractType\n );\n this.resetData(['identificationPatterns'], ['identificationPatternId']);\n this.prepareIdentificationPatternList(patterns);\n } catch (e) {\n this.prepareIdentificationPatternList([]);\n }\n }\n\n /**\n * Prepare and set identification pattern result list\n * @param {IdentificationPattern[]} identificationPatterns\n */\n async prepareIdentificationPatternList(identificationPatterns: IdentificationPattern[]) {\n const identificationPatternsResults = await Promise.all(\n identificationPatterns.map(item => {\n return this.preparePatternResult(item, this.isMultiChunk);\n })\n );\n this.identificationPatterns = identificationPatternsResults;\n }\n\n /**\n * Prepare identification pattern result\n * @param {IdentificationPattern} identificationPattern\n * @param {boolean} isMulti\n * @returns {Promise}\n */\n private async preparePatternResult(\n item: IdentificationPattern,\n isMulti: boolean\n ): Promise {\n try {\n const promises = [this.testRegex(item.provider.regex), this.testRegex(item.optionRegex)];\n if (isMulti) {\n promises.push(this.testRegex(item.contractType.regex));\n }\n const [providers, options, contracts] = await Promise.all(promises);\n const result = Object.assign(\n {\n tests: {\n provider: providers && providers.length ? providers[0] : 'pas de match',\n option: options && options.length ? options[0] : 'pas de match',\n contractType: isMulti && contracts && contracts.length ? contracts[0] : 'pas de match',\n },\n },\n item\n );\n return result;\n } catch (e) {\n const result = Object.assign(\n {\n tests: {\n provider: null,\n option: null,\n contractType: null,\n },\n },\n item\n );\n return result;\n }\n }\n\n emitSearch() {\n this.identificationPatternService\n .getIdentificationPattern(this.identificationPatternId)\n .then(identificationPattern => {\n this.search.emit(identificationPattern);\n });\n }\n}\n","export default \".profile-container {\\n font-size: 14px;\\n}\\n.profile-container .form-control {\\n font-size: 14px;\\n}\\n.container-flex-row {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-align: baseline;\\n align-items: baseline;\\n}\\n.container-flex-column-right {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: end;\\n align-items: flex-end;\\n}\\n.container-padding {\\n padding: 30px;\\n}\\n.component-margin-top-bottom {\\n margin: 20px 0px 20px 0px;\\n}\\n.component-margin-left-right {\\n margin: 0px 10px 0px 10px;\\n}\\n.component-margin-left {\\n margin: 0px 0px 0px 10px;\\n}\\n.component-margin-right {\\n margin: 0px 10px 0px 0px;\\n}\\n.margin-auto {\\n margin: auto;\\n}\\n.text-label {\\n text-align: center;\\n white-space: nowrap;\\n}\\n.btn-container-save {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-align: stretch;\\n align-items: stretch;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n.citron-btn {\\n padding: 7px;\\n}\\n.add-icon {\\n height: 25px;\\n width: 25px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_add.svg\\\");\\n width: 30px;\\n height: 30px;\\n display: block;\\n margin: -7px;\\n}\\n.remove-icon {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n width: 30px;\\n height: 30px;\\n margin: auto;\\n}\\n.warning-icon {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_warning.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_warning.svg\\\");\\n}\\n.disabled {\\n pointer-events: none;\\n}\\nlabel {\\n font-weight: 600;\\n}\\nspan .holding {\\n padding-left: 40px;\\n}\\nspan .branch {\\n margin-bottom: 16px;\\n}\\n.autocomplete {\\n display: block;\\n max-width: 450px;\\n width: 100%;\\n margin-bottom: 12px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL2lkZW50aWZpY2F0aW9uLXBhdHRlcm4vaWRlbnRpZmljYXRpb24tcGF0dGVybi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vaWRlbnRpZmljYXRpb24tcGF0dGVybi9pZGVudGlmaWNhdGlvbi1wYXR0ZXJuLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxlQUFBO0FDRko7QURJSTtFQUNJLGVBQUE7QUNGUjtBRE1BO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsOEJBQUE7RUFBQSw2QkFBQTtVQUFBLG1CQUFBO0VBQ0EsMkJBQUE7VUFBQSxxQkFBQTtBQ0hKO0FETUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7RUFDQSxzQkFBQTtVQUFBLHFCQUFBO0FDSEo7QURNQTtFQUNJLGFBQUE7QUNISjtBRE1BO0VBQ0kseUJBQUE7QUNISjtBRE1BO0VBQ0kseUJBQUE7QUNISjtBRE1BO0VBQ0ksd0JBQUE7QUNISjtBRE1BO0VBQ0ksd0JBQUE7QUNISjtBRE1BO0VBQ0ksWUFBQTtBQ0hKO0FETUE7RUFDSSxrQkFBQTtFQUNBLG1CQUFBO0FDSEo7QURNQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDhCQUFBO0VBQUEsNkJBQUE7VUFBQSxtQkFBQTtFQUNBLDBCQUFBO1VBQUEsb0JBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0FDSEo7QURNQTtFQUNJLFlBQUE7QUNISjtBRE1BO0VFOURJLFlGK0RpQjtFRTlEakIsV0Y4RHVCO0VFN0R2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkNpQkE7RURiQSwrREFBQTtVQUFBLHVEQUFBO0VGcURKLFdBQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtFQUNBLFlBQUE7QUNHSjtBREFBO0VFdEVJLFlGdUVpQjtFRXRFakIsV0ZzRXVCO0VFckV2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkNpQkE7RURiQSxxRUFBQTtVQUFBLDZEQUFBO0VGNkRKLFdBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtBQ1NKO0FETkE7RUU3RUksWUY4RWlCO0VFN0VqQixXRjZFdUI7RUU1RXZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ2lCQTtFRGJBLG1FQUFBO1VBQUEsMkRBQUE7QURrRlI7QURaQTtFQUNJLG9CQUFBO0FDZUo7QURaQTtFQUNJLGdCQUFBO0FDZUo7QURYSTtFQUNJLGtCQUFBO0FDY1I7QURYSTtFQUNJLG1CQUFBO0FDYVI7QURUQTtFQUNJLGNBQUE7RUFDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtBQ1lKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vaWRlbnRpZmljYXRpb24tcGF0dGVybi9pZGVudGlmaWNhdGlvbi1wYXR0ZXJuLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLnByb2ZpbGUtY29udGFpbmVyIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgIH1cbn1cblxuLmNvbnRhaW5lci1mbGV4LXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbn1cblxuLmNvbnRhaW5lci1mbGV4LWNvbHVtbi1yaWdodCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cblxuLmNvbnRhaW5lci1wYWRkaW5nIHtcbiAgICBwYWRkaW5nOiAzMHB4O1xufVxuXG4uY29tcG9uZW50LW1hcmdpbi10b3AtYm90dG9tIHtcbiAgICBtYXJnaW46IDIwcHggMHB4IDIwcHggMHB4O1xufVxuXG4uY29tcG9uZW50LW1hcmdpbi1sZWZ0LXJpZ2h0IHtcbiAgICBtYXJnaW46IDBweCAxMHB4IDBweCAxMHB4O1xufVxuXG4uY29tcG9uZW50LW1hcmdpbi1sZWZ0IHtcbiAgICBtYXJnaW46IDBweCAwcHggMHB4IDEwcHg7XG59XG5cbi5jb21wb25lbnQtbWFyZ2luLXJpZ2h0IHtcbiAgICBtYXJnaW46IDBweCAxMHB4IDBweCAwcHg7XG59XG5cbi5tYXJnaW4tYXV0byB7XG4gICAgbWFyZ2luOiBhdXRvO1xufVxuXG4udGV4dC1sYWJlbCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5idG4tY29udGFpbmVyLXNhdmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgICBwYWRkaW5nOiA3cHg7XG59XG5cbi5hZGQtaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigyNXB4LCAyNXB4LCAkYWRtaW4sICcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2FkZC5zdmcnKTtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAtN3B4O1xufVxuXG4ucmVtb3ZlLWljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMjBweCwgMjBweCwgJGFkbWluLCAnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b191bmNoZWNrZWQuc3ZnJyk7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIG1hcmdpbjogYXV0bztcbn1cblxuLndhcm5pbmctaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigzMHB4LCAzMHB4LCAkYWRtaW4sICcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3dhcm5pbmcuc3ZnJyk7XG59XG5cbi5kaXNhYmxlZCB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbmxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG5zcGFuIHtcbiAgICAuaG9sZGluZyB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcbiAgICB9XG5cbiAgICAuYnJhbmNoIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG59XG5cbi5hdXRvY29tcGxldGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1heC13aWR0aDogNDUwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cbiIsIi5wcm9maWxlLWNvbnRhaW5lciB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cbi5wcm9maWxlLWNvbnRhaW5lciAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uY29udGFpbmVyLWZsZXgtcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuXG4uY29udGFpbmVyLWZsZXgtY29sdW1uLXJpZ2h0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xufVxuXG4uY29udGFpbmVyLXBhZGRpbmcge1xuICBwYWRkaW5nOiAzMHB4O1xufVxuXG4uY29tcG9uZW50LW1hcmdpbi10b3AtYm90dG9tIHtcbiAgbWFyZ2luOiAyMHB4IDBweCAyMHB4IDBweDtcbn1cblxuLmNvbXBvbmVudC1tYXJnaW4tbGVmdC1yaWdodCB7XG4gIG1hcmdpbjogMHB4IDEwcHggMHB4IDEwcHg7XG59XG5cbi5jb21wb25lbnQtbWFyZ2luLWxlZnQge1xuICBtYXJnaW46IDBweCAwcHggMHB4IDEwcHg7XG59XG5cbi5jb21wb25lbnQtbWFyZ2luLXJpZ2h0IHtcbiAgbWFyZ2luOiAwcHggMTBweCAwcHggMHB4O1xufVxuXG4ubWFyZ2luLWF1dG8ge1xuICBtYXJnaW46IGF1dG87XG59XG5cbi50ZXh0LWxhYmVsIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uYnRuLWNvbnRhaW5lci1zYXZlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLmNpdHJvbi1idG4ge1xuICBwYWRkaW5nOiA3cHg7XG59XG5cbi5hZGQtaWNvbiB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDI1cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2FkZC5zdmdcIik7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IC03cHg7XG59XG5cbi5yZW1vdmUtaWNvbiB7XG4gIGhlaWdodDogMjBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3VuY2hlY2tlZC5zdmdcIik7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIG1hcmdpbjogYXV0bztcbn1cblxuLndhcm5pbmctaWNvbiB7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3dhcm5pbmcuc3ZnXCIpO1xufVxuXG4uZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxubGFiZWwge1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG5zcGFuIC5ob2xkaW5nIHtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuc3BhbiAuYnJhbmNoIHtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuLmF1dG9jb21wbGV0ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXgtd2lkdGg6IDQ1MHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn0iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, Input, OnChanges, OnInit, SimpleChange } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\nimport { IdentificationPatternService } from '../../../services/identification-pattern/identification-pattern.service';\nimport { RegexService } from '../../../services/regex/regex.service';\nimport { AutoCompleteItem } from '../../common/ultra-simple-autocomplete/ultra-simple-autocomplete.interface';\n\n@Component({\n selector: 'ga-identification-pattern',\n templateUrl: './identification-pattern.component.html',\n styleUrls: ['./identification-pattern.component.scss'],\n})\nexport class IdentificationPatternComponent implements OnInit {\n @Input() company: any = null;\n @Input('identificationPattern')\n set model(identificationPattern: any) {\n if (identificationPattern) {\n this.identificationPattern = identificationPattern;\n }\n }\n @Input() textContent: any = null;\n @Input() uploadId: any = null;\n @Input() chunkId: any = null;\n\n identificationPattern: any = {\n isMultiChunk: false,\n option: [],\n };\n newOptionExtracted = null;\n newOptionName = null;\n cutter: any = {};\n energies: any = [\n {\n name: 'Electricité',\n value: 'elec',\n },\n {\n name: 'Eau',\n value: 'water',\n },\n {\n name: 'Gaz',\n value: 'gaz',\n },\n {\n name: 'RCU',\n value: 'heating',\n },\n ];\n\n regexTestValues: any = {};\n\n availableProviders: AutoCompleteItem[] = [];\n availableContractTypes: AutoCompleteItem[] = [];\n availableOptions: AutoCompleteItem[] = [];\n\n constructor(\n private regexService: RegexService,\n private identificationPatternService: IdentificationPatternService,\n private router: Router,\n private energyService: EnergyService\n ) {}\n\n ngOnInit() {\n this.reset();\n this.getAndFormatAllFluids();\n this.getAvailableProviders();\n this.getAvailableContractTypes();\n this.getAvailableOptions();\n }\n\n updateIdentificationPattern() {\n this.identificationPatternService\n .createIdentificationPattern(this.identificationPattern, this.uploadId, this.chunkId)\n .then(\n identificationPattern => {\n Swal.fire('Ajouté', \"Le pattern d'identification a été sauvegardé.\", 'success').then(() => {\n if (this.uploadId && this.chunkId) {\n this.router.navigateByUrl('/collecte/regex/upload/' + this.uploadId + '/' + this.chunkId);\n } else if (this.uploadId) {\n this.router.navigateByUrl('/collecte/regex/upload/' + this.uploadId);\n } else {\n this.router.navigateByUrl('/admin/entreprises');\n }\n });\n },\n error => {\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite pendant la sauvegarde du pattern d'identification\",\n 'error'\n );\n }\n );\n }\n\n updateProvider(providerName: string) {\n this.identificationPattern.provider.name = providerName;\n }\n\n updateContractType(contractTypeName: string) {\n this.identificationPattern.contractType.name = contractTypeName;\n }\n\n updateNewOption(newOptionName: string) {\n this.newOptionName = newOptionName;\n }\n\n async getAvailableProviders() {\n const providers = await this.identificationPatternService.getAvailableProviders();\n this.availableProviders = providers\n .filter(x => x)\n .map(x => ({\n value: x,\n label: x,\n }));\n }\n\n async getAvailableContractTypes() {\n const contractTypes = await this.identificationPatternService.getAvailableContractTypes();\n this.availableContractTypes = contractTypes.map(contractType => ({\n value: contractType.name,\n label: contractType.name,\n }));\n }\n\n async getAvailableOptions() {\n const options = await this.identificationPatternService.getAvailableOptions();\n this.availableOptions = options.map(x => ({ value: x, label: x }));\n }\n\n async deleteIdentificationPattern() {\n const result = await Swal.fire({\n title: 'Êtes-vous sûr ?',\n text: 'Cette action est irreversible!',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, supprimer!',\n cancelButtonText: 'Annuler',\n });\n if (!result.value) {\n return;\n }\n try {\n await this.identificationPatternService.deleteIdentificationPattern(this.identificationPattern._id);\n Swal.fire('Supprimé', \"Le pattern d'identification a été supprimé.\", 'success');\n this.reset();\n } catch (e) {\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite pendant la suppression du pattern d'identification\",\n 'error'\n );\n }\n }\n\n saveIdentificationPattern() {\n if (!this.identificationPattern.energyType) {\n Swal.fire('Impossible', 'Une energie est nécessaire', 'error');\n } else if (\n !this.identificationPattern.provider.regex ||\n !this.identificationPattern.provider.extracted ||\n !this.identificationPattern.provider.name\n ) {\n Swal.fire('Impossible', 'Le fournisseur doit avoir un regex, être testé et avoir un nom', 'error');\n } else if (\n this.identificationPattern.isMultiChunk &&\n this.identificationPattern.cutters &&\n !this.identificationPattern.cutters.length\n ) {\n Swal.fire('Impossible', 'En multifacture un cutter minimum est attendu', 'error');\n } else if (\n !this.identificationPattern.isMultiChunk &&\n (!this.identificationPattern.contractType.regex ||\n !this.identificationPattern.contractType.extracted ||\n !this.identificationPattern.contractType.name)\n ) {\n Swal.fire(\n 'Impossible',\n 'En identification de pattern simple, le type de contrat doit y avoir un regex, être testé et avoir un nom',\n 'error'\n );\n } else if (\n this.identificationPattern.optionRegex &&\n this.newOptionExtracted &&\n this.newOptionName &&\n this.identificationPattern.options &&\n !this.identificationPattern.options.length\n ) {\n Swal.fire('Impossible', 'Une option est nécessaire dans la liste des options', 'error');\n } else {\n if (this.identificationPattern._id) {\n delete this.identificationPattern._id;\n }\n this.updateIdentificationPattern();\n }\n }\n\n copyToClipboard() {\n const copied = this.regexService.copyTextToClipboard(this.textContent);\n if (!copied) {\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite pendant la copie du contenu du fichier\",\n 'error'\n );\n } else {\n Swal.fire('Ajouté', \"Le contenu de l'upload a été copié dans le presse papier\", 'success');\n }\n }\n\n /**\n * Reset identification pattern data\n */\n reset() {\n this.newOptionName = '';\n this.newOptionExtracted = '';\n this.identificationPattern = {\n isMultiChunk: false,\n options: [],\n provider: {},\n contractType: {},\n };\n }\n\n resetMulti() {\n this.identificationPattern = {\n isMultiChunk: true,\n provider: {},\n cutters: [],\n };\n }\n\n addOption() {\n if (\n this.identificationPattern.options.find(item => {\n return item.extracted === this.newOptionExtracted || item.extracted === this.newOptionName;\n })\n ) {\n Swal.fire('Impossible', \"L'option existe déja\", 'error');\n } else if (!this.newOptionExtracted) {\n Swal.fire('Impossible', 'Veuillez tester le regex des options', 'error');\n } else if (!this.newOptionName) {\n Swal.fire('Impossible', \"Veuillez remplir le nom de l'option\", 'error');\n } else {\n this.identificationPattern.options.push({\n extracted: this.newOptionExtracted,\n name: this.newOptionName,\n });\n }\n }\n\n removeOption(index) {\n if (index > -1) {\n this.identificationPattern.options.splice(index, 1);\n } else {\n Swal.fire('Impossible', '', 'error');\n }\n }\n\n switchIdentificationPatternMulti(event) {\n event.preventDefault();\n if (this.identificationPattern.isMultiChunk) {\n this.reset();\n } else {\n this.resetMulti();\n }\n\n this.regexTestValues = {};\n }\n\n testPattern(propertyRegex, propertyResult, isCustom = false) {\n this.regexService.testRegex(this.textContent, _.get(this.identificationPattern, propertyRegex)).then(result => {\n if (!isCustom) {\n _.set(this.identificationPattern, propertyResult, result && result.length ? result[0] : null);\n } else {\n _.set(this, propertyResult, result && result.length ? result[0] : null);\n }\n });\n }\n\n addCutter() {\n this.identificationPattern.cutters.push({\n chunkIdentifiersPattern: this.cutter.chunkIdentifiersPattern,\n chunkCutterPattern: this.cutter.chunkCutterPattern,\n });\n this.cutter = {};\n }\n\n deleteCutter(index: number) {\n if (index > -1 && index < this.identificationPattern.cutters.length) {\n this.identificationPattern.cutters.splice(index, 1);\n }\n }\n\n /**\n * Get all fluids, format it with display name and set member property energies\n */\n getAndFormatAllFluids() {\n const fluids = this.energyService.getAllFluids();\n this.energies = fluids.map(fluid => {\n return {\n name: this.energyService.energyFullText(fluid),\n value: fluid,\n };\n });\n }\n}\n","export default \".engineer-container {\\n font-size: 14px;\\n}\\n.engineer-container .form-control {\\n font-size: 14px;\\n}\\n.remove-icon {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n}\\n.btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n padding-top: 25px;\\n}\\n.citron-btn {\\n padding: 10px;\\n}\\nlabel {\\n font-weight: 600;\\n}\\n.section-list {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n.section-list .list-items {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n align-content: stretch;\\n}\\n.section-list .add {\\n margin-top: 5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL3VzZXIvZW5naW5lZXIvdXNlci1lbmdpbmVlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vdXNlci9lbmdpbmVlci91c2VyLWVuZ2luZWVyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxlQUFBO0FDRko7QURJSTtFQUNJLGVBQUE7QUNGUjtBRE1BO0VFVkksWUZXaUI7RUVWakIsV0ZVdUI7RUVUdkIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDaUJBO0VEYkEscUVBQUE7VUFBQSw2REFBQTtBREdSO0FEQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxxQkFBQTtVQUFBLHlCQUFBO0VBQ0EsaUJBQUE7QUNHSjtBREFBO0VBQ0ksYUFBQTtBQ0dKO0FEQUE7RUFDSSxnQkFBQTtBQ0dKO0FEQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7QUNHSjtBRERJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsOEJBQUE7RUFBQSw2QkFBQTtVQUFBLG1CQUFBO0VBQ0Esc0JBQUE7QUNHUjtBREFJO0VBQ0ksZUFBQTtBQ0VSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vdXNlci9lbmdpbmVlci91c2VyLWVuZ2luZWVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLmVuZ2luZWVyLWNvbnRhaW5lciB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB9XG59XG5cbi5yZW1vdmUtaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigzMHB4LCAzMHB4LCAkYWRtaW4sICcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3VuY2hlY2tlZC5zdmcnKTtcbn1cblxuLmJ0bi1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwYWRkaW5nLXRvcDogMjVweDtcbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cbmxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uc2VjdGlvbi1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAubGlzdC1pdGVtcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgLmFkZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICB9XG59XG4iLCIuZW5naW5lZXItY29udGFpbmVyIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLmVuZ2luZWVyLWNvbnRhaW5lciAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4ucmVtb3ZlLWljb24ge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b191bmNoZWNrZWQuc3ZnXCIpO1xufVxuXG4uYnRuLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmctdG9wOiAyNXB4O1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbmxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnNlY3Rpb24tbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uc2VjdGlvbi1saXN0IC5saXN0LWl0ZW1zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24tY29udGVudDogc3RyZXRjaDtcbn1cbi5zZWN0aW9uLWxpc3QgLmFkZCB7XG4gIG1hcmdpbi10b3A6IDVweDtcbn0iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Location } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AdminUserService } from 'app/pages/admin/user/user.service';\nimport { EngineerService } from 'app/shared/services/users/engineer.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-user-engineer-tab',\n templateUrl: './user-engineer.component.html',\n styleUrls: ['./user-engineer.component.scss'],\n providers: [AdminUserService, Location],\n})\nexport class UserEngineerComponent implements OnInit {\n @Input() user: any = null;\n @Input() canEdit = false;\n @Input() createdFromCompanyId: string = null;\n\n engineer: any = null;\n\n isEditing = false;\n\n constructor(private router: Router, private engineerService: EngineerService) {}\n\n ngOnInit() {\n this.initData();\n }\n\n initData() {\n this.setEngineer().then(\n engineer => {\n // engineer = {} if it's new and not saved yet\n if (engineer && engineer.hasOwnProperty('_id')) {\n this.engineer = engineer;\n this.isEditing = true;\n } else {\n this.engineer = {\n specialty: '',\n status: '',\n localisation: '',\n experience: '',\n technicalCompetences: [''],\n certifications: [''],\n citation: '',\n };\n }\n },\n err => {\n // err.error_code is set to error_loadEngineer\n this.getSwalMsg(err.error_code);\n return this.router.navigateByUrl('/admin/utilisateur/' + this.user._id);\n }\n );\n }\n\n // ******** INIT ENGINEER *****\n setEngineer(): Promise {\n return new Promise((resolve, reject) => {\n this.engineerService.getEngineerByUserId(this.user._id).then(\n engineer => {\n return resolve(engineer);\n },\n err => {\n // err.error_code is set to error_loadEngineer\n return reject(err);\n }\n );\n });\n }\n\n // ******* SAVE ENGINEER *****\n\n // on click on 'Save'\n saveEngineerProfile() {\n if (this.isEngineerValid()) {\n this.saveEngineer().then(\n () => {\n this.getSwalMsg('engineer_saved');\n },\n err => {\n // err.error_code is set to error_createNewEngineer or error_updateEngineer\n this.getSwalMsg(err.error_code);\n this.router.navigateByUrl('/admin/utilisateur/' + this.user._id);\n }\n );\n }\n }\n\n // check if the form info are valid before saving\n isEngineerValid(): boolean {\n // the fields can't be empty\n if (this.hasEmptyFields()) {\n this.getSwalMsg('error_empty_field');\n return false;\n } else if (!this.checkFieldsTypes()) {\n this.getSwalMsg('error_type_experience');\n }\n return true;\n }\n\n // check if some fields are empty before saving\n hasEmptyFields() {\n return (\n this.engineer.specialty === '' ||\n this.engineer.status === '' ||\n this.engineer.localisation === '' ||\n this.engineer.experience === '' ||\n this.engineer.technicalCompetences.includes('') ||\n this.engineer.certifications.includes('') ||\n !this.engineer.citation\n );\n }\n\n checkFieldsTypes() {\n // return (typeof this.engineer.experience) === 'Number';\n return this.engineer.experience instanceof Number;\n }\n\n // sweet alert\n getSwalMsg(msg_code) {\n const messages = {\n error_empty_field: ['Attention', \"L'un des champs n'est pas renseigné.\", 'warning'],\n engineer_saved: ['Sauvegardé', \"L'utilisateur a bien été sauvegardé\", 'success'],\n error_createNewEngineer: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement du profil ingénieur\",\n 'error',\n ],\n error_updateNewEngineer: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement du profil ingénieur\",\n 'error',\n ],\n error_type_experience: ['Attention', 'Le champs experience doit être un chiffre.', 'warning'],\n error_loadEngineer: [\n 'Toutes nos exuses',\n \"Une erreur s'est produite lors du chargement de l'utilisateur\",\n 'error',\n ],\n };\n\n Swal.fire(messages[msg_code][0], messages[msg_code][1], messages[msg_code][2]);\n }\n\n // create or update the new user in db\n saveEngineer(): Promise {\n if (this.isEditing) {\n return this.engineerService.updateEngineer(this.engineer).then(\n () => {\n return Promise.resolve();\n },\n err => {\n // err.error_code is set to error_updateEngineer\n return Promise.reject(err);\n }\n );\n } else {\n this.engineer.user = this.user._id;\n return this.engineerService.createEngineer(this.engineer).then(\n () => {\n this.isEditing = true;\n return Promise.resolve();\n },\n err => {\n // err.error_code is set to error_createNewEngineer\n return Promise.reject(err);\n }\n );\n }\n }\n\n // Save profile button label\n getSaveBtnLabel() {\n return this.isEditing ? 'Mettre à jour' : 'Créer';\n }\n\n addTechnicalCompetence() {\n this.engineer.technicalCompetences.push('');\n }\n addCertification() {\n this.engineer.certifications.push('');\n }\n\n removeTechnicalCompetence(index) {\n this.engineer.technicalCompetences.splice(index, 1);\n }\n removeCertification(index) {\n this.engineer.certifications.splice(index, 1);\n }\n\n trackListElement(index: number, obj: any): any {\n return index;\n }\n\n navigateToCompanyTabUsers() {\n const route = '/admin/entreprise/' + this.createdFromCompanyId + '/energy-managers';\n this.router.navigateByUrl(route);\n }\n}\n","export default \".profile-container {\\n font-size: 14px;\\n}\\n.profile-container .form-control {\\n font-size: 14px;\\n}\\n.citron-btn {\\n padding: 10px;\\n}\\n.btn-container-save {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n.btn-container-save .citron-btn {\\n margin: 20px 0 0 20px;\\n}\\n.btn-container-upload .citron-btn {\\n margin: 20px 10px 0 10px;\\n}\\nlabel {\\n font-weight: 600;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL3VzZXIvcHJvZmlsZS91c2VyLXByb2ZpbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL3VzZXIvcHJvZmlsZS91c2VyLXByb2ZpbGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxlQUFBO0FDQ0o7QURDSTtFQUNJLGVBQUE7QUNDUjtBREdBO0VBQ0ksYUFBQTtBQ0FKO0FER0E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxxQkFBQTtVQUFBLHlCQUFBO0FDQUo7QURFSTtFQUNJLHFCQUFBO0FDQVI7QURLSTtFQUNJLHdCQUFBO0FDRlI7QURNQTtFQUNJLGdCQUFBO0FDSEoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hZG1pbi91c2VyL3Byb2ZpbGUvdXNlci1wcm9maWxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnByb2ZpbGUtY29udGFpbmVyIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgIH1cbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cbi5idG4tY29udGFpbmVyLXNhdmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAgIC5jaXRyb24tYnRuIHtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDAgMCAyMHB4O1xuICAgIH1cbn1cblxuLmJ0bi1jb250YWluZXItdXBsb2FkIHtcbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIG1hcmdpbjogMjBweCAxMHB4IDAgMTBweDtcbiAgICB9XG59XG5cbmxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuIiwiLnByb2ZpbGUtY29udGFpbmVyIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLnByb2ZpbGUtY29udGFpbmVyIC5mb3JtLWNvbnRyb2wge1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuLmJ0bi1jb250YWluZXItc2F2ZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG4uYnRuLWNvbnRhaW5lci1zYXZlIC5jaXRyb24tYnRuIHtcbiAgbWFyZ2luOiAyMHB4IDAgMCAyMHB4O1xufVxuXG4uYnRuLWNvbnRhaW5lci11cGxvYWQgLmNpdHJvbi1idG4ge1xuICBtYXJnaW46IDIwcHggMTBweCAwIDEwcHg7XG59XG5cbmxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { AdminCompanyService } from 'app/pages/admin/company/company.service';\nimport { UploadFilesTileComponent } from 'app/shared/components/upload/upload-files-tile/upload-files-tile.component';\n\nimport { HttpEventType } from '@angular/common/http';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { File } from 'app/shared/models/upload-file.interface';\nimport { RightsService } from 'app/shared/services/rights/rights.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport Swal, { SweetAlertResult } from 'sweetalert2';\n\nconst globalStates = {\n NO_LOGO: 'noLogo',\n HAS_LOGO: 'hasLogo',\n};\n\n@Component({\n selector: 'ga-user-profile-tab',\n templateUrl: './user-profile.component.html',\n styleUrls: ['./user-profile.component.scss'],\n providers: [],\n})\nexport class UserProfileComponent implements OnInit {\n @Input() user: any = null;\n @Input() userSession: any = null;\n @Output() userChange: EventEmitter = new EventEmitter();\n @Output() keepCompanyOrigin: EventEmitter = new EventEmitter();\n @Input() canEdit = false;\n\n isCreating = true;\n @Input() createdFromCompanyId = null;\n createdFromList: string = null;\n currentState: string = globalStates.NO_LOGO;\n isSaving = false;\n\n uploadTilesData: any = {\n [globalStates.NO_LOGO]: {\n label: 'Glissez et déposez votre logo',\n subLabel: \"On s'occupe de tout !\",\n imgUrl: 'assets/img/backgrounds/default-avatar.jpg',\n },\n [globalStates.HAS_LOGO]: {\n label: '',\n subLabel: '',\n imgUrl: 'assets/img/backgrounds/default-avatar.jpg',\n },\n };\n\n userTypes = [];\n userSaved = null;\n\n @ViewChild('upload', { static: false }) private uploadComponent: UploadFilesTileComponent;\n\n constructor(\n private router: Router,\n private companyService: AdminCompanyService,\n private route: ActivatedRoute,\n private rightsService: RightsService,\n private usersService: UsersService\n ) {}\n\n ngOnInit() {\n this.initData();\n }\n\n initData() {\n this.setAllowedTypes();\n\n // is reading or updating the user's profile\n if (this.user) {\n this.isCreating = false;\n } else {\n // creating a new user\n this.isCreating = true;\n this.route.params.subscribe(params => {\n this.createdFromCompanyId = params['companyId'];\n });\n this.route.queryParams.subscribe(queryParams => {\n /**\n * Query param 'l' is for list to add the user after creation.\n * For now, if l=viewers will add to viewers list, otherwise add to user list.\n */\n if (queryParams['l']) {\n this.createdFromList = queryParams['l'];\n }\n });\n this.user = this.initiliazeNewUser();\n }\n this.setUserLogo();\n }\n\n initiliazeNewUser() {\n return {\n firstname: '',\n name: '',\n type: this.userTypes[0].id,\n contact: {\n phone: '',\n mail: '',\n },\n };\n }\n\n setAllowedTypes() {\n // useradmin and admin can add users & useradmins\n this.userTypes = [\n {\n id: UserTypes.USER,\n name: 'Client',\n },\n {\n id: UserTypes.USER_ADMIN,\n name: 'Administrateur',\n },\n ];\n\n // EM and Admin can add EM\n if (\n UserTypes.ADMIN === this.userSession.type ||\n UserTypes.ENERGY_MANAGER === this.userSession.type ||\n !this.canEdit\n ) {\n this.userTypes.push({\n id: UserTypes.ENERGY_MANAGER,\n name: 'Energy-manager',\n });\n }\n\n // Admin can add admin\n if (UserTypes.ADMIN === this.userSession.type || !this.canEdit) {\n this.userTypes.push({\n id: UserTypes.ADMIN,\n name: 'Super Citron',\n });\n }\n }\n\n // set the logo info\n setUserLogo() {\n // if we create a new company, set the default empty logo in background\n if (this.isCreating || !this.user.img) {\n this.currentState = globalStates.NO_LOGO;\n } else {\n this.setLogoState(this.user.img);\n }\n }\n\n // ******* SAVE USER *****\n\n // on click on 'Create' or 'Update'\n saveUserProfile() {\n if (this.isUserValid() && !this.isSaving) {\n this.isSaving = true;\n this.saveUser().then(\n user => {\n this.user = user;\n this.userSaved = user;\n const swalMsgCode = !this.isCreating ? 'user_saved' : 'user_created';\n this.getSwalMsg(swalMsgCode).then(() => {\n // add the user to the company it was created from\n if (this.createdFromCompanyId) {\n this.saveRights().then(\n rights => {\n this.isSaving = false;\n this.isCreating = false;\n\n // if type is E-M, leave time to fill engineer tab + display btn at the bottom\n if (this.userSaved.type !== UserTypes.ENERGY_MANAGER) {\n this.navigateToCompanyTabUsers();\n }\n this.userChange.emit(this.userSaved);\n this.keepCompanyOrigin.emit(this.createdFromCompanyId);\n },\n err => {\n // err.error_code is set to error_saveRights\n this.getSwalMsg(err.error_code);\n }\n );\n } else {\n this.userChange.emit(user);\n this.router.navigateByUrl('/admin/utilisateur/' + this.user._id);\n this.isSaving = false;\n }\n });\n },\n err => {\n this.isSaving = false;\n // err.error_code is set to error_updateUser\n this.getSwalMsg(err.errorCode || err.error_code);\n\n this.router.navigateByUrl('/admin/utilisateurs/creer');\n }\n );\n }\n }\n\n // check if the form info are valid before saving\n isUserValid(): boolean {\n // the fields can't be empty\n if (this.hasEmptyFields()) {\n this.getSwalMsg('empty_field');\n return false;\n }\n\n return true;\n }\n\n // check if some fields are empty before saving\n hasEmptyFields(): boolean {\n return (\n this.user.firstName === '' ||\n this.user.name === '' ||\n this.user.contact.phone === '' ||\n this.user.contact.mail === '' ||\n !this.user.type\n );\n }\n\n // create or update the new user in db\n saveUser(): Promise {\n if (!this.isCreating) {\n return this.usersService.updateUser(this.user);\n } else {\n return this.usersService.createUser(this.user);\n }\n }\n\n saveRights(): Promise {\n return this.rightsService.saveRights(this.createdFromCompanyId, this.user._id, null, this.createdFromList);\n }\n\n /**\n * Get swal with message\n * @param {string} msg_code - error code\n * @returns {Promise}\n */\n getSwalMsg(msg_code: string): Promise {\n const messages = {\n empty_field: ['Attention', \"L'un des champs n'est pas renseigné.\", 'warning'],\n error_updateUser: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement du profil.\",\n 'error',\n ],\n error_createNewUser: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement du profil.\",\n 'error',\n ],\n user_already_exists: ['Attention', 'Un autre utilisateur a déjà ce nom ou cette adresse mail.', 'warning'],\n user_saved: ['Sauvegardé', \"L'utilisateur a bien été sauvegardé\", 'success'],\n user_created: [\n 'Sauvegardé',\n \"L'utilisateur a bien été créé. Un email d'activation lui a été envoyé.\",\n 'success',\n ],\n need_user_saved_before_picture: [\n 'Attention',\n \"L'utilisateur doit être enregistré avant d'ajouter une photo\",\n 'warning',\n ],\n picture_need_png_extension: ['Attention', \"Votre photo doit avoir l'extension .png\", 'warning'],\n picture_saved: ['Sauvegardé', 'La photo a bien été enregistrée', 'success'],\n user_deleted: ['Supprimé', \"L'utilisateur a bien été supprimé\", 'success'],\n error_deleteUser: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant la suppression de l'utilisateur.\",\n 'error',\n ],\n error_savePicture: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement de la photo.\",\n 'error',\n ],\n error_deletePicture: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant la suppression de la photo.',\n 'error',\n ],\n error_loadCompany: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement des droits du nouvel utilisateur \",\n 'error',\n ],\n error_updateCompany: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement des droits du nouvel utilisateur\",\n 'error',\n ],\n error_getListPages: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement des droits du nouvel utilisateur\",\n 'error',\n ],\n error_saveRights: [\n 'Toutes nos excuses',\n \"Une erreur est survenue pendant l'enregistrement des droits du nouvel utilisateur\",\n 'error',\n ],\n forbidden: ['Interdit', 'Vous ne pouvez pas créer cet utilisateur', 'error'],\n internal_error: ['Toutes nos excuses', 'Une erreur inconnue est survenue', 'error'],\n default_error: ['Toutes nos excuses', 'Une erreur inconnue est survenue', 'error'],\n };\n // If error not found, set default one\n const msgArray = messages[msg_code] ? messages[msg_code] : messages.default_error;\n\n return Swal.fire(msgArray[0], msgArray[1], msgArray[2]);\n }\n\n // Save profile button label : Update or Create\n getSaveBtnLabel() {\n if (!this.isCreating) {\n if (this.isSaving) {\n return 'Mise à jour...';\n } else {\n return 'Mettre à jour';\n }\n } else {\n if (this.isSaving) {\n return 'Création en cours...';\n } else {\n return 'Créer';\n }\n }\n }\n\n // **** UPLOAD ***\n\n hasCurrentState() {\n return this.currentState;\n }\n\n // get upload logo path and labels to display\n getUploadLogoLabels() {\n return this.uploadTilesData[this.currentState];\n }\n\n hasLogo() {\n return this.currentState === globalStates.HAS_LOGO;\n }\n\n // files coming from drag & drop - upload them in db + link their upload id to the company's logo property\n addFiles(files: File[]) {\n if (!this.canEdit) {\n return;\n }\n if (files) {\n // the company must be saved first before uploading a file - need to link the upload to the company\n if (!this.isCreating) {\n // if multiple files were uploaded - take the first one\n const file = files[0];\n\n const formatedFile = {\n filename: file.name,\n fileObject: file, // file Object containing raw data\n };\n\n // save logo in db + link its id to the company's logo property\n return this.companyService.uploadPicture(formatedFile, this.user._id, 'user').subscribe(\n event => {\n if (event.type === HttpEventType.Response) {\n this.user.img = event.body['data'].img;\n this.userChange.emit(this.user);\n\n // set the new logo path\n this.setUserLogo();\n this.getSwalMsg('picture_saved');\n }\n },\n err => {\n this.getSwalMsg('error_savePicture');\n }\n );\n } else {\n this.getSwalMsg('need_user_saved_before_picture');\n }\n } else {\n this.getSwalMsg('picture_need_png_extension');\n }\n }\n\n // set the new logo path\n setLogoState(logoId: string) {\n if (logoId) {\n this.companyService.getLogoPathById(logoId).then(\n url => {\n if (url) {\n this.uploadTilesData[globalStates.HAS_LOGO].imgUrl = url;\n this.currentState = globalStates.HAS_LOGO;\n }\n },\n err => {\n this.currentState = globalStates.NO_LOGO;\n }\n );\n } else {\n this.currentState = globalStates.NO_LOGO;\n }\n }\n\n // click on add a profile picture\n clickOnFileInput() {\n this.uploadComponent.clickOnInput();\n }\n\n deleteUser() {\n Swal.fire({\n title: 'Êtes-vous sûr(e) ?',\n text: `Etes-vous sûr(e) de vouloir supprimer l'utilisateur ${this.user.firstname} ${this.user.name} ? Cette action est irréversible.`,\n icon: 'warning',\n showCancelButton: true,\n }).then(result => {\n if (result.value) {\n this.usersService.deleteUserById(this.user).then(\n () => {\n this.getSwalMsg('user_deleted');\n this.router.navigate(['/admin/utilisateurs']);\n },\n err => {\n // err.error_code is set to error_deleteUser\n this.getSwalMsg(err.error_code);\n }\n );\n }\n });\n }\n\n async deleteProfilePicture() {\n try {\n const user = await this.usersService.deletePicture(this.user._id);\n this.user = user;\n this.userChange.emit(this.user);\n\n this.setUserLogo();\n } catch (e) {\n // e.error_code is set to error_deletePicture\n this.getSwalMsg(e.error_code);\n }\n }\n\n /**\n * Returns the right to edit the user's type.\n * Only admin users can edit the user's type, except during the creation.\n * @return {boolean}\n */\n canEditType(): boolean {\n if (this.isCreating) {\n return true;\n }\n // Is user an user admin or from citron (EM or admin) and can edit this profil\n return (\n (this.usersService.isFromCitron(this.userSession) || this.usersService.isUserAdmin(this.userSession)) &&\n this.canEdit\n );\n }\n\n /**\n * Returns the right to delete.\n * The user logged in can't delete his own profile. Only admin can delete a profile.\n * @return {boolean}\n */\n canDeleteProfile(): boolean {\n return (\n this.userSession._id !== this.user._id && !this.isCreating && this.usersService.isAdmin(this.userSession)\n );\n }\n\n navigateToCompanyTabUsers() {\n let route = '/admin/entreprise/' + this.createdFromCompanyId;\n route += [UserTypes.USER, UserTypes.USER_ADMIN].includes(this.userSaved.type)\n ? '/utilisateurs'\n : '/energy-managers';\n this.router.navigateByUrl(route);\n }\n\n displayBackToCompany() {\n return this.createdFromCompanyId && !this.isCreating;\n }\n}\n","export default \".filters__title,\\n.sites__title {\\n cursor: pointer;\\n}\\n\\n.chevron-rotated {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n\\n.margin-top {\\n margin-top: 15px;\\n}\\n\\n.padding-10 {\\n padding: 10px;\\n}\\n\\n.padding-tb-10 {\\n padding: 10px 0;\\n}\\n\\n.ruleblock__container {\\n padding-bottom: 15px;\\n}\\n\\n.ruleblock__container:not(:first-child) {\\n padding-top: 15px;\\n border-color: #db4b47;\\n border-top: dashed #db4b47 1px;\\n}\\n\\n.ruleblock-orga {\\n padding: 1rem;\\n height: 100%;\\n}\\n\\n.ruleblock-orga span.remove {\\n position: absolute;\\n right: 7px;\\n top: 2px;\\n cursor: pointer;\\n}\\n\\n.ruleblock-orga btn {\\n height: -webkit-max-content;\\n height: -moz-max-content;\\n height: max-content;\\n}\\n\\n.rule-block {\\n margin: 10px 0;\\n position: relative;\\n}\\n\\n.rule-block .filters {\\n padding: 25px;\\n}\\n\\n.rule-block span.remove {\\n position: absolute;\\n right: 7px;\\n top: 2px;\\n cursor: pointer;\\n}\\n\\n.block-title {\\n font-size: 12px;\\n margin-bottom: 5px;\\n}\\n\\n.flex-end {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n\\n.flex-start {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: start;\\n justify-content: flex-start;\\n}\\n\\n.flex-center {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.flex-vertical-center {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.flex-center-column {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n\\n.flex-around {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: around;\\n justify-content: around;\\n}\\n\\n.add-rule-block {\\n font-size: 12px;\\n color: #db4b47;\\n position: relative;\\n}\\n\\n.add-rule-block .visible {\\n -webkit-transition: opacity 1s;\\n transition: opacity 1s;\\n opacity: 1;\\n}\\n\\n.add-rule-block .not-visible {\\n -webkit-transition: opacity 1s;\\n transition: opacity 1s;\\n opacity: 0;\\n}\\n\\ni {\\n margin: 0 3px;\\n}\\n\\n.tooltip-message {\\n position: absolute;\\n width: 350px;\\n background-color: white;\\n color: #db4b47;\\n text-align: center;\\n border-radius: 6px;\\n border: solid 1px #db4b47;\\n padding: 5px 0;\\n}\\n\\nga-filter-sites-rules {\\n width: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL3VzZXIvc2l0ZXMvdXNlci1zaXRlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vdXNlci9zaXRlcy91c2VyLXNpdGVzLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7RUFFSSxlQUFBO0FDREo7O0FESUE7RUFDSSxpQ0FBQTtFQUlBLHlCQUFBO0FDREo7O0FESUE7RUFDSSxnQkFBQTtBQ0RKOztBRElBO0VBQ0ksYUFBQTtBQ0RKOztBREdBO0VBQ0ksZUFBQTtBQ0FKOztBREdBO0VBQ0ksb0JBQUE7QUNBSjs7QURFSTtFQUNJLGlCQUFBO0VBQ0EscUJFTkE7RUZPQSw4QkFBQTtBQ0FSOztBRElBO0VBQ0ksYUFBQTtFQUNBLFlBQUE7QUNESjs7QURHSTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSxlQUFBO0FDRFI7O0FER0k7RUFDSSwyQkFBQTtFQUFBLHdCQUFBO0VBQUEsbUJBQUE7QUNEUjs7QURLQTtFQUNJLGNBQUE7RUFDQSxrQkFBQTtBQ0ZKOztBRElJO0VBQ0ksYUFBQTtBQ0ZSOztBRElJO0VBQ0ksa0JBQUE7RUFDQSxVQUFBO0VBQ0EsUUFBQTtFQUNBLGVBQUE7QUNGUjs7QURNQTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtBQ0hKOztBRE1BO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EscUJBQUE7VUFBQSx5QkFBQTtBQ0hKOztBREtBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsdUJBQUE7VUFBQSwyQkFBQTtBQ0ZKOztBRElBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7QUNESjs7QURHQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7QUNBSjs7QURFQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7QUNDSjs7QURDQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7QUNFSjs7QURDQTtFQUNJLGVBQUE7RUFDQSxjRTNFSTtFRjRFSixrQkFBQTtBQ0VKOztBREFJO0VBQ0ksOEJBQUE7RUFBQSxzQkFBQTtFQUNBLFVBQUE7QUNFUjs7QURBSTtFQUNJLDhCQUFBO0VBQUEsc0JBQUE7RUFDQSxVQUFBO0FDRVI7O0FERUE7RUFDSSxhQUFBO0FDQ0o7O0FERUE7RUFDSSxrQkFBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtFQUNBLGNFaEdJO0VGaUdKLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSx5QkFBQTtFQUNBLGNBQUE7QUNDSjs7QURFQTtFQUNJLFdBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL3VzZXIvc2l0ZXMvdXNlci1zaXRlcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5maWx0ZXJzX190aXRsZSxcbi5zaXRlc19fdGl0bGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmNoZXZyb24tcm90YXRlZCB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5cbi5tYXJnaW4tdG9wIHtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xufVxuXG4ucGFkZGluZy0xMCB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5wYWRkaW5nLXRiLTEwIHtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG59XG5cbi5ydWxlYmxvY2tfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG5cbiAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGFkbWluO1xuICAgICAgICBib3JkZXItdG9wOiBkYXNoZWQgJGFkbWluIDFweDtcbiAgICB9XG59XG5cbi5ydWxlYmxvY2stb3JnYSB7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBzcGFuLnJlbW92ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDdweDtcbiAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgYnRuIHtcbiAgICAgICAgaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgICB9XG59XG5cbi5ydWxlLWJsb2NrIHtcbiAgICBtYXJnaW46IDEwcHggMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuZmlsdGVycyB7XG4gICAgICAgIHBhZGRpbmc6IDI1cHg7XG4gICAgfVxuICAgIHNwYW4ucmVtb3ZlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogN3B4O1xuICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLmJsb2NrLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZmxleC1lbmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cbi5mbGV4LXN0YXJ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cbi5mbGV4LWNlbnRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmZsZXgtdmVydGljYWwtY2VudGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uZmxleC1jZW50ZXItY29sdW1uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5mbGV4LWFyb3VuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGFyb3VuZDtcbn1cblxuLmFkZC1ydWxlLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICRhZG1pbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAudmlzaWJsZSB7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIC5ub3QtdmlzaWJsZSB7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxufVxuXG5pIHtcbiAgICBtYXJnaW46IDAgM3B4O1xufVxuXG4udG9vbHRpcC1tZXNzYWdlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDM1MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGNvbG9yOiAkYWRtaW47XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkYWRtaW47XG4gICAgcGFkZGluZzogNXB4IDA7XG59XG5cbmdhLWZpbHRlci1zaXRlcy1ydWxlcyB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4iLCIuZmlsdGVyc19fdGl0bGUsXG4uc2l0ZXNfX3RpdGxlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY2hldnJvbi1yb3RhdGVkIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAtbW96LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gIC1vLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4ubWFyZ2luLXRvcCB7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG59XG5cbi5wYWRkaW5nLTEwIHtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuLnBhZGRpbmctdGItMTAge1xuICBwYWRkaW5nOiAxMHB4IDA7XG59XG5cbi5ydWxlYmxvY2tfX2NvbnRhaW5lciB7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xufVxuLnJ1bGVibG9ja19fY29udGFpbmVyOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgcGFkZGluZy10b3A6IDE1cHg7XG4gIGJvcmRlci1jb2xvcjogI2RiNGI0NztcbiAgYm9yZGVyLXRvcDogZGFzaGVkICNkYjRiNDcgMXB4O1xufVxuXG4ucnVsZWJsb2NrLW9yZ2Ege1xuICBwYWRkaW5nOiAxcmVtO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4ucnVsZWJsb2NrLW9yZ2Egc3Bhbi5yZW1vdmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA3cHg7XG4gIHRvcDogMnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ucnVsZWJsb2NrLW9yZ2EgYnRuIHtcbiAgaGVpZ2h0OiBtYXgtY29udGVudDtcbn1cblxuLnJ1bGUtYmxvY2sge1xuICBtYXJnaW46IDEwcHggMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnJ1bGUtYmxvY2sgLmZpbHRlcnMge1xuICBwYWRkaW5nOiAyNXB4O1xufVxuLnJ1bGUtYmxvY2sgc3Bhbi5yZW1vdmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA3cHg7XG4gIHRvcDogMnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5ibG9jay10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZmxleC1lbmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uZmxleC1zdGFydCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuLmZsZXgtY2VudGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5mbGV4LXZlcnRpY2FsLWNlbnRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5mbGV4LWNlbnRlci1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZmxleC1hcm91bmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGFyb3VuZDtcbn1cblxuLmFkZC1ydWxlLWJsb2NrIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogI2RiNGI0NztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmFkZC1ydWxlLWJsb2NrIC52aXNpYmxlIHtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcztcbiAgb3BhY2l0eTogMTtcbn1cbi5hZGQtcnVsZS1ibG9jayAubm90LXZpc2libGUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xuICBvcGFjaXR5OiAwO1xufVxuXG5pIHtcbiAgbWFyZ2luOiAwIDNweDtcbn1cblxuLnRvb2x0aXAtbWVzc2FnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDM1MHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgY29sb3I6ICNkYjRiNDc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3JkZXI6IHNvbGlkIDFweCAjZGI0YjQ3O1xuICBwYWRkaW5nOiA1cHggMDtcbn1cblxuZ2EtZmlsdGVyLXNpdGVzLXJ1bGVzIHtcbiAgd2lkdGg6IDEwMCU7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Company } from 'app/shared/models/company.interface';\nimport {\n RuleBlockInterface,\n RuleBlockSitesInterface,\n RuleSitesAttributionInterface,\n RuleSitesInterface,\n} from 'app/shared/models/rule-sites-attribution.interface';\nimport { UserPopulated } from 'app/shared/models/users.interface';\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport * as clone from 'clone';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-user-sites-tab',\n templateUrl: './user-sites.component.html',\n styleUrls: ['./user-sites.component.scss'],\n providers: [],\n})\nexport class UserSitesComponent implements OnInit {\n /** User with companies not populated */\n @Input() user: UserPopulated = null;\n\n /** User with companies populated */\n public userPopulated: UserPopulated = null;\n\n /**\n * A ruleBlockSite is a block of rules, focused on one or multiple companies (rule: RuleSitesAttributionInterface)\n * +\n * the list of sites matching the rules and displayed in the table\n * +\n * the list filling the selectboxes\n *\n * @type {RuleBlockSitesInterface[]} array of ruleBloc\n */\n public rulesBlocksSites: RuleBlockSitesInterface[] = [];\n\n public allFluids = [];\n\n public infoMessage: string = null;\n private displayInfoMessage = false;\n public hasInfoMessage = true;\n public isReadyForAddBtn = false;\n\n constructor(\n private usersService: UsersService,\n private siteService: SitesService,\n private energyService: EnergyService,\n private companiesService: CompaniesService\n ) {}\n\n ngOnInit() {\n this.initData();\n }\n\n /** ------ Initialization --------- **/\n\n /**\n * Initialize a first block of rules targeting all the user's companies by default\n * Hence, the table aggregates all the sites of all the user's companies\n */\n async initData() {\n try {\n // get the list of companies where the user is\n const companies = await this.companiesService.getCompaniesListByUserId(this.user._id);\n if (companies && companies.length) {\n // store the list in the user object\n this.userPopulated = Object.assign(clone(this.user), {\n companies: companies.sort(this.sortListAlphabetically('name')),\n });\n\n // values needed to init the first rule block :\n // regions: all the regions + departments of France\n // natures & organizations: all the available natures & organizations\n // cities: coming from the sites of the user's companies\n // fluids: coming from the sites of the user's companies\n const promiseArray = [\n this.energyService.getFluidsAvailableForCompanies(this.userPopulated.companies.map(c => c._id)),\n ];\n const resultsFromSites = await Promise.all(promiseArray);\n // format response for selectboxes\n this.allFluids = resultsFromSites[0];\n\n // if the user doesn't have rules saved in db, init the first ruleBlock with one empty rule\n if (!this.userPopulated.sitesRules.length) {\n this.addNewRuleBlock();\n } else {\n // init the ruleBlocks with the userSites values\n this.initRuleblocksFromUserSiteRules();\n }\n }\n } catch (e) {\n // err.errorCode can be set to error_getCompaniesList, error_getRegions, error_getCategories, error_getCitiesList\n this.getSwalMsg(e.errorCode);\n }\n }\n\n /**\n * Add a ruleBlockSites with an empty rule\n */\n addNewRuleBlock() {\n const ruleBlockSites = this.createRuleBlockSites();\n\n this.initRuleBlockSites(ruleBlockSites)\n .then(() => {\n this.rulesBlocksSites.push(ruleBlockSites);\n this.isReadyForAddBtn = true;\n })\n .catch(err => {\n this.rulesBlocksSites.push(ruleBlockSites);\n });\n }\n\n /**\n * Init the ruleBlocks with the userSites values\n */\n initRuleblocksFromUserSiteRules() {\n this.userPopulated.sitesRules.forEach(siteRule => {\n const ruleBlockSites = this.createRuleBlockSites();\n this.initRuleBlockSites(ruleBlockSites)\n .then(() => {\n ruleBlockSites.attributionRule = siteRule;\n this.rulesBlocksSites.push(ruleBlockSites);\n this.isReadyForAddBtn = true;\n })\n .catch(err => {\n this.rulesBlocksSites.push(ruleBlockSites);\n });\n });\n }\n\n /**\n * Returns an object ruleblock which targets by default all the companies left to assign\n *\n * @returns {RuleBlockSitesInterface}\n */\n createRuleBlockSites(): RuleBlockSitesInterface {\n return {\n attributionRule: null,\n sites: {\n sitesMatching: [],\n pagination: {\n start: 0,\n end: 0,\n },\n isVisible: true,\n isReady: true,\n },\n isVisible: {\n attributionRule: true,\n sites: true,\n },\n };\n }\n\n /**\n * Initialize a ruleBlock with one empty rule targeting all the companies the user belongs to.\n * The sites displayed is an aggregation of all the sites from all these companies.\n * Fluids available depend on the companies as well\n * @param {RuleBlockSitesInterface} ruleBlockSites\n * @returns {Promise}\n */\n async initRuleBlockSites(ruleBlockSites: RuleBlockSitesInterface): Promise {\n if (!ruleBlockSites.attributionRule) {\n ruleBlockSites.sites.sitesMatching = [];\n ruleBlockSites.sites.isReady = true;\n return;\n }\n try {\n // in parallel we set the values for the selectboxes,\n // each one only needs to know which companies are preselected on this rulebloc\n const promiseArray = [\n this.getSitesFromRule(ruleBlockSites.attributionRule), // the rule contains the companies\n ];\n const results = await Promise.all(promiseArray);\n const [sites] = results;\n\n // sites: sites from the companies. Display all of them in the table + selectbox\n ruleBlockSites.sites.sitesMatching = sites;\n\n // update loaders for site\n ruleBlockSites.sites.isReady = true;\n } catch (e) {\n this.getSwalMsg(e.errorCode);\n throw e;\n }\n }\n\n /**\n * Return the list of companies that aren't in any ruleBlock: they are available to apply a new ruleblock on\n * @returns {*}\n */\n getAvailableCompanies(): Company[] {\n // aggregate in 'companiesWithRule' all the companies present in the ruleblocks\n const companiesWithRule = this.rulesBlocksSites.reduce((memo, ruleBlockSite) => {\n if (!ruleBlockSite.attributionRule) {\n return memo;\n }\n memo = memo.concat(ruleBlockSite.attributionRule.companies);\n return memo;\n }, []);\n\n // keep only the one that aren't in this array\n return clone(this.userPopulated.companies).filter(c => !companiesWithRule.includes(c._id));\n }\n\n /** ------ Sites functions --------- **/\n\n /**\n * Update the list of sites displayed with the query params from the rule\n * @param {RuleBlockSitesInterface} ruleBlockSites\n * @returns {Promise}\n */\n async updateSitesSelectedList(ruleBlockSites: RuleBlockSitesInterface): Promise {\n ruleBlockSites.sites.isReady = false;\n this.isReadyForAddBtn = false;\n const sites = await this.getSitesFromRule(ruleBlockSites.attributionRule);\n // We don't simple assignation to trigger change detection hook\n ruleBlockSites.sites = Object.assign({}, ruleBlockSites.sites, { sitesMatching: sites, isReady: true });\n this.isReadyForAddBtn = true;\n }\n\n /**\n * Query the database with the filters in the rule in params\n * @param {*} rule\n * @returns {Promise} the list of sites matching the query\n */\n getSitesFromRule(rule: any): Promise {\n const ruleWithoutEmptyQuery = clone(rule);\n\n return this.siteService.getSitesFromRule(ruleWithoutEmptyQuery);\n }\n\n /** ------ Save functions --------- **/\n\n /**\n * Save ruleblocks\n */\n async saveRuleblocks() {\n const rules = this.rulesBlocksSites\n .map(ruleBlockSites => {\n const ruleWithoutEmptyQuery = clone(ruleBlockSites.attributionRule);\n\n // if there are more than one rule, don't save the empty ones\n // otherwise the rules with filters will be ignored\n ruleWithoutEmptyQuery.rules = this.deleteEmptyRules(ruleWithoutEmptyQuery.rules);\n\n return ruleWithoutEmptyQuery;\n })\n .filter(x => {\n return x.companies && x.companies.length && x.rules && x.rules.length;\n });\n\n try {\n await this.usersService.saveSitesRules(rules, this.userPopulated._id);\n this.userPopulated.sitesRules = rules;\n Swal.fire('Sauvegardé', 'Le périmètre a bien été sauvegardé', 'success');\n } catch (e) {\n this.getSwalMsg(e.errorCode);\n }\n }\n\n /** ------- Utils functions -------- **/\n\n /**\n * Helper to sort list alphabetically\n *\n * @param {string} field\n * @returns {*}\n */\n sortListAlphabetically(field: string = 'displayName'): any {\n return (itemA, itemB) => {\n const a = itemA[field];\n const b = itemB[field];\n return a > b ? 1 : a < b ? -1 : 0;\n };\n }\n\n /** ------ HTML functions to display companies & sites ------- **/\n\n /**\n * Collapse or uncollapse the filters or sites' table for a specific rule block\n *\n * @param {RuleBlockInterface | RuleSitesInterface} ruleBlock\n * @param {string} element\n */\n collapse(ruleBlock: RuleBlockInterface | RuleSitesInterface, element: string) {\n ruleBlock.isVisible[element] = !ruleBlock.isVisible[element];\n }\n\n /**\n * Update rule block\n *\n * @param {RuleBlockSitesInterface} ruleBlock\n * @param {RuleSitesAttributionInterface} attributionRule\n */\n updateRuleBlock(ruleBlock: RuleBlockSitesInterface, attributionRule: RuleSitesAttributionInterface) {\n ruleBlock.attributionRule = attributionRule;\n this.updateSitesSelectedList(ruleBlock);\n }\n\n /**\n * Get text for add rule button\n *\n * @param {string | number} index\n * @returns {string}\n */\n getTextForAddRuleBtn(index: string | number): string {\n return 'Règle n°' + index;\n }\n\n /**\n * On mouse over info\n */\n onMouseOverInfo() {\n this.displayInfoMessage = true;\n }\n\n /**\n * On mouse left info\n */\n onMouseLeaveInfo() {\n this.displayInfoMessage = false;\n }\n\n /**\n * Add border to rule\n *\n * @param {number} index\n * @returns {string}\n */\n addBorderToRule(index: number): string {\n return index > 0 ? 'border' : '';\n }\n\n /**\n * Returns false if all the companies are already used in a rule\n *\n * @returns {number}\n */\n hasAvailableCompanies(): number {\n return this.getAvailableCompanies().length;\n }\n\n /**\n * Returns true if we can add another ruleblock\n * 1. e check if some companies are still available for selection\n * 2. each ruleblock needs to have at least one rule with a filter\n *\n * @returns {boolean}\n */\n canAddRuleBlock(): boolean {\n this.isReadyForAddBtn = false;\n if (\n !this.rulesBlocksSites.length ||\n !this.rulesBlocksSites[this.rulesBlocksSites.length - 1].attributionRule ||\n !this.rulesBlocksSites[this.rulesBlocksSites.length - 1].attributionRule.companies\n ) {\n this.infoMessage = null;\n this.hasInfoMessage = true;\n this.isReadyForAddBtn = true;\n return false; // happens if the component hasn't been initialized yet\n } else {\n // we check if some companies are still available for selection\n const hasAvailableCompanies = this.hasAvailableCompanies();\n\n // returns false if we have one ruleblock with all its rules empty - doesn't mean anything\n const hasOneEmptyRuleblock = this.hasOneEmptyRuleblock();\n this.infoMessage = !hasAvailableCompanies\n ? 'Vous avez déjà des règles pour chacune de vos entreprises.'\n : hasOneEmptyRuleblock\n ? 'Une de vos règles ne contient aucun filtre.'\n : null;\n this.hasInfoMessage = hasOneEmptyRuleblock || !hasAvailableCompanies;\n this.isReadyForAddBtn = true;\n\n // to add, we need companies available and zero ruleblock with all its rules empty\n return hasAvailableCompanies && !hasOneEmptyRuleblock;\n }\n }\n\n /**\n * Get tooltip visibility\n *\n * @returns {string}\n */\n getTooltipVisibility(): string {\n return this.displayInfoMessage ? 'visible' : 'not-visible';\n }\n\n /**\n * Has one empty rule block\n *\n * @returns {boolean}\n */\n hasOneEmptyRuleblock(): boolean {\n return this.rulesBlocksSites.some(ruleBlockSites => {\n return this.isEveryRuleEmpty(ruleBlockSites.attributionRule);\n });\n }\n\n /**\n * Returns true if the first ruleblock hasn't been created yet or if the last one is empty\n *\n * @param {RuleSitesAttributionInterface} ruleBlock\n * @returns {boolean}\n */\n isEveryRuleEmpty(ruleBlock: RuleSitesAttributionInterface): boolean {\n // if the rule hasn't been created yet\n if (!ruleBlock || !ruleBlock.rules || !ruleBlock.rules.length) {\n return false;\n }\n\n const hasEveryRuleEmpty = ruleBlock.rules.every(r => {\n return this.isRuleEmpty(r);\n });\n return hasEveryRuleEmpty;\n }\n\n /**\n * Has one rule empty\n *\n * @param {RuleBlockInterface} ruleBlock\n * @returns {boolean}\n */\n hasOneRuleEmpty(ruleBlock: RuleBlockInterface): boolean {\n // if the rule hasn't been created yet\n if (!ruleBlock || !ruleBlock.rule || !ruleBlock.rule.rules.length) {\n return false;\n } else {\n const hasOneRuleEmpty = ruleBlock.rule.rules.some(r => {\n return this.isRuleEmpty(r);\n });\n return hasOneRuleEmpty;\n }\n }\n\n /**\n * Is rule empty\n *\n * @param {*} rule\n * @returns {boolean}\n */\n isRuleEmpty(rule: any): boolean {\n let isEmpty = true;\n if (\n !rule.regions.length &&\n !rule.sites.length &&\n !rule.departments.length &&\n !rule.cities.length &&\n !rule.natures.length &&\n !rule.energies.length &&\n !rule.subnatures.length &&\n !rule.routingReferences.length\n ) {\n if (!rule.categories.length) {\n return true;\n } else {\n rule.categories.forEach(catPerOrga => {\n if (!catPerOrga.organization || !catPerOrga.items.length) {\n return true;\n } else {\n isEmpty = false;\n }\n });\n }\n } else {\n isEmpty = false;\n }\n return isEmpty;\n }\n\n /**\n * Delete empty rules\n *\n * @param {*} rules\n * @returns {*[]}\n */\n deleteEmptyRules(rules: any): any[] {\n return rules.reduce((rulesNotEmpty, currentRule) => {\n if (!this.isRuleEmpty(currentRule)) {\n rulesNotEmpty.push(currentRule);\n }\n return rulesNotEmpty;\n }, []);\n }\n\n /**\n * Sweet alerts when something went wrong\n *\n * @param {string} msgCode\n */\n getSwalMsg(msgCode: string) {\n const messages = {\n error_getSitesFromRule: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des sites.',\n 'error',\n ],\n error_getSitesProperties: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des natures.',\n 'error',\n ],\n error_getFluidsForCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des fluides.',\n 'error',\n ],\n error_getRegionsFromCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des régions.',\n 'error',\n ],\n error_getDepartmentsFromCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des départements.',\n 'error',\n ],\n error_getCitiesList: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des villes.',\n 'error',\n ],\n error_getCompaniesList: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des entreprises.',\n 'error',\n ],\n error_default: [\n 'Toutes nos excuses',\n 'Une erreur est survenue. Veuillez réessayer ultérieurement.',\n 'error',\n ],\n };\n\n const msg = messages[msgCode] ? messages[msgCode] : messages.error_default;\n\n Swal.fire(msg[0], msg[1], msg[2]);\n }\n}\n","export default \".zone-container .tabs {\\n display: -webkit-box;\\n display: flex;\\n padding-top: 16px;\\n padding-bottom: 0;\\n padding-left: 16px;\\n padding-right: 16px;\\n border-bottom: 1px solid #d9d9d9;\\n}\\n.zone-container .tab {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n max-width: 150px;\\n padding: 10px;\\n border-top-right-radius: 4px;\\n border-top-left-radius: 4px;\\n border: 1px solid #d9d9d9;\\n border-left: none;\\n border-bottom: none;\\n cursor: pointer;\\n}\\n.zone-container .tab:first-child {\\n border-left: 1px solid #d9d9d9;\\n}\\n.zone-container .tab.tab-active {\\n background-color: #db4b47;\\n color: #fff;\\n}\\n.zone-container .tab.tab-disable {\\n cursor: not-allowed !important;\\n}\\n.zone-container .tab-text {\\n font-size: 14px;\\n overflow: hidden;\\n max-height: 55px;\\n display: -webkit-box;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n line-height: 1.25;\\n text-overflow: ellipsis;\\n}\\n.zone-container .tab-container {\\n padding: 25px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FkbWluL3VzZXIvdXNlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vdXNlci91c2VyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0NBQUE7QUNIUjtBRE1JO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsYUFBQTtFQUNBLDRCQUFBO0VBQ0EsMkJBQUE7RUFDQSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0FDSlI7QURNUTtFQUNJLDhCQUFBO0FDSlo7QURPUTtFQUNJLHlCRUxKO0VGTUksV0FBQTtBQ0xaO0FEUVE7RUFDSSw4QkFBQTtBQ05aO0FEVUk7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLG9CQUFBO0VBQ0EscUJBQUE7RUFDQSw0QkFBQTtFQUNBLGlCQUFBO0VBQ0EsdUJBQUE7QUNSUjtBRFdJO0VBQ0ksYUFBQTtBQ1RSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWRtaW4vdXNlci91c2VyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLnpvbmUtY29udGFpbmVyIHtcbiAgICAudGFicyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgfVxuXG4gICAgLnRhYiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRib3JkZXJncmV5O1xuICAgICAgICB9XG5cbiAgICAgICAgJi50YWItYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhZG1pbjtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50YWItZGlzYWJsZSB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFiLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1heC1oZWlnaHQ6IDU1cHg7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB9XG5cbiAgICAudGFiLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDI1cHg7XG4gICAgfVxufVxuIiwiLnpvbmUtY29udGFpbmVyIC50YWJzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZy10b3A6IDE2cHg7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xufVxuLnpvbmUtY29udGFpbmVyIC50YWIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXgtd2lkdGg6IDE1MHB4O1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIGJvcmRlci1sZWZ0OiBub25lO1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uem9uZS1jb250YWluZXIgLnRhYjpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2Q5ZDlkOTtcbn1cbi56b25lLWNvbnRhaW5lciAudGFiLnRhYi1hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICBjb2xvcjogI2ZmZjtcbn1cbi56b25lLWNvbnRhaW5lciAudGFiLnRhYi1kaXNhYmxlIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xufVxuLnpvbmUtY29udGFpbmVyIC50YWItdGV4dCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWF4LWhlaWdodDogNTVweDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLnpvbmUtY29udGFpbmVyIC50YWItY29udGFpbmVyIHtcbiAgcGFkZGluZzogMjVweDtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Location } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { UserSessionService } from 'app/shared/services/session/user-session.service';\nimport { UserTypes } from '../../../constants/user-types-list.constants';\nimport { AdminTab } from '../../../models/admin-tab.interface';\n\n@Component({\n selector: 'ga-user-table',\n templateUrl: './user.component.html',\n styleUrls: ['./user.component.scss'],\n})\nexport class UserComponent implements OnInit {\n @Input() user: any = null;\n @Input() userSession: any = null;\n\n @Input() engineer: any = null;\n @Input() tabs: AdminTab[] = [];\n\n @Input() selectedTab: AdminTab = null;\n\n createdFromCompanyId: string = null;\n\n get UserTypes() {\n return UserTypes;\n }\n\n constructor(private location: Location, private userSessionService: UserSessionService) {}\n\n ngOnInit() {\n this.selectTab(this.selectedTab);\n }\n\n selectTab(tab: AdminTab) {\n const isTabSame = this.selectedTab && tab && this.selectedTab.key === tab.key;\n\n if (this.user && !this.isTabDisabled(tab.key) && !isTabSame) {\n // change the URL name as well but without reloading the page\n this.location.go('/admin/utilisateur/' + this.user._id + '/' + tab.key);\n this.selectedTab = tab; // they might be different if selectTab is called by the page being refresh (Ctrl R)\n }\n }\n\n getTabClasses(key: string): string {\n let classes = '';\n classes += this.isTabActive(key) ? 'tab-active ' : '';\n classes += this.isTabDisabled(key) ? 'cursor-not-allowed' : '';\n return classes;\n }\n\n isTabActive(key: string): boolean {\n return this.selectedTab.key === key;\n }\n\n getNameCapitalized(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n onUserChanged(user) {\n this.user = user;\n /**\n * If connected user is on its own profile,\n * then refresh user session (will refresh the picture and name)\n */\n if (this.user._id === this.userSession._id) {\n this.userSessionService.refreshUserSession();\n }\n }\n\n keepCompanyOrigin(companyId) {\n this.createdFromCompanyId = companyId;\n }\n\n /**\n * Return true if tab should be disabled.\n * @param {string} key\n * @return {boolean}\n */\n isTabDisabled(key: string): boolean {\n // if the new user hasn't been saved, allow only the user's profile tab\n if (!this.user && key !== 'profil') {\n return true;\n }\n\n return false;\n }\n\n /**\n * Returns whether the tab is editable or not\n * @param key - key of the tab\n * @return {boolean}\n */\n canEditTab(key: string): boolean {\n const tab = this.tabs.find(t => t.key === key);\n return tab ? tab.canEdit : false;\n }\n}\n","export default \".validate__btn {\\n width: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FsZXJ0cy9lZGl0aW9uL2FsZXJ0cy1lZGl0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hbGVydHMvZWRpdGlvbi9hbGVydHMtZWRpdGlvbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLFdBQUE7QUNGSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FsZXJ0cy9lZGl0aW9uL2FsZXJ0cy1lZGl0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbi52YWxpZGF0ZV9fYnRuIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cbiIsIi52YWxpZGF0ZV9fYnRuIHtcbiAgd2lkdGg6IDEwMCU7XG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { Condition, Scenario } from 'app/shared/models/scenario.model';\nimport { AlertsService } from 'app/shared/services/alerts/alerts.service';\n\n@Component({\n selector: 'ga-alerts-edition',\n templateUrl: './alerts-edition.component.html',\n styleUrls: ['./alerts-edition.component.scss'],\n providers: [],\n})\nexport class AlertsEditionComponent implements OnInit {\n /**\n * Scenario to edit. Leave empty or null to create a new one.\n * An object from type ScenarioDisplay can be sent, as it only have one more property (display)\n */\n @Input() scenario: Scenario = null;\n\n /**\n * Set read only view for the component\n */\n @Input() readonly = false;\n\n /**\n * Triggered when save done or cancel button pressed.\n * True passed when saved, false when cancel triggered\n */\n @Output() done: EventEmitter = new EventEmitter();\n\n /**\n * Last condition value from the condition builder component\n */\n newCondition: Condition;\n\n /**\n * True if the new condition is valid, false otherwise\n */\n validCondition: boolean;\n\n /**\n * Is scenario being saved\n */\n isSaving = false;\n\n constructor(private alertsService: AlertsService) {}\n\n ngOnInit() {\n if (!this.scenario) {\n this.scenario = this.alertsService.createScenarioObject();\n }\n }\n\n /**\n * Submit changes for the scenario.\n * Send save request to the API\n */\n async submitForm() {\n try {\n this.isSaving = true;\n // Verify if the scenario condition is valid\n const isValid = this.validCondition;\n\n if (!isValid) {\n throw { errorCode: 'invalid_scenario' };\n }\n\n this.scenario.condition = this.newCondition;\n // TODO change it with name when implemented\n if (!this.scenario.msgTitle) {\n this.scenario.msgTitle = 'Scénario ' + this.scenario.name + ' réalisé';\n }\n if (!this.scenario.msgBody) {\n this.scenario.msgBody =\n 'La condition du scénario ' +\n this.scenario.name +\n ' a été remplie. Vous recevez cette notification car vous êtes abonné(e) à ce scénario';\n }\n\n // If scenario has an _id, update it, otherwise create one.\n if (this.scenario._id && this.scenario._id !== null) {\n await this.alertsService.updateScenario(this.scenario);\n } else {\n await this.alertsService.insertScenario(this.scenario);\n }\n } catch (e) {\n this.handleErrorMessage(e.errorCode);\n }\n this.isSaving = false;\n\n this.done.emit(true);\n }\n\n /**\n * Triggered by the cancel button of the form.\n */\n cancel() {\n this.done.emit(false);\n }\n\n /**\n * Toggle flagMute value for scenario flagMute\n * @param {MatSlideToggleChange} change - slide toggle change new value\n */\n toggleMute(change: MatSlideToggleChange) {\n this.scenario.flagMute = !change.checked;\n }\n\n /**\n * @returns {boolean} true if the scenario is already save, false otherwise\n */\n get isCreating(): boolean {\n return Boolean(this.scenario && !this.scenario._id);\n }\n\n /**\n * Open a swal with the error explained\n * @param {string} errorCode - error code\n */\n handleErrorMessage(errorCode: string) {\n let msg: [string, string, SweetAlertIcon];\n const mapping: { [key: string]: [string, string, SweetAlertIcon] } = {\n invalid_scenario: [\n \"Création de l'alerte impossible\",\n \"Vous devez sélectionner un PDL, une donnée source, un opérateur ainsi qu'une valeur de comparaison\",\n 'error',\n ],\n error_save_scenario: [\n \"Création de l'alerte impossible\",\n 'Une erreur inconnue est survenue. Merci de réessayer ultérieurement',\n 'error',\n ],\n scenarioValidation__rights_fail: [\n \"Création de l'alerte impossible\",\n \"Vous n'avez pas les droits pour créer cette alerte\",\n 'error',\n ],\n scenarioValidation_condition_fail_inconsistent_threshold: [\n \"Création de l'alerte impossible\",\n \"La condition de l'alerte ne peut être acceptée en raison de son seuil\",\n 'error',\n ],\n scenarioValidation_condition_fail_comparedProperty: [\n \"Création de l'alerte impossible\",\n \"La condition de l'alerte ne peut être acceptée en raison de sa valeur de comparaison\",\n 'error',\n ],\n scenarioValidation_scope_fail_wrong_fluid: [\n \"Création de l'alerte impossible\",\n \"Le fluide du PDL n'est pas encore supporté\",\n 'error',\n ],\n scenarioValidation_scope_fail_inconsistent_routingReference: [\n \"Création de l'alerte impossible\",\n 'Vous devez choisir un PDL ou tous les PDLs (\"Tout sélectionner\")',\n 'error',\n ],\n scenarioValidation_type_fail_inconsistent_type: [\n \"Création de l'alerte impossible\",\n \"Type d'alerte inconnu\",\n 'error',\n ],\n not_allowed: [\n \"Edition de l'alerte impossible\",\n \"Vous n'avez pas les droits pour éditer cette alerte\",\n 'error',\n ],\n internal_error: [\n \"Edition de l'alerte impossible\",\n 'Une erreur inconnue est survenue. Merci de réessayer ultérieurement',\n 'error',\n ],\n };\n msg = mapping[errorCode];\n if (!msg) {\n msg = mapping['internal_error'];\n }\n Swal.fire(msg[0], msg[1], msg[2]);\n }\n}\n","export default \"div.record-picker {\\n overflow-x: hidden;\\n overflow-y: auto;\\n border: 1px solid #ddd;\\n /*border-radius: 8px;*/\\n position: relative;\\n cursor: pointer;\\n}\\ndiv.record-picker.is-invalid {\\n border-color: #dc3545;\\n}\\n.list-box {\\n height: 200px;\\n padding-left: 0;\\n background-color: white;\\n}\\n.list-item {\\n border: 1px solid #ddd;\\n border-top: 0;\\n display: block;\\n padding: 10px;\\n font-size: 0.85em;\\n white-space: nowrap;\\n}\\n.list-item:not(:first-child) {\\n border-top: 1px solid #ddd;\\n}\\n.list-item:hover {\\n background-color: rgba(145, 160, 171, 0.1);\\n border-left: solid 0.5rem rgba(145, 160, 171, 0.3);\\n}\\n.list-item.active {\\n background-color: #db4b47;\\n color: #fff;\\n}\\n.item-name {\\n font-weight: 700;\\n margin-bottom: 0;\\n}\\n.item-details {\\n font-style: italic;\\n}\\n.no-padding {\\n padding: 0;\\n}\\ndiv.disabled {\\n pointer-events: none;\\n /* for \\\"disabled\\\" effect */\\n opacity: 0.5;\\n background: #ccc;\\n}\\n.form-control {\\n -webkit-appearance: none;\\n}\\n.filter-all {\\n cursor: pointer;\\n font-size: 0.85em;\\n}\\n.filter-all.citron-background {\\n color: white;\\n}\\n.filter-all.citron-color {\\n background-color: white;\\n}\\n.no-results-sensors {\\n font-size: 1.5rem;\\n}\\n.fluid-icon {\\n height: 30px;\\n width: 30px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FsZXJ0cy9lZGl0aW9uL2NvbmRpdGlvbi1idWlsZGVyL2FsZXJ0cy1jb25kaXRpb24tYnVpbGRlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWxlcnRzL2VkaXRpb24vY29uZGl0aW9uLWJ1aWxkZXIvYWxlcnRzLWNvbmRpdGlvbi1idWlsZGVyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNJLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxzQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0FDQUo7QURDSTtFQUNJLHFCQUFBO0FDQ1I7QURHQTtFQUNJLGFBQUE7RUFDQSxlQUFBO0VBQ0EsdUJBQUE7QUNBSjtBREdBO0VBQ0ksc0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtFQUNBLGFBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FDQUo7QURDSTtFQUNJLDBCQUFBO0FDQ1I7QURDSTtFQUNJLDBDQUFBO0VBQ0Esa0RBQUE7QUNDUjtBRENJO0VBQ0kseUJFVEE7RUZVQSxXQUFBO0FDQ1I7QURHQTtFQUNJLGdCQUFBO0VBQ0EsZ0JBQUE7QUNBSjtBREdBO0VBQ0ksa0JBQUE7QUNBSjtBREdBO0VBQ0ksVUFBQTtBQ0FKO0FER0E7RUFDSSxvQkFBQTtFQUNBLDBCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0FDQUo7QURHQTtFQUNJLHdCQUFBO0FDQUo7QURHQTtFQU9JLGVBQUE7RUFDQSxpQkFBQTtBQ05KO0FEREk7RUFDSSxZQUFBO0FDR1I7QURESTtFQUNJLHVCQUFBO0FDR1I7QURHQTtFQUNJLGlCQUFBO0FDQUo7QURHQTtFQUNJLFlBQUE7RUFDQSxXQUFBO0FDQUoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hbGVydHMvZWRpdGlvbi9jb25kaXRpb24tYnVpbGRlci9hbGVydHMtY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuZGl2LnJlY29yZC1waWNrZXIge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgLypib3JkZXItcmFkaXVzOiA4cHg7Ki9cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICYuaXMtaW52YWxpZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcbiAgICB9XG59XG5cbi5saXN0LWJveCB7XG4gICAgaGVpZ2h0OiAyMDBweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbi5saXN0LWl0ZW0ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDUsIDE2MCwgMTcxLCAwLjEpO1xuICAgICAgICBib3JkZXItbGVmdDogc29saWQgMC41cmVtIHJnYmEoMTQ1LCAxNjAsIDE3MSwgMC4zKTtcbiAgICB9XG4gICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnRzLW1hbmFnZW1lbnQ7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbn1cblxuLml0ZW0tbmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uaXRlbS1kZXRhaWxzIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5uby1wYWRkaW5nIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5kaXYuZGlzYWJsZWQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIC8qIGZvciBcImRpc2FibGVkXCIgZWZmZWN0ICovXG4gICAgb3BhY2l0eTogMC41O1xuICAgIGJhY2tncm91bmQ6ICNjY2M7XG59XG5cbi5mb3JtLWNvbnRyb2wge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLmZpbHRlci1hbGwge1xuICAgICYuY2l0cm9uLWJhY2tncm91bmQge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuICAgICYuY2l0cm9uLWNvbG9yIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgfVxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDAuODVlbTtcbn1cblxuLm5vLXJlc3VsdHMtc2Vuc29ycyB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG59XG5cbi5mbHVpZC1pY29uIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgd2lkdGg6IDMwcHg7XG59XG4iLCJkaXYucmVjb3JkLXBpY2tlciB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgLypib3JkZXItcmFkaXVzOiA4cHg7Ki9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5kaXYucmVjb3JkLXBpY2tlci5pcy1pbnZhbGlkIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4ubGlzdC1ib3gge1xuICBoZWlnaHQ6IDIwMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4ubGlzdC1pdGVtIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXRvcDogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMC44NWVtO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmxpc3QtaXRlbTpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xufVxuLmxpc3QtaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQ1LCAxNjAsIDE3MSwgMC4xKTtcbiAgYm9yZGVyLWxlZnQ6IHNvbGlkIDAuNXJlbSByZ2JhKDE0NSwgMTYwLCAxNzEsIDAuMyk7XG59XG4ubGlzdC1pdGVtLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4uaXRlbS1uYW1lIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLml0ZW0tZGV0YWlscyB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLm5vLXBhZGRpbmcge1xuICBwYWRkaW5nOiAwO1xufVxuXG5kaXYuZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgLyogZm9yIFwiZGlzYWJsZWRcIiBlZmZlY3QgKi9cbiAgb3BhY2l0eTogMC41O1xuICBiYWNrZ3JvdW5kOiAjY2NjO1xufVxuXG4uZm9ybS1jb250cm9sIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4uZmlsdGVyLWFsbCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAwLjg1ZW07XG59XG4uZmlsdGVyLWFsbC5jaXRyb24tYmFja2dyb3VuZCB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5maWx0ZXItYWxsLmNpdHJvbi1jb2xvciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4ubm8tcmVzdWx0cy1zZW5zb3JzIHtcbiAgZm9udC1zaXplOiAxLjVyZW07XG59XG5cbi5mbHVpZC1pY29uIHtcbiAgaGVpZ2h0OiAzMHB4O1xuICB3aWR0aDogMzBweDtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n\nimport { Condition } from 'app/shared/models/scenario.model';\nimport { AlertsService, ComparedPropertyItem, ThresholdItem } from 'app/shared/services/alerts/alerts.service';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\n\n@Component({\n selector: 'ga-alerts-condition-builder',\n templateUrl: './alerts-condition-builder.component.html',\n styleUrls: ['./alerts-condition-builder.component.scss'],\n providers: [],\n})\nexport class AlertsConditionBuilderComponent implements OnInit {\n /**\n * Condition to display\n */\n @Input() condition: Condition;\n\n /**\n * Set read only view for the component\n */\n @Input() readonly = false;\n\n /**\n * Set if the condition is from a scenario that already exists or not\n */\n @Input() isCreating = false;\n\n /**\n * Triggered when a change occurs (value changed)\n * Emit last version of Condition\n * true for asynchronous event delivery. => Avoid update outside angular cycle\n */\n @Output() changes: EventEmitter = new EventEmitter(true);\n\n /**\n * Triggered when a change occurs (value changed)\n * Emit true if condition is correct, false otherwise\n */\n @Output() conditionValidate: EventEmitter = new EventEmitter(true);\n\n /**\n * List of all routing references available\n */\n public routingReferences: any[] = [];\n\n /**\n * Selected routing reference\n */\n public selectedRoutingRef: { [key: string]: any } = null;\n\n /**\n * Sources properties available\n */\n public comparedProperties: ComparedPropertyItem[];\n\n public thresholds: ThresholdItem[] = [];\n\n public selectedComparedProperty: string = null;\n public selectedOperator: string = null;\n public selectedValue: number = null;\n public selectedThreshold: string = null;\n\n public queryValidation = {\n invalidSource: false,\n invalidOperator: false,\n invalidValue: false,\n invalidRoutingReference: false,\n };\n\n public errorMessage = '';\n public successMessage = '';\n public isLoading = false;\n public checkAll = false;\n\n public operators: string[] = ['>', '<', '='];\n\n constructor(private routingReferencesService: RoutingReferencesService, private alertsService: AlertsService) {}\n\n ngOnInit() {\n this.init();\n }\n\n private async init() {\n try {\n this.isLoading = true;\n this.comparedProperties = this.alertsService.getConditionConfig();\n const res = await this.routingReferencesService\n .getRoutingReferencesAssociated({ energies: 'elec' })\n .catch(e => {\n if (!e.errorCode) {\n e.errorCode = 'failed_get_routing_references';\n }\n return Promise.reject(e);\n });\n\n this.routingReferences = res;\n this.setExistingCondition();\n this.send();\n } catch (e) {\n this.handleErrorMessage(e.errorCode);\n }\n this.isLoading = false;\n }\n\n /**\n * On edit, select routing reference with their source property, operator and value from conditions\n */\n setExistingCondition() {\n if (this.condition) {\n this.selectedValue = this.condition.thresholdValue;\n this.selectedOperator = this.condition.comparator;\n this.selectedComparedProperty = this.condition.comparedProperty;\n this.updateComparisonProperty(this.selectedComparedProperty);\n this.selectedThreshold = this.condition.thresholdProperty;\n const pdl = this.routingReferences.find(x => x._id === this.condition.scope.routingReference);\n if (pdl) {\n this.selectRoutingReference(pdl);\n }\n if (!pdl && !this.condition.scope.routingReference && this.condition.scope.allRoutingReferences) {\n this.checkAll = true;\n }\n this.send();\n }\n }\n\n /**\n * Set given routing reference as selected.\n * @param {RoutingReference} routingReference - routing reference to selected\n */\n selectRoutingReference(routingReference: any) {\n this.selectedRoutingRef = routingReference;\n this.checkAll = false;\n this.send();\n }\n\n /**\n * Get if the given routing reference is currently selected\n * @param {RoutingReference} routingReference - routingReference\n * @returns {boolean} true if routing reference is selected, returns false otherwise\n */\n isSelected(routingReference: any): boolean {\n return this.selectedRoutingRef ? this.selectedRoutingRef._id === routingReference._id : false;\n }\n\n /**\n * Select all routing references\n */\n selectAll() {\n this.selectedRoutingRef = null;\n this.checkAll = true;\n this.send();\n }\n\n /**\n * Get routing reference's fluid icon\n * @param {RoutingReference} routingReference - item to get the icon\n * @returns {string[]} class(es) of fluid icon\n */\n getRoutingReferenceIcon(routingReference: any): string[] {\n if (!routingReference || !routingReference.energyType) {\n return ['unknown-icon'];\n }\n return [`${routingReference.energyType}-icon`];\n }\n\n /**\n * Update compared property value\n * @param {string} value - value (key) of compared property selected.\n */\n onComparedPropertyChanged(value: string) {\n this.updateComparisonProperty(value);\n this.send();\n }\n\n onRetroactivityChanged(checked: boolean) {\n this.condition.scope.isRetroactive = checked;\n this.send();\n }\n\n /**\n * Update thresholds properties selectbox choices\n * @param {string} comparedPropertyValue - compared property selected value\n */\n private updateComparisonProperty(comparedPropertyValue: string) {\n const prop = this.comparedProperties.find(x => x.value === comparedPropertyValue);\n if (prop) {\n this.thresholds = prop.items;\n if (this.thresholds.length) {\n this.selectedThreshold = this.thresholds[this.thresholds.length - 1].value;\n } else {\n this.selectedThreshold = null;\n }\n } else {\n this.thresholds = [];\n this.selectedThreshold = null;\n }\n }\n\n /**\n * Check condition values and send them to parent component via event emitters.\n * One event for the condition validity.\n * One event with the condition.\n */\n send() {\n this.checkSelectesValues();\n\n const isValid = Boolean(\n !this.queryValidation.invalidSource &&\n !this.queryValidation.invalidOperator &&\n !this.queryValidation.invalidValue &&\n !this.queryValidation.invalidRoutingReference\n );\n\n this.conditionValidate.emit(isValid);\n\n const newCondition = this.createCondition();\n this.changes.emit(newCondition);\n }\n\n /**\n * Checks if condition fields are filled.\n * Updates queryValidation object.\n */\n private checkSelectesValues() {\n // If the routing reference is selected XOR all selected, display operator and value errors\n // to encourage the user to fill the fields\n const selectedOneXorAll = Boolean(\n (this.selectedRoutingRef || this.checkAll) && !(this.selectedRoutingRef && this.checkAll)\n );\n if (selectedOneXorAll) {\n this.queryValidation.invalidRoutingReference = false;\n this.queryValidation.invalidSource = Boolean(!this.selectedComparedProperty);\n this.queryValidation.invalidOperator = Boolean(!this.selectedOperator);\n this.queryValidation.invalidValue = Boolean(\n typeof this.selectedValue !== 'number' && !this.selectedThreshold\n );\n } else {\n this.queryValidation.invalidRoutingReference = true;\n this.queryValidation.invalidSource = false;\n this.queryValidation.invalidOperator = false;\n this.queryValidation.invalidValue = false;\n }\n }\n\n /**\n * Create condition object based on user's choices.\n * Uses queryValidation to verify choices are correct.\n * @returns {Condition} return condition object or null\n */\n private createCondition(): Condition {\n if (\n this.queryValidation.invalidRoutingReference ||\n this.queryValidation.invalidOperator ||\n this.queryValidation.invalidSource ||\n this.queryValidation.invalidValue\n ) {\n return null;\n }\n\n const condition: Condition = {\n scope: {\n energyType: this.selectedRoutingRef ? this.selectedRoutingRef.energyType : 'elec',\n routingReference: this.selectedRoutingRef && !this.checkAll ? this.selectedRoutingRef._id : null,\n allRoutingReferences: this.checkAll,\n period: null,\n isRetroactive: this.condition.scope.isRetroactive,\n },\n comparator: this.selectedOperator,\n comparedProperty: this.selectedComparedProperty,\n thresholdValue: this.selectedThreshold ? null : this.selectedValue,\n thresholdProperty: this.selectedThreshold,\n };\n\n return condition;\n }\n\n getRoutingReferenceDisplay(routingReference: any): string {\n let display = `${routingReference.reference} - `;\n if (routingReference && routingReference.site) {\n display += routingReference.site.complement ? routingReference.site.complement : routingReference.site.name;\n } else {\n display += 'Site NC';\n }\n return display;\n }\n\n /**\n * Open a swal with the error explained\n * @param {string} errorCode - error code\n */\n handleErrorMessage(errorCode: string) {\n let msg: [string, string, SweetAlertIcon];\n const errorGetRoutingRef: [string, string, SweetAlertIcon] = [\n 'Impossible de récupérer les PDLs',\n 'Merci de réessayer ultérieurement',\n 'error',\n ];\n const mapping: { [key: string]: [string, string, SweetAlertIcon] } = {\n failed_get_routing_references: errorGetRoutingRef,\n user_routing_references_site_is_missing: errorGetRoutingRef,\n company_routing_references_site_is_missing: errorGetRoutingRef,\n filters_routing_references_site_is_missing: errorGetRoutingRef,\n };\n msg = mapping[errorCode];\n if (!msg) {\n msg = ['Une erreur inconnue est survenue', 'Merci de réessayer ultérieurement', 'error'];\n }\n Swal.fire(msg[0], msg[1], msg[2]);\n }\n}\n","export default \".filter-row {\\n font-size: 0.875rem;\\n}\\n\\n.autocomplete {\\n width: 400px;\\n}\\n\\n.left-col {\\n margin-left: 15px;\\n}\\n\\n.right-col {\\n margin-right: 15px;\\n}\\n\\n.status__button {\\n line-height: 1.35;\\n color: #607188;\\n}\\n\\n.status__button-selected {\\n color: white;\\n}\\n\\n::ng-deep ga-simple-autocomplete .simple-autocomplete {\\n height: 44px !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FsZXJ0cy9tYW5hZ2VtZW50LWZpbHRlci9hbGVydHMtbWdtdC1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FsZXJ0cy9tYW5hZ2VtZW50LWZpbHRlci9hbGVydHMtbWdtdC1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksbUJBQUE7QUNESjs7QURJQTtFQUNJLFlBQUE7QUNESjs7QURJQTtFQUNJLGlCQUFBO0FDREo7O0FESUE7RUFDSSxrQkFBQTtBQ0RKOztBRElBO0VBQ0ksaUJBQUE7RUFDQSxjRU1TO0FEUGI7O0FESUE7RUFDSSxZQUFBO0FDREo7O0FESUE7RUFDSSx1QkFBQTtBQ0RKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWxlcnRzL21hbmFnZW1lbnQtZmlsdGVyL2FsZXJ0cy1tZ210LWZpbHRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5maWx0ZXItcm93IHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uYXV0b2NvbXBsZXRlIHtcbiAgICB3aWR0aDogNDAwcHg7XG59XG5cbi5sZWZ0LWNvbCB7XG4gICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG59XG5cbi5yaWdodC1jb2wge1xuICAgIG1hcmdpbi1yaWdodDogMTVweDtcbn1cblxuLnN0YXR1c19fYnV0dG9uIHtcbiAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICBjb2xvcjogJHRleHQtY29sb3I7XG59XG5cbi5zdGF0dXNfX2J1dHRvbi1zZWxlY3RlZCB7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG46Om5nLWRlZXAgZ2Etc2ltcGxlLWF1dG9jb21wbGV0ZSAuc2ltcGxlLWF1dG9jb21wbGV0ZSB7XG4gICAgaGVpZ2h0OiA0NHB4ICFpbXBvcnRhbnQ7XG59XG4iLCIuZmlsdGVyLXJvdyB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5hdXRvY29tcGxldGUge1xuICB3aWR0aDogNDAwcHg7XG59XG5cbi5sZWZ0LWNvbCB7XG4gIG1hcmdpbi1sZWZ0OiAxNXB4O1xufVxuXG4ucmlnaHQtY29sIHtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxuXG4uc3RhdHVzX19idXR0b24ge1xuICBsaW5lLWhlaWdodDogMS4zNTtcbiAgY29sb3I6ICM2MDcxODg7XG59XG5cbi5zdGF0dXNfX2J1dHRvbi1zZWxlY3RlZCB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuOjpuZy1kZWVwIGdhLXNpbXBsZS1hdXRvY29tcGxldGUgLnNpbXBsZS1hdXRvY29tcGxldGUge1xuICBoZWlnaHQ6IDQ0cHggIWltcG9ydGFudDtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ScenarioDisplay } from 'app/shared/models/scenario.model';\n\ninterface StatusItem {\n value: string;\n displayKey: string;\n selected: boolean;\n status: boolean;\n}\n\nexport interface ScenarioFilter {\n scenario: ScenarioDisplay;\n status: boolean;\n}\n\n@Component({\n selector: 'ga-alerts-mgmt-filter',\n templateUrl: './alerts-mgmt-filter.component.html',\n styleUrls: ['./alerts-mgmt-filter.component.scss'],\n providers: [],\n})\nexport class AlertsManagementFilterComponent implements OnInit {\n /**\n * All scenarios for the user and company, used to be displayed in autocomplete\n */\n @Input() scenarios: ScenarioDisplay[] = [];\n\n /**\n * Event emitted when filtering changes\n * For status =>\n * All : null,\n * Active : true,\n * Inactive : false\n */\n @Output() filterChanged: EventEmitter = new EventEmitter();\n\n @Output() openCreate: EventEmitter = new EventEmitter();\n\n /**\n * Scenario selected in the autocomplete\n */\n scenarioSelected: ScenarioDisplay = null;\n\n /**\n * Filters status element (status => flagMute, is the scenario active or not)\n */\n statusFilterElements: StatusItem[] = [\n {\n value: 'all',\n displayKey: 'all_fp',\n selected: true,\n status: null,\n },\n {\n value: 'active',\n displayKey: 'active_fp',\n selected: false,\n status: true,\n },\n {\n value: 'inactive',\n displayKey: 'inactive_fp',\n selected: false,\n status: false,\n },\n ];\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Set the scenario corresponding to given id\n * @param {string} id\n */\n selectScenario(id: string) {\n this.scenarioSelected = this.scenarios.find(x => x._id === id);\n const flagMute = this.scenarioSelected ? !this.scenarioSelected.flagMute : null;\n this.statusFilterElements.forEach(x => {\n x.selected = Boolean(x.status === flagMute);\n });\n this.filterChanged.emit({\n scenario: this.scenarioSelected,\n status: flagMute,\n });\n }\n\n /**\n * Set the selected scenario status\n * @param {StatusItem} status\n */\n selectStatus(status: StatusItem) {\n status.selected = true;\n this.statusFilterElements.forEach(x => {\n x.selected = Boolean(status.value === x.value);\n });\n this.scenarioSelected = null;\n this.filterChanged.emit({\n scenario: null,\n status: status.status,\n });\n }\n\n /**\n * Get status item class\n * @param {StatusItem} status\n * @returns {String[]} list of CSS classes to apply to the item status\n */\n getStatusClass(status: StatusItem): string[] {\n if (status.selected) {\n return ['citron-background', 'status__button-selected'];\n }\n return [];\n }\n\n /**\n * Open scneario creation model\n */\n openScenarioCreation() {\n this.openCreate.emit();\n }\n}\n","export default \".table {\\n background-color: white;\\n font-size: 12px;\\n color: #607188;\\n}\\n.table td,\\n.table th {\\n vertical-align: middle;\\n line-height: 1rem;\\n}\\n.table__col-status {\\n border-radius: 50px;\\n background-color: #607188;\\n color: white;\\n padding: 3px 7px;\\n line-height: 2rem;\\n width: 5rem;\\n}\\n.table__col-status--active {\\n background-color: green;\\n}\\n.table__col-actions--item {\\n background-color: whitesmoke;\\n border-radius: 50%;\\n font-size: 1rem;\\n width: 2rem;\\n line-height: 2rem;\\n text-align: center;\\n -webkit-transition: all 0.5s ease-in-out;\\n transition: all 0.5s ease-in-out;\\n cursor: pointer;\\n}\\n.table__col-actions--item:hover {\\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\\n}\\n.table__row:hover,\\n.table__header-actions {\\n background-color: whitesmoke;\\n}\\n.table__row:hover .table__col-actions--item,\\n.table__header-actions .table__col-actions--item {\\n background-color: white;\\n}\\n.table td.fit,\\n.table th.fit {\\n white-space: nowrap;\\n width: 1%;\\n}\\n.table__archive-icon {\\n font-size: 1rem;\\n}\\n.table__col-description {\\n width: 25%;\\n}\\n.table__col-title {\\n width: 15%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FsZXJ0cy9tYW5hZ2VtZW50LXRhYmxlL2FsZXJ0cy1tZ210LXRhYmxlLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWxlcnRzL21hbmFnZW1lbnQtdGFibGUvYWxlcnRzLW1nbXQtdGFibGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSx1QkFBQTtFQUNBLGVBQUE7RUFDQSxjQ3FCUztBQ3RCYjtBRkdJOztFQUVJLHNCQUFBO0VBQ0EsaUJBQUE7QUVEUjtBRk9BO0VBQ0ksbUJBQUE7RUFDQSx5QkNRUztFRFBULFlBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQVBrQjtFQVFsQixXQUFBO0FFSko7QUZPQTtFQUNJLHVCQ0hNO0FDRFY7QUZPQTtFQUNJLDRCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0VBQ0EsV0FuQmtCO0VBb0JsQixpQkFwQmtCO0VBcUJsQixrQkFBQTtFQUNBLHdDQUFBO0VBQUEsZ0NBQUE7RUFDQSxlQUFBO0FFSko7QUZNSTtFQUNJLDRFQUFBO0FFSlI7QUZRQTs7RUFFSSw0QkFBQTtBRUxKO0FGT0k7O0VBQ0ksdUJBQUE7QUVKUjtBRlFBOztFQUVJLG1CQUFBO0VBQ0EsU0FBQTtBRUxKO0FGUUE7RUFDSSxlQUFBO0FFTEo7QUZRQTtFQUNJLFVBQUE7QUVMSjtBRlFBO0VBQ0ksVUFBQTtBRUxKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYWxlcnRzL21hbmFnZW1lbnQtdGFibGUvYWxlcnRzLW1nbXQtdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLnRhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuXG4gICAgdGQsXG4gICAgdGgge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBsaW5lLWhlaWdodDogMXJlbTtcbiAgICB9XG59XG5cbiRncmFwaGljcy1saW5laGVpZ2h0OiAycmVtO1xuXG4udGFibGVfX2NvbC1zdGF0dXMge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRleHQtY29sb3I7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDNweCA3cHg7XG4gICAgbGluZS1oZWlnaHQ6ICRncmFwaGljcy1saW5laGVpZ2h0O1xuICAgIHdpZHRoOiA1cmVtO1xufVxuXG4udGFibGVfX2NvbC1zdGF0dXMtLWFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN1Y2Nlc3M7XG59XG5cbi50YWJsZV9fY29sLWFjdGlvbnMtLWl0ZW0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB3aWR0aDogJGdyYXBoaWNzLWxpbmVoZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRncmFwaGljcy1saW5laGVpZ2h0O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDZweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE5KTtcbiAgICB9XG59XG5cbi50YWJsZV9fcm93OmhvdmVyLFxuLnRhYmxlX19oZWFkZXItYWN0aW9ucyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTtcblxuICAgIC50YWJsZV9fY29sLWFjdGlvbnMtLWl0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG59XG5cbi50YWJsZSB0ZC5maXQsXG4udGFibGUgdGguZml0IHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHdpZHRoOiAxJTtcbn1cblxuLnRhYmxlX19hcmNoaXZlLWljb24ge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLnRhYmxlX19jb2wtZGVzY3JpcHRpb24ge1xuICAgIHdpZHRoOiAyNSU7XG59XG5cbi50YWJsZV9fY29sLXRpdGxlIHtcbiAgICB3aWR0aDogMTUlO1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCIudGFibGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogIzYwNzE4ODtcbn1cbi50YWJsZSB0ZCxcbi50YWJsZSB0aCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xufVxuXG4udGFibGVfX2NvbC1zdGF0dXMge1xuICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3MTg4O1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDNweCA3cHg7XG4gIGxpbmUtaGVpZ2h0OiAycmVtO1xuICB3aWR0aDogNXJlbTtcbn1cblxuLnRhYmxlX19jb2wtc3RhdHVzLS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcbn1cblxuLnRhYmxlX19jb2wtYWN0aW9ucy0taXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB3aWR0aDogMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDJyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi50YWJsZV9fY29sLWFjdGlvbnMtLWl0ZW06aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgNnB4IDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTkpO1xufVxuXG4udGFibGVfX3Jvdzpob3Zlcixcbi50YWJsZV9faGVhZGVyLWFjdGlvbnMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlO1xufVxuLnRhYmxlX19yb3c6aG92ZXIgLnRhYmxlX19jb2wtYWN0aW9ucy0taXRlbSxcbi50YWJsZV9faGVhZGVyLWFjdGlvbnMgLnRhYmxlX19jb2wtYWN0aW9ucy0taXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4udGFibGUgdGQuZml0LFxuLnRhYmxlIHRoLmZpdCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHdpZHRoOiAxJTtcbn1cblxuLnRhYmxlX19hcmNoaXZlLWljb24ge1xuICBmb250LXNpemU6IDFyZW07XG59XG5cbi50YWJsZV9fY29sLWRlc2NyaXB0aW9uIHtcbiAgd2lkdGg6IDI1JTtcbn1cblxuLnRhYmxlX19jb2wtdGl0bGUge1xuICB3aWR0aDogMTUlO1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ScenarioDisplay } from 'app/shared/models/scenario.model';\nimport { PaginationService } from '../../pagination/front/pagination-front.service';\n\n@Component({\n selector: 'ga-alerts-mgmt-table',\n templateUrl: './alerts-mgmt-table.component.html',\n styleUrls: ['./alerts-mgmt-table.component.scss'],\n providers: [PaginationService],\n})\nexport class AlertsManagementTableComponent implements OnInit {\n _scenarios: ScenarioDisplay[] = [];\n /**\n * All scenarios that can be displayed (not including pagination)\n */\n @Input()\n set scenarios(scenarios: ScenarioDisplay[]) {\n this._scenarios = scenarios;\n if (this.paginationService.pagination) {\n this.computeScenariosToDisplay();\n }\n this.cleanSelected(scenarios);\n }\n get scenarios(): ScenarioDisplay[] {\n return this._scenarios;\n }\n\n /**\n * Display table as loading or not.\n */\n @Input() isLoading = false;\n\n @Output() openView: EventEmitter = new EventEmitter();\n @Output() openEdit: EventEmitter = new EventEmitter();\n\n /**\n * Event triggered to archive a list of scenarios\n */\n @Output() archive: EventEmitter = new EventEmitter();\n\n /**\n * Scenarios to be displayed, including filters (pagination)\n */\n scenariosDisplay: ScenarioDisplay[] = [];\n\n /**\n * Scenarios selected by checkboxes.\n * Use of object instead of array for performances.\n */\n scenariosSelected: {\n [id: string]: ScenarioDisplay;\n } = {};\n\n constructor(private paginationService: PaginationService) {}\n\n ngOnInit() {\n // No need to call computeScenariosToDisplay as the pagination fires it automatically.\n }\n\n /**\n * Compute scenarios that must be displayed, regarding the pagination\n */\n computeScenariosToDisplay() {\n this.scenariosDisplay = [];\n if (!this.paginationService.pagination) {\n return;\n }\n\n for (\n let i = this.paginationService.pagination.indexStart;\n i <= this.paginationService.pagination.indexEnd;\n i++\n ) {\n if (this.scenarios[i]) {\n this.scenariosDisplay.push(this.scenarios[i]);\n }\n }\n }\n\n /**\n * Archive selected scenarios\n */\n archiveSelected() {\n const ids = this.getAllSelectedAsArray();\n if (ids.length > 0) {\n this.archive.emit(ids);\n }\n }\n\n /**\n * Triggers open view scenario\n * @param {ScenarioDisplay} scenario\n */\n onViewScenario(scenario: ScenarioDisplay) {\n this.openView.emit(scenario);\n }\n\n /**\n * Triggers open edit scenario\n * @param scenario\n */\n onEditScenario(scenario: ScenarioDisplay) {\n this.openEdit.emit(scenario);\n }\n\n /** SELECTBOXES */\n\n /**\n * Returns true if given scenario is selected\n * @param {ScenarioDisplay} scenario\n * @returns {boolean} true if scenario is selected, false otherwise\n */\n isAlreadySelected(scenario: ScenarioDisplay): boolean {\n return Boolean(this.scenariosSelected[scenario._id]);\n }\n\n /**\n * Is all scenarios from the current page selected\n * @returns {boolean} true if all scenarios selected, false otherwise\n */\n isAllSelected(): boolean {\n return this.scenariosDisplay.every(x => this.isAlreadySelected(x));\n }\n\n /**\n * Is at least one scenario from the current page selected\n * @returns {boolean} true if at least one scenario selected, false otherwise\n */\n isSomeSelected(): boolean {\n return this.scenariosDisplay.some(x => this.isAlreadySelected(x));\n }\n\n /**\n * Is some but not all scenarios, from the current page, selected\n * @returns {boolean} true if some scenarios selected but not all\n */\n isSomeButNotAllSelected(): boolean {\n const some = this.isSomeSelected();\n const every = this.isAllSelected();\n return Boolean(some && !every);\n }\n\n /**\n * Toggle select all scenarios from current page\n * @param {boolean} checked true if checked, false if not checked.\n */\n selectAll(checked: boolean) {\n this.scenariosDisplay.forEach(scenario => {\n if (checked) {\n this.scenariosSelected[scenario._id] = scenario;\n } else {\n delete this.scenariosSelected[scenario._id];\n }\n });\n }\n\n /**\n * Toggle given scenario selection\n * @param {ScenarioDisplay} scenario\n */\n toggleSelected(scenario: ScenarioDisplay) {\n if (this.scenariosSelected[scenario._id]) {\n delete this.scenariosSelected[scenario._id];\n } else {\n this.scenariosSelected[scenario._id] = scenario;\n }\n }\n\n /**\n * Get all selected scenarios ids as an array\n * @returns {string[]} list of scenarios selected via checkboxes\n */\n getAllSelectedAsArray(): string[] {\n return Object.keys(this.scenariosSelected).reduce((memo: string[], id) => {\n if (this.scenariosSelected[id]) {\n memo.push(this.scenariosSelected[id]._id);\n }\n return memo;\n }, []);\n }\n\n /**\n * Get the number of selected scenarios\n * @returns {number} number of scenarios selected\n */\n getCountAllSelected(): number {\n return Object.keys(this.scenariosSelected).reduce((memo, id) => {\n if (this.scenariosSelected[id]) {\n memo++;\n }\n return memo;\n }, 0);\n }\n\n /**\n * Clean scenarios selected by removing not existing ones.\n * @param {ScenarioDisplay} scenarios - reference scenarios list\n */\n cleanSelected(scenarios: ScenarioDisplay[]) {\n Object.keys(this.scenariosSelected).forEach(id => {\n if (this.scenariosSelected[id]) {\n const search = scenarios.find(x => x._id === this.scenariosSelected[id]._id && !x.archived);\n if (!search) {\n delete this.scenariosSelected[id];\n }\n } else {\n // For the scenarios that have been archived\n delete this.scenariosSelected[id];\n }\n });\n }\n\n /** DISPLAY GETTERS */\n\n getCountSelectedKey(): string {\n return this.getCountAllSelected() > 1 ? 'selected_fp' : 'selected_f';\n }\n\n /**\n * Get scenario mute flag language key\n * @param {ScenarioDisplay} scenario\n */\n getFlagKey(scenario: ScenarioDisplay): string {\n if (scenario.flagMute === false) {\n return 'active_f';\n }\n return 'inactive_f';\n }\n\n /**\n * Get scenario mute flag class.\n * @param {ScenarioDisplay} scenario\n */\n getFlagClass(scenario: ScenarioDisplay): string[] {\n if (scenario.flagMute === false) {\n return ['table__col-status--active'];\n }\n return [];\n }\n\n /**\n * Get scenario privacy language key\n * @param {ScenarioDisplay} scenario\n */\n getPrivacyKey(scenario: ScenarioDisplay) {\n if (scenario.public === false) {\n return 'no';\n }\n return 'yes';\n }\n /**\n * Get scenario type language key\n * @param {ScenarioDisplay} scenario\n */\n getTypeKey(scenario: ScenarioDisplay) {\n return 'threshold';\n }\n\n /**\n * Get scenario's scope to display\n * @param {ScenarioDisplay} scenario\n */\n getPerimeter(scenario: ScenarioDisplay): string {\n /**\n * Used with translate.\n * There is no chance that routing reference name matches any key, so it will be displayed normally.\n */\n const scope = scenario.condition.scope;\n if (scope.allRoutingReferences) {\n return 'routingreferences_all';\n }\n if (!scope.display) {\n return 'unknown';\n }\n if (scope.display.site && scope.display.routingReference) {\n return `${scope.display.site} - ${scope.display.routingReference}`;\n }\n if (scope.display.routingReference) {\n return scope.display.routingReference;\n }\n return 'unknown';\n }\n\n /** PAGINATION */\n\n /**\n * Update pagination and compute scenarios to be displayed\n */\n updatePagination() {\n this.computeScenariosToDisplay();\n }\n}\n","export default \".axe-filter-container {\\n padding: 15px;\\n}\\n\\n.button-column {\\n padding-bottom: 15px;\\n}\\n\\n.button-column.left {\\n padding-left: 16px;\\n padding-right: 8px;\\n}\\n\\n.button-column.right {\\n padding-left: 8px;\\n padding-right: 16px;\\n}\\n\\n.citron-btn {\\n width: 100%;\\n font-size: 12px;\\n padding: 10px 15px;\\n}\\n\\n.btn-container-scroll {\\n overflow: scroll;\\n max-height: 420px;\\n}\\n\\n.btn-container-scroll .btn-container .citron-btn {\\n border-bottom: none;\\n padding: 7px 10px;\\n word-wrap: break-word;\\n}\\n\\n.btn-container-scroll .btn-container:last-child .citron-btn {\\n border-bottom: solid #70c283 1px;\\n}\\n\\n.filter-title {\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n font-weight: bold;\\n padding-bottom: 10px;\\n font-size: 12px;\\n word-wrap: break-word;\\n}\\n\\n.inactiveToggle {\\n background-color: #ffffff;\\n border: solid #70c283 1px;\\n color: #607188;\\n}\\n\\n.inactiveToggle:hover {\\n color: white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FuYWx5c2UvYXhpcy1zZWxlY3Rpb24vYXhpcy1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FuYWx5c2UvYXhpcy1zZWxlY3Rpb24vYXhpcy1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksYUFBQTtBQ0RKOztBRElBO0VBQ0ksb0JBQUE7QUNESjs7QURHSTtFQUNJLGtCQUFBO0VBQ0Esa0JBQUE7QUNEUjs7QURHSTtFQUNJLGlCQUFBO0VBQ0EsbUJBQUE7QUNEUjs7QURLQTtFQUNJLFdBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7QUNGSjs7QURLQTtFQUNJLGdCQUFBO0VBQ0EsaUJBQUE7QUNGSjs7QURLUTtFQUNJLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxxQkFBQTtBQ0haOztBRE9ZO0VBQ0ksZ0NBQUE7QUNMaEI7O0FEV0E7RUFDSSxnREFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxlQUFBO0VBQ0EscUJBQUE7QUNSSjs7QURXQTtFQUNJLHlCQUFBO0VBQ0EseUJBQUE7RUFDQSxjRTdCUztBRHFCYjs7QURXQTtFQUNJLFlBQUE7QUNSSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FuYWx5c2UvYXhpcy1zZWxlY3Rpb24vYXhpcy1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLmF4ZS1maWx0ZXItY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4uYnV0dG9uLWNvbHVtbiB7XG4gICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG5cbiAgICAmLmxlZnQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICB9XG4gICAgJi5yaWdodCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuICAgIH1cbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG59XG5cbi5idG4tY29udGFpbmVyLXNjcm9sbCB7XG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICBtYXgtaGVpZ2h0OiA0MjBweDtcblxuICAgIC5idG4tY29udGFpbmVyIHtcbiAgICAgICAgLmNpdHJvbi1idG4ge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAxMHB4O1xuICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIC5jaXRyb24tYnRuIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAkYW5hbHlzZSAxcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5maWx0ZXItdGl0bGUge1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG4uaW5hY3RpdmVUb2dnbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyOiBzb2xpZCAkYW5hbHlzZSAxcHg7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xufVxuXG4uaW5hY3RpdmVUb2dnbGU6aG92ZXIge1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5heGUtZmlsdGVyLWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDE1cHg7XG59XG5cbi5idXR0b24tY29sdW1uIHtcbiAgcGFkZGluZy1ib3R0b206IDE1cHg7XG59XG4uYnV0dG9uLWNvbHVtbi5sZWZ0IHtcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG59XG4uYnV0dG9uLWNvbHVtbi5yaWdodCB7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LXNpemU6IDEycHg7XG4gIHBhZGRpbmc6IDEwcHggMTVweDtcbn1cblxuLmJ0bi1jb250YWluZXItc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgbWF4LWhlaWdodDogNDIwcHg7XG59XG4uYnRuLWNvbnRhaW5lci1zY3JvbGwgLmJ0bi1jb250YWluZXIgLmNpdHJvbi1idG4ge1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICBwYWRkaW5nOiA3cHggMTBweDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuLmJ0bi1jb250YWluZXItc2Nyb2xsIC5idG4tY29udGFpbmVyOmxhc3QtY2hpbGQgLmNpdHJvbi1idG4ge1xuICBib3JkZXItYm90dG9tOiBzb2xpZCAjNzBjMjgzIDFweDtcbn1cblxuLmZpbHRlci10aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG4uaW5hY3RpdmVUb2dnbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXI6IHNvbGlkICM3MGMyODMgMXB4O1xuICBjb2xvcjogIzYwNzE4ODtcbn1cblxuLmluYWN0aXZlVG9nZ2xlOmhvdmVyIHtcbiAgY29sb3I6IHdoaXRlO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange } from '@angular/core';\n\nexport interface Option {\n key: string;\n legend: string;\n selected: boolean;\n class?: string;\n isDisabled?: boolean;\n}\n\nexport interface Column {\n key: string;\n name: string;\n options: T[];\n}\n\n@Component({\n selector: 'ga-scroll-column-selection',\n templateUrl: './axis-selection.component.html',\n styleUrls: ['./axis-selection.component.scss'],\n providers: [],\n})\nexport class ColumnSelectorComponent implements OnInit, OnChanges {\n @Input() columnsOptions: Array> = [];\n @Input() disableSameKeys = true;\n @Output() optionChanged: EventEmitter = new EventEmitter();\n\n ngOnInit(): void {\n this.setClasses();\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }): void {\n for (const propName in changes) {\n if (propName === 'columnsOptions' || propName === 'disableSameKeys') {\n this.setClasses();\n }\n }\n }\n\n /**\n * Handle a change in the column selection.\n * Emit the change to parent component.\n * @param {T} optionSelected\n * @param {string} oppositeColumnKey\n */\n changeAxeOption(column: Column, optionSelected: T) {\n const oldSelection = column.options.find(option => option.selected);\n\n if (oldSelection) {\n oldSelection.selected = false;\n oldSelection.class = 'inactiveToggle';\n }\n\n optionSelected.selected = true;\n optionSelected.class = 'activeToggle';\n\n if (this.disableSameKeys) {\n this.disableOptions(oldSelection.key);\n }\n\n this.optionChanged.emit();\n }\n\n /**\n * Get the column object from its key\n * @param {string} columnKey\n * @returns {Column} column\n */\n getColumn(columnKey: string): Column {\n return this.columnsOptions.find(column => column.key === columnKey);\n }\n\n /**\n * Return the selected option in the given column from key\n * @param {string}columnKey\n */\n getColumnSelection(columnKey: string): T {\n const column = this.columnsOptions.find(axe => axe.key === columnKey);\n return column.options.find(opt => opt.selected);\n }\n\n /**\n * Set classes for active and inactive toggles.\n * Disable options when required.\n */\n setClasses(): void {\n this.columnsOptions.forEach(column => {\n column.options.forEach(option => {\n option.class = option.selected ? 'activeToggle' : 'inactiveToggle';\n });\n });\n\n if (this.disableSameKeys) {\n this.disableOptions();\n }\n }\n\n /**\n * Disable options having a key which is selected somewhere else\n * @param {string} oldKey - re-enable the previous selection\n */\n disableOptions(oldKey = null) {\n this.columnsOptions.forEach(column => {\n const selection = this.getColumnSelection(column.key);\n\n this.columnsOptions\n .filter(col => col.key !== column.key)\n .forEach(otherColumn => {\n // remove previous disable\n if (oldKey) {\n const oldOption = otherColumn.options.find(o => o.key === oldKey);\n oldOption.isDisabled = false;\n }\n\n // set new disabled option\n const option = otherColumn.options.find(o => o.key === selection.key);\n if (option) {\n option.isDisabled = true;\n }\n });\n });\n }\n}\n","export default \".statistics {\\n font-size: 14px;\\n word-wrap: break-word;\\n}\\n.statistics .statistics-item {\\n padding-bottom: 10px;\\n}\\n.statistics .statitics-explanation {\\n padding-top: 10px;\\n font-size: 10px;\\n font-weight: lighter;\\n}\\n.statistics .title {\\n padding: 10px 0 10px 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2FuYWx5c2Uvc3RhdGlzdGljcy9zdGF0aXN0aWNzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9hbmFseXNlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGVBQUE7RUFDQSxxQkFBQTtBQ0NKO0FEQ0k7RUFDSSxvQkFBQTtBQ0NSO0FERUk7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxvQkFBQTtBQ0FSO0FER0k7RUFDSSxzQkFBQTtBQ0RSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYW5hbHlzZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3MuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc3RhdGlzdGljcyB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcblxuICAgIC5zdGF0aXN0aWNzLWl0ZW0ge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICB9XG5cbiAgICAuc3RhdGl0aWNzLWV4cGxhbmF0aW9uIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXI7XG4gICAgfVxuXG4gICAgLnRpdGxlIHtcbiAgICAgICAgcGFkZGluZzogMTBweCAwIDEwcHggMDtcbiAgICB9XG59XG4iLCIuc3RhdGlzdGljcyB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuLnN0YXRpc3RpY3MgLnN0YXRpc3RpY3MtaXRlbSB7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuLnN0YXRpc3RpY3MgLnN0YXRpdGljcy1leHBsYW5hdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBmb250LXNpemU6IDEwcHg7XG4gIGZvbnQtd2VpZ2h0OiBsaWdodGVyO1xufVxuLnN0YXRpc3RpY3MgLnRpdGxlIHtcbiAgcGFkZGluZzogMTBweCAwIDEwcHggMDtcbn0iXX0= */\"","import { Component, Input, OnChanges, OnInit, SimpleChange } from '@angular/core';\nimport { ScatterPlotPoint } from 'app/shared/models/charts/chart-serie.interface';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport * as _ from 'lodash';\n\ninterface Statistics {\n mean: {\n [key: string]: number;\n };\n median: {\n [key: string]: number;\n };\n}\n\nexport interface PropertyDescription {\n key: string; // key indicates the property used inside each Point to get the statistics inputs\n unit: string;\n unitType: string;\n}\n\n@Component({\n selector: 'ga-statistics',\n templateUrl: './statistics.component.html',\n styleUrls: ['./statistics.component.scss'],\n providers: [],\n})\nexport class StatisticsComponent implements OnInit, OnChanges {\n @Input() points: ScatterPlotPoint[] = [];\n @Input() properties: PropertyDescription[] = [];\n\n statistics: Statistics = {\n mean: {},\n median: {},\n };\n\n constructor(private chartService: ChartService) {}\n\n ngOnInit(): void {\n this.computeStatistics();\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (const propName in changes) {\n if (propName === 'points' || propName === 'inputsGroup') {\n this.computeStatistics();\n }\n }\n }\n\n /**\n * Compute statistics (mean & median)\n */\n computeStatistics(): void {\n this.initStatistics();\n\n if (this.points && this.points.length) {\n this.computeMeans();\n this.computeMedians();\n }\n }\n\n /**\n * Init statistics to zero. Used when points on the chart change.\n */\n initStatistics(): void {\n this.properties.forEach(property => {\n this.statistics.mean[property.key] = 0;\n this.statistics.median[property.key] = 0;\n });\n }\n\n /**\n * Compute means for current points\n */\n computeMeans(): void {\n this.properties.forEach(property => {\n this.statistics.mean[property.key] = _.meanBy(this.points, property.key);\n });\n }\n\n /**\n * Compute medians for current points (x and y values)\n */\n computeMedians(): void {\n const nbSerieValues = this.points.length;\n\n this.properties.forEach(property => {\n // sort values\n const values = this.points.map(p => p[property.key]);\n const sortedValues = _.sortBy(values);\n\n // even arrays - take the mean of the two points in the middle\n if (nbSerieValues % 2 === 0) {\n const indexMiddle = nbSerieValues / 2;\n this.statistics.median[property.key] = _.mean([\n sortedValues[indexMiddle - 1],\n sortedValues[indexMiddle],\n ]);\n } else {\n // odd arrays - take the middle point\n const indexMedian = (nbSerieValues - 1) / 2;\n this.statistics.median[property.key] = sortedValues[indexMedian];\n }\n });\n }\n\n /**\n * Returns the statistic (value + unit) to display for the given axis and stat name\n * @param {PropertyDescription} property\n * @param {string} statisticName\n * @returns {string} statistic value and unit to display\n */\n getStatitic(property: PropertyDescription, statisticName: string): string {\n const value = this.statistics[statisticName][property.key];\n const unit = property.unit;\n const unitType = property.unitType;\n\n return this.chartService.getNumberToDisplay(value, unit, unitType);\n }\n}\n","export default \".context span {\\n font-weight: bold;\\n}\\n\\n.section {\\n padding-top: 0;\\n border-top: none;\\n}\\n\\n.center {\\n border-bottom: none;\\n border-top: none;\\n min-height: 0;\\n padding: 0;\\n}\\n\\n.circle {\\n width: 15px;\\n height: 15px;\\n border-radius: 7.5px;\\n}\\n\\n.verification-0 {\\n background-color: lightgray;\\n}\\n\\n.verification-1 {\\n background-color: green;\\n}\\n\\n.verification-2 {\\n background-color: orange;\\n}\\n\\n.verification-3 {\\n background-color: red;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGwtdmVyaWZpY2F0aW9uLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGwtdmVyaWZpY2F0aW9uLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0k7RUFDSSxpQkFBQTtBQ0ZSOztBRE1BO0VBQ0ksY0FBQTtFQUNBLGdCQUFBO0FDSEo7O0FETUE7RUFDSSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsYUFBQTtFQUNBLFVBQUE7QUNISjs7QURNQTtFQUNJLFdBckJHO0VBc0JILFlBdEJHO0VBeUJILG9CQUFBO0FDSEo7O0FETUE7RUFDSSwyQkFBQTtBQ0hKOztBRE1BO0VBQ0ksdUJBQUE7QUNISjs7QURNQTtFQUNJLHdCQUFBO0FDSEo7O0FETUE7RUFDSSxxQkFBQTtBQ0hKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbC12ZXJpZmljYXRpb24uc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiRzaXplOiAxNXB4O1xuXG4uY29udGV4dCB7XG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cblxuLnNlY3Rpb24ge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIGJvcmRlci10b3A6IG5vbmU7XG59XG5cbi5jZW50ZXIge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBtaW4taGVpZ2h0OiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi5jaXJjbGUge1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHNpemUvMjtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRzaXplLzI7XG4gICAgYm9yZGVyLXJhZGl1czogJHNpemUvMjtcbn1cblxuLnZlcmlmaWNhdGlvbi0wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG59XG5cbi52ZXJpZmljYXRpb24tMSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47XG59XG5cbi52ZXJpZmljYXRpb24tMiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlO1xufVxuXG4udmVyaWZpY2F0aW9uLTMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbn1cbiIsIi5jb250ZXh0IHNwYW4ge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnNlY3Rpb24ge1xuICBwYWRkaW5nLXRvcDogMDtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLmNlbnRlciB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIGJvcmRlci10b3A6IG5vbmU7XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jaXJjbGUge1xuICB3aWR0aDogMTVweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDcuNXB4O1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDcuNXB4O1xuICBib3JkZXItcmFkaXVzOiA3LjVweDtcbn1cblxuLnZlcmlmaWNhdGlvbi0wIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmF5O1xufVxuXG4udmVyaWZpY2F0aW9uLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcbn1cblxuLnZlcmlmaWNhdGlvbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlO1xufVxuXG4udmVyaWZpY2F0aW9uLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG59Il19 */\"","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvYmlsbHMtY29udHJvbC10YWJzL2JpbGxzLWNvbnRyb2wtdGFicy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Location } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { BillsControlTab } from './bills-control-tabs.interface';\n\n@Component({\n selector: 'ga-bills-control-tabs',\n templateUrl: './bills-control-tabs.component.html',\n styleUrls: ['./../../../../../shared/styles/navigation.scss', './bills-control-tabs.component.scss'],\n})\nexport class BillsControlTabsComponent implements OnInit {\n @Input() tabs: BillsControlTab[];\n @Input() selectedTab: BillsControlTab;\n\n constructor(private location: Location) {}\n\n ngOnInit() {\n this.selectTab(this.selectedTab);\n }\n\n selectTab(tab: BillsControlTab) {\n const isTabSame = this.selectedTab && tab && this.selectedTab.key === tab.key;\n\n if (!isTabSame) {\n // change the URL name as well but without reloading the page\n this.location.go(`/controle/${tab.key}`);\n this.selectedTab = tab; // they might be different if selectTab is called by the page being refresh (Ctrl R)\n }\n }\n\n isTabActive(key: string): boolean {\n return this.selectedTab.key === key;\n }\n\n get isSelectedTabAllowed(): boolean {\n return this.selectedTab && this.selectedTab.canUserView;\n }\n\n getTabClasses(key: string): string {\n let classes = '';\n classes += this.isTabActive(key) ? 'citron-background tab-active ' : '';\n return classes;\n }\n\n getNameCapitalized(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n get hasMultipleTabsAllowed(): boolean {\n return this.tabs.filter(x => x.canUserView).length > 1;\n }\n}\n","export default \"#filters {\\n -webkit-box-pack: center !important;\\n justify-content: center !important;\\n}\\n\\n.display-detailled-label {\\n font-size: 0.875rem;\\n margin-bottom: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2JpbGxzLWNvbXBsZXRlbmVzcy10YWIvYmlsbHMtY29tcGxldGVuZXNzLXRhYi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtY29udHJvbC9jb21wbGV0ZW5lc3MvYmlsbHMtY29tcGxldGVuZXNzLXRhYi9iaWxscy1jb21wbGV0ZW5lc3MtdGFiLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksbUNBQUE7VUFBQSxrQ0FBQTtBQ0NKOztBREVBO0VBQ0ksbUJBQUE7RUFDQSxnQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtY29udHJvbC9jb21wbGV0ZW5lc3MvYmlsbHMtY29tcGxldGVuZXNzLXRhYi9iaWxscy1jb21wbGV0ZW5lc3MtdGFiLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI2ZpbHRlcnMge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5kaXNwbGF5LWRldGFpbGxlZC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuIiwiI2ZpbHRlcnMge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xufVxuXG4uZGlzcGxheS1kZXRhaWxsZWQtbGFiZWwge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufSJdfQ== */\"","import { AfterViewInit, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport { Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { PaginationBackService } from 'app/shared/components/pagination/back/pagination-back.service';\nimport { QueryFilter } from 'app/shared/models/bills-contracts-filter.interface';\nimport {\n CompletenessQueryFilter,\n Filter,\n PeriodFilter,\n TimelineData,\n} from 'app/shared/models/bills-timeline.interface';\nimport { BillPopulated, BillsColumns } from 'app/shared/models/bills.interface';\nimport { Pagination, QueryPagination } from 'app/shared/models/pagination.interface';\nimport { RoutingReferenceLight } from 'app/shared/models/routing-reference.interface';\nimport { BillQuery } from 'app/shared/services/bills-list/bills-list.interface';\nimport { BillsListService } from 'app/shared/services/bills-list/bills-list.service';\nimport { BillsCompletenessService, FluidProperty } from 'app/shared/services/bills/bills-completeness.service';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { CompletenessPeriod, FluidCompleteness } from './bills-completeness-tab.interface';\n\n@Component({\n selector: 'ga-bills-completeness-routing-reference',\n templateUrl: './bills-completeness-tab.component.html',\n styleUrls: ['./bills-completeness-tab.component.scss'],\n providers: [PaginationBackService],\n})\nexport class BillsCompletenessRoutingReferenceComponent implements OnInit, AfterViewInit, OnDestroy {\n /**\n * used for the bills query\n */\n @Input() routingReference: RoutingReferenceLight;\n\n /**\n * Contract to display completeness for.\n * If not provided, display completeness for all routing reference's contracts.\n */\n @Input() contract: {\n _id: string;\n reference: string;\n provider: string;\n startDate: string;\n endDate: string;\n } = null;\n\n /**\n * Bills displayed in the table\n */\n bills: BillPopulated[] = [];\n\n /**\n * Is currenlty loading bills\n */\n public isBillsLoading = true;\n\n /**\n * Pagination\n */\n pagination: Pagination = {\n lastItem: {\n _id: null,\n index: 0,\n },\n };\n\n /**\n * used for the bills service\n */\n filters: QueryFilter;\n\n /**\n * used to update the daterangepicker\n */\n @Input() dates: PeriodFilter;\n\n /**\n * used to set the period of the timeline\n */\n timelineFilters: Filter = {};\n\n /**\n * Datas of the timeline to display\n */\n public timelineDatas: TimelineData[] = [];\n\n /**\n * All timeline datas\n */\n public timelineDatasAll: TimelineData[] = [];\n\n /**\n * Do not display category column in the bills list\n */\n availableColumns: BillsColumns = {\n category: {\n enabled: false,\n },\n };\n\n // min and max bills dates of the routing reference\n private billsDatesLimit: {\n start: string; // date iso string\n end: string; // date iso string\n } = {\n start: null,\n end: null,\n };\n\n /** Control to handle detailled display checkbox */\n public detailledDisplayControl: FormControl = new FormControl(true);\n\n private subscription: Subscription;\n\n constructor(\n private paginationService: PaginationBackService,\n private billsListService: BillsListService,\n private billsCompletenessService: BillsCompletenessService,\n private translateService: TranslateService,\n private routingReferencesService: RoutingReferencesService\n ) {}\n\n ngOnInit() {\n this.initDates();\n this.subscription = this.detailledDisplayControl.valueChanges.subscribe({\n next: value => {\n this.refreshTimelinesToDisplay(value);\n },\n });\n }\n\n async ngAfterViewInit() {\n await this.setPeriod(this.dates);\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n /**\n * set the default beginDate and endDate\n * @returns void\n */\n private initDates() {\n const year: number = +moment().format('YYYY');\n this.dates = this.dates || {\n beginDate: {\n year,\n month: 1,\n day: 1,\n },\n endDate: {\n year,\n month: 12,\n day: 31,\n },\n };\n\n this.timelineFilters = {\n period: {\n beginDate: this.dates.beginDate,\n endDate: this.dates.endDate,\n },\n };\n }\n\n /**\n * Set the list of bills displayed, using filters & pagination.\n * @return {Promise}\n */\n private async setBills(): Promise {\n try {\n // set loading and empty pagination during loading\n this.isBillsLoading = true;\n\n const [, , billsResult] = await Promise.all([\n this.getBillsDatesLimit(),\n this.getBillsCompleteness(),\n this.getBills(),\n ]);\n\n initCollapse(billsResult.results);\n this.bills = billsResult.results;\n\n // Update pagination with the new total number of elements\n this.paginationService.updateLastItem(this.pagination.lastItem, this.bills);\n this.paginationService.updateAfterSearch(billsResult.total);\n\n this.isBillsLoading = false;\n } catch (e) {\n this.bills = [];\n this.isBillsLoading = false;\n\n // reset pagination to first page for an empty array\n this.paginationService.emptyPagination();\n\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des factures. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n }\n\n function initCollapse(billsUploads: BillPopulated[]) {\n billsUploads.forEach(bill => {\n bill.isExpanded = false;\n });\n }\n }\n\n /**\n * Get data to bills uploads to display for filters and pagination.\n * @return {Promise<{ results: BillPopulated[]; total: number; }>}\n */\n private async getBills(): Promise<{\n results: BillPopulated[];\n total: number;\n }> {\n const queryPagination: QueryPagination = this.paginationService.getPaginationQuery(this.pagination.lastItem);\n const filters: BillQuery = Object.assign(\n { consumptionStart: this.filters.start, consumptionEnd: this.filters.end },\n this.filters,\n { start: null, end: null }\n );\n const result = await this.billsListService.getUploadsBillsPopulated(\n filters,\n queryPagination,\n this.routingReference.company\n );\n this.billsListService.formatBillsUpload(result.results);\n // Filter chunks with only those from routing reference\n this.filterBillsChunks(result.results);\n return result;\n }\n\n /**\n * Filter bills chunks to display to keep only chunks related to component's routing reference\n * @param {BillPopulated[]} bills - bills uploads formatted (with `subTotalsPerCategory`)\n */\n private filterBillsChunks(bills: BillPopulated[]) {\n bills.forEach(bill => {\n if (bill.multi) {\n /**\n * subTotalsPerCategory is used to display chunks grouped\n * So we need to filter chunks in these items\n */\n bill.subTotalsPerCategory.forEach(category => {\n category.chunks = category.chunks.filter(\n x => x.routingReference && x.routingReference.id === this.routingReference._id\n );\n });\n /**\n * Filter to remove empty categories\n */\n bill.subTotalsPerCategory = bill.subTotalsPerCategory.filter(x => x.chunks.length);\n }\n });\n }\n\n /**\n * get min and max bills dates of the routing reference\n */\n private async getBillsDatesLimit() {\n if (!this.billsDatesLimit.start && !this.billsDatesLimit.end) {\n const billsDates = await this.routingReferencesService.getRoutingReferenceBillsDates(\n this.routingReference._id,\n this.contract && this.contract._id ? { contract: this.contract._id } : {}\n );\n\n const billsStartDate = billsDates.start;\n if (billsStartDate && moment.utc(billsStartDate).isValid()) {\n this.billsDatesLimit.start = billsStartDate;\n }\n\n const billsEndDate = billsDates.end;\n if (billsEndDate && moment.utc(billsEndDate).isValid()) {\n this.billsDatesLimit.end = billsEndDate;\n }\n }\n }\n\n /**\n * get bills completeness periods for timeline displaying\n */\n private async getBillsCompleteness() {\n const detailled = this.detailledDisplayControl.value;\n try {\n const filters: CompletenessQueryFilter = {\n start: this.filters.start,\n end: this.filters.end,\n routingReference: this.routingReference._id,\n };\n if (this.contract && this.contract._id) {\n filters.contract = this.contract._id;\n }\n const result: FluidCompleteness = await this.billsCompletenessService.getBillsCompletenessPeriods(\n filters,\n this.routingReference.company\n );\n\n const properties = this.billsCompletenessService\n .getFluidProperties(this.routingReference.energyType)\n .reverse();\n const timelineDatas: TimelineData[] = properties.reduce((memo, property) => {\n const data = result[property.key];\n if (data) {\n const timelineData = this.getTimelineBillsCompleteness(data, property);\n\n this.setTimelineDatas(timelineData, property);\n return memo.concat(timelineData);\n }\n return memo;\n }, []);\n this.timelineDatasAll = timelineDatas;\n this.refreshTimelinesToDisplay(detailled);\n } catch (err) {\n this.timelineDatasAll = [];\n this.refreshTimelinesToDisplay(detailled);\n throw err;\n }\n }\n\n /**\n * Create timeline data by using bill periods and filling with incomplete periods.\n * @param periods\n * @param property\n */\n private getTimelineBillsCompleteness(periods: CompletenessPeriod[], property: FluidProperty): TimelineData[] {\n const timelineDatas: TimelineData[] = [];\n const dateFormat = 'DD/MM/YYYY';\n\n const starts = [moment.utc(this.filters.start)];\n if (this.billsDatesLimit.start) {\n starts.push(moment.utc(this.billsDatesLimit.start));\n }\n const start: string = moment.max(starts).toISOString();\n const addIncompletePeriods = Boolean(property.isParent);\n\n let end: string = null;\n\n // End used to compute incomplete period at the end. Min calc must include bill dates end.\n if (this.billsDatesLimit.end) {\n end = moment\n .min([\n moment.utc(this.billsDatesLimit.end),\n moment\n .utc(this.filters.end)\n .add(1, 'days')\n .startOf('day'),\n moment.utc(),\n ])\n .toISOString();\n }\n\n periods.forEach(period => {\n /** Last period date to have the starting point and create incomplete period if needed */\n let lastDate: string;\n\n if (!timelineDatas.length) {\n lastDate = start;\n } else {\n lastDate = moment.utc(timelineDatas[timelineDatas.length - 1].endDate, dateFormat).toISOString();\n }\n\n // If period start date and last period end date don't follow, add incomplete period between\n if (\n addIncompletePeriods &&\n moment\n .utc(lastDate)\n .add(1, 'day')\n .isBefore(moment.utc(period.startDate))\n ) {\n timelineDatas.push({\n key: property.key,\n category: property.label,\n startDate: moment\n .utc(lastDate)\n .add(1, 'day')\n .format(dateFormat),\n endDate: moment\n .utc(period.startDate)\n .subtract(1, 'day')\n .format(dateFormat),\n type: 'incomplete_period',\n });\n }\n\n const type = this.billsCompletenessService.getPeriodWithDataType(property, period.bills.length);\n timelineDatas.push({\n key: property.key,\n category: property.label,\n startDate: moment.utc(period.startDate).format(dateFormat),\n endDate: moment.utc(period.endDate).format(dateFormat),\n type,\n bills: period.bills,\n provider: this.contract ? this.contract.provider : null,\n contractRef: this.contract ? this.contract.reference : null,\n });\n });\n // Add incomplete period\n if (\n addIncompletePeriods &&\n end &&\n timelineDatas.length &&\n moment\n .utc(timelineDatas[timelineDatas.length - 1].endDate, dateFormat)\n .add(1, 'days')\n .isBefore(moment.utc(end))\n ) {\n timelineDatas.push({\n key: property.key,\n category: property.label,\n startDate: moment\n .utc(timelineDatas[timelineDatas.length - 1].endDate, dateFormat)\n .add(1, 'day')\n .format(dateFormat),\n endDate: moment\n .utc(end)\n .subtract(1, 'day')\n .format(dateFormat),\n type: 'incomplete_period',\n });\n }\n return timelineDatas;\n }\n\n /**\n * set the QueryFilter with the start date and the end date\n * then get the filtered bills\n * @param {PeriodFilter}\n */\n private async setPeriod(period: PeriodFilter) {\n const isoDates = this.getIsoDates(period);\n\n this.filters = {\n start: isoDates.beginDate,\n end: isoDates.endDate,\n routingReferences: [this.routingReference._id],\n onlyError: false,\n includeBranches: false,\n };\n\n if (this.contract) {\n this.filters.contracts = [this.contract._id];\n }\n\n // reset pagination to first page\n this.paginationService.setFirstPage();\n // Reset last item\n this.pagination.lastItem = { _id: null, index: 0 };\n\n // get data for new filter values\n await this.setBills();\n }\n\n /**\n * on timeline period changed\n * @param {periodFilter} period\n */\n public async timelinePeriodOnChanged(period: PeriodFilter) {\n this.dates = period;\n await this.setPeriod(period);\n }\n\n /**\n * on dates rangepicker changed\n * @param {PeriodFilter} period\n */\n public async datesOnChanged(period: PeriodFilter) {\n this.timelineFilters = {\n period: {\n beginDate: period.beginDate,\n endDate: period.endDate,\n },\n };\n\n await this.setPeriod(period);\n }\n\n /**\n * Called when pagination is updated (selected page or nb of items per pages).\n * Load the updated bills.\n */\n public async onPaginationChanged(event = { resetLastItem: false }) {\n if (event.resetLastItem) {\n this.paginationService.updateLastItem(this.pagination.lastItem, []);\n }\n await this.setBills();\n }\n\n /**\n * get Iso String dates from PeriodFilter dates\n * @param {PeriodFilter} period\n * @returns {<{beginDate: string, endDate: string}>}\n */\n private getIsoDates(period: PeriodFilter): { beginDate: string; endDate: string } {\n const beginDate = moment\n .utc(`${period.beginDate.year}-${period.beginDate.month}-${period.beginDate.day}`, 'YYYY-MM-DD')\n .startOf('day')\n .toISOString();\n const endDate = moment\n .utc(`${period.endDate.year}-${period.endDate.month}-${period.endDate.day}`, 'YYYY-MM-DD')\n .endOf('day')\n .toISOString();\n return { beginDate, endDate };\n }\n\n /**\n * set the timeline datas by adding periods:\n * - today\n * - end of contract\n * - deactivation date of the routing reference\n * @param timelineDatas\n * @param property\n */\n private setTimelineDatas(timelineDatas: TimelineData[], property: FluidProperty) {\n const dateFormat = 'DD/MM/YYYY';\n\n timelineDatas.push({\n key: property.key,\n category: property.label,\n startDate: moment.utc().format(dateFormat),\n endDate: moment\n .utc()\n .add(1, 'day')\n .format(dateFormat),\n type: 'today',\n });\n\n if (this.contract && this.contract.endDate) {\n timelineDatas.push({\n key: property.key,\n category: property.label,\n startDate: moment.utc(this.contract.endDate).format(dateFormat),\n endDate: moment\n .utc(this.contract.endDate)\n .add(1, 'day')\n .format(dateFormat),\n type: 'end_of_contract',\n provider: this.contract.provider,\n contractRef: this.contract.reference,\n });\n }\n\n // add routing reference deactivation date in the timeline\n const isActive = _.get(this.routingReference, 'status.active');\n const histories = _.get(this.routingReference, 'status.history', []);\n if (isActive === false && histories.length) {\n const history = _.last(histories);\n if (history && history['date']) {\n const deactivationDate = history['date'];\n timelineDatas.push({\n key: property.key,\n category: property.label,\n startDate: moment.utc(deactivationDate).format(dateFormat),\n endDate: moment\n .utc(deactivationDate)\n .add(1, 'day')\n .format(dateFormat),\n type: 'routing_reference_deactived',\n });\n }\n }\n }\n\n /**\n * Set a message in the table if it doesn't have the bills to match the timeline data\n * @returns {string | null} key of the message to display. Null if no message to display.\n */\n public get msgForTable(): string | null {\n // display a explanation msg if the timeline has data and the table doesn't\n const isMissingData = Boolean(!this.bills.length && this.timelineDatas.length);\n return isMissingData ? this.translateService._('bills_unavailable') : null;\n }\n\n /**\n * Refresh timelines data to display\n * @param displayDetailled\n */\n private refreshTimelinesToDisplay(displayDetailled: boolean) {\n const keys = this.billsCompletenessService.getFluidProperties(this.routingReference.energyType, {\n onlyParents: !displayDetailled,\n });\n this.timelineDatas = this.timelineDatasAll.filter(x => keys.some(k => k.key === x.key));\n }\n}\n","export default \"#date-range-picker {\\n font-size: 13px;\\n}\\n#date-range-picker .form-control {\\n font-size: 13px;\\n}\\n#date-range-picker .error {\\n color: #db4b47;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2JpbGxzLWRhdGVwaWNrZXIvYmlsbHMtZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtY29udHJvbC9jb21wbGV0ZW5lc3MvYmlsbHMtZGF0ZXBpY2tlci9iaWxscy1kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLGVBQUE7QUNESjtBREdJO0VBQ0ksZUFBQTtBQ0RSO0FESUk7RUFDSSxjRVlBO0FEZFIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1jb250cm9sL2NvbXBsZXRlbmVzcy9iaWxscy1kYXRlcGlja2VyL2JpbGxzLWRhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuI2RhdGUtcmFuZ2UtcGlja2VyIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgIH1cblxuICAgIC5lcnJvciB7XG4gICAgICAgIGNvbG9yOiAkZXJyb3I7XG4gICAgfVxufVxuIiwiI2RhdGUtcmFuZ2UtcGlja2VyIHtcbiAgZm9udC1zaXplOiAxM3B4O1xufVxuI2RhdGUtcmFuZ2UtcGlja2VyIC5mb3JtLWNvbnRyb2wge1xuICBmb250LXNpemU6IDEzcHg7XG59XG4jZGF0ZS1yYW5nZS1waWNrZXIgLmVycm9yIHtcbiAgY29sb3I6ICNkYjRiNDc7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PeriodFilter } from 'app/shared/models/bills-timeline.interface';\nimport * as moment from 'moment';\n\n@Component({\n selector: 'ga-bills-datepicker',\n templateUrl: './bills-datepicker.component.html',\n styleUrls: ['./bills-datepicker.component.scss'],\n})\nexport class BillsDatepickerComponent implements OnInit {\n private _dates: PeriodFilter;\n @Input() set dates(dates: PeriodFilter) {\n // Init selected dates\n this._dates = dates;\n if (dates && dates.beginDate && dates.endDate) {\n const start = dates.beginDate;\n const end = dates.endDate;\n this.beginDate = moment([start.year, start.month - 1, start.day]).format('YYYY-MM-DD');\n this.endDate = moment([end.year, end.month - 1, end.day]).format('YYYY-MM-DD');\n }\n }\n get dates(): PeriodFilter {\n return this._dates;\n }\n\n @Output() datesOnChange: EventEmitter = new EventEmitter();\n\n beginDate: string;\n endDate: string;\n errorMessage: string;\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * on daterangepicker changed it will set the period of the timeline\n * and apply the filters\n */\n onDatesChanged() {\n this.errorMessage = null;\n if (this.beginDate && this.endDate) {\n if (this.beginDate.length && this.endDate.length) {\n const beginDate = moment.utc(this.beginDate);\n const endDate = moment.utc(this.endDate);\n if (beginDate.isAfter(endDate)) {\n this.errorMessage = 'La date de début doit être inférieure à la date de fin';\n } else {\n this.setDates({\n beginDate: {\n day: beginDate.date(),\n month: beginDate.month() + 1,\n year: beginDate.year(),\n },\n endDate: {\n day: endDate.date(),\n month: endDate.month() + 1,\n year: endDate.year(),\n },\n });\n this.datesOnChange.emit(this.dates);\n }\n }\n }\n }\n\n /**\n * Set dates\n * @param {PeriodFilter} dates\n */\n setDates(dates: PeriodFilter) {\n this.dates = dates;\n }\n}\n","export default \".table__container {\\n overflow-x: auto;\\n}\\n.table__container .table {\\n background: white;\\n color: #607188;\\n font-size: 0.875rem;\\n}\\n.table__container .table td,\\n.table__container .table th {\\n text-align: center;\\n vertical-align: middle;\\n line-height: 1rem;\\n font-weight: inherit;\\n}\\n.table__container .table td i,\\n.table__container .table th i {\\n padding-left: 0.18rem;\\n}\\n.table__container .table thead {\\n font-weight: bold;\\n}\\n.table__container .table thead .table-header th {\\n background: #d8a63e;\\n color: white;\\n text-align: start;\\n}\\n.table__container .table thead .table-header th .table-title {\\n display: block;\\n margin-bottom: 5px;\\n font-weight: bold;\\n text-transform: uppercase;\\n font-size: 0.938rem;\\n}\\n.table__container .table thead .table-header th .subtitle {\\n font-weight: 100;\\n}\\n.table__container .table tbody .no-data th {\\n padding: 0.75rem;\\n}\\ntr .table__container .table tbody:not(no-data):hover {\\n background: whitesmoke;\\n}\\n.table__container .table .table-columns-header th:first-child,\\n.table__container .table tbody td:first-child {\\n text-align: start;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2JpbGxzLXRhYmxlLWNvbXBsZXRlbmVzcy9iaWxscy10YWJsZS1jb21wbGV0ZW5lc3MuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2JpbGxzLXRhYmxlLWNvbXBsZXRlbmVzcy9iaWxscy10YWJsZS1jb21wbGV0ZW5lc3MuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksZ0JBQUE7QUNGSjtBRElJO0VBQ0ksaUJBQUE7RUFDQSxjRWtCSztFRmpCTCxtQkFBQTtBQ0ZSO0FESVE7O0VBRUksa0JBQUE7RUFDQSxzQkFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QUNGWjtBRElZOztFQUNJLHFCQUFBO0FDRGhCO0FES1E7RUFDSSxpQkFBQTtBQ0haO0FES1k7RUFDSSxtQkVuQkw7RUZvQkssWUFBQTtFQUNBLGlCQUFBO0FDSGhCO0FES2dCO0VBQ0ksY0FBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSx5QkFBQTtFQUNBLG1CQUFBO0FDSHBCO0FETWdCO0VBQ0ksZ0JBQUE7QUNKcEI7QURXZ0I7RUFDSSxnQkFBQTtBQ1RwQjtBRGNnQjtFQUNJLHNCQUFBO0FDWnBCO0FEaUJROztFQUVJLGlCQUFBO0FDZloiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1jb250cm9sL2NvbXBsZXRlbmVzcy9iaWxscy10YWJsZS1jb21wbGV0ZW5lc3MvYmlsbHMtdGFibGUtY29tcGxldGVuZXNzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcblxuLnRhYmxlX19jb250YWluZXIge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgICAudGFibGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgICAgIHRkLFxuICAgICAgICB0aCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDFyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDtcblxuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjE4cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhlYWQge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICAgICAgICAgIC50YWJsZS1oZWFkZXIgdGgge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb250cmF0cztcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQ7XG5cbiAgICAgICAgICAgICAgICAudGFibGUtdGl0bGUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjkzOHJlbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuc3VidGl0bGUge1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHtcbiAgICAgICAgICAgIC5uby1kYXRhIHtcbiAgICAgICAgICAgICAgICB0aCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0ciAmOm5vdChuby1kYXRhKSB7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlc21va2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnRhYmxlLWNvbHVtbnMtaGVhZGVyIHRoOmZpcnN0LWNoaWxkLFxuICAgICAgICB0Ym9keSB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi50YWJsZV9fY29udGFpbmVyIHtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cbi50YWJsZV9fY29udGFpbmVyIC50YWJsZSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBjb2xvcjogIzYwNzE4ODtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cbi50YWJsZV9fY29udGFpbmVyIC50YWJsZSB0ZCxcbi50YWJsZV9fY29udGFpbmVyIC50YWJsZSB0aCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbGluZS1oZWlnaHQ6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIHRkIGksXG4udGFibGVfX2NvbnRhaW5lciAudGFibGUgdGggaSB7XG4gIHBhZGRpbmctbGVmdDogMC4xOHJlbTtcbn1cbi50YWJsZV9fY29udGFpbmVyIC50YWJsZSB0aGVhZCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIHRoZWFkIC50YWJsZS1oZWFkZXIgdGgge1xuICBiYWNrZ3JvdW5kOiAjZDhhNjNlO1xuICBjb2xvcjogd2hpdGU7XG4gIHRleHQtYWxpZ246IHN0YXJ0O1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIHRoZWFkIC50YWJsZS1oZWFkZXIgdGggLnRhYmxlLXRpdGxlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMC45MzhyZW07XG59XG4udGFibGVfX2NvbnRhaW5lciAudGFibGUgdGhlYWQgLnRhYmxlLWhlYWRlciB0aCAuc3VidGl0bGUge1xuICBmb250LXdlaWdodDogMTAwO1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIHRib2R5IC5uby1kYXRhIHRoIHtcbiAgcGFkZGluZzogMC43NXJlbTtcbn1cbnRyIC50YWJsZV9fY29udGFpbmVyIC50YWJsZSB0Ym9keTpub3Qobm8tZGF0YSk6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZXNtb2tlO1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIC50YWJsZS1jb2x1bW5zLWhlYWRlciB0aDpmaXJzdC1jaGlsZCxcbi50YWJsZV9fY29udGFpbmVyIC50YWJsZSB0Ym9keSB0ZDpmaXJzdC1jaGlsZCB7XG4gIHRleHQtYWxpZ246IHN0YXJ0O1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PaginationService } from 'app/shared/components/pagination/front/pagination-front.service';\nimport * as _ from 'lodash';\nimport {\n CompletenessTableProperties,\n RoutingRefDateCompleteness,\n RRefClicked,\n} from '../completeness-data-tab/completeness-data-tab.interface';\n\n@Component({\n selector: 'bills-table-completeness',\n templateUrl: './bills-table-completeness.component.html',\n styleUrls: ['./bills-table-completeness.component.scss'],\n providers: [PaginationService],\n})\nexport class BillsTableCompletenessComponent implements OnInit {\n constructor(private paginationService: PaginationService) {}\n\n /**\n * Number of columns in the table\n */\n public get nbColumns(): number {\n return this.tableProperties.completenessComponents.length + 2;\n }\n\n /**\n * Return the header message key to display\n */\n public get tableHeaderMessage(): string {\n return this.tableProperties.data.length > 1 ? 'routingReferences' : 'routingReference';\n }\n\n /**\n * Returns the elements to display matching the current pagination\n */\n get routingReferencesSorted(): RoutingRefDateCompleteness[] {\n return this.tableProperties.data.slice(\n this.paginationService.pagination.indexStart,\n this.paginationService.pagination.indexEnd + 1\n );\n }\n\n @Input() tableProperties: CompletenessTableProperties = {\n data: [],\n isLoading: false,\n completenessComponents: [],\n dateSelected: null,\n };\n\n /**\n * Routing reference view details clicked\n */\n @Output() detailsClicked: EventEmitter = new EventEmitter();\n\n ngOnInit() {}\n\n /**\n * Check if the table has data\n * @returns {boolean}\n */\n public hasData(): boolean {\n return this.tableProperties.data.length > 0;\n }\n\n /**\n * Return the percentage width of a component cell (each width is eaqual)\n * @returns {string} percentage\n */\n public getCellWidthPercentage(): string {\n /**\n * Routing reference number takes 10% - so 90% left to distribute equally between each comopnent\n */\n return `${90 / this.tableProperties.completenessComponents.length}%`;\n }\n\n /***************************\n **** Pagination & sort ****\n ***************************\n */\n\n /**\n * Update the sort caret class depending on the user action.\n * @param {string} header\n * @returns {string[]} css classes\n */\n public getClassesSort(header: string): string[] {\n return this.paginationService.getClassesSort(header);\n }\n\n /**\n * Handle sort click to update the routing references list\n * @param {string} header column header selected for sort\n */\n public onSort(header: string): void {\n /**\n * Update the pagination elements\n */\n this.paginationService.updateSort(header);\n\n /**\n * Display elements matching new sort & set first page\n */\n this.reinitTable();\n }\n\n /**\n * Sort table data with the current pagination & set first page.\n */\n public reinitTable(): void {\n this.paginationService.setFirstPage();\n this.sortTable();\n }\n\n /**\n * Sort the table data with the current pagination values\n */\n private sortTable() {\n const order = this.paginationService.sort.asc ? 'asc' : 'desc';\n const header = this.paginationService.sort.field;\n const field = this.tableProperties.completenessComponents.includes(header)\n ? `percentages.${this.paginationService.sort.field}`\n : header;\n this.tableProperties.data = _.orderBy(this.tableProperties.data, [field], [order]);\n }\n\n /*********************************************\n * routing reference completeness details button to open a modal\n *********************************************/\n\n /**\n * on routing reference completeness details button clicked\n * @param {RoutingRefDateCompleteness} routingRef\n */\n public detailsClick(routingRef: RoutingRefDateCompleteness): void {\n this.detailsClicked.emit({\n _id: routingRef.routingReferenceId,\n reference: routingRef.routingReference,\n company: routingRef.companyId,\n energyType: routingRef.fluid,\n });\n }\n}\n","export default \"#timeline {\\n width: 100%;\\n}\\n\\n#legends {\\n font-size: 0.875rem;\\n}\\n\\n#legends .legend-color {\\n width: 0.875rem;\\n height: 0.875rem;\\n border-radius: 50%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2JpbGxzLXRpbWVsaW5lL2JpbGxzLXRpbWVsaW5lLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1jb250cm9sL2NvbXBsZXRlbmVzcy9iaWxscy10aW1lbGluZS9iaWxscy10aW1lbGluZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7QUNDSjs7QURFQTtFQUVJLG1CQURpQjtBQ0NyQjs7QURDSTtFQUNJLGVBSGE7RUFJYixnQkFKYTtFQUtiLGtCQUFBO0FDQ1IiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1jb250cm9sL2NvbXBsZXRlbmVzcy9iaWxscy10aW1lbGluZS9iaWxscy10aW1lbGluZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiN0aW1lbGluZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbiNsZWdlbmRzIHtcbiAgICAkbGVnZW5kVGV4dFNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtc2l6ZTogJGxlZ2VuZFRleHRTaXplO1xuICAgIC5sZWdlbmQtY29sb3Ige1xuICAgICAgICB3aWR0aDogJGxlZ2VuZFRleHRTaXplO1xuICAgICAgICBoZWlnaHQ6ICRsZWdlbmRUZXh0U2l6ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIH1cbn1cbiIsIiN0aW1lbGluZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4jbGVnZW5kcyB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG4jbGVnZW5kcyAubGVnZW5kLWNvbG9yIHtcbiAgd2lkdGg6IDAuODc1cmVtO1xuICBoZWlnaHQ6IDAuODc1cmVtO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59Il19 */\"","import * as am4charts from '@amcharts/amcharts4/charts';\nimport * as am4core from '@amcharts/amcharts4/core';\nimport am4lang_fr_FR from '@amcharts/amcharts4/lang/fr_FR';\nimport am4themes_animated from '@amcharts/amcharts4/themes/animated';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\n\nimport { IMyDateRangeModel } from 'mydaterangepicker';\n\nimport { DateFilter, Filter, Legend, PeriodFilter, TimelineData } from 'app/shared/models/bills-timeline.interface';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nam4core.useTheme(am4themes_animated);\n\n@Component({\n selector: 'ga-bills-timeline',\n templateUrl: './bills-timeline.component.html',\n styleUrls: ['./bills-timeline.component.scss'],\n providers: [],\n})\nexport class BillsTimelineComponent implements OnInit, OnChanges, OnDestroy {\n @Input() legends: Legend[];\n\n @Input() filters: Filter = {};\n\n @Input() timelineDatas: TimelineData[] = [];\n\n @Output() periodOnChange: EventEmitter = new EventEmitter();\n\n /**\n * Get legend filtered based on timeline data displayed\n */\n public get legendsFiltered(): Legend[] {\n if (!this.legends) {\n return [];\n }\n return this.legends.filter(x => this.timelineDatas.some(y => y.type === x.type));\n }\n\n private timeline: am4charts.XYChart;\n private xAxis: am4charts.DateAxis;\n\n private dateFormat = 'dd/MM/yyyy';\n\n @ViewChild('timelineEl', { static: true }) timelineEl: ElementRef;\n\n constructor(\n private translateService: TranslateService,\n private router: Router,\n private colorService: ColorService\n ) {}\n\n ngOnInit() {\n this.initLegends();\n setTimeout(() => {\n this.initTimeline();\n });\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (const propName in changes) {\n if (propName === 'timelineDatas') {\n this.setTimelineData(changes.timelineDatas.currentValue);\n } else if (propName === 'filters') {\n this.setTimelinePeriod(changes.filters.currentValue.period);\n }\n }\n }\n\n ngOnDestroy() {\n this.disposeTimeline();\n }\n\n /**\n * Initialize legends\n */\n private initLegends() {\n this.legends = this.legends || this.defaultLegends;\n }\n\n /**\n * Initialize timeline filters\n * The default period is the current year\n */\n private initFilters() {\n const beginDate = _.get(this.filters, 'period.beginDate');\n const endDate = _.get(this.filters, 'period.endDate');\n let period: PeriodFilter;\n\n if (!beginDate || !endDate) {\n const year: number = +moment().format('YYYY');\n period = {\n beginDate: {\n year,\n month: 1,\n day: 1,\n },\n endDate: {\n year,\n month: 12,\n day: 31,\n },\n };\n } else {\n period = {\n beginDate,\n endDate,\n };\n }\n\n this.setFiltersPeriod(period);\n }\n\n /**\n * Initialize the timeline\n */\n private initTimeline() {\n this.initFilters();\n this.setTimeline();\n }\n\n private setTimeline() {\n this.disposeTimeline();\n\n const FONT_SIZE = '0.875rem';\n const FONT_FAMILY = 'Montserrat';\n\n const timeline: am4charts.XYChart = am4core.create(this.timelineEl.nativeElement, am4charts.XYChart);\n timeline.language.locale = am4lang_fr_FR;\n timeline.language.locale['_date_day'] = 'dd/MM/yy';\n timeline.language.locale['_date_month'] = 'MMM';\n timeline.language.locale['_date_year'] = 'yyyy';\n timeline.dateFormatter.dateFormat = this.dateFormat;\n timeline.dateFormatter.inputDateFormat = this.dateFormat;\n\n const yAxis = timeline.yAxes.push(new am4charts.CategoryAxis());\n yAxis.dataFields.category = 'category';\n yAxis.fontSize = FONT_SIZE;\n yAxis.renderer.labels.template.fill = am4core.color(this.colorService.getHexPageColor('TEXT_COLOR'));\n yAxis.fontFamily = FONT_FAMILY;\n\n const xAxis = timeline.xAxes.push(new am4charts.DateAxis());\n xAxis.renderer.minGridDistance = 70;\n xAxis.renderer.tooltipLocation = 0;\n xAxis.baseInterval = {\n count: 1,\n timeUnit: 'day',\n };\n xAxis.fontSize = FONT_SIZE;\n xAxis.renderer.labels.template.fill = am4core.color(this.colorService.getHexPageColor('TEXT_COLOR'));\n xAxis.fontFamily = FONT_FAMILY;\n\n const serie = timeline.series.push(new am4charts.ColumnSeries());\n\n serie.columns.template.height = am4core.percent(70);\n serie.columns.template.tooltipHTML = '
';\n serie.columns.template.propertyFields.fill = 'color';\n serie.columns.template.propertyFields.stroke = 'color';\n serie.columns.template.strokeOpacity = 1;\n // column on click\n serie.columns.template.events.on(\n 'hit',\n function(ev) {\n const timelineData: any = ev.target.dataItem.dataContext;\n this.timelineColumnCallback(timelineData);\n },\n this\n );\n\n serie.columns.template.adapter.add('tooltipHTML', (text: string, target: am4charts.Column) => {\n return this.setTooltipTemplate(target);\n });\n\n serie.tooltip.pointerOrientation = 'up';\n serie.tooltip.label.interactionsEnabled = true;\n serie.tooltip.keepTargetHover = true;\n serie.tooltip.tooltipPosition = 'pointer';\n serie.tooltip.fitPointerToBounds = true;\n serie.tooltip.dy = 10;\n serie.tooltip.fontSize = FONT_SIZE;\n serie.tooltip.fontFamily = FONT_FAMILY;\n\n // tooltip on click\n serie.tooltip.events.on('hit', ev => {\n this.timelineTooltipCallback(ev.target.dataItem.dataContext as TimelineData);\n });\n\n serie.dataFields.openDateX = 'startDate';\n serie.dataFields.dateX = 'endDate';\n serie.dataFields.categoryY = 'category';\n\n this.timeline = timeline;\n this.xAxis = xAxis;\n\n this.setTimelineData(this.timelineDatas);\n this.setTimelinePeriod(this.filters.period);\n }\n\n /**\n * set the tooltip template by timeline data type\n *\n * @param {am4charts.Column} target\n * @return {string}\n */\n private setTooltipTemplate(target: am4charts.Column): string {\n let text = '';\n const timelineDataType = _.get(target.dataItem.dataContext, 'type');\n switch (timelineDataType) {\n case 'routing_reference_deactived':\n text = `{startDate}`;\n text += `
${this.translateService._(timelineDataType)}
`;\n break;\n case 'end_of_contract':\n text = `{startDate}
`;\n text += `
${this.translateService._(timelineDataType)} ${_.get(\n target.dataItem.dataContext,\n 'provider'\n )}`;\n break;\n case 'today':\n text = `
${this.translateService._(timelineDataType)}
`;\n break;\n default:\n case 'complete_period':\n text = `{startDate} - {endDate}
`;\n\n // bill numbers\n const billNumber = _.get(target.dataItem.dataContext, 'bills.0.billNumber', 'NC');\n text += `
${this.translateService._('bill')} ${billNumber}
`;\n break;\n case 'period_with_multiple_bills':\n text = `{startDate} - {endDate}`;\n\n // contract provider and ref\n const provider = _.get(target.dataItem.dataContext, 'provider');\n const contractRef = _.get(target.dataItem.dataContext, 'contractRef');\n if (provider && contractRef) {\n text += `
${this.translateService._(\n 'contract_number'\n )} : ${provider} ${contractRef}
`;\n } else if (provider && !contractRef) {\n text += `
${this.translateService._('provider')} : ${provider}
`;\n } else if (!provider && contractRef) {\n text += `
${this.translateService._('contract_number')} : ${contractRef}
`;\n }\n\n // bill numbers\n text += _.get(target.dataItem.dataContext, 'bills', []).reduce((memo, bill) => {\n return `${memo}
- ${bill.billNumber}
`;\n }, `
${this.translateService._('bill_number')}:
`);\n break;\n case 'incomplete_period':\n text = `{startDate} - {endDate}`;\n text += `
${this.translateService._(timelineDataType)}`;\n break;\n }\n return text;\n }\n\n /**\n * callback when a timeline tooltip is clicked\n *\n * @param {TimelineData} timelineData\n */\n private timelineTooltipCallback(timelineData: TimelineData) {\n if (timelineData.type === 'end_of_contract' && timelineData.contractRef) {\n this.router.navigateByUrl(`/contrats?q=${timelineData.contractRef}`);\n }\n }\n\n /**\n * callback when a timeline column is clicked:\n * - set the period with the min startDate and the max endDate of bills in the given timelineData\n *\n * @param {TimelineData} timeline\n */\n private timelineColumnCallback(timelineData: TimelineData) {\n // Click enabled if match period with data\n const match =\n timelineData.type && timelineData.type.match(/complete_(?:\\w+_)?period|period_with_multiple_bills/);\n // Perform action only if period is from one of previous types\n if (match && match.length && timelineData.bills) {\n const { startDate, endDate } = this.findStartAndEndDates(timelineData);\n if (startDate.isValid() && endDate.isValid()) {\n const newPeriod: PeriodFilter = {\n beginDate: {\n year: startDate.year(),\n month: startDate.month() + 1,\n day: startDate.date(),\n },\n endDate: {\n year: endDate.year(),\n month: endDate.month() + 1,\n day: endDate.date(),\n },\n };\n\n this.setFiltersPeriod(newPeriod);\n this.setTimelinePeriod(this.filters.period);\n this.periodOnChange.emit(this.filters.period);\n }\n }\n }\n\n /**\n * find start and end dates of bills in the graph.\n */\n private findStartAndEndDates(timelineData: TimelineData): { startDate: moment.Moment; endDate: moment.Moment } {\n let matchingTimelineDatas: TimelineData[] = [];\n // find timelineDatas with same bills as timelineData\n timelineData.bills.forEach(bill => {\n matchingTimelineDatas = matchingTimelineDatas.concat(\n this.timelineDatas.filter(tlData => tlData.bills && tlData.bills.some(b => b.billId === bill.billId))\n );\n });\n // Get matchingTimelineDatas min dateStart\n const startDate = moment.min(matchingTimelineDatas.map(x => moment(x.startDate, 'DD/MM/YYYY')));\n // Get matchingTimelineDatas max dateEnd\n const endDate = moment.max(matchingTimelineDatas.map(x => moment(x.endDate, 'DD/MM/YYYY')));\n\n return { startDate, endDate };\n }\n\n /**\n * update minDate and maxDate of the timeline\n *\n * @param {periodFilter} period\n */\n private setTimelinePeriod(period: PeriodFilter) {\n if (this.xAxis && _.get(period, 'beginDate') && _.get(period, 'endDate')) {\n const minDate: DateFilter = period.beginDate;\n const maxDate: DateFilter = period.endDate;\n this.xAxis.min = new Date(minDate.year, minDate.month - 1, minDate.day).getTime();\n this.xAxis.max = new Date(maxDate.year, maxDate.month - 1, maxDate.day).getTime();\n }\n }\n\n /**\n * set filters.period\n * @param {PeriodFilter} period\n */\n private setFiltersPeriod(period: PeriodFilter) {\n this.filters.period = {\n beginDate: period.beginDate,\n endDate: period.endDate,\n };\n }\n\n /**\n * timeline data setter\n * @param {TimelineData[]} timelineDatas\n */\n private setTimelineData(timelineDatas: TimelineData[]) {\n if (this.timeline) {\n this.timelineDatas = this.setTimelineDataColor(timelineDatas);\n // Slow assignation\n this.timeline.data = this.timelineDatas;\n }\n }\n\n /**\n * Destroy current timeline\n */\n private disposeTimeline() {\n if (this.timeline) {\n this.timeline.dispose();\n }\n }\n\n /**\n * set all timeline data colors by the type\n *\n * @param {TimelinaData[]} timelineDatas\n * @returns {TimelineData[]}\n */\n private setTimelineDataColor(timelineDatas: TimelineData[]): TimelineData[] {\n if (!Array.isArray(timelineDatas)) {\n return [];\n }\n return timelineDatas.map((timelineData: TimelineData) => {\n timelineData.color = timelineData.color || this.legends.find(x => x.type === timelineData.type).color;\n return timelineData;\n });\n }\n\n /**\n * Compute height: around 40px height for each category's timeline\n */\n get timelineHeight(): string {\n if (this.timeline) {\n const axisXHeight = 80;\n const categoryTimelineHeight = 45;\n const nbCategories = _.uniqBy(this.timeline.data, 'category').length;\n const containerHeight = axisXHeight + categoryTimelineHeight * nbCategories;\n return `${containerHeight}px`;\n }\n return 'Opx';\n }\n\n /**\n * Get default legend\n */\n private get defaultLegends(): Legend[] {\n return [\n {\n type: 'complete_period',\n name: this.translateService._('complete_period'),\n color: '#02731E',\n },\n {\n type: 'complete_metered_period',\n name: this.translateService._('complete_metered_period'),\n color: '#43A047',\n },\n {\n type: 'complete_estimated_period',\n name: this.translateService._('complete_estimated_period'),\n color: '#C5E1A5',\n },\n {\n type: 'complete_cancelled_period',\n name: this.translateService._('complete_cancelled_period'),\n color: '#D96920',\n },\n {\n type: 'complete_adjusted_period',\n name: this.translateService._('complete_adjusted_period'),\n color: '#ECB490',\n },\n {\n type: 'period_with_multiple_bills',\n name: this.translateService._('period_with_multiple_bills'),\n color: '#7461c2',\n },\n {\n type: 'incomplete_period',\n name: this.translateService._('incomplete_period'),\n color: '#fca828',\n },\n {\n type: 'end_of_contract',\n name: this.translateService._('end_of_contract'),\n color: '#ff0000',\n },\n {\n type: 'routing_reference_deactived',\n name: this.translateService._('routing_reference_deactived'),\n color: '#d3bf96',\n },\n {\n type: 'today',\n name: this.translateService._('today'),\n color: '#4281b8',\n },\n ];\n }\n}\n","export default \".chart-container {\\n background-color: white;\\n}\\n\\n.chart-container,\\n.table-container {\\n margin-bottom: 25px;\\n}\\n\\n.chart-container__key-selection {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 25px 25px 25px 75px;\\n display: -webkit-box;\\n display: flex;\\n font-size: 0.875rem;\\n}\\n\\n.chart-container__key-selection .key-selection {\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.chart-container__key-selection .key-selection select {\\n color: #607188;\\n margin: 0rem 0.5rem;\\n font-size: 0.875rem;\\n}\\n\\n.chart-container__key-selection__average-value {\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.chart-container__key-selection__average-value span {\\n font-weight: bold;\\n}\\n\\n.chart-container__chart {\\n padding: 1.5rem;\\n}\\n\\n.excel-icon {\\n cursor: pointer;\\n height: 40px;\\n width: 32px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n}\\n\\n.citron-icon {\\n height: 40px;\\n width: 32px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-position-y: 4px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2NvbXBsZXRlbmVzcy1kYXRhLXRhYi9jb21wbGV0ZW5lc3MtZGF0YS10YWIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2NvbXBsZXRlbmVzcy1kYXRhLXRhYi9jb21wbGV0ZW5lc3MtZGF0YS10YWIuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBO0VBQ0ksdUJBQUE7QUNISjs7QURNQTs7RUFFSSxtQkFBQTtBQ0hKOztBRE1BO0VBQ0kseUJBQUE7VUFBQSw4QkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSw0QkFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLG1CQWhCcUI7QUNhekI7O0FES0k7RUFDSSx5QkFBQTtVQUFBLG1CQUFBO0FDSFI7O0FESVE7RUFDSSxjRUdDO0VGRkQsbUJBQUE7RUFDQSxtQkF2QmE7QUNxQnpCOztBRE9BO0VBQ0kseUJBQUE7VUFBQSxtQkFBQTtBQ0pKOztBRE1JO0VBQ0ksaUJBQUE7QUNKUjs7QURRQTtFQUNJLGVBQUE7QUNMSjs7QURRQTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGlFQUFBO1VBQUEseURBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0FDTEo7O0FEUUE7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtFQUFBO1VBQUEsMERBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBQ0EsNEJBQUE7QUNMSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29tcGxldGVuZXNzL2NvbXBsZXRlbmVzcy1kYXRhLXRhYi9jb21wbGV0ZW5lc3MtZGF0YS10YWIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLy4uLy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbiRjaGFydENvbnRhaW5lckZvbnRTaXplOiAwLjg3NXJlbTtcblxuLmNoYXJ0LWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbi5jaGFydC1jb250YWluZXIsXG4udGFibGUtY29udGFpbmVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY2hhcnQtY29udGFpbmVyX19rZXktc2VsZWN0aW9uIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAyNXB4IDI1cHggMjVweCA3NXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZm9udC1zaXplOiAkY2hhcnRDb250YWluZXJGb250U2l6ZTtcblxuICAgIC5rZXktc2VsZWN0aW9uIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgICAgIG1hcmdpbjogMHJlbSAwLjVyZW07XG4gICAgICAgICAgICBmb250LXNpemU6ICRjaGFydENvbnRhaW5lckZvbnRTaXplO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2hhcnQtY29udGFpbmVyX19rZXktc2VsZWN0aW9uX19hdmVyYWdlLXZhbHVlIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cblxuLmNoYXJ0LWNvbnRhaW5lcl9fY2hhcnQge1xuICAgIHBhZGRpbmc6IDEuNXJlbTtcbn1cblxuLmV4Y2VsLWljb24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2V4Y2VsLnN2ZycpO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5jaXRyb24taWNvbiB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19jaXRyb24uc3ZnJyk7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAtd2Via2l0LW1hc2stcG9zaXRpb24teTogNHB4O1xufVxuIiwiLmNoYXJ0LWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uY2hhcnQtY29udGFpbmVyLFxuLnRhYmxlLWNvbnRhaW5lciB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jaGFydC1jb250YWluZXJfX2tleS1zZWxlY3Rpb24ge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDI1cHggMjVweCAyNXB4IDc1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG4uY2hhcnQtY29udGFpbmVyX19rZXktc2VsZWN0aW9uIC5rZXktc2VsZWN0aW9uIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5jaGFydC1jb250YWluZXJfX2tleS1zZWxlY3Rpb24gLmtleS1zZWxlY3Rpb24gc2VsZWN0IHtcbiAgY29sb3I6ICM2MDcxODg7XG4gIG1hcmdpbjogMHJlbSAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5jaGFydC1jb250YWluZXJfX2tleS1zZWxlY3Rpb25fX2F2ZXJhZ2UtdmFsdWUge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmNoYXJ0LWNvbnRhaW5lcl9fa2V5LXNlbGVjdGlvbl9fYXZlcmFnZS12YWx1ZSBzcGFuIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5jaGFydC1jb250YWluZXJfX2NoYXJ0IHtcbiAgcGFkZGluZzogMS41cmVtO1xufVxuXG4uZXhjZWwtaWNvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogMzJweDtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19leGNlbC5zdmdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5jaXRyb24taWNvbiB7XG4gIGhlaWdodDogNDBweDtcbiAgd2lkdGg6IDMycHg7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2l0cm9uLnN2Z1wiKTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXk6IDRweDtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ModalComponent } from 'app/shared/components/common/modal/modal.component';\nimport { PeriodFilter } from 'app/shared/models/bills-timeline.interface';\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { saveAs } from 'file-saver';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// Interfaces\nimport {\n CompletenessRange,\n CompletenessTableProperties,\n DateLabel,\n RoutingRefDateCompleteness,\n RRefClicked,\n} from 'app/shared/components/bills/bills-control/completeness/completeness-data-tab/completeness-data-tab.interface';\nimport {\n QueryFilterRoutingRef,\n ScopeFilterConfig,\n} from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport { RoutingRefGlobalCompleteness } from 'app/shared/models/bills.interface';\nimport { HeatmapProperties } from 'app/shared/models/charts/chart-properties.interface';\nimport { HeatmapPoint } from 'app/shared/models/charts/chart-serie.interface';\n\n// Services\nimport { RoutingReferenceLight } from 'app/shared/models/routing-reference.interface';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { CompletenessService, propertiesOrder } from 'app/shared/services/completeness/completeness.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { BillsTableCompletenessComponent } from '../bills-table-completeness/bills-table-completeness.component';\n\nimport { CompletenessRangesService } from './completeness-ranges.service';\n\n@Component({\n selector: 'ga-completeness-data-tab',\n templateUrl: './completeness-data-tab.component.html',\n styleUrls: ['./completeness-data-tab.component.scss'],\n providers: [CompletenessRangesService],\n})\nexport class CompletenessDataTabComponent implements OnInit {\n @ViewChild(BillsTableCompletenessComponent, { static: true })\n comptenessTableComponent: BillsTableCompletenessComponent;\n @ViewChild(ModalComponent, { static: true }) public completenessModal: ModalComponent;\n\n constructor(\n private chartService: ChartService,\n private completenessService: CompletenessService,\n private completenessRangesService: CompletenessRangesService,\n private utilService: UtilsService,\n private colorService: ColorService,\n private exportService: ExportService\n ) {}\n\n /**\n * Set configuration for the filters\n */\n public filtersConfig: ScopeFilterConfig = {\n toggleButtonSelection: {\n enabled: true,\n selectionType: 'single',\n },\n };\n\n /**\n * Properties used by the heatmap component\n */\n public heatmapProperties: HeatmapProperties = {\n options: null,\n data: null,\n labelsX: [],\n labelsY: [],\n isLoading: true,\n };\n\n /**\n * Dates labels description. Contains each date from date start to date end of the filter.\n * Used to easily determine the x axis value corresponding to a percentage date (month / year).\n */\n private datesLabels: DateLabel[] = [];\n\n /**\n * Completeness per date per routing reference.\n * Data received by the Api.\n */\n private routingRefsCompletenessData: RoutingRefGlobalCompleteness = {\n data: [],\n average: {},\n };\n\n /**\n * Key of the selected completeness composant\n */\n public completenessKey: string = null;\n\n /**\n * Default key used when filters are initialized\n */\n private defaultCompletenessKey = 'furniture';\n\n /**\n * Filters selection\n */\n private filters: QueryFilterRoutingRef;\n\n /** Data for the rouging references table */\n public tableProperties: CompletenessTableProperties = {\n isLoading: false,\n data: [],\n completenessComponents: [],\n dateSelected: null,\n };\n\n /** The keys order for the completeness properties */\n private readonly order: string[] = propertiesOrder;\n\n /** Is currently exporting */\n public isExporting = false;\n\n /** Data for the completeness modal of a routing reference */\n public modalProperties: { routingReference: RoutingReferenceLight; periodFilter: PeriodFilter } = {\n /** Is used for detailed completeness modal */\n routingReference: null,\n /** Used to filter on completeness period of a routing reference */\n periodFilter: {\n beginDate: null,\n endDate: null,\n },\n };\n\n ngOnInit() {}\n\n /**\n * Start the research with new filters selection.\n * Compute new data, format values and set the chart options accordingly.\n * @param {QueryFilter} filters selected filters\n */\n public async search(filters: QueryFilterRoutingRef) {\n this.heatmapProperties.isLoading = true;\n\n this.filters = filters;\n\n /**\n * Collect data for selected filters and format it\n */\n await this.computeHeatmapData();\n\n /**\n * Set heatmap options with new data & associated configuration\n */\n this.setHeatmapOptions();\n\n this.heatmapProperties.isLoading = false;\n\n /**\n * Empty table and updated components keys in header\n */\n this.resetTable();\n }\n\n /**\n * Get data for heatmap from current filters selection and set heatmap series points well formated\n */\n private async computeHeatmapData(): Promise {\n try {\n // get data for heatmap matching the filters selection\n this.routingRefsCompletenessData = await this.completenessService.getRoutingReferencesCompleteness(\n this.filters\n );\n\n // set selected key: use default completeness key or first key found\n this.completenessKey = this.routingRefsCompletenessData.average.hasOwnProperty(this.defaultCompletenessKey)\n ? this.defaultCompletenessKey\n : Object.keys(this.routingRefsCompletenessData.average)[0];\n\n // compute labels matching new data\n this.setHeatmapLabels();\n\n // format data for chart\n this.setHeatmapData();\n } catch (e) {\n this.heatmapProperties.data = [];\n }\n }\n\n /**\n * Group routing references per completeness range and date to create the cells (x:y) values.\n * @returns {HeatmapPoint[]}\n */\n private setHeatmapData(): void {\n const rangeValues: HeatmapPoint[] = [];\n\n /**\n * Each routing reference data has percentages associated to dates (month year)\n * For each (routing ref ; date ; percentage) find or create its cell (date; range)\n * Store in the cell the routing references matching its axes values.\n */\n this.routingRefsCompletenessData.data.forEach(routingRefData => {\n // for each date's percentages\n routingRefData.dates.forEach(dateCompleteness => {\n const currentValue = dateCompleteness.percentages[this.completenessKey];\n if (currentValue === null) {\n return;\n }\n\n // get the percentage range of the current date's value (index on the y axis)\n const rangeIndex = this.completenessRangesService.getCompletenessRangeIndex(currentValue);\n\n // get the month of the current date (index on the x axis)\n const dateIndex: number = this.getDateIndex(dateCompleteness.year, dateCompleteness.month);\n\n // get the cell (date; range) if it already exists\n let rangeValue: HeatmapPoint = rangeValues.find(r => r.x === dateIndex && r.y === rangeIndex);\n if (!rangeValue) {\n // create the cell's value if not existing yet\n rangeValue = {\n x: dateIndex,\n y: rangeIndex,\n value: 0,\n data: [],\n };\n rangeValues.push(rangeValue);\n }\n // increment the number of routing references found for this cell (date; range)\n rangeValue.value++;\n\n // store the id of the current routing reference inside the cell's data\n rangeValue.data.push(routingRefData.routingReferenceId);\n });\n });\n\n this.heatmapProperties.data = _.sortBy(rangeValues, ['year', 'month']);\n }\n\n /**\n * Set heatmap labels (x: dates labels; y: completeness ticks)\n */\n private setHeatmapLabels(): void {\n /**\n * Init axis values : completeness ranges and dates labels\n */\n this.datesLabels = this.getDatesLabels();\n\n /**\n * Init heatmap axis labels\n */\n this.heatmapProperties.labelsX = this.getHeatmapDatesLabels();\n this.heatmapProperties.labelsY = this.getHeatmapPercentLabels();\n }\n\n /**\n * Set heatmap options used by the chart component. Contains tooltips, axes labels, series data.\n */\n private setHeatmapOptions(): void {\n // global options\n this.heatmapProperties.options = this.chartService.getConfig('heatmap');\n\n // size options\n this.setHeatmapSizeOptions();\n\n // color options\n this.setHeatmapColorOptions();\n\n // tooltips options\n this.setHeatmapTooltipsOptions();\n\n // axis labels options\n this.setHeatmapLabelsOptions();\n\n // fill data\n this.heatmapProperties.options.series = [{ type: 'heatmap', data: this.heatmapProperties.data }];\n }\n\n /**\n * Compute the cells size by computing the chart's overall size\n */\n private setHeatmapSizeOptions(): void {\n // Space taken under the x axis and on the left size of the y axis\n const offset = {\n x: 116.5, // axis title with padding (40 + 13.5) + largest y label (53px) + chart padding (10px)\n y: 130, // legend with margin (67px + 30px) + x labels (33px)\n };\n\n // Number of columns and rows\n const sortedDataY: HeatmapPoint[] = _.sortBy(this.heatmapProperties.data, 'y'); // sort percentage ranges to get the lowest and higest\n const highestRange = this.hasDataForHeatmap() ? _.last(sortedDataY).y : 0;\n const lowestRange = this.hasDataForHeatmap() ? sortedDataY[0].y : 0;\n const axesTicksCounts = {\n x: _.uniqBy(this.heatmapProperties.data, 'x').length, // number of dates displayed\n y: highestRange - lowestRange + 1, // number of y indexes displayed: difference between highest and lowest y label index\n };\n\n // Over twelve months, display labels vertically and by semester. Adjust the offset to keep the cell ratio.\n if (axesTicksCounts.x > 12) {\n this.heatmapProperties.options.xAxis = {\n labels: { rotation: -45 },\n tickInterval: 4, // display trimestrial dates\n };\n offset.y = 185; // labels are displayed vertically and take more space (increase offset so that cells keep their size)\n }\n\n /**\n * Height\n * Setting the chart's heigth enable to compute the heigth of cells\n */\n this.heatmapProperties.options.chart.height = offset.y + axesTicksCounts.y * 50; // height is around 50px\n\n /**\n * Width\n * Set the chart's min width from which the chart becomes scrollable\n */\n this.heatmapProperties.options.chart.scrollablePlotArea.minWidth =\n axesTicksCounts.x <= 12 ? offset.x + axesTicksCounts.x * 90 : 1000; // min cell width is minimum 90px under 12 months, under 90px it starts scrolling\n }\n\n /**\n * Set color axis and handle hover behaviour on a cell (brightness).\n */\n private setHeatmapColorOptions(): void {\n /**\n * From 0 to n/2 (n = the maximum number of routing references on a cell), set light grey to grey\n * From n/2 to the n, set from light green to dark green\n */\n this.heatmapProperties.options.colorAxis = {\n stops: [[0, '#F0F0F0'], [0.49, '#BFBFBF'], [0.5, '#C2DAF0'], [1, '#4281b8']],\n };\n\n /**\n * Reduce the brightness intensity on hover\n */\n this.heatmapProperties.options.plotOptions = {\n heatmap: {\n states: {\n hover: {\n brightness: 0.05, // default was 0.25 and made grey going white\n },\n },\n },\n };\n }\n\n /**\n * Set custom tooltips to display: the number of routing references, the period and completeness range\n */\n private setHeatmapTooltipsOptions(): void {\n const defaultTooltips = this.chartService.getTooltipHTMLConfig('heatmap');\n\n const labelsDates = this.heatmapProperties.labelsX;\n const labelsPercentages = this.heatmapProperties.labelsY;\n\n const colorService = this.colorService;\n\n const that = this;\n\n this.heatmapProperties.options.tooltip = Object.assign(defaultTooltips, {\n pointFormatter() {\n // date & completeness range label\n const date = labelsDates[this.x];\n const range = labelsPercentages[this.y];\n\n const borderColor = colorService.getHexPageColor('BORDER_GREY');\n\n const valueStyle = `style=\"\n font-weight: bold;\n text-align: center;\n padding-bottom: 0.25rem;\n border-bottom:1px solid ${borderColor};\"`;\n\n const valueLabel = this.value > 1 ? 'PDLs' : 'PDL';\n const dateValuesCount = that.countRoutingRefsOnMonth(this.x);\n\n const body = `\n
${this.value}/${dateValuesCount} ${valueLabel}
\n \n \n \n \n \n \n \n \n \n
Période : ${date}
Complétude : ${range}
`;\n return body;\n },\n });\n }\n\n /**\n * Set axis labels.\n * Specific for axis X: the number of routing references under each month.\n */\n private setHeatmapLabelsOptions(): void {\n this.heatmapProperties.options.yAxis['categories'] = this.heatmapProperties.labelsY;\n\n const that = this;\n\n this.heatmapProperties.options.xAxis = Object.assign(this.heatmapProperties.options.xAxis, {\n categories: this.heatmapProperties.labelsX,\n labels: {\n useHTML: true,\n formatter() {\n const count = that.countRoutingRefsOnMonth(this.pos);\n return `
\n
${this.value}
\n
${count} PDLs
\n
`;\n },\n },\n });\n }\n\n /**\n * @returns {boolean} returns true if heatmap has data to display\n */\n public hasDataForHeatmap(): boolean {\n return Boolean(this.heatmapProperties.data && this.heatmapProperties.data.length);\n }\n\n /**\n * @returns {boolean} returns true if table has data to display\n */\n public hasDataForTable(): boolean {\n return Boolean(this.tableProperties.data && this.tableProperties.data.length);\n }\n\n /**\n * Return the index of the given date\n * @returns {number} index of the given date\n */\n private getDateIndex(year: number, month: number): number {\n return this.datesLabels.findIndex(x => x.month === month && x.year === year);\n }\n\n /**\n * Compute and return dates labels from the filtered period : each month in between the beginning and the end of the selected period.\n * @returns {DateLabel[]} date labels for each month between start and end\n */\n private getDatesLabels(): DateLabel[] {\n const dateStart = moment.utc(this.filters.dateStart, 'YYYY-MM', true).startOf('day');\n const dateEnd = moment.utc(this.filters.dateEnd, 'YYYY-MM', true).endOf('day');\n\n const nbMonths = dateEnd.diff(dateStart, 'months') + 1;\n\n const datesLabels = [];\n for (let i = 0; i < nbMonths; i++) {\n const dateLabel: DateLabel = {\n month: dateStart.month(),\n year: dateStart.year(),\n label: dateStart.format('MMMM YYYY'),\n };\n datesLabels.push(dateLabel);\n dateStart.add(1, 'M');\n }\n return datesLabels;\n }\n\n /**\n * Return the labels for the months axis (x).\n */\n private getHeatmapDatesLabels(): string[] {\n return this.datesLabels.map(d => d.label);\n }\n\n /**\n * Return the labels for the percentages ranges axis (y);\n */\n private getHeatmapPercentLabels(): string[] {\n return this.completenessRangesService.completenessRanges.map(c => c.label);\n }\n\n /**\n * Handle heatmap cell selection. Update the table data with selected data and sort.\n * @param {HeatmapPoint} heatmapCell selection\n */\n public onSelectedCell(heatmapCell: HeatmapPoint): void {\n const cellDateLabel: DateLabel = this.datesLabels[heatmapCell.x];\n this.computeTableData(heatmapCell.data, cellDateLabel);\n this.comptenessTableComponent.reinitTable();\n }\n\n /**\n * Count the number of routing references present on the given month\n * @param {number} monthIndex\n * @returns {number} routing references count\n */\n private countRoutingRefsOnMonth(monthIndex: number): number {\n return _.sumBy(this.heatmapProperties.data.filter(data => data.x === monthIndex), 'value');\n }\n\n /**\n * --------------------------------\n * --- ROUTING REFERENCES TABLE ---\n * --------------------------------\n */\n\n /**\n * Compute and set data for the routing references table.\n * For each given routing reference, get their percentage values at the given date.\n * @param {string[]} routingReferencesIds\n * @param {DateLabel} dateSelected\n */\n private computeTableData(routingReferencesIds: string[], dateSelected: DateLabel): void {\n this.tableProperties.isLoading = true;\n\n /** Find the routing references in the selected ids and keep only the percentage values for the selected date */\n this.tableProperties.data = this.routingRefsCompletenessData.data.reduce((tmpTableData, routingRefData) => {\n // find the selected routing references\n if (routingReferencesIds.includes(routingRefData.routingReferenceId)) {\n // find the percentage values for the selected date\n const datePercentages = routingRefData.dates.find(\n d => d.month === dateSelected.month && d.year === dateSelected.year\n );\n // add the routing reference's values to table\n const row: RoutingRefDateCompleteness = Object.assign(\n {\n routingReferenceId: routingRefData.routingReferenceId,\n routingReference: routingRefData.routingReference,\n companyId: routingRefData.companyId,\n fluid: routingRefData.fluid,\n },\n datePercentages\n );\n tmpTableData.push(row);\n }\n return tmpTableData;\n }, []);\n\n this.tableProperties.dateSelected = dateSelected.label;\n this.tableProperties.isLoading = false;\n }\n\n /**\n * Initialise routing references table\n */\n resetTable() {\n this.tableProperties.isLoading = true;\n this.tableProperties.data = [];\n this.tableProperties.completenessComponents = this.completenessKeys;\n this.tableProperties.isLoading = false;\n\n /** Change the order of the properties keys */\n this.tableProperties.completenessComponents.sort((a, b) => {\n return this.order.indexOf(a) - this.order.indexOf(b);\n });\n }\n\n /**\n * --------------------------\n * Completeness key selection\n * --------------------------\n */\n\n /**\n * Returns the available completeness keys (will depend on the selected fluid)\n * @returns {string[]} keys\n */\n public get completenessKeys(): string[] {\n return Object.keys(this.routingRefsCompletenessData.average);\n }\n\n /**\n * Returns the average completeness value to display for the selected key\n * @returns {string} average value\n */\n public get averageValueDisplayed(): string {\n return this.utilService.getNumberAndUnitToDisplay(\n this.routingRefsCompletenessData.average[this.completenessKey],\n '%'\n );\n }\n\n /**\n * Handle the selection of a new completeness key. Update the heatmap data & reset the table.\n * @param {string} key\n */\n public onSelectedCompletenessKey(): void {\n this.heatmapProperties.isLoading = true;\n\n /**\n * Update data for the new key selected and update heatmap\n */\n this.setHeatmapData();\n this.setHeatmapOptions();\n\n /**\n * Reset table\n */\n this.tableProperties.data = [];\n\n this.heatmapProperties.isLoading = false;\n }\n\n /**\n * handle click on download heatmap\n * @param {string} excelName - excel filename\n */\n public onDownloadHeatmap(excelName: string): void {\n this.isExporting = true;\n excelName = excelName || 'completude des donnees';\n const route = '/api/completeness/billsCompleteness/export';\n const params = { ...this.filters };\n this.exportService.getFile(route, params).subscribe(\n file => {\n saveAs(file, excelName + '.xlsx');\n this.isExporting = false;\n },\n err => {\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite lors de l'export de données. Merci de réessayer.\",\n 'error'\n );\n this.isExporting = false;\n }\n );\n }\n\n /**\n * used to display the right icon when exporting excel file or not\n * @returns {string} - classname\n */\n get exportClass(): string {\n return this.isExporting ? 'citron-icon rotating' : 'excel-icon';\n }\n\n /**********************\n * completeness modal\n **********************/\n\n /**\n * open the bill completeness modal for the given routing reference\n * @param {RRefClicked} routingReference\n * @returns {void}\n */\n public openCompletenessModal(routingReference: RRefClicked): void {\n this.modalProperties.routingReference = {\n ...routingReference,\n energyType: routingReference.energyType,\n };\n\n this.setPeriodFilterModal();\n this.completenessModal.show();\n }\n\n /**\n * @returns {boolean} true is the completeness modal shown, false otherwise\n */\n get isModalShown(): boolean {\n return this.completenessModal.isShown;\n }\n\n /**\n * set the dates filter for the billing completeness modal\n * @returns {void}\n */\n private setPeriodFilterModal(): void {\n if (this.filters.dateStart && this.filters.dateEnd) {\n const dateStart: moment.Moment = moment.utc(`${this.filters.dateStart}`, 'YYYY-MM').startOf('month');\n const dateEnd: moment.Moment = moment.utc(`${this.filters.dateEnd}`, 'YYYY-MM').endOf('month');\n this.modalProperties.periodFilter = {\n beginDate: {\n year: dateStart.year(),\n month: dateStart.month() + 1,\n day: dateStart.date(),\n },\n endDate: {\n year: dateEnd.year(),\n month: dateEnd.month() + 1,\n day: dateEnd.date(),\n },\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport _ = require('lodash');\n\nimport { CompletenessRange } from './completeness-data-tab.interface';\n\n@Injectable()\nexport class CompletenessRangesService {\n /** Returns the completeness ranges used to group routing references in completeness heatmap. */\n public get completenessRanges() {\n return [\n {\n min: Number.NEGATIVE_INFINITY,\n max: 0,\n label: '< 0%',\n },\n {\n min: 0,\n max: 0,\n label: '0%',\n },\n {\n min: 0,\n max: 25,\n label: '0 - 25%',\n },\n {\n min: 25,\n max: 50,\n label: '25 - 50%',\n },\n {\n min: 50,\n max: 75,\n label: '50 - 75%',\n },\n {\n min: 75,\n max: 100,\n label: '75 - 100%',\n },\n {\n min: 100,\n max: 100,\n label: '100%',\n },\n {\n min: 100,\n max: Number.POSITIVE_INFINITY,\n label: '> 100%',\n },\n ];\n }\n\n /** Returns the index of the completeness range containing given value. */\n public getCompletenessRangeIndex(value: number): number {\n return this.completenessRanges.findIndex(\n range => (range.min <= value && value < range.max) || (value === range.min && value === range.max)\n );\n }\n}\n","export default \".context {\\n margin-bottom: 30px;\\n}\\n.context .icon {\\n width: 20px;\\n height: 20px;\\n}\\n.context p {\\n margin: 0 10px 0 0;\\n font-size: 18px;\\n line-height: 1;\\n}\\n.context .map-marker {\\n text-align: center;\\n font-size: 20px;\\n color: #607188;\\n margin-top: -1px;\\n}\\n.section {\\n padding-top: 30px !important;\\n}\\n.section:first-child {\\n margin: 0;\\n}\\n.section h3 {\\n font-size: 16px;\\n text-transform: uppercase;\\n font-weight: bold;\\n color: #607188;\\n}\\n.section h3 hr {\\n border-top: 1px solid rgba(0, 0, 0, 0.17);\\n width: 100%;\\n}\\n.section .table thead th {\\n text-align: center;\\n font-size: 14px;\\n border-top: none;\\n border-bottom: none;\\n}\\n.section .table tbody .control-status.is-valid {\\n color: green;\\n}\\n.section .table tbody .control-status.is-not-valid {\\n color: red;\\n}\\n.section .table tbody td,\\n.section .table tfoot td {\\n font-size: 15px;\\n text-align: center;\\n vertical-align: middle;\\n color: #516073;\\n}\\n::ng-deep .modal-body {\\n margin-top: 20px;\\n padding: 30px;\\n}\\n::ng-deep .modal-dialog {\\n width: 800px;\\n}\\n@media (min-width: 576px) {\\n ::ng-deep .modal-dialog {\\n max-width: 800px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29udHJvbC9iaWxsLXZlcmlmaWNhdGlvbnMvYmlsbC12ZXJpZmljYXRpb25zLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1jb250cm9sL2NvbnRyb2wvYmlsbC12ZXJpZmljYXRpb25zL2JpbGwtdmVyaWZpY2F0aW9ucy5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxtQkFBQTtBQ0ZKO0FESUk7RUFDSSxXQUFBO0VBQ0EsWUFBQTtBQ0ZSO0FES0k7RUFDSSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FDSFI7QURNSTtFQUNJLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLGNFTUs7RUZMTCxnQkFBQTtBQ0pSO0FEUUE7RUFDSSw0QkFBQTtBQ0xKO0FET0k7RUFDSSxTQUFBO0FDTFI7QURRSTtFQUNJLGVBQUE7RUFDQSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0VWSztBREliO0FEUVE7RUFDSSx5Q0FBQTtFQUNBLFdBQUE7QUNOWjtBRFlZO0VBQ0ksa0JBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtBQ1ZoQjtBRGNZO0VBQ0ksWUFBQTtBQ1poQjtBRGNZO0VBQ0ksVUFBQTtBQ1poQjtBRGlCWTs7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtFQUNBLGNFM0JMO0FEYVg7QURvQkE7RUFDSSxnQkFBQTtFQUNBLGFBQUE7QUNqQko7QURvQkE7RUFDSSxZQUFBO0FDakJKO0FEb0JBO0VBQ0k7SUFDSSxnQkFBQTtFQ2pCTjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtY29udHJvbC9jb250cm9sL2JpbGwtdmVyaWZpY2F0aW9ucy9iaWxsLXZlcmlmaWNhdGlvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL2NvbG9ycyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbi5jb250ZXh0IHtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuXG4gICAgLmljb24ge1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBtYXJnaW46IDAgMTBweCAwIDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgLm1hcC1tYXJrZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICAgIH1cbn1cblxuLnNlY3Rpb24ge1xuICAgIHBhZGRpbmctdG9wOiAzMHB4ICFpbXBvcnRhbnQ7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuXG4gICAgICAgIGhyIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTcpO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFibGUge1xuICAgICAgICB0aGVhZCB7XG4gICAgICAgICAgICB0aCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGJvZHkge1xuICAgICAgICAgICAgLmNvbnRyb2wtc3RhdHVzLmlzLXZhbGlkIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogZ3JlZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY29udHJvbC1zdGF0dXMuaXMtbm90LXZhbGlkIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogcmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRib2R5LFxuICAgICAgICB0Zm9vdCB7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZGFya2dyZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjo6bmctZGVlcCAubW9kYWwtYm9keSB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICBwYWRkaW5nOiAzMHB4O1xufVxuXG46Om5nLWRlZXAgLm1vZGFsLWRpYWxvZyB7XG4gICAgd2lkdGg6IDgwMHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgICA6Om5nLWRlZXAgLm1vZGFsLWRpYWxvZyB7XG4gICAgICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgfVxufVxuIiwiLmNvbnRleHQge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuLmNvbnRleHQgLmljb24ge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuLmNvbnRleHQgcCB7XG4gIG1hcmdpbjogMCAxMHB4IDAgMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMTtcbn1cbi5jb250ZXh0IC5tYXAtbWFya2VyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGNvbG9yOiAjNjA3MTg4O1xuICBtYXJnaW4tdG9wOiAtMXB4O1xufVxuXG4uc2VjdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAzMHB4ICFpbXBvcnRhbnQ7XG59XG4uc2VjdGlvbjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbjogMDtcbn1cbi5zZWN0aW9uIGgzIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM2MDcxODg7XG59XG4uc2VjdGlvbiBoMyBociB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTcpO1xuICB3aWR0aDogMTAwJTtcbn1cbi5zZWN0aW9uIC50YWJsZSB0aGVhZCB0aCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBib3JkZXItdG9wOiBub25lO1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuLnNlY3Rpb24gLnRhYmxlIHRib2R5IC5jb250cm9sLXN0YXR1cy5pcy12YWxpZCB7XG4gIGNvbG9yOiBncmVlbjtcbn1cbi5zZWN0aW9uIC50YWJsZSB0Ym9keSAuY29udHJvbC1zdGF0dXMuaXMtbm90LXZhbGlkIHtcbiAgY29sb3I6IHJlZDtcbn1cbi5zZWN0aW9uIC50YWJsZSB0Ym9keSB0ZCxcbi5zZWN0aW9uIC50YWJsZSB0Zm9vdCB0ZCB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjb2xvcjogIzUxNjA3Mztcbn1cblxuOjpuZy1kZWVwIC5tb2RhbC1ib2R5IHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgcGFkZGluZzogMzBweDtcbn1cblxuOjpuZy1kZWVwIC5tb2RhbC1kaWFsb2cge1xuICB3aWR0aDogODAwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICA6Om5nLWRlZXAgLm1vZGFsLWRpYWxvZyB7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgfVxufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\n\n// interfaces\nimport { Legend } from 'app/shared/components/legends/legend.interface';\nimport { LegendConfig } from 'app/shared/components/legends/legend.interface';\nimport { BillControlItem, BillControlSection } from 'app/shared/models/bills-controls.interface';\nimport { Bill, BillChunk } from 'app/shared/models/bills.interface';\nimport { Site } from 'app/shared/models/site.interface';\n\n// services\nimport { SitesService } from 'app/shared//services/sites/sites.service';\nimport { BillsControlService } from 'app/shared/services/bills/bills-control.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\n@Component({\n selector: 'ga-bill-verifications',\n templateUrl: './bill-verifications.component.html',\n styleUrls: ['./bill-verifications.component.scss', './../../../bill-verification.scss'],\n providers: [],\n})\nexport class BillVerificationsComponent implements OnInit {\n @Input() bill: Bill;\n @Input() chunk: BillChunk;\n @Input() legends: Legend[];\n\n title: string;\n sections: BillControlSection[] = [];\n site: Site;\n sourceReferenceTitle: string;\n sourceReferenceValue: string;\n\n /**\n * Set config attributes for the legend component\n */\n public legendConfig: LegendConfig = {\n alignement: {\n enabled: true,\n value: 'right',\n },\n };\n\n constructor(\n private billsControlService: BillsControlService,\n private utilService: UtilsService,\n private siteService: SitesService\n ) {}\n\n ngOnInit() {\n this.getConfig();\n\n this.getSite();\n\n this.getSourceReference();\n }\n\n get verifications() {\n if (!this.bill.multi) {\n return this.bill.chunks[0].verifications;\n } else {\n if (this.chunk && this.chunk.verifications.length > 0) {\n return this.chunk.verifications;\n }\n }\n }\n\n /**\n * Get the value for the PDL or the vehicle\n * @returns {string}\n */\n getSourceReference() {\n if (this.chunk && this.chunk.routingReference.reference) {\n this.sourceReferenceTitle = 'routingReference';\n this.sourceReferenceValue = this.chunk.routingReference.reference;\n } else if (this.chunk && this.chunk.vehicle.reference) {\n this.sourceReferenceTitle = 'vehicle';\n this.sourceReferenceValue = this.chunk.vehicle.reference;\n }\n }\n\n async getSite() {\n if (this.chunk) {\n this.site = await this.siteService.getSiteFromRoutingReference(\n this.chunk.routingReference.id,\n this.chunk.company\n );\n }\n }\n\n hasVerifications() {\n return this.verifications && this.verifications.length > 0 ? true : false;\n }\n\n get sectionControls() {\n for (const section of this.sections) {\n return section.items;\n }\n }\n\n /**\n * Get the config defined in the service\n * @returns {Promise}\n */\n getConfig() {\n const fluid = this.getEnergyType();\n const config = this.billsControlService.getControlSectionConfig(fluid);\n\n if (config) {\n this.sections = this.billsControlService.getSections(config, this.verifications);\n this.setPillPriority();\n }\n }\n\n /**\n * Get the fluid type\n *\n * @returns {string}\n */\n getEnergyType() {\n return this.bill.chunks[0].fluid;\n }\n\n /**\n * Collapse sub controls section\n * @param {number} index\n */\n collapse(control: BillControlItem): void {\n control.isExpanded = !control.isExpanded;\n }\n\n /**\n * Returns the class for the collapse carret depending on the control status\n * @param {boolean} isExpanded\n */\n getClassCollapse(isExpanded: boolean): string {\n return isExpanded ? 'collapse-up' : 'collapse-down';\n }\n\n /**\n * Get the required total (from key) to display. Sum the section's controls specfic value.\n * @param {string} key - key of the controls' value to sum\n * @param {BillControlSection} section\n * @param {boolean} replaceZero - return default string '-' when value is null\n * @returns {string} - sum\n */\n getTotalValue(section: BillControlSection, key: string, replaceZero: boolean = false): string {\n // if all controls have null value -> display '- €' instead of 0.00€\n const allNaan = section.items.every(item => typeof item[key] !== 'number');\n if (allNaan) {\n return '-';\n }\n\n const total = _.sumBy(section.items, key);\n if (replaceZero && typeof total === 'number' && total === 0) {\n return '-';\n }\n\n return this.utilService.getNumberAndUnitToDisplay(total, '€');\n }\n\n /**\n * Get the global ratio value from controls to display: sum of difference / sum of noticed values\n * @returns {string}\n */\n getRatioTotal(section: BillControlSection): string {\n const totalDiff = _.sumBy(section.items, 'difference');\n const totalNoticed = _.sumBy(section.items, 'noticedValue');\n\n // return not applicable if noticed total is 0 (can't divide by 0) or if diff is zero (for visiblity, when total is valid)\n const isNotApplicable: boolean = !totalNoticed || !totalDiff;\n if (isNotApplicable) {\n return '-';\n }\n\n /**\n * Compute ratio based on difference over value that should have been billed.\n * Using noticedValue - difference and not expectedValue because expectedValue is less likely to exist.\n * Ex. difference -50 noticedValue 100 => -33.67% (supposed to pay 150 but paid 100)\n * difference +50 noticedValue 100 => +100% (supposed to pay 50 but paid 100)\n */\n const totalRatio = (100 * totalDiff) / (totalNoticed - totalDiff);\n return this.utilService.getNumberAndUnitToDisplay(totalRatio, '%');\n }\n\n /**\n * Returns true if the value is not a number and is undefined\n * @param {*} value - to test\n * @returns {boolean}\n */\n isUndefined(value: any): boolean {\n return typeof value !== 'number' && !value;\n }\n\n /**\n * Set the pill priority on each control and subControl\n */\n setPillPriority(): void {\n this.sections.forEach(section => {\n if (section.items) {\n section.items.forEach(control => {\n // set the control result's criticity\n control.priority = this.billsControlService.getControlPriority(control);\n\n const subControls = control.items;\n if (subControls) {\n subControls.forEach(subControl => {\n // set the subcontrol result's criticity\n subControl.priority = this.billsControlService.getControlPriority(subControl);\n });\n }\n });\n }\n });\n }\n\n /**\n * get the rgb color of the legend by given value\n * @param {*} val\n * @returns {string}\n */\n getRgbColorByValue(val: any): string {\n const legend = this.legends.find(item => item.values && item.values.includes(val));\n return legend ? `rgb(${legend.color})` : null;\n }\n\n /**\n * Call the service to return the icon based on the priority number\n *\n * @param {number} priority\n * @returns {string}\n */\n getPriorityIcon(priority: number): string {\n return this.billsControlService.getPriorityIcon(priority);\n }\n}\n","export default \".filters {\\n padding: 1rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29udHJvbC9iaWxscy1jb250cm9sLXRhYi9iaWxscy1jb250cm9sLXRhYi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtY29udHJvbC9jb250cm9sL2JpbGxzLWNvbnRyb2wtdGFiL2JpbGxzLWNvbnRyb2wtdGFiLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksYUFBQTtBQ0ZKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtY29udHJvbC9jb250cm9sL2JpbGxzLWNvbnRyb2wtdGFiL2JpbGxzLWNvbnRyb2wtdGFiLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbi5maWx0ZXJzIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuIiwiLmZpbHRlcnMge1xuICBwYWRkaW5nOiAxcmVtO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\nimport { Legend } from 'app/shared/components/legends/legend.interface';\nimport { PaginationBackService } from 'app/shared/components/pagination/back/pagination-back.service';\nimport { FiltersAvailable, QueryFilter } from 'app/shared/models/bills-contracts-filter.interface';\nimport { Bill, BillsControlsRecap } from 'app/shared/models/bills.interface';\nimport { Pagination, QueryPagination } from 'app/shared/models/pagination.interface';\nimport { BillsListService } from 'app/shared/services/bills-list/bills-list.service';\nimport { BillsControlService } from 'app/shared/services/bills/bills-control.service';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\n@Component({\n selector: 'ga-bills-control-tab',\n templateUrl: './bills-control-tab.component.html',\n styleUrls: ['./bills-control-tab.component.scss'],\n providers: [PaginationBackService],\n})\nexport class BillsControlTabComponent implements OnInit {\n bills: Bill[] = [];\n\n pagination: Pagination = {\n lastItem: {\n _id: null,\n index: 0,\n },\n };\n\n filtersAvailable: FiltersAvailable;\n isLoadingFilters = true;\n\n filters: QueryFilter;\n\n get filtersQueryString(): string {\n if (!this.filters) {\n return '';\n }\n\n let url = `?start=${this.filters.start}&end=${this.filters.end}`;\n url += this.filters.query ? `&query=${this.filters.query}` : '';\n url += this.filters.onlyError ? `&onlyError=${this.filters.onlyError}` : '';\n url += this.filters.includeBranches ? `&includeBranches=${this.filters.includeBranches}` : '';\n url += this.filters.fluids ? `&fluids=${this.filters.fluids}` : '';\n url += this.filters.status ? `&status=${this.filters.status}` : '';\n url += this.filters.providers ? `&providers=${this.filters.providers}` : '';\n url += this.filters.states ? `&states=${this.filters.states}` : '';\n url += this.filters.onlyValidContracts ? `&onlyValidContracts=${this.filters.onlyValidContracts}` : '';\n url += this.filters.routingReferences ? `&routingReferences=${this.filters.routingReferences}` : '';\n url += this.filters.contracts ? `&contracts=${this.filters.contracts}` : '';\n url += this.filters.failedVerifications ? `&failedVerifications=${this.filters.failedVerifications}` : '';\n\n return url;\n }\n\n /**\n * @type {boolean} - isBranchesLoaded is used to set filters available values from requested company and its branches\n */\n private isBranchesLoaded = false;\n\n legends: Legend[] = [\n {\n name: 'overcharged',\n icon: 'fa-arrow-up',\n color: this.colorService.getRgbColorValue('overcharged'),\n values: [3],\n },\n {\n name: 'undercharged',\n icon: 'fa-arrow-down',\n color: this.colorService.getRgbColorValue('undercharged'),\n values: [2],\n },\n {\n name: 'valid',\n icon: 'fa-check',\n color: this.colorService.getRgbColorValue('valid'),\n values: [1],\n },\n {\n name: 'not_controlled',\n color: this.colorService.getRgbColorValue('not_controlled'),\n values: [0],\n },\n ];\n\n public recap: BillsControlsRecap;\n\n /**\n * Set up loading\n * bills : refers to the bills control list\n * recap: refers to the recap banner\n */\n public loading = {\n bills: true,\n recap: true,\n };\n\n constructor(\n private sessionService: SessionService,\n private energyService: EnergyService,\n private filterService: FilterService,\n private billsListService: BillsListService,\n private paginationService: PaginationBackService,\n private colorService: ColorService,\n private billsControlService: BillsControlService,\n private translateService: TranslateService\n ) {}\n\n async ngOnInit() {\n await this.initData();\n }\n\n async initData() {\n try {\n await this.initFilters();\n } catch (err) {\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des factures. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n throw JSON.stringify(err);\n }\n }\n\n /**\n * Set displayed list of bills from the given list and update pagination.\n * Default : none is expanded.\n */\n setBills(bills: { results: Bill[]; total: number }): void {\n // init collapse (default false) on each bill\n bills.results.forEach((bill: Bill) => {\n bill.isExpanded = false;\n });\n\n // set bills\n this.bills = bills.results;\n\n this.loading.bills = false;\n\n // Update pagination with the new total number of elements\n this.paginationService.updateLastItem(this.pagination.lastItem, this.bills);\n this.paginationService.updateAfterSearch(bills.total);\n }\n\n /**\n * Get bills uploads for filters and pagination\n * @param {QueryFilter} filters\n * @return {Promise<{results: Bill[], total: number}>}\n */\n async getBills(filters: QueryFilter): Promise<{ results: Bill[]; total: number }> {\n try {\n const queryPagination: QueryPagination = this.paginationService.getPaginationQuery(\n this.pagination.lastItem\n );\n return this.billsListService.getUploadsBills(filters, queryPagination, this.paginationService.sort);\n } catch (e) {\n this.bills = [];\n\n // reset pagination to first page for an empty array\n this.paginationService.emptyPagination();\n\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des factures. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n }\n }\n\n /**\n * Called when pagination is updated (selected page or nb of items per pages).\n * Update the displayed list of bills.\n */\n async onPaginationChanged(event = { resetLastItem: false }): Promise {\n if (event.resetLastItem) {\n this.paginationService.updateLastItem(this.pagination.lastItem, []);\n }\n // Display the loading message until bills list refreshed\n this.loading.bills = true;\n\n const bills = await this.getBills(this.filters);\n\n this.setBills(bills);\n\n // After bills list refreshed, hide the loading\n this.loading.bills = false;\n }\n\n /**\n * Called when sort has changed on the bills table\n * Reload the bills accordingly\n * @returns {Promise}\n */\n async onSortChanged(): Promise {\n // Display the loading message until bills list refreshed\n this.loading.bills = true;\n\n this.paginationService.setFirstPage();\n this.pagination.lastItem = { _id: null, index: 0 };\n const bills = await this.getBills(this.filters);\n\n const billsList = this.setBills(bills);\n\n // After bills list refreshed, hide the loading\n this.loading.bills = false;\n\n return billsList;\n }\n\n /**\n * ************ FILTERS ************\n */\n\n /**\n * Initilise filters with default values.\n * company: session company\n * period: from min to max years where data is found\n * fluids: all of the company\n * providers: all of the company\n */\n async initFilters(): Promise {\n await this.setFilters();\n this.isLoadingFilters = false;\n }\n\n /**\n * Called when filter has changed. Set the list and recap values for the new filters.\n * @param {QueryFilter} filters\n */\n async onFilterChanged(filters: QueryFilter): Promise {\n // Display the loading message or the loading spinners (recap banner)\n // until bills list refreshed\n this.loading.bills = true;\n this.loading.recap = true;\n\n this.filters = filters;\n\n const loadBranches = _.get(this.filters, 'includeBranches', false);\n if ((loadBranches && !this.isBranchesLoaded) || (!loadBranches && this.isBranchesLoaded)) {\n this.isBranchesLoaded = !this.isBranchesLoaded;\n await this.setFilters({ loadBranches });\n }\n\n // reset pagination to first page\n this.paginationService.setFirstPage();\n // Reset last item\n this.pagination.lastItem = { _id: null, index: 0 };\n\n // set the bills list and the recap values for the required filter: the last one\n const res = await this.getBillsAndRecap(filters);\n if (res.filters === this.filters) {\n this.recap = res.recap;\n this.setBills(res.bills);\n\n // After bills list refreshed, hide the loading\n this.loading.bills = false;\n this.loading.recap = false;\n }\n }\n\n /**\n * Get the bills and recap values for the given filters.\n * @param { QueryFilter} filters\n * @returns { Promise<{ bills: { results: Bill[]; total: number }; recap: BillsControlsRecap; filters: QueryFilter }> }\n */\n async getBillsAndRecap(\n filters: QueryFilter\n ): Promise<{ bills: { results: Bill[]; total: number }; recap: BillsControlsRecap; filters: QueryFilter }> {\n filters.onlyValidContracts = true;\n const [bills, recap] = await Promise.all([\n this.getBills(filters),\n this.billsListService.getControlRecap(filters),\n ]);\n\n return { bills, recap, filters };\n }\n\n /**\n * set filters\n * @param {{loadBranches: boolean}} param\n */\n async setFilters(param: { loadBranches: boolean } = { loadBranches: false }) {\n const currentCompany = this.sessionService.getCompany();\n\n const [fluids, years, providers] = await Promise.all([\n this.energyService.getFluidsAvailable(currentCompany._id, param),\n this.filterService.getYearsWithData(true, param),\n this.filterService.getContractProviders(currentCompany._id, param),\n ]);\n\n // set selected fluids compared to available fluids\n if (this.filters && this.filters.fluids) {\n this.filters.fluids = _.intersection(this.filters.fluids, fluids);\n }\n\n // set selected providers compared to available providers\n if (this.filters && this.filters.providers) {\n this.filters.providers = _.intersection(this.filters.providers, providers.data);\n }\n\n let yearsMin: string = null;\n let yearsMax: string = null;\n\n const currentDate = moment();\n const currentYear = currentDate.year().toString();\n\n if (years && years.length) {\n yearsMin = years[0].value;\n yearsMax = years[years.length - 1].value;\n } else {\n yearsMin = currentYear;\n yearsMax = currentYear;\n }\n\n const setDefaultDate = Boolean(!_.get(this.filters, 'start') && !_.get(this.filters, 'end'));\n\n let selectedStart = null;\n let selectedEnd = null;\n\n if (setDefaultDate) {\n selectedStart = currentDate\n .clone()\n .subtract(1, 'year')\n .format('YYYY-MM');\n selectedEnd = currentDate.format('YYYY-MM');\n }\n\n this.filtersAvailable = {\n searchValue: {\n enabled: true,\n placeholder: 'N° de facture / n° de PDL / immatriculation',\n },\n years: {\n enabled: true,\n yearsMin,\n yearsMax,\n setDefault: setDefaultDate,\n selectedStart,\n selectedEnd,\n allowMissingBound: false,\n },\n fluids: {\n enabled: true,\n values: fluids,\n },\n providers: {\n enabled: true,\n values: providers.data,\n },\n status: {\n enabled: true,\n values: ['undercharged', 'overcharged', 'valid'],\n },\n failedVerifications: {\n label: 'bill_error_type_filter',\n placeholder: this.translateService._('bill_error_type_filter'),\n enabled: true,\n values: this.billsControlService.getControlsByFluid(fluids),\n tooltip:\n \"Ce filtre permet d'afficher uniquement les factures présentant une erreur sur l’une des familles d’erreurs sélectionnées\",\n },\n branches: {\n enabled: true,\n },\n };\n }\n}\n","export default \".table__container {\\n overflow-x: auto;\\n}\\n.table__container .table {\\n background-color: white;\\n font-size: 12px;\\n color: #607188;\\n}\\n.table__container .table td,\\n.table__container .table th {\\n vertical-align: middle;\\n line-height: 1rem;\\n text-align: center;\\n}\\n.table__container .table td i,\\n.table__container .table th i {\\n padding-left: 3px;\\n}\\n.table__container .table td a {\\n color: inherit;\\n}\\n.table__container .table td a.not-clickable:hover {\\n cursor: inherit;\\n}\\n.table__container .table .table__header-download {\\n background-color: whitesmoke;\\n}\\n.table__container .table .table__row .energy-type {\\n margin: 0 auto;\\n width: 30px;\\n height: 32px;\\n}\\n.table__container .table .table__row .table__col-type-multi:hover .table__col-type-name {\\n background-color: #d8a63e;\\n}\\n.table__container .table .table__row .table__col-type-multi:hover .fa-chevron-right {\\n color: #d8a63e;\\n}\\n.table__container .table .table__row .table__col-type-name {\\n border-radius: 50px;\\n background-color: #607188;\\n color: white;\\n padding: 3px 7px;\\n}\\n.control-status {\\n font-size: 16px;\\n cursor: pointer;\\n}\\ni.fa-cloud-download {\\n font-size: 1.15rem;\\n padding-left: 0.5rem;\\n}\\ni:hover {\\n cursor: pointer;\\n color: #d8a63e;\\n}\\n.transition {\\n -webkit-transition: all 200ms linear;\\n transition: all 200ms linear;\\n}\\n::ng-deep .modal.fade .modal-dialog {\\n opacity: 1 !important;\\n -webkit-transform: inherit;\\n transform: inherit;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29udHJvbC9iaWxscy10YWJsZS1jb250cm9sL2JpbGxzLXRhYmxlLWNvbnRyb2wuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29udHJvbC9iaWxscy10YWJsZS1jb250cm9sL2JpbGxzLXRhYmxlLWNvbnRyb2wuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksZ0JBQUE7QUNGSjtBRElJO0VBQ0ksdUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0VpQks7QURuQmI7QURJUTs7RUFFSSxzQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7QUNGWjtBRElZOztFQUNJLGlCQUFBO0FDRGhCO0FETVk7RUFDSSxjQUFBO0FDSmhCO0FET1k7RUFDSSxlQUFBO0FDTGhCO0FEU1E7RUFDSSw0QkFBQTtBQ1BaO0FEV1k7RUFDSSxjQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7QUNUaEI7QURhZ0I7RUFDSSx5QkVaVDtBRENYO0FEY2dCO0VBQ0ksY0VoQlQ7QURJWDtBRGdCWTtFQUNJLG1CQUFBO0VBQ0EseUJFN0JIO0VGOEJHLFlBQUE7RUFDQSxnQkFBQTtBQ2RoQjtBRG9CQTtFQUNJLGVBQUE7RUFDQSxlQUFBO0FDakJKO0FEb0JBO0VBQ0ksa0JBQUE7RUFDQSxvQkFBQTtBQ2pCSjtBRG9CQTtFQUNJLGVBQUE7RUFDQSxjRTFDTztBRHlCWDtBRG9CQTtFQUVJLG9DQUFBO0VBQ0EsNEJBQUE7QUNqQko7QURvQkE7RUFDSSxxQkFBQTtFQUNBLDBCQUFBO0VBQ0Esa0JBQUE7QUNqQkoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1jb250cm9sL2NvbnRyb2wvYmlsbHMtdGFibGUtY29udHJvbC9iaWxscy10YWJsZS1jb250cm9sLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcblxuLnRhYmxlX19jb250YWluZXIge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgICAudGFibGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG5cbiAgICAgICAgdGQsXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMXJlbTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYS5ub3QtY2xpY2thYmxlOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAudGFibGVfX2hlYWRlci1kb3dubG9hZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYmxlX19yb3cge1xuICAgICAgICAgICAgLmVuZXJneS10eXBlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC50YWJsZV9fY29sLXR5cGUtbXVsdGkge1xuICAgICAgICAgICAgICAgICY6aG92ZXIgLnRhYmxlX19jb2wtdHlwZS1uYW1lIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZhY3R1cmVzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6aG92ZXIgLmZhLWNoZXZyb24tcmlnaHQge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGZhY3R1cmVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnRhYmxlX19jb2wtdHlwZS1uYW1lIHtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcHggN3B4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uY29udHJvbC1zdGF0dXMge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbmkuZmEtY2xvdWQtZG93bmxvYWQge1xuICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbn1cblxuaTpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAkZmFjdHVyZXM7XG59XG5cbi50cmFuc2l0aW9uIHtcbiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMjAwbXMgbGluZWFyO1xuICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG59XG5cbjo6bmctZGVlcCAubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHtcbiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IGluaGVyaXQ7XG4gICAgdHJhbnNmb3JtOiBpbmhlcml0O1xufVxuIiwiLnRhYmxlX19jb250YWluZXIge1xuICBvdmVyZmxvdy14OiBhdXRvO1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICM2MDcxODg7XG59XG4udGFibGVfX2NvbnRhaW5lciAudGFibGUgdGQsXG4udGFibGVfX2NvbnRhaW5lciAudGFibGUgdGgge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBsaW5lLWhlaWdodDogMXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIHRkIGksXG4udGFibGVfX2NvbnRhaW5lciAudGFibGUgdGggaSB7XG4gIHBhZGRpbmctbGVmdDogM3B4O1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIHRkIGEge1xuICBjb2xvcjogaW5oZXJpdDtcbn1cbi50YWJsZV9fY29udGFpbmVyIC50YWJsZSB0ZCBhLm5vdC1jbGlja2FibGU6aG92ZXIge1xuICBjdXJzb3I6IGluaGVyaXQ7XG59XG4udGFibGVfX2NvbnRhaW5lciAudGFibGUgLnRhYmxlX19oZWFkZXItZG93bmxvYWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlO1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIC50YWJsZV9fcm93IC5lbmVyZ3ktdHlwZSB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMzBweDtcbiAgaGVpZ2h0OiAzMnB4O1xufVxuLnRhYmxlX19jb250YWluZXIgLnRhYmxlIC50YWJsZV9fcm93IC50YWJsZV9fY29sLXR5cGUtbXVsdGk6aG92ZXIgLnRhYmxlX19jb2wtdHlwZS1uYW1lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4YTYzZTtcbn1cbi50YWJsZV9fY29udGFpbmVyIC50YWJsZSAudGFibGVfX3JvdyAudGFibGVfX2NvbC10eXBlLW11bHRpOmhvdmVyIC5mYS1jaGV2cm9uLXJpZ2h0IHtcbiAgY29sb3I6ICNkOGE2M2U7XG59XG4udGFibGVfX2NvbnRhaW5lciAudGFibGUgLnRhYmxlX19yb3cgLnRhYmxlX19jb2wtdHlwZS1uYW1lIHtcbiAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwNzE4ODtcbiAgY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAzcHggN3B4O1xufVxuXG4uY29udHJvbC1zdGF0dXMge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuaS5mYS1jbG91ZC1kb3dubG9hZCB7XG4gIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG5cbmk6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjZDhhNjNlO1xufVxuXG4udHJhbnNpdGlvbiB7XG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIDIwMG1zIGxpbmVhcjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMjAwbXMgbGluZWFyO1xuICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgbGluZWFyO1xufVxuXG46Om5nLWRlZXAgLm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZyB7XG4gIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IGluaGVyaXQ7XG4gIHRyYW5zZm9ybTogaW5oZXJpdDtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\n\n// interfaces\nimport { Legend, LegendConfig } from 'app/shared/components/legends/legend.interface';\n\n// services\nimport { PaginationBackService } from 'app/shared/components/pagination/back/pagination-back.service';\nimport { BillsControlService } from 'app/shared/services/bills/bills-control.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { UploadService } from 'app/shared/services/files/upload.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\n\n// components\nimport { ModalComponent } from 'app/shared/components/common/modal/modal.component';\nimport { BillChunkDisplay, BillDisplay } from 'app/shared/models/bills-controls.interface';\n\n@Component({\n selector: 'ga-bills-table-control',\n templateUrl: './bills-table-control.component.html',\n styleUrls: ['./bills-table-control.component.scss', './../../../bill-verification.scss'],\n})\nexport class BillsTableControlComponent implements OnInit {\n private _billsList: BillDisplay[] = [];\n\n /**\n * Creation/Edit modal\n */\n @ViewChild(ModalComponent, { static: true }) private modal: ModalComponent;\n\n @Input() billsLoading: boolean;\n\n @Input() legends: Legend[];\n @Output() sortChanged: EventEmitter = new EventEmitter();\n\n @Input()\n set billsList(list) {\n this.initCollapseMulti(list);\n this.setBillPriorityDifferenceRatio(list);\n this._billsList = list;\n }\n\n get billsList() {\n return this._billsList;\n }\n\n @Input() filtersQueryString: string;\n\n billsSelectedList: BillDisplay[] = [];\n\n _bill: BillDisplay;\n _chunk: BillChunkDisplay;\n _modalTitle: string;\n\n public exportUrl = '/api/export/excel/bills-control';\n\n /**\n * Set config attributes for the legend component\n */\n public legendConfig: LegendConfig = {\n alignement: {\n enabled: true,\n value: 'right',\n },\n };\n\n constructor(\n private billsControlService: BillsControlService,\n private energyService: EnergyService,\n private sessionService: SessionService,\n private uploadService: UploadService,\n private paginationService: PaginationBackService\n ) {}\n\n ngOnInit() {\n // pagination default direction is descendant: sort with highest values first\n this.paginationService.defaultSortAsc = false;\n }\n\n /**\n * ************ Init data after search ************\n */\n\n /**\n * Initialise the collapse of each bill in the given list:\n * Set the collapse of each bill from its state in the current list (if present in the current list).\n * @param {BillDisplay[]} bills\n */\n initCollapseMulti(bills: BillDisplay[]): void {\n bills.forEach(bill => {\n if (bill.multi) {\n const billAlreadyPresent = this.billsList.find(b => b.upload === bill.upload);\n bill.isExpanded = billAlreadyPresent ? billAlreadyPresent.isExpanded : false;\n } else {\n bill.isExpanded = false;\n }\n });\n }\n\n /**\n * Set the priority of each bill and chunk.\n * Also compute and set the value of each bill's global difference and ratio.\n * @param {BillDisplay[]} bills\n */\n setBillPriorityDifferenceRatio(bills: BillDisplay[]): void {\n bills.forEach(bill => {\n if (bill.chunks.length) {\n bill.chunks.forEach(chunk => {\n // filter verifications and keep only those from the config\n chunk.verifications = this.billsControlService.filterBillVerifications(\n chunk.fluid,\n chunk.verifications\n );\n // compute priority from the chunk's verification\n chunk.priority = this.billsControlService.getChunkPriorityFromRecap(chunk.controlsRecap);\n });\n\n // set the bill's priority for non multi bills\n if (!bill.multi) {\n bill.priority = this.billsControlService.getChunkPriorityFromRecap(bill.chunks[0].controlsRecap);\n }\n }\n });\n }\n\n /**\n * ******************************************************\n * ******************** Select bills ********************\n * ******************************************************\n */\n\n /**\n * Returns true if all the bills displayed are selected.\n * @return {boolean}\n */\n isEveryBillSelected(): boolean {\n return Boolean(\n this.billsSelectedList.length && this.billsList.every(bill => this.isAlreadySelected(bill.upload))\n );\n }\n\n /**\n * Returns true if the upload ID sent is already in the selected bills list */\n isAlreadySelected(billIdToCompare): boolean {\n return this.billsSelectedList.some(b => b.upload.toString() === billIdToCompare.toString());\n }\n\n /** Called when the selectbox \"all\" is checked or not */\n onClickSelectAll(): void {\n if (!this.isEveryBillSelected()) {\n this.selectAllBills();\n } else {\n this.deselectAllBills();\n }\n }\n\n /** Add to the selected bills list all the bills currently displayed in the table */\n selectAllBills(): void {\n this.billsList.forEach(bill => {\n if (!this.isAlreadySelected(bill.upload)) {\n this.billsSelectedList.push(bill);\n }\n });\n }\n\n /** Remove from the selected bills all the bills currently displayed in the list */\n deselectAllBills(): void {\n this.billsList.forEach(bill => {\n if (this.isAlreadySelected(bill.upload)) {\n const indexAlreadySelected = this.billsSelectedList.findIndex(\n b => b.upload.toString() === bill.upload.toString()\n );\n this.billsSelectedList.splice(indexAlreadySelected, 1);\n }\n });\n }\n\n /** Cursor pointer of some bills are selected */\n getIconCursorClass(): string {\n return this.hasBillSelected() ? 'cursor-pointer' : '';\n }\n\n /** Returns the number of bills selected */\n displayNbBillsSelected(): string {\n if (this.hasBillSelected()) {\n const count = this.billsSelectedList.length;\n return count.toString() + (count > 1 ? ' factures sélectionnées' : ' facture sélectionnée');\n }\n }\n\n /** Returns true if at least one bill is selected */\n hasBillSelected(): boolean {\n return Boolean(this.billsSelectedList && this.billsSelectedList.length);\n }\n\n /**\n * ******************************************************\n * ********************** Download **********************\n * ******************************************************\n */\n\n /**\n * Download the selected bills.\n * For those which failed, create a report in a modal with their filenames formated.\n */\n async onDownloadMultiSelection(): Promise {\n this.uploadService.downloadAndReportMulti(this.billsSelectedList);\n }\n\n /**\n * Download the given bill.\n * @param {BillDisplay} bill\n */\n async onSingleDownload(bill: BillDisplay): Promise {\n try {\n this.uploadService.downloadBill(bill);\n } catch (e) {\n const filename = this.uploadService.getFilenameFromBill(bill);\n Swal.fire(\n 'Toutes nos excuses',\n `Le fichier ${filename} est inaccessible pour le moment. Veuillez réessayer ultérieurement.`,\n 'warning'\n );\n }\n }\n\n /**\n * *****************************************************\n * *********************** Bills ***********************\n * *****************************************************\n */\n\n /**\n * Add the bill to the selected bills list if it's not there remove the bill from the list otherwise\n * @param {BillDisplay} bill\n */\n switchBillSelection(bill: BillDisplay): void {\n const indexAlreadySelected = this.billsSelectedList.findIndex(\n b => b.upload.toString() === bill.upload.toString()\n );\n // If the bill was selected --> unselected it\n if (indexAlreadySelected !== -1) {\n this.billsSelectedList.splice(indexAlreadySelected, 1);\n } else {\n this.billsSelectedList.push(bill);\n }\n }\n\n /**\n * Collapse if bill is multi to display all the bills\n * @param {BillDisplay} bill\n */\n toggleCollapse(bill: BillDisplay): void {\n bill.isExpanded = !bill.isExpanded;\n }\n\n /**\n * Returns MULTI or SIMPLE depending on the bill's type\n * @param {BillDisplay} bill\n * @returns {string}\n */\n getType(bill: BillDisplay): string {\n return bill.multi ? 'multi' : 'simple';\n }\n\n /**\n * Return a class depending on the bill's type\n * @param {BillDisplay} bill\n * @returns {string}\n */\n getTypeClass(bill: BillDisplay): string {\n return bill.multi ? 'table__col-type-multi cursor-pointer' : 'table__col-type-simple';\n }\n\n /**\n * Get the bill reference\n *\n * @param {BillDisplay} bill\n * @param {BillChunkDisplay} chunk\n * @returns {string}\n */\n getBillNumber(bill: BillDisplay, chunk: BillChunkDisplay = null): string {\n return !bill.multi\n ? bill.chunks[0] && bill.chunks[0].bill.reference\n : bill.isExpanded && chunk\n ? chunk.bill.reference\n : bill.chunks[0].bill.reference;\n }\n\n /**\n * Get the contract reference associated to the bill\n *\n * @param {BillDisplay} bill\n * @param {BillChunkDisplay} chunk\n * @returns {string}\n */\n getContractNumber(bill: BillDisplay, chunk: BillChunkDisplay = null): string {\n return !bill.multi\n ? bill.chunks[0] && bill.chunks[0].contract.reference\n : bill.isExpanded && chunk\n ? chunk.contract.reference\n : bill.chunks[0].contract.reference;\n }\n\n /**\n * Returns the routing reference number / vehicle immat of the bill / the chunk / nothing\n * The bill must have passed validation. Required fields include: \"chunks.routingReference\"|\"chunks.vehicle\"\n * @param {BillDisplay} bill\n * @param {BillChunkDisplay|null} chunk\n * @returns {string} routing reference number / vehicle immat of the bill/the chunk / nothing\n * */\n getSourceReference(bill: BillDisplay, chunk: BillChunkDisplay = null): string {\n if (!chunk) {\n if (!bill.multi && bill.chunks[0]) {\n chunk = bill.chunks[0];\n } else {\n return '';\n }\n }\n\n const field = this.energyService.getFluidSource(chunk.fluid);\n\n if (!field) {\n return '';\n }\n\n return !bill.multi\n ? bill.chunks[0] && bill.chunks[0][field].reference\n : bill.isExpanded && chunk\n ? chunk[field].reference\n : '';\n }\n\n /**\n * Check if the multi bill is collapsed to change the arrow icon rotation\n * @param {BillDisplay} bill\n * @returns {string}\n */\n getCollapseClass(bill: BillDisplay): string {\n return bill.isExpanded ? 'fa-rotate-90' : '';\n }\n\n /**\n * Display chunks if bill is multi\n * @param {BillDisplay} bill\n * @returns {boolean}\n */\n isDisplayingChunks(bill: BillDisplay): boolean {\n return bill.multi && bill.isExpanded;\n }\n\n /**\n * Get the bill energy type (gaz, elec...)\n * @param {BillDisplay} bill\n * @returns {string}\n */\n getEnergyType(bill: BillDisplay): string {\n if (!bill.multi) {\n return bill.chunks[0].fluid;\n }\n }\n\n /**\n * *****************************************************\n * ******************* Bills control *******************\n * *****************************************************\n */\n\n /**\n * Open the modal that display the bill controls\n *\n * @param {BillDisplay} bill\n * @param {BillChunkDisplay} chunk\n */\n openModal(bill: BillDisplay, chunk: BillChunkDisplay = null): void {\n this._bill = bill;\n this._chunk = chunk;\n this._modalTitle = `Facture n°${bill.chunks[0].bill.reference}`;\n\n this.modal.show();\n }\n\n /**\n * Close the modal\n */\n public closeModal(): void {\n this.modal.close();\n }\n\n get isModalShown(): boolean {\n return this.modal.isShown;\n }\n\n /**\n * get the rgb color of the legend by given value\n * @param {*} val\n * @returns {string}\n */\n getRgbColorByValue(val: any): string {\n const legend = this.legends.find(item => item.values && item.values.includes(val));\n return legend ? `rgb(${legend.color})` : null;\n }\n\n /**\n * Call the service to return the icon based on the priority number\n *\n * @param {number} priority\n * @returns {string}\n */\n getPriorityIcon(priority: number): string {\n return this.billsControlService.getPriorityIcon(priority);\n }\n\n /**\n * *****************************************************\n * ******************* Table sort *******************\n * *****************************************************\n */\n\n /**\n * Update the sort caret class according to the user action.\n * @param {string} header\n * @returns {string[]} css classes\n */\n getClass(header: string): string[] {\n return this.paginationService.getClassesSort(header);\n }\n\n /**\n * Handle sort click to update the contracts list accordingly.\n * @param {string} header column header selected for sort\n */\n onSort(header: string): void {\n this.paginationService.onSort(header);\n this.sortChanged.emit();\n }\n\n /**\n * Check if the bills list has data\n *\n * @returns {boolean}\n */\n hasData() {\n return this.billsList.length > 0;\n }\n}\n","export default \".content {\\n padding: 20px;\\n}\\n.content .section {\\n text-align: center;\\n}\\n.content .section h4,\\n.content .section .value {\\n font-family: \\\"Montserrat\\\", \\\"Poppins\\\", Arial, sans-serif;\\n}\\n.content .section h4 {\\n text-transform: uppercase;\\n font-size: 15px;\\n}\\n.content .section .spinner,\\n.content .section .value {\\n font-size: 22px;\\n}\\n.content .section .value {\\n border-radius: 27px;\\n font-weight: bold;\\n display: inline-block;\\n}\\n.content .section hr {\\n margin: 10px auto 20px;\\n width: 30%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29udHJvbC9yZWNhcC1iYW5uZXIvYmlsbHMtY29udHJvbC1yZWNhcC1iYW5uZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLWNvbnRyb2wvY29udHJvbC9yZWNhcC1iYW5uZXIvYmlsbHMtY29udHJvbC1yZWNhcC1iYW5uZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxhQUFBO0FDRko7QURJSTtFQUNJLGtCQUFBO0FDRlI7QURJUTs7RUFFSSx1REFBQTtBQ0ZaO0FES1E7RUFDSSx5QkFBQTtFQUNBLGVBQUE7QUNIWjtBRE1ROztFQUVJLGVBQUE7QUNKWjtBRE9RO0VBQ0ksbUJBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0FDTFo7QURRUTtFQUNJLHNCQUFBO0VBQ0EsVUFBQTtBQ05aIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtY29udHJvbC9jb250cm9sL3JlY2FwLWJhbm5lci9iaWxscy1jb250cm9sLXJlY2FwLWJhbm5lci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5cbi5jb250ZW50IHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuXG4gICAgLnNlY3Rpb24ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgaDQsXG4gICAgICAgIC52YWx1ZSB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCAnUG9wcGlucycsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgICB9XG5cbiAgICAgICAgaDQge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zcGlubmVyLFxuICAgICAgICAudmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnZhbHVlIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI3cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIGhyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvIDIwcHg7XG4gICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmNvbnRlbnQge1xuICBwYWRkaW5nOiAyMHB4O1xufVxuLmNvbnRlbnQgLnNlY3Rpb24ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uY29udGVudCAuc2VjdGlvbiBoNCxcbi5jb250ZW50IC5zZWN0aW9uIC52YWx1ZSB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgXCJQb3BwaW5zXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuLmNvbnRlbnQgLnNlY3Rpb24gaDQge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IDE1cHg7XG59XG4uY29udGVudCAuc2VjdGlvbiAuc3Bpbm5lcixcbi5jb250ZW50IC5zZWN0aW9uIC52YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbn1cbi5jb250ZW50IC5zZWN0aW9uIC52YWx1ZSB7XG4gIGJvcmRlci1yYWRpdXM6IDI3cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uY29udGVudCAuc2VjdGlvbiBociB7XG4gIG1hcmdpbjogMTBweCBhdXRvIDIwcHg7XG4gIHdpZHRoOiAzMCU7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { BillsControlsRecap } from 'app/shared/models/bills.interface';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\ninterface RecapPropertyDisplay {\n key: string;\n value: string;\n color: string;\n colorKey: string;\n tooltip?: string;\n icon?: string;\n}\n\n@Component({\n selector: 'ga-bills-control-recap-banner',\n templateUrl: './bills-control-recap-banner.component.html',\n styleUrls: ['./bills-control-recap-banner.component.scss'],\n})\nexport class BillsControlRecapBannerComponent implements OnInit {\n @Input()\n set recapValues(val: BillsControlsRecap) {\n // For each recap values, set a format (two numbers after digits and space for thousand numbers)\n this.recapValuesDisplay.forEach(item => {\n const unit = item.key !== 'ratio' ? '€' : '%';\n const type = item.key !== 'ratio' ? 'money' : 'ratio';\n const value = val ? val[item.key] : null;\n const formatted = this.utilsService.formateNumberType(value, '-', type);\n item.value = `${formatted} ${unit}`;\n item.color = this.colorService.getRgbColor(item.colorKey);\n });\n }\n\n /**\n * Get the loading status in order to display a loading spinner in the recap banner\n */\n @Input() loading: boolean;\n\n public recapValuesDisplay: RecapPropertyDisplay[] = [\n {\n key: 'undercharged',\n value: '- €',\n color: this.colorService.getRgbColor('undercharged'),\n colorKey: 'undercharged',\n icon: 'fa-arrow-down',\n },\n {\n key: 'overcharged',\n value: '- €',\n color: this.colorService.getRgbColor('overcharged'),\n colorKey: 'overcharged',\n icon: 'fa-arrow-up',\n },\n {\n key: 'balance',\n value: '- €',\n color: this.colorService.getRgbColor('not_controlled'),\n colorKey: 'not_controlled',\n },\n {\n key: 'ratio',\n value: '- %',\n color: this.colorService.getRgbColor('not_controlled'),\n colorKey: 'not_controlled',\n tooltip: 'Ratio entre les écarts constatés et le total facturé pour les filtres sélectionnés',\n },\n ];\n\n constructor(private utilsService: UtilsService, private colorService: ColorService) {}\n\n ngOnInit() {}\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLW1hbmFnZW1lbnQvYmlsbC12ZXJpZmljYXRpb24tcGlsbC9iaWxsLXZlcmlmaWNhdGlvbi1waWxsLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Level, VerificationConfig, VerificationItem } from 'app/shared/models/bill-verifications.interface';\nimport { BillVerification } from 'app/shared/models/bills.interface';\nimport { BillsVerificationsService } from 'app/shared/services/bills/bills-verifications.service';\n\n@Component({\n selector: 'ga-bill-verification-pill',\n templateUrl: './bill-verification-pill.component.html',\n styleUrls: ['./bill-verification-pill.component.scss', '../../bill-verification.scss'],\n providers: [],\n})\nexport class BillVerificationPillComponent implements OnInit {\n @Input() verifications: BillVerification[] = [];\n @Input() isMultiHeader = false;\n @Input() isPopoverVisible = true;\n\n /**\n * Level of verification to display\n * 0: grey -> no info\n * 1: green -> good\n * 2: orange -> medium\n * 3: red -> bad\n */\n verificationLevel: Level = 0;\n\n verificationsAnalyzed: VerificationItem[] = [];\n\n constructor(private billsVerificationService: BillsVerificationsService) {}\n\n ngOnInit() {\n this.computeGeneralLevel();\n }\n\n /**\n * Compute the general level for the verification.\n * The general level is the one with the highest priority.\n * If two have the same priority level, then it will take the one with the highest level (= verification with the worst result).\n */\n private computeGeneralLevel() {\n if (!this.verifications) {\n return;\n }\n // Find all levels { key: string, level: number, priority: number }[]\n const levels: VerificationItem[] = this.verifications\n .map(verification => {\n // Find definition in map table\n const definition = this.billsVerificationService.getConfigByKey(verification.key);\n\n if (!definition) {\n return null;\n }\n\n if (typeof verification.ratio === 'number') {\n verification.ratio = Math.round(verification.ratio * 1e1) / 1e1;\n }\n // Get corresponding entry\n const results: VerificationItem[] = definition.items\n .reduce((memo: VerificationItem[], e) => {\n const res = e.validate(verification);\n // Only keep matching results\n if (res === true) {\n memo.push({\n key: verification.key,\n level: e.level,\n priority: e.priority,\n message: definition.message,\n value: definition.valueMsg(verification),\n elements: definition.elements(verification),\n });\n }\n return memo;\n // Sort by priority if multiple, should not happen.\n }, [])\n .sort((a, b) => b.priority - a.priority);\n // If nothing match, set a not verified option.\n if (!results.length) {\n const noInfoItem: VerificationItem = {\n key: verification.key,\n level: 0,\n priority: 0,\n message: definition.message,\n value: definition.valueMsg(verification),\n elements: definition.elements(verification),\n };\n return noInfoItem;\n }\n return results[0];\n })\n .filter(x => x);\n // Sort by max priorities and worst first\n levels.sort((a, b) => {\n if (a.priority !== b.priority) {\n return b.priority - a.priority;\n }\n return b.level - a.level;\n });\n // Get item with max priority and worst.\n // Set as the global verification level\n if (levels.length) {\n const worstVerification = levels[0];\n this.verificationLevel = worstVerification.level;\n this.verificationsAnalyzed = levels;\n } else {\n this.verificationLevel = 0;\n this.verificationsAnalyzed = [];\n }\n }\n\n get pillColorClass(): string {\n return 'verification-' + this.verificationLevel;\n }\n}\n","export default \".verification__row .verification__message {\\n padding: 9px 30px 0 0;\\n}\\n.verification__row .verification__pill {\\n padding: 9px 0 0 0;\\n}\\n.verification__row:first-child .verification__message {\\n border-top: none;\\n padding: 0 30px 9px 0;\\n}\\n.verification__row:first-child .verification__pill {\\n border-top: none;\\n padding: 0 0 9px 0;\\n}\\n.verification__row .verification__pill {\\n vertical-align: middle;\\n}\\n.verification__row .verification__message__element:not(:last-child) {\\n padding-right: 0.5rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLW1hbmFnZW1lbnQvYmlsbC12ZXJpZmljYXRpb24tcG9wb3Zlci9iaWxsLXZlcmlmaWNhdGlvbi1wb3BvdmVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1tYW5hZ2VtZW50L2JpbGwtdmVyaWZpY2F0aW9uLXBvcG92ZXIvYmlsbC12ZXJpZmljYXRpb24tcG9wb3Zlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHSTtFQUNJLHFCQUFBO0FDRlI7QURLSTtFQUNJLGtCQUFBO0FDSFI7QURPUTtFQUNJLGdCQUFBO0VBQ0EscUJBQUE7QUNMWjtBRFFRO0VBQ0ksZ0JBQUE7RUFDQSxrQkFBQTtBQ05aO0FEVUk7RUFDSSxzQkFBQTtBQ1JSO0FEV0k7RUFDSSxxQkFBQTtBQ1RSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvYmlsbHMvYmlsbHMtbWFuYWdlbWVudC9iaWxsLXZlcmlmaWNhdGlvbi1wb3BvdmVyL2JpbGwtdmVyaWZpY2F0aW9uLXBvcG92ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi52ZXJpZmljYXRpb25fX3JvdyB7XG4gICAgLnZlcmlmaWNhdGlvbl9fbWVzc2FnZSB7XG4gICAgICAgIHBhZGRpbmc6IDlweCAzMHB4IDAgMDtcbiAgICB9XG5cbiAgICAudmVyaWZpY2F0aW9uX19waWxsIHtcbiAgICAgICAgcGFkZGluZzogOXB4IDAgMCAwO1xuICAgIH1cblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAudmVyaWZpY2F0aW9uX19tZXNzYWdlIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDMwcHggOXB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICAudmVyaWZpY2F0aW9uX19waWxsIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAgOXB4IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudmVyaWZpY2F0aW9uX19waWxsIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAudmVyaWZpY2F0aW9uX19tZXNzYWdlX19lbGVtZW50Om5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgfVxufVxuIiwiLnZlcmlmaWNhdGlvbl9fcm93IC52ZXJpZmljYXRpb25fX21lc3NhZ2Uge1xuICBwYWRkaW5nOiA5cHggMzBweCAwIDA7XG59XG4udmVyaWZpY2F0aW9uX19yb3cgLnZlcmlmaWNhdGlvbl9fcGlsbCB7XG4gIHBhZGRpbmc6IDlweCAwIDAgMDtcbn1cbi52ZXJpZmljYXRpb25fX3JvdzpmaXJzdC1jaGlsZCAudmVyaWZpY2F0aW9uX19tZXNzYWdlIHtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbiAgcGFkZGluZzogMCAzMHB4IDlweCAwO1xufVxuLnZlcmlmaWNhdGlvbl9fcm93OmZpcnN0LWNoaWxkIC52ZXJpZmljYXRpb25fX3BpbGwge1xuICBib3JkZXItdG9wOiBub25lO1xuICBwYWRkaW5nOiAwIDAgOXB4IDA7XG59XG4udmVyaWZpY2F0aW9uX19yb3cgLnZlcmlmaWNhdGlvbl9fcGlsbCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4udmVyaWZpY2F0aW9uX19yb3cgLnZlcmlmaWNhdGlvbl9fbWVzc2FnZV9fZWxlbWVudDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { VerificationItem } from 'app/shared/models/bill-verifications.interface';\n\n@Component({\n selector: 'ga-bill-verification-popover',\n templateUrl: './bill-verification-popover.component.html',\n styleUrls: ['./bill-verification-popover.component.scss', '../../bill-verification.scss'],\n})\nexport class BillVerificationPopoverComponent implements OnInit {\n @Input() verifications: VerificationItem[] = [];\n @Input() isMultiHeader = false;\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Get color class for the verification item pill\n * @param {VerificationItem} v - verification item to get the pill color from\n */\n getPillColorClass(v: VerificationItem) {\n return 'verification-' + v.level;\n }\n\n /**\n * Return the message to display when no verification is available.\n * @return {string}\n */\n displayErrorText(): string {\n if (this.isMultiHeader) {\n return 'Il s\\'agit d\\'une facture multisite. Veuillez cliquer sur \"MULTI\" pour accéder aux vérifications des factures individuelles.';\n } else {\n return 'Pas de vérification disponible pour cette facture.';\n }\n }\n}\n","export default \".table__container {\\n overflow-x: auto;\\n}\\n\\n.table {\\n background-color: white;\\n font-size: 12px;\\n color: #607188;\\n}\\n\\n.table--disabled {\\n pointer-events: none;\\n}\\n\\n.table td,\\n.table th {\\n vertical-align: middle;\\n line-height: 1rem;\\n}\\n\\n.table td a {\\n color: inherit;\\n}\\n\\n.table td a.not-clickable:hover {\\n cursor: inherit;\\n}\\n\\n.table td .table-msg {\\n margin-bottom: 0;\\n}\\n\\n.table td .table-msg a {\\n color: #d3bf96;\\n text-decoration: underline;\\n}\\n\\ni {\\n font-size: 1.6em;\\n}\\n\\ni.fa-chevron-right {\\n font-size: 1em;\\n}\\n\\ni:hover {\\n cursor: pointer;\\n color: #d8a63e;\\n}\\n\\n.table__controls i {\\n font-size: 1.15rem;\\n padding-left: 0.5rem;\\n}\\n\\n.text-center {\\n text-align: center;\\n}\\n\\n.table__row:hover,\\n.table__header-download,\\n.table__row__subtotals {\\n background-color: whitesmoke;\\n}\\n\\n.transition {\\n -webkit-transition: all 200ms linear;\\n transition: all 200ms linear;\\n}\\n\\n.asterisk {\\n color: #db4b47;\\n font-size: 1.5em;\\n}\\n\\n.asterisk-msg {\\n font-weight: 400;\\n text-align: end;\\n}\\n\\n.table__col-type-name {\\n border-radius: 50px;\\n background-color: #607188;\\n color: white;\\n padding: 3px 7px;\\n}\\n\\n.table__col-type.table__col-type-multi:hover .table__col-type-name {\\n background-color: #d8a63e;\\n}\\n\\n.table__col-type.table__col-type-multi:hover .fa-chevron-right {\\n color: #d8a63e;\\n}\\n\\n.table__col-type-simple .fa-chevron-right {\\n visibility: hidden;\\n}\\n\\ntd.bill-quantity .bill-quantity-icon {\\n font-size: 1rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLW1hbmFnZW1lbnQvYmlsbHMtbGlzdC9iaWxscy1saXN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9iaWxscy9iaWxscy1tYW5hZ2VtZW50L2JpbGxzLWxpc3QvYmlsbHMtbGlzdC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxnQkFBQTtBQ0ZKOztBREtBO0VBQ0ksdUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0VnQlM7QURsQmI7O0FER0k7RUFDSSxvQkFBQTtBQ0RSOztBRElJOztFQUVJLHNCQUFBO0VBQ0EsaUJBQUE7QUNGUjs7QURNUTtFQUNJLGNBQUE7QUNKWjs7QURPUTtFQUNJLGVBQUE7QUNMWjs7QURRUTtFQUNJLGdCQUFBO0FDTlo7O0FEUVk7RUFDSSxjRTlCTjtFRitCTSwwQkFBQTtBQ05oQjs7QURZQTtFQUNJLGdCQUFBO0FDVEo7O0FEV0E7RUFDSSxjQUFBO0FDUko7O0FEVUE7RUFDSSxlQUFBO0VBQ0EsY0VoQk87QURTWDs7QURXSTtFQUNJLGtCQUFBO0VBQ0Esb0JBQUE7QUNSUjs7QURZQTtFQUNJLGtCQUFBO0FDVEo7O0FEWUE7OztFQUdJLDRCQUFBO0FDVEo7O0FEWUE7RUFFSSxvQ0FBQTtFQUNBLDRCQUFBO0FDVEo7O0FEWUE7RUFDSSxjRXRESTtFRnVESixnQkFBQTtBQ1RKOztBRFdBO0VBQ0ksZ0JBQUE7RUFDQSxlQUFBO0FDUko7O0FEV0E7RUFDSSxtQkFBQTtFQUNBLHlCRTVEUztFRjZEVCxZQUFBO0VBQ0EsZ0JBQUE7QUNSSjs7QURZSTtFQUNJLHlCRTVERztBRG1EWDs7QURZSTtFQUNJLGNFaEVHO0FEc0RYOztBRGNBO0VBQ0ksa0JBQUE7QUNYSjs7QURlSTtFQUNJLGVBQUE7QUNaUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2JpbGxzL2JpbGxzLW1hbmFnZW1lbnQvYmlsbHMtbGlzdC9iaWxscy1saXN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcblxuLnRhYmxlX19jb250YWluZXIge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG59XG5cbi50YWJsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAmLS1kaXNhYmxlZCB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIHRkLFxuICAgIHRoIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFyZW07XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgYS5ub3QtY2xpY2thYmxlOmhvdmVyIHtcbiAgICAgICAgICAgIGN1cnNvcjogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJsZS1tc2cge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRlbmVyZ2llO1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5pIHtcbiAgICBmb250LXNpemU6IDEuNmVtO1xufVxuaS5mYS1jaGV2cm9uLXJpZ2h0IHtcbiAgICBmb250LXNpemU6IDFlbTtcbn1cbmk6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJGZhY3R1cmVzO1xufVxuXG4udGFibGVfX2NvbnRyb2xzIHtcbiAgICBpIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICB9XG59XG5cbi50ZXh0LWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udGFibGVfX3Jvdzpob3Zlcixcbi50YWJsZV9faGVhZGVyLWRvd25sb2FkLFxuLnRhYmxlX19yb3dfX3N1YnRvdGFscyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTtcbn1cblxuLnRyYW5zaXRpb24ge1xuICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDIwMG1zIGxpbmVhcjtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGxpbmVhcjtcbn1cblxuLmFzdGVyaXNrIHtcbiAgICBjb2xvcjogJGVycm9yO1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG59XG4uYXN0ZXJpc2stbXNnIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIHRleHQtYWxpZ246IGVuZDtcbn1cblxuLnRhYmxlX19jb2wtdHlwZS1uYW1lIHtcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAzcHggN3B4O1xufVxuXG4udGFibGVfX2NvbC10eXBlLnRhYmxlX19jb2wtdHlwZS1tdWx0aSB7XG4gICAgJjpob3ZlciAudGFibGVfX2NvbC10eXBlLW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmFjdHVyZXM7XG4gICAgfVxuXG4gICAgJjpob3ZlciAuZmEtY2hldnJvbi1yaWdodCB7XG4gICAgICAgIGNvbG9yOiAkZmFjdHVyZXM7XG4gICAgfVxufVxuXG4udGFibGVfX2NvbC10eXBlLXNpbXBsZSAuZmEtY2hldnJvbi1yaWdodCB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG50ZC5iaWxsLXF1YW50aXR5IHtcbiAgICAuYmlsbC1xdWFudGl0eS1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgIH1cbn1cbiIsIi50YWJsZV9fY29udGFpbmVyIHtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLnRhYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICM2MDcxODg7XG59XG4udGFibGUtLWRpc2FibGVkIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4udGFibGUgdGQsXG4udGFibGUgdGgge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBsaW5lLWhlaWdodDogMXJlbTtcbn1cbi50YWJsZSB0ZCBhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4udGFibGUgdGQgYS5ub3QtY2xpY2thYmxlOmhvdmVyIHtcbiAgY3Vyc29yOiBpbmhlcml0O1xufVxuLnRhYmxlIHRkIC50YWJsZS1tc2cge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLnRhYmxlIHRkIC50YWJsZS1tc2cgYSB7XG4gIGNvbG9yOiAjZDNiZjk2O1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuaSB7XG4gIGZvbnQtc2l6ZTogMS42ZW07XG59XG5cbmkuZmEtY2hldnJvbi1yaWdodCB7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5pOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogI2Q4YTYzZTtcbn1cblxuLnRhYmxlX19jb250cm9scyBpIHtcbiAgZm9udC1zaXplOiAxLjE1cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbn1cblxuLnRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udGFibGVfX3Jvdzpob3Zlcixcbi50YWJsZV9faGVhZGVyLWRvd25sb2FkLFxuLnRhYmxlX19yb3dfX3N1YnRvdGFscyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XG59XG5cbi50cmFuc2l0aW9uIHtcbiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMjAwbXMgbGluZWFyO1xuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG4gIHRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG59XG5cbi5hc3RlcmlzayB7XG4gIGNvbG9yOiAjZGI0YjQ3O1xuICBmb250LXNpemU6IDEuNWVtO1xufVxuXG4uYXN0ZXJpc2stbXNnIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgdGV4dC1hbGlnbjogZW5kO1xufVxuXG4udGFibGVfX2NvbC10eXBlLW5hbWUge1xuICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3MTg4O1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDNweCA3cHg7XG59XG5cbi50YWJsZV9fY29sLXR5cGUudGFibGVfX2NvbC10eXBlLW11bHRpOmhvdmVyIC50YWJsZV9fY29sLXR5cGUtbmFtZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkOGE2M2U7XG59XG4udGFibGVfX2NvbC10eXBlLnRhYmxlX19jb2wtdHlwZS1tdWx0aTpob3ZlciAuZmEtY2hldnJvbi1yaWdodCB7XG4gIGNvbG9yOiAjZDhhNjNlO1xufVxuXG4udGFibGVfX2NvbC10eXBlLXNpbXBsZSAuZmEtY2hldnJvbi1yaWdodCB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxudGQuYmlsbC1xdWFudGl0eSAuYmlsbC1xdWFudGl0eS1pY29uIHtcbiAgZm9udC1zaXplOiAxcmVtO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CollectService } from 'app/pages/collect/collect.service';\nimport { QueryFilter } from 'app/shared/models/bills-contracts-filter.interface';\nimport {\n BillChunkPopulated,\n BillPopulated,\n BillsColumns,\n BillValues,\n BillValuesDisplay,\n SubTotals,\n} from 'app/shared/models/bills.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FeatureToggleService } from 'app/shared/services/feature-toggle/feature-toggle.service';\nimport { UploadService } from 'app/shared/services/files/upload.service';\nimport { NotificationsService } from 'app/shared/services/notifications/notifications.service';\nimport { UserSession } from 'app/shared/services/session/session.interface';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-bills-list',\n templateUrl: './bills-list.component.html',\n styleUrls: ['./bills-list.component.scss'],\n providers: [CollectService],\n})\nexport class BillsListComponent implements OnInit {\n public billsSelectedList: BillPopulated[] = [];\n public readonly exportUrl = '/api/export/excel/bills-listing';\n public isTableDisabled = false;\n private user: UserSession;\n public isCurrentUserAdmin = false;\n\n /**\n * List of bills to display\n */\n private _billsList: BillPopulated[] = [];\n @Input()\n set billsList(list) {\n this.initCollapseMulti(list);\n this._billsList = list;\n this.computeBillsValuesDisplay();\n }\n get billsList() {\n return this._billsList;\n }\n\n /**\n * Enable or not the access to navigate to a page by clicking on a bill in the table\n */\n private _enabledLinkBill = false;\n @Input()\n set enabledLinkBill(enabled) {\n this._enabledLinkBill = enabled;\n }\n get enabledLinkBill() {\n return this._enabledLinkBill;\n }\n\n /**\n * To set category column displaying\n */\n @Input() availableColumns: BillsColumns = {\n category: {\n enabled: true,\n },\n };\n\n /**\n * Message to display when the table is empty. Don't display anything if there is no message.\n */\n @Input() emptyTableMsg: string = null;\n\n /**\n * Used to display loading message\n */\n @Input() isLoading: boolean;\n @Input() filters: QueryFilter;\n\n @Output() billsListChanged = new EventEmitter();\n\n constructor(\n private _utilsService: UtilsService,\n private _uploadService: UploadService,\n private _energyService: EnergyService,\n private _translateService: TranslateService,\n private _sessionService: SessionService,\n private _collectService: CollectService,\n private _notificationsService: NotificationsService,\n private _usersService: UsersService,\n private readonly _featureToggleService: FeatureToggleService\n ) {}\n\n ngOnInit(): void {\n this.user = this._sessionService.getUser();\n if (this._usersService.isAdmin(this.user)) {\n this.isCurrentUserAdmin = true;\n }\n }\n\n public get filtersQueryString(): string {\n if (!this.filters) {\n return '';\n }\n\n let url = `?start=${this.filters.start}&end=${this.filters.end}`;\n url += this.filters.query ? `&query=${this.filters.query}` : '';\n url += this.filters.onlyError ? `&onlyError=${this.filters.onlyError}` : '';\n url += this.filters.includeBranches ? `&includeBranches=${this.filters.includeBranches}` : '';\n url += this.filters.fluids ? `&fluids=${this.filters.fluids}` : '';\n url += this.filters.status ? `&status=${this.filters.status}` : '';\n url += this.filters.providers ? `&providers=${this.filters.providers}` : '';\n url += this.filters.states ? `&states=${this.filters.states}` : '';\n url += this.filters.onlyValidContracts ? `&onlyValidContracts=${this.filters.onlyValidContracts}` : '';\n url += this.filters.routingReferences ? `&routingReferences=${this.filters.routingReferences}` : '';\n url += this.filters.contracts ? `&contracts=${this.filters.contracts}` : '';\n url += this.filters.failedVerifications ? `&failedVerifications=${this.filters.failedVerifications}` : '';\n\n return url;\n }\n\n public get fileName(): string {\n if (!this.filters) {\n return '';\n }\n\n const { name } = this._sessionService.getCompany();\n const fileNameParts = [name];\n\n const { start, end, includeBranches, query, fluids, providers, failedVerifications } = this.filters;\n\n if (start && end) {\n const startDate = moment(start).format('DD-MM-YYYY');\n const endDate = moment(end).format('DD-MM-YYYY');\n fileNameParts.push(`Factures du ${startDate} au ${endDate}`);\n }\n\n if (includeBranches) {\n fileNameParts.push('filiales incluses');\n }\n\n // search - without special characters to avoid issues with file name\n if (query) {\n const cleanedQuery = query.replace(/[^a-zA-Z \\d]/g, '');\n fileNameParts.push(cleanedQuery);\n }\n\n if (fluids && fluids.length) {\n fileNameParts.push(fluids.map(fluid => this._energyService.energyFullText(fluid)).join(' '));\n }\n\n if (providers && providers.length) {\n fileNameParts.push(providers.join(' '));\n }\n\n // Selected controls\n if (failedVerifications && failedVerifications.length > 0) {\n const controls = [\n [\n { keys: ['elec_quantity_cspe', 'elec_amount_htva'], text: \"factures d'électricité en erreur\" },\n {\n keys: ['elec_quantity_cspe'],\n text: \"factures d'électricité en erreur d'extraction des consommations\",\n },\n {\n keys: ['elec_amount_htva'],\n text: \"factures d'électricité en erreur sur la complétude d'extraction des coûts\",\n },\n ],\n [\n { keys: ['gaz_ticgn_quantity', 'gaz_htva_amount'], text: 'factures de gaz en erreur' },\n {\n keys: ['gaz_ticgn_quantity'],\n text: \"factures de gaz en erreur d'extraction des consommations\",\n },\n {\n keys: ['gaz_htva_amount'],\n text: \"factures de gaz en erreur sur la complétude d'extraction des coûts\",\n },\n ],\n ];\n\n controls.forEach(control => {\n const controlSelected = control.find(controlMessage =>\n controlMessage.keys.every(key => failedVerifications.includes(key))\n );\n if (controlSelected) {\n fileNameParts.push(controlSelected.text);\n }\n });\n }\n\n return `${fileNameParts.join(' - ')}.xlsx`;\n }\n\n /**\n * ************ Init data after search ************\n */\n\n initCollapseMulti(newList: BillPopulated[]) {\n newList.forEach(bill => {\n if (bill.multi) {\n const billAlreadyPresent = this.billsList.find(b => b.upload === bill.upload);\n bill.isExpanded = billAlreadyPresent ? billAlreadyPresent.isExpanded : false;\n } else {\n bill.isExpanded = false;\n }\n });\n }\n\n /**\n * Compute bill list with bills values to be displayed\n */\n computeBillsValuesDisplay() {\n this.billsList.forEach(bill => {\n if (bill.multiBillValues) {\n bill.multiBillValuesDisplay = this.getBillValuesDisplay(bill.multiBillValues, bill);\n }\n bill.chunks.forEach(chunk => {\n chunk.valuesDisplay = this.getBillValuesDisplay(chunk.bill.values);\n });\n if (bill.isExpanded) {\n this.computeSubtotalsValuesDisplay(bill);\n }\n });\n }\n\n /**\n * Compute bill subTotalsPerCategory values for display\n * @param {Bill} bill - bill to compute subtotal display from\n */\n private computeSubtotalsValuesDisplay(bill: BillPopulated) {\n bill.subTotalsPerCategory.forEach(subtotal => {\n if (!subtotal.subtotalsDisplay) {\n subtotal.subtotalsDisplay = this.getBillValuesDisplay(subtotal.subtotals);\n }\n });\n }\n\n /**\n * ************ Actions from header row, multi selection --> action ************\n */\n\n /** Called when the selectbox \"all\" is checked or not */\n onClickSelectAll() {\n if (!this.isEveryBillSelected()) {\n this.selectAllBills();\n } else {\n this.deselectAllBills();\n }\n }\n\n /** Add to the selected bills list all the bills currently displayed in the table */\n selectAllBills() {\n this.billsList.forEach(bill => {\n if (!this.isAlreadySelected(bill.upload)) {\n this.billsSelectedList.push(bill);\n }\n });\n }\n\n /** Remove from the selected bills all the bills currently displayed in the list */\n deselectAllBills() {\n this.billsList.forEach(bill => {\n if (this.isAlreadySelected(bill.upload)) {\n const indexAlreadySelected = this.billsSelectedList.findIndex(\n b => b.upload.toString() === bill.upload.toString()\n );\n this.billsSelectedList.splice(indexAlreadySelected, 1);\n }\n });\n }\n\n /** Cursor pointer of some bills are selected */\n getIconCursorClass() {\n return this.hasBillSelected() ? 'cursor-pointer' : '';\n }\n\n /** Returns true if at least one bill is selected */\n hasBillSelected() {\n return this.billsSelectedList && this.billsSelectedList.length;\n }\n\n /** Returns the number of bills selected */\n displayNbBillsSelected() {\n if (this.hasBillSelected()) {\n const count = this.billsSelectedList.length;\n return count.toString() + (count > 1 ? ' factures sélectionnées' : ' facture sélectionnée');\n }\n }\n\n /**\n * ********************** Download **********************\n */\n\n /**\n * Download the selected bills.\n * For those which failed, create a report in a modal with their filenames formated.\n */\n async onDownloadMultiSelection(): Promise {\n this._uploadService.downloadAndReportMulti(this.billsSelectedList);\n }\n\n /**\n * Download the given bill.\n * @param {BillPopulated} bill\n */\n async onSingleDownload(bill: BillPopulated) {\n try {\n this._uploadService.downloadBill(bill);\n } catch (e) {\n const filename = this._uploadService.getFilenameFromBill(bill);\n Swal.fire(\n 'Toutes nos excuses',\n `Le fichier ${filename} est inaccessible pour le moment. Veuillez réessayer ultérieurement.`,\n 'warning'\n );\n }\n }\n\n /**\n * Deletes the given bill and warns user\n * @param {BillPopulated} bill - bill to remove\n */\n async onBillDelete(bill: BillPopulated): Promise {\n const result = await Swal.fire({\n title: 'Êtes-vous sur ?',\n text: '',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Supprimer',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n });\n if (result.value) {\n this.removeBill(bill);\n }\n }\n\n async onBillReUplaod(bill: BillPopulated): Promise {\n const result = await Swal.fire({\n title: 'Êtes-vous sur ?',\n text: '',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Re-extraire',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n });\n if (result.value) {\n this.reUploadBill(bill);\n }\n }\n\n /**\n * Remove a bill\n * @param {BillPopulated} bill - bill to remove\n */\n async removeBill(bill: BillPopulated): Promise {\n this.isTableDisabled = true;\n try {\n const res = await this._collectService.removeFile(bill);\n if (res.code !== 200) {\n throw new Error('remove-file-failed');\n }\n this.billsList = this.billsList.filter(item => item._id !== bill._id);\n this.billsListChanged.emit();\n Swal.fire('Supprimé', 'Le fichier a bien été supprimé.', 'success');\n } catch (err) {\n Swal.fire('Toutes nos excuses', 'Une erreur est survenue lors de la suppression du fichier', 'error');\n }\n this.isTableDisabled = false;\n this._notificationsService.refresh();\n }\n\n /**\n * Re uplaod a bill\n * @param {BillPopulated} bill - bill to re upload\n */\n async reUploadBill(bill: BillPopulated): Promise {\n this.isTableDisabled = true;\n try {\n const res = await this._collectService.reextractFile(bill.upload);\n if (res.code !== 200) {\n throw new Error('re-upload-file-failed');\n }\n this.billsList = this.billsList.filter(item => item._id !== bill._id);\n this.billsListChanged.emit();\n Swal.fire('Re-extrait', 'Le fichier a bien été re-extrait.', 'success');\n } catch (err) {\n Swal.fire('Toutes nos excuses', 'Une erreur est survenue lors de la suppression du fichier', 'error');\n }\n this.isTableDisabled = false;\n this._notificationsService.refresh();\n }\n\n /**\n * ************ Actions on table ************\n */\n\n /**\n * Returns true if the upload id sent is already in the selected bills list. */\n isAlreadySelected(billIdToCompare) {\n return this.billsSelectedList.some(b => b.upload.toString() === billIdToCompare.toString());\n }\n\n /**\n * Returns true if all the bills displayed are selected.\n * @return {boolean}\n */\n isEveryBillSelected() {\n return Boolean(\n this.billsSelectedList.length && this.billsList.every(bill => this.isAlreadySelected(bill.upload))\n );\n }\n\n /**\n * Add the bill to the selected bills list if it's not there remove the bill from the list otherwise\n *\n * @param {BillPopulated} bill\n */\n switchBillSelection(bill: BillPopulated) {\n const indexAlreadySelected = this.billsSelectedList.findIndex(\n b => b.upload.toString() === bill.upload.toString()\n );\n // If the bill was selected --> unselected it\n if (indexAlreadySelected !== -1) {\n this.billsSelectedList.splice(indexAlreadySelected, 1);\n } else {\n this.billsSelectedList.push(bill);\n }\n }\n\n toggleCollapse(bill: BillPopulated) {\n bill.isExpanded = !bill.isExpanded;\n /**\n * On every opening : check is all subTotalsPerCategory are computed for string display\n * If not, compute it. So it only do it once on first opening.\n * It prevents from computing all at init\n */\n if (bill.subTotalsPerCategory && bill.isExpanded) {\n this.computeSubtotalsValuesDisplay(bill);\n }\n }\n\n getCollapseClass(bill: BillPopulated) {\n return bill.isExpanded ? 'fa-rotate-90' : '';\n }\n\n /** Returns MULTI or SIMPLE depending on the bill's type. */\n getType(bill: BillPopulated) {\n return bill.multi ? 'multi' : 'simple';\n }\n\n getTypeClass(bill: BillPopulated) {\n return bill.multi ? 'table__col-type-multi cursor-pointer' : 'table__col-type-simple';\n }\n\n isDisplayingChunks(bill: BillPopulated) {\n return bill.multi && bill.isExpanded;\n }\n\n /**\n * Returns the bill number of the bill / the chunk.\n * The bill must have passed validation. Required fields include: \"chunks.bill\"\n * */\n getBillNumber(bill: BillPopulated, chunk: BillChunkPopulated = null) {\n return !bill.multi\n ? bill.chunks[0] && bill.chunks[0].bill.reference\n : bill.isExpanded && chunk\n ? chunk.bill.reference\n : bill.chunks[0].bill.reference;\n }\n\n /**\n * Returns the routing reference number / vehicle immat of the bill / the chunk / nothing\n * The bill must have passed validation. Required fields include: \"chunks.routingReference\"|\"chunks.vehicle\"\n * @param {Bill} bill\n * @param {BillChunkPopulated|null} chunks\n * @returns {string} routing reference number / vehicle immat of the bill/the chunk / nothing\n * */\n getSourceReference(bill: BillPopulated, chunk: BillChunkPopulated = null): string {\n if (!chunk) {\n if (!bill.multi && bill.chunks[0]) {\n chunk = bill.chunks[0];\n } else {\n return '';\n }\n }\n\n const field = this._energyService.getFluidSource(chunk.fluid);\n\n if (!field) {\n return '';\n }\n\n return !bill.multi\n ? bill.chunks[0] && bill.chunks[0][field].reference\n : bill.isExpanded && chunk\n ? chunk[field].reference\n : '';\n }\n\n /**\n * Returns the property's value for the bill or the chunk\n * @param bill\n * @param property\n */\n getValue(bill: BillPopulated, property: string, chunk: BillChunkPopulated = null) {\n const value = !bill.multi\n ? bill.chunks[0].valuesDisplay[property]\n : bill.isExpanded && chunk\n ? chunk.valuesDisplay[property]\n : bill.multiBillValuesDisplay[property];\n return value;\n }\n\n private getNumberAndUnitToDisplay(value: number, unit: string = '€', type: string = 'money') {\n return typeof value !== 'undefined' && value !== null\n ? this._utilsService.getNumberAndUnitToDisplay(value, unit, type)\n : 'NC';\n }\n\n isValueComputed(bill: BillPopulated, property: string, chunk: BillChunkPopulated = null) {\n const values = !bill.multi\n ? bill.chunks[0].bill.values\n : bill.isExpanded && chunk\n ? chunk.bill.values\n : bill.multiBillValues;\n switch (property) {\n case 'totalHTVA':\n return values.isTotalHTVAComputed;\n case 'totalTVA':\n return values.isTotalTVAComputed;\n case 'totalTTC':\n return values.isTotalTTCComputed;\n default:\n return false;\n }\n }\n\n /** Returns the category for the bill / chunk or \"Multiple\" if there are more than 1. */\n getCategory(bill: BillPopulated, chunk: BillChunkPopulated = null): string {\n if (!bill.multi) {\n return getTextToDisplay(bill.chunks[0].categories);\n } else if (bill.isExpanded && chunk) {\n return getTextToDisplay(chunk.categories);\n }\n\n return '';\n\n function getTextToDisplay(categoriesArray): string {\n return categoriesArray.length > 1 ? 'Multiple' : categoriesArray[0].name;\n }\n }\n\n /**\n * Disable popover display if bill is multi and expanded\n */\n isPopoverVisible(bill: BillPopulated): boolean {\n return bill.multi ? !bill.isExpanded : true;\n }\n\n getVerifications(bill: BillPopulated, chunk: BillChunkPopulated = null) {\n if (bill.multi) {\n return bill.isExpanded && chunk && chunk.verifications ? chunk.verifications : [];\n }\n return bill.chunks[0] && bill.chunks[0].verifications ? bill.chunks[0].verifications : [];\n }\n\n getChunksByIds(billIds: string[], chunksList: BillChunkPopulated[]) {\n return chunksList.filter(chunk => billIds.includes(chunk.bill.id));\n }\n\n getSubtotalValue(subTotal: SubTotals, property: string) {\n return subTotal.subtotalsDisplay ? subTotal.subtotalsDisplay[property] : '-';\n }\n\n /**\n * Get bills values display from bill values\n * @param {BillValues} billValues - bill values to get the data from\n * @param {Bill} bill - bill related to the values. Only used for bill (not chunk computation).\n * @returns {BillValuesDisplay} item with all properties to be displayed\n */\n private getBillValuesDisplay(billValues: BillValues, bill: BillPopulated = null): BillValuesDisplay {\n let quantity: string = null;\n let isMultiFluid = false;\n /**\n * If multi fluid, API set quantity to null,\n * but a null can because no data so we need to distinct both cases\n */\n if (billValues.quantity === null && bill) {\n isMultiFluid = this.isBillMultiFluid(bill);\n }\n if (quantity === null && isMultiFluid) {\n quantity = this._translateService._('multiple');\n } else {\n quantity = this.getNumberAndUnitToDisplay(billValues.quantity, billValues.quantityUnit, 'fluid');\n }\n return {\n totalHTVA: this.getNumberAndUnitToDisplay(billValues.totalHTVA),\n totalTTC: this.getNumberAndUnitToDisplay(billValues.totalTTC),\n totalTVA: this.getNumberAndUnitToDisplay(billValues.totalTVA),\n quantity,\n isMultiFluid,\n };\n }\n\n /**\n * @param {Bill} bill - bill to determine if multi fluide or not\n * @returns {boolean} true if bill is multi fluid, false otherwise\n */\n private isBillMultiFluid(bill: BillPopulated): boolean {\n if (bill) {\n const fluids = {};\n bill.chunks.forEach(chunk => {\n fluids[chunk.fluid] = 1;\n });\n if (Object.keys(fluids).length > 1) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * returns the link to the bills page\n * @returns {string[]}\n */\n getLinkBill(): string[] {\n if (this.enabledLinkBill) {\n return [`/factures`];\n }\n return [];\n }\n\n /**\n * returns the query param of the link to the bills page\n * @param {string} queryValue\n * @returns {<{q?: string}>}\n */\n getQueryParamLinkBill(queryValue: string): { q?: string } {\n if (this.enabledLinkBill) {\n return { q: queryValue };\n }\n return {};\n }\n\n /**\n * @returns {boolean} true if table isn't empty\n */\n public hasBills(): boolean {\n return Boolean(this.billsList && this.billsList.length);\n }\n\n public isReExtractActivated(): boolean {\n return this._featureToggleService.isEnabled('re-extraction-on-history.newButton');\n }\n}\n","export default \".form-group {\\n margin: 0;\\n}\\n\\n.campaign__search-row {\\n margin-top: 1rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhbXBhaWducy9jYW1wYWlnbi1jcmVhdGUvY2FtcGFpZ24tY3JlYXRlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jYW1wYWlnbnMvY2FtcGFpZ24tY3JlYXRlL2NhbXBhaWduLWNyZWF0ZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFNBQUE7QUNDSjs7QURFQTtFQUNJLGdCQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jYW1wYWlnbnMvY2FtcGFpZ24tY3JlYXRlL2NhbXBhaWduLWNyZWF0ZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5jYW1wYWlnbl9fc2VhcmNoLXJvdyB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbn1cbiIsIi5mb3JtLWdyb3VwIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY2FtcGFpZ25fX3NlYXJjaC1yb3cge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufSJdfQ== */\"","import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n// services\nimport { CampaignsService } from 'app/shared/services/campaigns/campaigns.service';\n\n// interfaces\nimport {\n OptionValueGroup,\n QueryFilterRoutingRef,\n} from 'app/shared/components/filters/scope-filter/scope-filter.interface';\n\n// components\nimport { RoutingReferenceScopeFilterComponent } from 'app/shared/components/filters/scope-filter/routing-reference/routing-reference-scope-filter.component';\nimport { Campaign } from 'app/shared/models/campaign.interface';\nimport { CampaignInputs, CampaignPeriod, CampaignScope, CampaignValues } from './campaign.interface';\n\n@Component({\n selector: 'ga-campaign-create',\n templateUrl: './campaign-create.component.html',\n styleUrls: ['./campaign-create.component.scss'],\n providers: [],\n})\nexport class CampaignCreateComponent implements OnInit {\n @Output() campaignCreated: EventEmitter = new EventEmitter();\n\n /**\n * Filter elelements\n */\n private filter: QueryFilterRoutingRef = null;\n\n /**\n * Reference period of the campaign, computed from filter selection\n */\n private referencePeriod: { start: moment.Moment; end: moment.Moment } = { start: null, end: null };\n\n /**\n * Available periods for the campaign\n */\n public availableCampaignPeriods: CampaignPeriod[] = [];\n\n /**\n * Campaign values selected\n */\n private campaignValues: CampaignValues = {\n name: '',\n goal: 0,\n period: null,\n };\n\n /**\n * Indicate that the initialization of all elements linked to the filter is done and ready for display\n * Useful here for periods: need to display them once everything is computed to respect angular lifecycle\n */\n public isFilterReady = false;\n\n /**\n * Filter child component\n */\n @ViewChild(RoutingReferenceScopeFilterComponent, { static: true })\n scopeFilter: RoutingReferenceScopeFilterComponent;\n\n /**\n * Indicate that the form has been submitted. Used to set color in fields set incorreclty.\n */\n private formValidated = false;\n\n constructor(private campaignsService: CampaignsService) {}\n\n ngOnInit() {}\n\n /**\n * Update campaign's scope with the new filters selected\n * @param {QueryFilterRoutingRef} filter\n */\n public updateFilter(filter: QueryFilterRoutingRef): void {\n this.filter = filter;\n\n this.computeReferencePeriod();\n this.computeAvailablesCampaignPeriods();\n }\n\n /**\n * Update campaign's scope for the first time.\n * @param {QueryFilterRoutingRef} filter - filters from the data scope filter component.\n */\n public onAfterFilterInit(filter: QueryFilterRoutingRef): void {\n this.updateFilter(filter);\n this.isFilterReady = true;\n }\n\n /**\n * Compute possible periods for a campaign\n */\n private computeAvailablesCampaignPeriods(): void {\n this.availableCampaignPeriods = [];\n\n const periodRef = this.referencePeriod;\n\n if (!periodRef || !periodRef.start || !periodRef.end) {\n return;\n }\n\n /**\n * Goal : [{start: Date, end: Date}]\n * start = dateStart + x Years\n * end = dateEnd + x Years\n * xMin <= x <= xMax\n * xMin: Number of years between the reference period start and now.\n * xMin = |(dateStart - now()).years()|\n * xMax = xMin + 3\n * Cond :\n * - start > dateEnd\n * - end > now\n */\n const now = moment();\n const years = moment.duration(now.diff(periodRef.start)).asYears();\n const xMin = Math.floor(years);\n const xMax = xMin + 3; // For now 3 = up to 3 proposals\n\n for (let i = xMin; i < xMax; i++) {\n const end = periodRef.end.clone().add(i, 'year');\n const start = periodRef.start.clone().add(i, 'year');\n\n if (start.isAfter(periodRef.end) && end.isAfter(now)) {\n const displayName = `De ${start.format('MMMM YYYY')} à ${end.format('MMMM YYYY')}`;\n const period = {\n start: start.toDate(),\n end: end.toDate(),\n displayName,\n };\n this.availableCampaignPeriods.push(period);\n }\n }\n /**\n * After calaculating, select the first period available.\n * Calculating happens when filter change, so when references changes.\n */\n this.updateCampaignPeriod(0);\n }\n\n /**\n * Get the period reference display text.\n */\n get referencePeriodDisplay(): string {\n if (this.referencePeriod && this.referencePeriod.start && this.referencePeriod.end) {\n return `De ${this.referencePeriod.start.format('MMMM YYYY')} à ${this.referencePeriod.end.format(\n 'MMMM YYYY'\n )}`;\n } else {\n return 'Pas de période sélectionnée';\n }\n }\n\n /**\n * Compute the campaign's reference period. Should not exceed one year.\n */\n private computeReferencePeriod(): void {\n if (this.filter && this.filter.dateStart && this.filter.dateEnd) {\n const start = moment(this.filter.dateStart, 'YYYY-MM').startOf('month');\n let end = moment(this.filter.dateEnd, 'YYYY-MM').endOf('month');\n const ms = end.diff(start);\n const d = moment.duration(ms);\n if (d.asYears() > 1) {\n // Get end of year (not start of next year) (ie. 01/2018-01/2019 => 01/2018-12/2018)\n end = start\n .clone()\n .add(1, 'year')\n .subtract(1, 'day')\n .endOf('month');\n }\n this.referencePeriod = { start, end };\n } else {\n this.referencePeriod = { start: null, end: null };\n }\n }\n\n /**\n * Create a campaign\n */\n public async createCampaign(): Promise {\n this.formValidated = true;\n const s = !this.isSearchDisabled();\n const n = Boolean(this.campaignValues.name);\n const g = Boolean(this.campaignValues.goal);\n const p = this.hasCampaignPeriod();\n const r = this.hasReferencePeriod();\n\n if (s && n && g && p && r) {\n const campaign: CampaignInputs = {\n scope: this.getScopeFromFilter(),\n reference: {\n dateStart: this.referencePeriod.start.toISOString(),\n dateEnd: this.referencePeriod.end.toISOString(),\n },\n goal: this.campaignValues.goal,\n dateStart: this.campaignValues.period.start.toISOString(),\n name: this.campaignValues.name,\n /** @TODO filter no longer has a unique company, but a string containing multiple companies separated by commas\n /* @TODO ==> for the time being, use the first company from the list\n /* @TODO ==> In the future : Modify campaign inputs to receive multiple companies */\n company: this.filter.companies.split(',')[0] || null,\n };\n await this.saveCampaign(campaign);\n }\n }\n\n /**\n * Returns the scope of the campaign to save in the campaign document\n * @returns {CampaignScope} scopeFilter\n */\n private getScopeFromFilter(): CampaignScope {\n return {\n customFilter: this.filter.customFilter ? this.filter.customFilter : null,\n energyTypes: this.filter.energies ? this.filter.energies.split(',') : [],\n sites: this.filter.sites ? this.filter.sites.split(',') : [],\n regions: this.filter.regions ? this.filter.regions.split(',') : [],\n routingReferences: this.filter.routingreferences ? this.filter.routingreferences : null,\n categories: this.filter.categories ? this.filter.categories.split(',') : [],\n };\n }\n\n /**\n * Save the given campaign.\n * @param {CampaignInputs} campaign - campaign obejct to save\n */\n private async saveCampaign(campaign: CampaignInputs): Promise {\n try {\n const result = await this.campaignsService.saveCampaign(campaign);\n this.campaignCreated.emit(result.data);\n } catch (error) {\n this.handleErrorMessage(error);\n }\n }\n\n /**\n * Update campaign's name\n * @param {string} value\n */\n public updateName(value: string): void {\n this.campaignValues.name = value;\n }\n\n /**\n * Update campaign's goal value\n * @param {string|number} value\n */\n public updateGoal(value: string | number): void {\n if (typeof value === 'number') {\n this.campaignValues.goal = value;\n } else if (typeof value === 'string') {\n this.campaignValues.goal = Number.parseFloat(value);\n }\n }\n\n /**\n * Update campaign's action period.\n * @param {string|number} value - index of the period selected in the availableCampaignPeriods array.\n */\n public updateCampaignPeriod(value: string | number): void {\n let index = 0;\n if (typeof value === 'number') {\n index = value;\n } else if (typeof value === 'string') {\n index = Number.parseFloat(value);\n }\n\n if (this.availableCampaignPeriods && this.availableCampaignPeriods[index]) {\n this.campaignValues.period = {\n start: this.availableCampaignPeriods[index].start,\n end: this.availableCampaignPeriods[index].end,\n };\n }\n }\n\n /**\n * Get campaign's name input class\n */\n get campaignNameInputClass(): string {\n if (!this.formValidated) {\n return '';\n }\n return this.campaignValues.name ? '' : 'is-invalid';\n }\n\n /**\n * Get the campaign's goal input class\n */\n get campaignGoalInputClass(): string {\n if (!this.formValidated) {\n return '';\n }\n return this.campaignValues.goal ? '' : 'is-invalid';\n }\n\n /**\n * Is the search disabled or not. Depending on the reference period, campaign period and scope (filters).\n * @returns {boolean} true is search button need to be disabled, false otherwise.\n */\n public isSearchDisabled(): boolean {\n const hasReferencePeriod = this.hasReferencePeriod();\n\n const hasCampaignPeriod = this.hasCampaignPeriod();\n\n const hasDataForCurrentResearch = this.hasFiltersElementInFilter();\n const hasEnergies = this.hasFluidsInFilter();\n\n return !(hasDataForCurrentResearch && hasEnergies && hasReferencePeriod && hasCampaignPeriod);\n }\n\n /**\n * @returns true if reference period defined, false otherwise.\n */\n private hasReferencePeriod(): boolean {\n return Boolean(this.referencePeriod && this.referencePeriod.start && this.referencePeriod.end);\n }\n\n /**\n * @returns true is campaign's period defined, false otherwise.\n */\n private hasCampaignPeriod(): boolean {\n return Boolean(\n this.campaignValues.period && this.campaignValues.period.start && this.campaignValues.period.end\n );\n }\n\n /**\n * @returns true is scope has at leat one fluid selected, false otherwise.\n */\n private hasFluidsInFilter(): boolean {\n if (!this.filter || !this.filter.energies) {\n return false;\n }\n return this.filter.energies.split(',').length > 0;\n }\n\n /**\n * Returns true if tags are selected for the filter selected, unlessthe filter selected is \"all the sites\".\n * @return {boolean}\n */\n private hasFiltersElementInFilter(): boolean {\n const filterSelected = this.getMainFilterSelected();\n if (!filterSelected) {\n return true;\n }\n const value = filterSelected.value;\n if (value === 'custom-filters') {\n return Boolean(this.filter.customFilter);\n }\n\n if (value !== 'all') {\n if (['routingReferences'].includes(value)) {\n const valueLowerCase = value.toLocaleLowerCase();\n return Boolean(this.filter[valueLowerCase] && this.filter[valueLowerCase].length);\n } else {\n return Boolean(this.filter[value] && this.filter[value].length);\n }\n }\n\n return true;\n }\n\n /**\n * Returns the elements selected in the top filter part\n * @returns {OptionValueGroup} filter's options selected\n */\n private getMainFilterSelected(): OptionValueGroup {\n if (this.scopeFilter) {\n return this.scopeFilter.getMainFilterSelected();\n }\n return null;\n }\n\n /**\n * Fire a modal to explain the specfic error\n * @param {object} error\n * @param {string} error.errorCode used to select the message displayed\n */\n private handleErrorMessage(error): void {\n const messages = {\n error_campaign_already_exists: {\n title: 'La campagne existe déjà.',\n message: 'Impossiblde de créer la campagne car une campagne existe déjà avec ce nom.',\n },\n };\n if (error && error.errorCode && messages[error.errorCode]) {\n Swal.fire(messages[error.errorCode].title, messages[error.errorCode].message, 'error');\n } else {\n Swal.fire(\n 'Impossible de créer la campagne',\n 'Une erreur est survenue lors de la création de votre campagne. Veuillez réessayer ultérieurement.',\n 'error'\n );\n }\n }\n}\n","export default \".svg-icon {\\n background-color: black;\\n}\\n\\n.tile__container {\\n margin-bottom: 10px;\\n}\\n\\n.icon__container {\\n border-top-left-radius: 3px;\\n border-bottom-left-radius: 3px;\\n padding: 10px 20px;\\n height: 100%;\\n}\\n\\n.text__container {\\n color: white;\\n border-top-right-radius: 3px;\\n border-bottom-right-radius: 3px;\\n padding: 10px;\\n text-align: center;\\n min-height: 6rem;\\n}\\n\\n.text__container .text__value {\\n font-size: 1.5rem;\\n font-weight: bold;\\n}\\n\\n.text__container .text__message {\\n font-size: 0.875rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhbXBhaWducy9jYW1wYWlnbi1nb2FsLXJlY2FwL2NhbXBhaWduLWdvYWwtcmVjYXAuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhbXBhaWducy9jYW1wYWlnbi1nb2FsLXJlY2FwL2NhbXBhaWduLWdvYWwtcmVjYXAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7RUFDSSx1QkFBQTtBQ0pKOztBRE9BO0VBQ0ksbUJBQUE7QUNKSjs7QURPQTtFQUNJLDJCQWJXO0VBY1gsOEJBZFc7RUFlWCxrQkFBQTtFQUNBLFlBQUE7QUNKSjs7QURPQTtFQUNJLFlBQUE7RUFDQSw0QkFyQlc7RUFzQlgsK0JBdEJXO0VBdUJYLGFBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0FDSko7O0FETUk7RUFDSSxpQkExQlU7RUEyQlYsaUJBQUE7QUNKUjs7QURPSTtFQUNJLG1CQWhDUztBQzJCakIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jYW1wYWlnbnMvY2FtcGFpZ24tZ29hbC1yZWNhcC9jYW1wYWlnbi1nb2FsLXJlY2FwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbiRib3JkZXJSYWRpdXM6IDNweDtcbiR0ZXh0LWZvbnQtc2l6ZTogMC44NzVyZW07XG4kdGl0bGUtZm9udC1zaXplOiAxLjVyZW07XG5cbi5zdmctaWNvbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG59XG5cbi50aWxlX19jb250YWluZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5pY29uX19jb250YWluZXIge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJGJvcmRlclJhZGl1cztcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4udGV4dF9fY29udGFpbmVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogNnJlbTtcblxuICAgIC50ZXh0X192YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHRpdGxlLWZvbnQtc2l6ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgLnRleHRfX21lc3NhZ2Uge1xuICAgICAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcbiAgICB9XG59XG4iLCIuc3ZnLWljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbn1cblxuLnRpbGVfX2NvbnRhaW5lciB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5pY29uX19jb250YWluZXIge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDtcbiAgcGFkZGluZzogMTBweCAyMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi50ZXh0X19jb250YWluZXIge1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWluLWhlaWdodDogNnJlbTtcbn1cbi50ZXh0X19jb250YWluZXIgLnRleHRfX3ZhbHVlIHtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLnRleHRfX2NvbnRhaW5lciAudGV4dF9fbWVzc2FnZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { GoalItem } from 'app/shared/models/campaign.interface';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\n@Component({\n selector: 'ga-campaign-goal-recap',\n templateUrl: './campaign-goal-recap.component.html',\n styleUrls: ['./campaign-goal-recap.component.scss'],\n providers: [],\n})\nexport class CampaignGoalRecapComponent implements OnInit {\n private _goalItem: GoalItem;\n @Input()\n set goalItem(goalItem: GoalItem) {\n this._goalItem = goalItem;\n this.init();\n }\n get goalItem(): GoalItem {\n return this._goalItem;\n }\n\n @Input() isReached = false;\n\n private _multipleFluids = false;\n @Input()\n set multipleFluids(multipleFluids: boolean) {\n this._multipleFluids = multipleFluids;\n this.setUnit();\n }\n get multipleFluids(): boolean {\n return this._multipleFluids;\n }\n\n tiles = [\n {\n icon: 'chart-percent-icon',\n unit: '%',\n message: 'Réduction en %',\n value: '-',\n },\n {\n icon: 'chart-performance-icon',\n unit: '',\n message: 'Réduction en kWh',\n value: '-',\n },\n {\n icon: 'co2-icon',\n unit: '',\n message: 'Réduction en T CO2',\n value: '-',\n },\n ];\n\n backgroundColorIcon = '#909ea0';\n backgroundColorText = '#7b8a8a';\n\n constructor(private colorService: ColorService, private utilService: UtilsService) {}\n\n ngOnInit() {\n let property = 'ttc';\n\n if (this.isReached) {\n property = 'goal_reached';\n }\n\n this.backgroundColorIcon = this.colorService.getRgbColor(property);\n this.backgroundColorText = this.colorService.getSecondRgbColor(property);\n }\n\n private init() {\n this.tiles[0].value = this.utilService.getNumberAndUnitToDisplay(\n this.goalItem.consumptionPercentage,\n null,\n 'percent'\n );\n this.tiles[1].value = this.utilService.getNumberAndUnitToDisplay(\n this.goalItem.consumptionReduction,\n null,\n 'fluid'\n );\n this.tiles[2].value = this.utilService.getNumberAndUnitToDisplay(this.goalItem.co2Reduction, null, 'fluid');\n }\n\n private setUnit() {\n this.tiles[1].message = this.multipleFluids ? 'Réduction en kWhep' : 'Réduction en kWh';\n }\n}\n","export default \".goal__title {\\n text-align: center;\\n font-size: 0.875rem;\\n margin: 10px;\\n font-weight: bold;\\n text-transform: uppercase;\\n}\\n\\n.goal__recap {\\n margin-top: 20px;\\n}\\n\\n.goal__recap div:first-child {\\n margin-right: 20px;\\n}\\n\\n.goal__recap div:not(:first-child) {\\n margin-left: 20px;\\n}\\n\\n.campaign__titles {\\n margin-top: 25px;\\n}\\n\\n.campaign__overview-table {\\n font-size: 0.875rem;\\n border-collapse: separate;\\n border-spacing: 10px 0.5rem;\\n}\\n\\n.campaign__th--perimeter {\\n vertical-align: baseline;\\n}\\n\\n.delete__btn, .delete__btn:hover, .delete__btn:focus, .delete__btn:active {\\n background-color: #db4b47;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhbXBhaWducy9jYW1wYWlnbi1vdmVydmlldy9jYW1wYWlnbi1vdmVydmlldy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2FtcGFpZ25zL2NhbXBhaWduLW92ZXJ2aWV3L2NhbXBhaWduLW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTtFQUNJLGtCQUFBO0VBQ0EsbUJBSmE7RUFLYixZQUFBO0VBQ0EsaUJBQUE7RUFDQSx5QkFBQTtBQ0hKOztBRE1BO0VBQ0ksZ0JBQUE7QUNISjs7QURNQTtFQUNJLGtCQUFBO0FDSEo7O0FETUE7RUFDSSxpQkFBQTtBQ0hKOztBRE1BO0VBQ0ksZ0JBQUE7QUNISjs7QURNQTtFQUNJLG1CQTNCYTtFQTRCYix5QkFBQTtFQUNBLDJCQUFBO0FDSEo7O0FETUE7RUFDSSx3QkFBQTtBQ0hKOztBRE9JO0VBSUkseUJFbEJBO0FEV1IiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jYW1wYWlnbnMvY2FtcGFpZ24tb3ZlcnZpZXcvY2FtcGFpZ24tb3ZlcnZpZXcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4kdGV4dC1mb250LXNpemU6IDAuODc1cmVtO1xuXG4uZ29hbF9fdGl0bGUge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcbiAgICBtYXJnaW46IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmdvYWxfX3JlY2FwIHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xufVxuXG4uZ29hbF9fcmVjYXAgZGl2OmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5nb2FsX19yZWNhcCBkaXY6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uY2FtcGFpZ25fX3RpdGxlcyB7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbn1cblxuLmNhbXBhaWduX19vdmVydmlldy10YWJsZSB7XG4gICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgICBib3JkZXItc3BhY2luZzogMTBweCAwLjVyZW07XG59XG5cbi5jYW1wYWlnbl9fdGgtLXBlcmltZXRlciB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4uZGVsZXRlX19idG4ge1xuICAgICYsXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFkbWluO1xuICAgIH1cbn1cbiIsIi5nb2FsX190aXRsZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbWFyZ2luOiAxMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmdvYWxfX3JlY2FwIHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cblxuLmdvYWxfX3JlY2FwIGRpdjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi1yaWdodDogMjBweDtcbn1cblxuLmdvYWxfX3JlY2FwIGRpdjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uY2FtcGFpZ25fX3RpdGxlcyB7XG4gIG1hcmdpbi10b3A6IDI1cHg7XG59XG5cbi5jYW1wYWlnbl9fb3ZlcnZpZXctdGFibGUge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICBib3JkZXItc3BhY2luZzogMTBweCAwLjVyZW07XG59XG5cbi5jYW1wYWlnbl9fdGgtLXBlcmltZXRlciB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLmRlbGV0ZV9fYnRuLCAuZGVsZXRlX19idG46aG92ZXIsIC5kZWxldGVfX2J0bjpmb2N1cywgLmRlbGV0ZV9fYnRuOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport { Campaign } from 'app/shared/models/campaign.interface';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-campaign-overview',\n templateUrl: './campaign-overview.component.html',\n styleUrls: ['./campaign-overview.component.scss'],\n providers: [],\n})\nexport class CampaignOverviewComponent implements OnInit {\n @Input() campaign: Campaign;\n\n /**\n * Event emitter to ask for campaign delete.\n * Value passed is the campaign id\n */\n @Output() deleteCampaign: EventEmitter = new EventEmitter();\n\n constructor(private usersService: UsersService) {}\n\n ngOnInit() {}\n\n get campaignDates(): string {\n if (!this.campaign) {\n return 'NC';\n }\n const start = moment(this.campaign.campaignStart);\n const end = moment(this.campaign.campaignEnd);\n return `De ${start.format('MMMM YYYY')} à ${end.format('MMMM YYYY')}`;\n }\n\n get campaignReferenceDates(): string {\n if (!this.campaign) {\n return 'NC';\n }\n const start = moment(this.campaign.referencePeriod.dateStart);\n const end = moment(this.campaign.referencePeriod.dateEnd);\n return `De ${start.format('MMMM YYYY')} à ${end.format('MMMM YYYY')}`;\n }\n\n get campaignHasMultipleFluids(): boolean {\n if (!this.campaign || !this.campaign.scope || !this.campaign.scope.energyTypes) {\n return false;\n }\n return this.campaign.scope.energyTypes.length > 1;\n }\n\n /**\n * Open confirmation modal to delete campaign.\n * If confirmed, emit delete event with campaign id.\n */\n async confirmCampaignDelete(): Promise {\n const result = await Swal.fire({\n title: 'Êtes-vous sûr(e) ?',\n text: 'Une fois supprimée, la campagne ne peut plus être récupérée!',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, supprimer!',\n cancelButtonText: 'Annuler',\n });\n if (result.value) {\n this.deleteCampaign.emit(this.campaign._id);\n }\n }\n\n get displayDeleteButton(): boolean {\n return this.usersService.isSessionUserAtLeast(UserTypes.USER_ADMIN);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhbXBhaWducy9jYW1wYWlnbi12aXN1YWxpemF0aW9uL2NhbXBhaWduLXZpc3VhbGl6YXRpb24uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Campaign } from 'app/shared/models/campaign.interface';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\nimport * as moment from 'moment';\n\ninterface CampaignMergedData {\n date: string; // Date at ISO format\n unit: string;\n fluids: any; // Object that must contain campaignGoal\n}\n\n@Component({\n selector: 'ga-campaign-visualization',\n templateUrl: './campaign-visualization.component.html',\n styleUrls: ['./campaign-visualization.component.scss'],\n providers: [],\n})\nexport class CampaignVisualizationComponent implements OnInit {\n private _campaign: Campaign;\n\n @Input()\n set campaign(campaign: Campaign) {\n this._campaign = campaign;\n this.init();\n }\n get campaign(): Campaign {\n return this._campaign;\n }\n\n chartProperties: any = {\n datasets: [],\n colors: null,\n labels: [],\n options: null,\n legends: [],\n minHeight: 250,\n };\n\n constructor(private chartService: ChartService) {}\n\n ngOnInit() {}\n\n private init() {\n const data = this.mergeCampaignData();\n this.handleChartDatasets(data);\n this.handleChartDesign();\n }\n\n /**\n * Handle chart design : point style, options, tooltips, colors, legends and tooltips energies.\n */\n private handleChartDesign() {\n const goalDS = this.chartProperties.datasets.find(x => x.label === 'campaignGoal');\n if (goalDS) {\n goalDS.pointStyle = this.goalPointImage;\n }\n this.chartProperties.options = this.chartService.getConfig('stacked', {\n tooltips: this.chartService.getTooltipHTMLConfig('stack', null),\n });\n const energyLabels = this.chartProperties.datasets.map(x => x.label);\n this.chartProperties.colors = this.chartService.getBarChartColors(energyLabels);\n\n this.chartProperties.legends = [];\n // Strictly superior than 2, because there is the goal dataset\n const hasMultipleEnergies = this.chartProperties.datasets.length > 2;\n this.chartProperties.datasets.forEach(dataset => {\n if (hasMultipleEnergies) {\n dataset.unit = 'kWhep';\n } else {\n dataset.unit = 'kWh';\n }\n this.chartProperties.legends.push(this.chartService.getLegend(dataset.label));\n });\n }\n\n /**\n * Compute campaign data to get data that can be easily exploited to create charts datasets\n * @returns {CampaignMergedData[]} campaign data merged by date with fluids consumption and goal targeted.\n */\n private mergeCampaignData(): CampaignMergedData[] {\n const data = this.campaign.results;\n /**\n * Blocs is an array as following :\n * {\n * date: Date,\n * unit: string\n * fluids: {\n * campaignGoal: number\n * elec: number,\n * gaz: number,\n * ...\n * }\n * }[]\n */\n const blocs: CampaignMergedData[] = [];\n\n // Search or create a bloc by date\n // Maybe instead of strictcly comparing date, we should compare only year and month.\n const searchBlocOrCreate = result => {\n let date = result.dateStart;\n if (typeof date === 'number') {\n date = moment(date).toISOString();\n }\n let bloc = blocs.find(x => x.date === date);\n if (!bloc) {\n bloc = {\n date,\n unit: result.values[0] ? result.values[0].unit : 'NC',\n fluids: {\n campaignGoal: null,\n },\n };\n blocs.push(bloc);\n }\n return bloc;\n };\n // First we handle the goal, so it will be always first in lists so the first dataset.\n // It's important to have the goal as the first dataset to have points over bars\n // We add values, so fluids goals already merged and fluids goals not merged are accepted.\n data.goal.forEach(result => {\n const bloc = searchBlocOrCreate(result);\n if (bloc.fluids.campaignGoal === null) {\n bloc.fluids.campaignGoal = 0;\n }\n bloc.fluids.campaignGoal += result.values.reduce((memo, current) => {\n return (memo += current.quantity);\n }, 0);\n });\n\n // Add fluids values that have the same date.\n const extractDataArray = dataConso => {\n dataConso.forEach(result => {\n const bloc = searchBlocOrCreate(result);\n result.values.forEach(value => {\n if (!bloc.fluids[value.energyType]) {\n bloc.fluids[value.energyType] = 0;\n }\n bloc.fluids[value.energyType] += value.quantity;\n });\n });\n };\n extractDataArray(data.reference);\n extractDataArray(data.reached);\n\n // Sort by date ascending\n blocs.sort((a, b) => {\n return moment(a.date)\n .utc()\n .diff(moment(b.date).utc());\n });\n\n return blocs;\n }\n\n /**\n * Handle chart datasets from merged data.\n * A merged data is all values for a given date (goal + fluids data)\n * @param {CampaignMergedData[]} data - array of merged data, sorted by date ascending.\n */\n private handleChartDatasets(data: CampaignMergedData[]) {\n const labels = [];\n const fluidsData: Array<{\n label: string;\n data: number[];\n }> = [];\n // Get all fluids available (including campaignGoal)\n const fluids = data.reduce((memo, d) => {\n Object.keys(d.fluids).forEach(fluid => {\n if (!memo.includes(fluid)) {\n memo.push(fluid);\n }\n });\n return memo;\n }, []);\n // For each data (= each date), get the label and create/populate datasets data values\n data.forEach(bloc => {\n labels.push(moment(bloc.date).format('MM-YYYY'));\n fluids.forEach(fluid => {\n let fluidData = fluidsData.find(x => x.label === fluid);\n if (!fluidData) {\n fluidData = {\n label: fluid,\n data: [],\n };\n fluidsData.push(fluidData);\n }\n if (bloc.fluids[fluid]) {\n fluidData.data.push(bloc.fluids[fluid]);\n } else {\n fluidData.data.push(null);\n }\n });\n });\n this.chartProperties.datasets.splice(0, this.chartProperties.datasets.length);\n // Create and add the datasets to the chart\n fluidsData.forEach(fluidData => {\n this.addChartDataset(fluidData);\n });\n this.chartProperties.labels = labels;\n }\n\n /**\n * Creates dataset for chart depending on the fluid data type.\n * Stacked bar datasets for fluids and line dataset for campaignGoal.\n */\n private addChartDataset(fluidData: { label: string; data: number[] }) {\n let dataset = null;\n if (fluidData && fluidData.label !== 'campaignGoal') {\n dataset = {\n type: 'bar',\n label: fluidData.label,\n data: fluidData.data,\n stack: 'stack-0',\n unit: 'kWh',\n };\n } else if (fluidData) {\n dataset = {\n type: 'line',\n label: fluidData.label,\n data: fluidData.data,\n fill: false,\n showLine: false,\n pointStyle: 'circle',\n unit: 'kWh',\n };\n }\n if (dataset) {\n this.chartProperties.datasets.push(dataset);\n }\n }\n\n /**\n * Get the point image. Invisible at first (size 0x0)\n * then set size preserving ratio.\n */\n get goalPointImage() {\n const img = new Image(0, 0);\n img.src = '/assets/img/icons/level-symbol--orange.png';\n\n img.onload = () => {\n const ratio = img.naturalWidth / img.naturalHeight;\n const w = 25;\n const h = Math.floor(w / ratio);\n\n img.width = w;\n img.height = h;\n };\n return img;\n }\n\n get hasData() {\n return Boolean(\n this.campaign &&\n this.chartProperties &&\n this.chartProperties.datasets &&\n this.chartProperties.datasets.length &&\n this.chartProperties.datasets.some(x => x.data && x.data.length)\n );\n }\n}\n","export default \".campaign__title {\\n margin-bottom: 1rem;\\n cursor: pointer;\\n}\\n\\n.rotate {\\n -webkit-transition: all 200ms linear;\\n transition: all 200ms linear;\\n}\\n\\n.campaigns__list-col {\\n overflow-y: hidden;\\n}\\n\\nul.campaigns__list > li {\\n cursor: pointer;\\n}\\n\\n.menu-icon {\\n font-size: 1.5rem;\\n margin-bottom: 1rem;\\n}\\n\\n.campaign-nav__container {\\n min-height: 50vh;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhbXBhaWducy9jYW1wYWlnbnMtbmF2L2NhbXBhaWducy1uYXYuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhbXBhaWducy9jYW1wYWlnbnMtbmF2L2NhbXBhaWducy1uYXYuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxtQkFBQTtFQUNBLGVBQUE7QUNDSjs7QURFQTtFQUVJLG9DQUFBO0VBQ0EsNEJBQUE7QUNDSjs7QURFQTtFQUNJLGtCQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtFQUNBLG1CQUFBO0FDQ0o7O0FERUE7RUFDSSxnQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2FtcGFpZ25zL2NhbXBhaWducy1uYXYvY2FtcGFpZ25zLW5hdi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jYW1wYWlnbl9fdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ucm90YXRlIHtcbiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMjAwbXMgbGluZWFyO1xuICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG59XG5cbi5jYW1wYWlnbnNfX2xpc3QtY29sIHtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG59XG5cbnVsLmNhbXBhaWduc19fbGlzdCA+IGxpIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5tZW51LWljb24ge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5jYW1wYWlnbi1uYXZfX2NvbnRhaW5lciB7XG4gICAgbWluLWhlaWdodDogNTB2aDtcbn1cbiIsIi5jYW1wYWlnbl9fdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5yb3RhdGUge1xuICAtbW96LXRyYW5zaXRpb246IGFsbCAyMDBtcyBsaW5lYXI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDIwMG1zIGxpbmVhcjtcbiAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGxpbmVhcjtcbn1cblxuLmNhbXBhaWduc19fbGlzdC1jb2wge1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG59XG5cbnVsLmNhbXBhaWduc19fbGlzdCA+IGxpIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubWVudS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5jYW1wYWlnbi1uYXZfX2NvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDUwdmg7XG59Il19 */\"","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { Animations } from 'app/shared/models/animations';\nimport { CampaignsService } from 'app/shared/services/campaigns/campaigns.service';\n\ninterface CampaignLight {\n _id: string;\n name: string;\n state: number;\n campaignStart: string | Date;\n creator: { firstname: string; name: string };\n goal: number;\n}\n\ninterface CampaignList {\n isDisplayed: boolean;\n isLoading: boolean;\n values: CampaignLight[];\n displayName: string;\n}\n\n@Component({\n selector: 'ga-campaigns-nav',\n templateUrl: './campaigns-nav.component.html',\n styleUrls: ['./campaigns-nav.component.scss'],\n providers: [],\n animations: [Animations.slideInOut, Animations.slideInOutHorizontal],\n})\nexport class CampaignsNavComponent implements OnInit {\n /**\n * Emit event when create a campaign button is clicked.\n */\n @Output() createCompaign: EventEmitter = new EventEmitter();\n\n /**\n * Emit event containing a campaign _id when a campaign is selected by the user.\n */\n @Output() campaignSelectedChanged: EventEmitter = new EventEmitter();\n\n /**\n * Event triggered when menu toggle clicked\n */\n @Output() menuToggle: EventEmitter = new EventEmitter();\n\n /**\n * Campaigns still active or not started yet.\n */\n campaignsActive: CampaignList = {\n isDisplayed: true,\n isLoading: false,\n values: [],\n displayName: 'Campagnes en cours',\n };\n\n /**\n * Campaigns finished\n */\n campaignsFinished: CampaignList = {\n isDisplayed: false,\n isLoading: false,\n values: [],\n displayName: 'Campagnes terminées',\n };\n\n /**\n * Selected campain by the user.\n */\n selectedCampaign: null | string = null;\n\n displayMenu = true;\n\n constructor(private campaignsService: CampaignsService) {}\n\n ngOnInit() {\n this.initCampaignsLists();\n }\n\n /**\n * Init campaigns list.\n * Get campaigns for the company and set the member arrays of active (started or not) and finished campaigns.\n */\n async initCampaignsLists(): Promise {\n try {\n this.campaignsActive.isLoading = true;\n this.campaignsFinished.isLoading = true;\n\n const result = await this.campaignsService.getCompaniesCampaignsList();\n\n const data = result.data;\n\n this.campaignsActive.values = [];\n this.campaignsFinished.values = [];\n\n data.forEach(campaign => {\n if (campaign.state === 0 || campaign.state === 1) {\n this.campaignsActive.values.push(campaign);\n } else if (campaign.state === 2) {\n this.campaignsFinished.values.push(campaign);\n }\n });\n this.sortCampaignsList(this.campaignsActive);\n this.sortCampaignsList(this.campaignsFinished);\n\n this.campaignsActive.isLoading = false;\n this.campaignsFinished.isLoading = false;\n } catch (error) {\n // TODO gestion de l'erreur\n this.campaignsActive.isLoading = false;\n this.campaignsFinished.isLoading = false;\n }\n }\n\n /** Campaigns List Menu Display */\n\n toggleDisplayMenu() {\n this.displayMenu = !this.displayMenu;\n this.menuToggle.emit(this.displayMenu);\n }\n\n displayCampaignsMenu() {\n return this.displayMenu;\n }\n\n get menuRowClass() {\n return this.displayMenu ? 'justify-content-end' : 'justify-content-center';\n }\n\n /** Campaigns Lists Display */\n\n /**\n * Get number of campaigns in a campaigns list.\n * @param {CampaignList} campaignsList - list of campaigns objects.\n * @returns {number} number of campaigns in the list if defined. 0 otherwise.\n */\n getCampaignsListCount(campaignsList: CampaignList): number {\n return campaignsList && campaignsList.values ? campaignsList.values.length : 0;\n }\n\n /**\n * Rreturn to display or not a campaigns list.\n * @param {CampaignList} campaignsList - campaign list object\n * @returns {boolean} true to display the campaigns list or not.\n */\n displayCampaignsList(campaignsList: CampaignList): boolean {\n return Boolean(campaignsList && campaignsList.isDisplayed && !campaignsList.isLoading);\n }\n\n /**\n * Toggle display of a campaigns list\n * @param {CampaignList} campaignsList - campaign list object\n */\n toggleCampaignsListDisplay(campaignsList: CampaignList): void {\n if (campaignsList && typeof campaignsList.isDisplayed === 'boolean') {\n campaignsList.isDisplayed = !campaignsList.isDisplayed;\n } else {\n campaignsList.isDisplayed = true;\n }\n }\n\n /**\n * Get campaigns list title icon class for rotation or not.\n * @param {CampaignList} campaignsList - campaign list object\n * @return {string} rotation class if displayed, empty string otherwise.\n */\n getIconClass(campaignsList: CampaignList): string {\n return campaignsList && campaignsList.isDisplayed ? 'fa-rotate-90' : '';\n }\n\n /**\n * Get class for campaign item in list\n * @param {CampaignLight} campaign - campaign to get the class from\n * @returns {string} class to set to the campaign item in list.\n */\n getCampaignClass(campaign: CampaignLight): string {\n return this.selectedCampaign && campaign && campaign._id === this.selectedCampaign ? 'citron-color' : '';\n }\n\n /**\n * Get campaigns list values (list of campaigns)\n * @param {CampaignList} campaignsList - campaign list object\n * @returns {CampaignLight[]} list of campaigns\n */\n getCampaignsListValues(campaignsList: CampaignList): CampaignLight[] {\n return campaignsList && campaignsList.values ? campaignsList.values : [];\n }\n\n /** User actions */\n\n /**\n * Emit create a new campaign action asked by the user.\n */\n openCampaignCreation(): void {\n this.selectedCampaign = null;\n this.createCompaign.emit();\n }\n\n /**\n * Emit that a campaign has been selected by the user.\n * @param {CampaignLight} value - campaign to set as selected\n */\n selectCampaign(value: CampaignLight): void {\n if (value && value._id && value._id !== this.selectedCampaign) {\n this.selectedCampaign = value._id;\n this.campaignSelectedChanged.emit(value._id);\n }\n }\n\n /** Utils */\n\n /**\n * Sort a campaigns list by name alphabetically. Sort in the array and return the array modified\n * @param {CampaignList} campaignsList - list of campaigns objects.\n * @returns {CampaignList} campaigns array modified.\n */\n private sortCampaignsList(campaignsList: CampaignList) {\n return campaignsList.values.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n /** Used by hosts */\n\n public refreshList() {\n this.initCampaignsLists();\n }\n}\n","export default \".ga-data-search-list {\\n width: 100%;\\n position: relative;\\n}\\n\\ntable {\\n width: 100%;\\n}\\n\\ntable td {\\n width: 20%;\\n padding-left: 8px;\\n padding-right: 8px;\\n}\\n\\n.nc {\\n position: absolute;\\n left: 90px;\\n top: 18px;\\n width: 40px;\\n height: 40px;\\n -webkit-mask-image: url('picto_warning.svg');\\n mask-image: url('picto_warning.svg');\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n background-color: orange;\\n}\\n\\n.header {\\n width: 100%;\\n background-color: #f3f3f3;\\n border-top: 1px solid lightgrey;\\n border-bottom: 1px solid lightgrey;\\n}\\n\\n.header td {\\n text-align: left;\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n font-size: 12px;\\n}\\n\\n.line {\\n width: 100%;\\n border-bottom: 1px solid lightgrey;\\n}\\n\\n.line td {\\n height: 80px;\\n font-size: 12px;\\n}\\n\\n.checkbox-td {\\n padding-left: 20px;\\n padding-right: 20px;\\n position: relative;\\n}\\n\\n.checkbox-td .checkbox-div {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: center;\\n justify-content: center;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n margin-left: 20px;\\n}\\n\\n.checkbox-td .checkbox-text {\\n font-size: 12px;\\n font-weight: bold;\\n}\\n\\n.address {\\n padding-left: 20px;\\n padding-right: 20px;\\n position: relative;\\n}\\n\\n.address .address-text {\\n font-size: 12px;\\n font-weight: bold;\\n}\\n\\n.address .nc {\\n right: 0;\\n left: auto;\\n}\\n\\n.td-with-btn {\\n padding-top: 0;\\n padding-bottom: 0;\\n}\\n\\n.td-with-btn .energy-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.td-with-btn .energy {\\n height: 100%;\\n display: -webkit-box;\\n display: flex;\\n justify-content: space-around;\\n min-width: 70px;\\n margin-right: 20px;\\n}\\n\\n.td-with-btn .energy-div {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 6px 0;\\n}\\n\\n.td-with-btn .energy-icon {\\n width: 28px;\\n height: 28px;\\n margin-right: 8px;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n}\\n\\n.td-with-btn .energy-text {\\n white-space: nowrap;\\n font-size: 12px;\\n}\\n\\n.td-with-btn .button-container {\\n width: 90%;\\n}\\n\\n.td-with-btn .citron-btn {\\n font-size: 12px;\\n height: 40px;\\n width: 100%;\\n max-width: 180px;\\n padding-left: 8px;\\n padding-right: 8px;\\n}\\n\\n.building .energy {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n\\n.building .energy-icon {\\n width: 22px;\\n}\\n\\n.search {\\n display: -webkit-box;\\n display: flex;\\n}\\n\\n.search .search-icon {\\n height: 20px;\\n width: 20px;\\n position: absolute;\\n right: 275px;\\n top: -35px;\\n bottom: 20px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n background-color: grey;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n}\\n\\n.search input {\\n height: 30px;\\n position: absolute;\\n right: 70px;\\n top: -40px;\\n width: 200px;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-left: auto;\\n padding: 12px 6px;\\n border: 1px solid #d9d9d9;\\n color: #607188;\\n font-size: 0.75rem;\\n}\\n\\n.not-allowed {\\n cursor: not-allowed;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NhcnRvZ3JhcGh5L2RhdGEtc2VhcmNoLWxpc3QvZGF0YS1zZWFyY2gtbGlzdC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2FydG9ncmFwaHkvZGF0YS1zZWFyY2gtbGlzdC9kYXRhLXNlYXJjaC1saXN0LmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLFdBQUE7RUFDQSxrQkFBQTtBQ0RKOztBRElBO0VBQ0ksV0FBQTtBQ0RKOztBREVJO0VBQ0ksVUFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7QUNBUjs7QURJQTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLDRDQUFBO1VBQUEsb0NBQUE7RUFDQSx3QkFBQTtVQUFBLGdCQUFBO0VBQ0Esd0JBQUE7QUNESjs7QURJQTtFQUNJLFdBQUE7RUFDQSx5QkFBQTtFQUNBLCtCQUFBO0VBQ0Esa0NBQUE7QUNESjs7QURFSTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxlQUFBO0FDQVI7O0FESUE7RUFDSSxXQUFBO0VBQ0Esa0NBQUE7QUNESjs7QURFSTtFQUNJLFlBQUE7RUFDQSxlQUFBO0FDQVI7O0FESUE7RUFDSSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUNESjs7QURHSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7RUFDQSxpQkFBQTtBQ0RSOztBRElJO0VBQ0ksZUFBQTtFQUNBLGlCQUFBO0FDRlI7O0FETUE7RUFDSSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUNISjs7QURJSTtFQUNJLGVBQUE7RUFDQSxpQkFBQTtBQ0ZSOztBRElJO0VBQ0ksUUFBQTtFQUNBLFVBQUE7QUNGUjs7QURNQTtFQUNJLGNBQUE7RUFDQSxpQkFBQTtBQ0hKOztBREtJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7QUNIUjs7QURNSTtFQUNJLFlBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw2QkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtBQ0pSOztBRE9JO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGFBQUE7QUNMUjs7QURRSTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBQ0EsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7QUNOUjs7QURRSTtFQUNJLG1CQUFBO0VBQ0EsZUFBQTtBQ05SOztBRFNJO0VBQ0ksVUFBQTtBQ1BSOztBRFVJO0VBQ0ksZUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0FDUlI7O0FEYUk7RUFDSSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7QUNWUjs7QURZSTtFQUNJLFdBQUE7QUNWUjs7QURjQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtBQ1hKOztBRFlJO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxrRUFBQTtVQUFBLDBEQUFBO0VBQ0Esc0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBQ0Esd0JBQUE7VUFBQSxnQkFBQTtBQ1ZSOztBRFlJO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSx5QkFBQTtFQUNBLGNFL0lLO0VGZ0pMLGtCQUFBO0FDVlI7O0FEY0E7RUFDSSxtQkFBQTtBQ1hKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2FydG9ncmFwaHkvZGF0YS1zZWFyY2gtbGlzdC9kYXRhLXNlYXJjaC1saXN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5cbi5nYS1kYXRhLXNlYXJjaC1saXN0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbnRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0ZCB7XG4gICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgfVxufVxuXG4ubmMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA5MHB4O1xuICAgIHRvcDogMThweDtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgbWFzay1pbWFnZTogdXJsKCcuLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fd2FybmluZy5zdmcnKTtcbiAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTtcbn1cblxuLmhlYWRlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgbGlnaHRncmV5O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaWdodGdyZXk7XG4gICAgdGQge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cbn1cblxuLmxpbmUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaWdodGdyZXk7XG4gICAgdGQge1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG59XG5cbi5jaGVja2JveC10ZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmNoZWNrYm94LWRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICB9XG5cbiAgICAuY2hlY2tib3gtdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxufVxuXG4uYWRkcmVzcyB7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC5hZGRyZXNzLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAubmMge1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICB9XG59XG5cbi50ZC13aXRoLWJ0biB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICAuZW5lcmd5LWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG5cbiAgICAuZW5lcmd5IHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICAgICAgbWluLXdpZHRoOiA3MHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgfVxuXG4gICAgLmVuZXJneS1kaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDZweCAwO1xuICAgIH1cblxuICAgIC5lbmVyZ3ktaWNvbiB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG4gICAgLmVuZXJneS10ZXh0IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgIC5idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICB9XG5cbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxODBweDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICB9XG59XG5cbi5idWlsZGluZyB7XG4gICAgLmVuZXJneSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuICAgIC5lbmVyZ3ktaWNvbiB7XG4gICAgICAgIHdpZHRoOiAyMnB4O1xuICAgIH1cbn1cblxuLnNlYXJjaCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICAuc2VhcmNoLWljb24ge1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAyNzVweDtcbiAgICAgICAgdG9wOiAtMzVweDtcbiAgICAgICAgYm90dG9tOiAyMHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19zZWFyY2guc3ZnJyk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogY292ZXI7XG4gICAgfVxuICAgIGlucHV0IHtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiA3MHB4O1xuICAgICAgICB0b3A6IC00MHB4O1xuICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIH1cbn1cblxuLm5vdC1hbGxvd2VkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuIiwiLmdhLWRhdGEtc2VhcmNoLWxpc3Qge1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxudGFibGUgdGQge1xuICB3aWR0aDogMjAlO1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xufVxuXG4ubmMge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDkwcHg7XG4gIHRvcDogMThweDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbWFzay1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3dhcm5pbmcuc3ZnXCIpO1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7XG59XG5cbi5oZWFkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbn1cbi5oZWFkZXIgdGQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4ubGluZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRncmV5O1xufVxuLmxpbmUgdGQge1xuICBoZWlnaHQ6IDgwcHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmNoZWNrYm94LXRkIHtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY2hlY2tib3gtdGQgLmNoZWNrYm94LWRpdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXJnaW4tbGVmdDogMjBweDtcbn1cbi5jaGVja2JveC10ZCAuY2hlY2tib3gtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5hZGRyZXNzIHtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uYWRkcmVzcyAuYWRkcmVzcy10ZXh0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5hZGRyZXNzIC5uYyB7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiBhdXRvO1xufVxuXG4udGQtd2l0aC1idG4ge1xuICBwYWRkaW5nLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG59XG4udGQtd2l0aC1idG4gLmVuZXJneS1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG4udGQtd2l0aC1idG4gLmVuZXJneSB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIG1pbi13aWR0aDogNzBweDtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuLnRkLXdpdGgtYnRuIC5lbmVyZ3ktZGl2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiA2cHggMDtcbn1cbi50ZC13aXRoLWJ0biAuZW5lcmd5LWljb24ge1xuICB3aWR0aDogMjhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG59XG4udGQtd2l0aC1idG4gLmVuZXJneS10ZXh0IHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLnRkLXdpdGgtYnRuIC5idXR0b24tY29udGFpbmVyIHtcbiAgd2lkdGg6IDkwJTtcbn1cbi50ZC13aXRoLWJ0biAuY2l0cm9uLWJ0biB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxODBweDtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcbn1cblxuLmJ1aWxkaW5nIC5lbmVyZ3kge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLmJ1aWxkaW5nIC5lbmVyZ3ktaWNvbiB7XG4gIHdpZHRoOiAyMnB4O1xufVxuXG4uc2VhcmNoIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5zZWFyY2ggLnNlYXJjaC1pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjc1cHg7XG4gIHRvcDogLTM1cHg7XG4gIGJvdHRvbTogMjBweDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3NlYXJjaC5zdmdcIik7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG59XG4uc2VhcmNoIGlucHV0IHtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA3MHB4O1xuICB0b3A6IC00MHB4O1xuICB3aWR0aDogMjAwcHg7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nOiAxMnB4IDZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgY29sb3I6ICM2MDcxODg7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLm5vdC1hbGxvd2VkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { SiteDisplay } from 'app/shared/components/cartography/data-search-list/data-search-list.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { PaginationService } from '../../pagination/front/pagination-front.service';\n\n@Component({\n selector: 'ga-data-search-list',\n templateUrl: './data-search-list.component.html',\n styleUrls: ['./data-search-list.component.scss'],\n providers: [PaginationService],\n})\nexport class DataSearchListComponent implements OnInit {\n @Input() sitesOriginal: SiteDisplay[] = [];\n sitesDisplayed: SiteDisplay[] = [];\n filter = '';\n\n // pagination\n @Input() paginationRange = 10;\n\n energyFluids: string[] = [];\n liquidsFluids: string[] = [];\n\n @Input() company: string = null;\n\n constructor(\n private utils: UtilsService,\n private energyService: EnergyService,\n private paginationService: PaginationService\n ) {}\n\n ngOnInit() {\n this.onSearch('');\n this.energyFluids = this.energyService.getAllEnergies();\n this.liquidsFluids = this.energyService.getAllLiquids();\n }\n\n public ifNc(address) {\n if (address === 'NC') {\n return true;\n } else if (address === '') {\n return true;\n } else {\n return false;\n }\n }\n\n public displayVehicles() {\n return this.sitesDisplayed.some(site => this.hasVehicles(site));\n }\n\n public displayWater() {\n return this.sitesDisplayed.some(site => this.hasWater(site));\n }\n\n public displayEnergy() {\n return this.sitesDisplayed.some(site => this.hasEnergy(site));\n }\n\n public hasVehicles(site) {\n return Boolean(site.vehicles.length);\n }\n\n public hasWater(site) {\n return this.liquidsFluids.some(x => site.infoFluids[x] !== 0);\n }\n\n public hasEnergy(site) {\n return this.energyFluids.some(x => site.infoFluids[x] !== 0);\n }\n\n public getQueryParam(site) {\n const queryParams: {\n siteId: string;\n company?: string;\n } = {\n siteId: site.id,\n };\n if (this.company) {\n queryParams.company = this.company;\n }\n return queryParams;\n }\n\n private filterSite(site: SiteDisplay): boolean {\n if (this.filter === '') {\n return true;\n }\n\n let exists = false;\n\n const stringToMatch = this.utils.removeAccentAndLowerCase(this.filter);\n\n // search in pdls\n if (!exists) {\n exists = site.routingReferences.some(routingReference => {\n return routingReference.reference && routingReference.reference.toLowerCase().includes(stringToMatch);\n });\n }\n\n // search in contracts\n if (!exists) {\n exists = site.routingReferences.some(routingReference => {\n return routingReference.contracts.some(contract => {\n return contract && contract.reference && contract.reference.toLowerCase().includes(stringToMatch);\n });\n });\n }\n const siteName = this.utils.removeAccentAndLowerCase(site.complement || site.name);\n const siteAddress = this.utils.removeAccentAndLowerCase(site.address);\n const siteCode = this.utils.removeAccentAndLowerCase(site.code || '');\n\n return (\n exists ||\n siteName.includes(stringToMatch) ||\n siteAddress.includes(stringToMatch) ||\n siteCode.includes(stringToMatch)\n );\n }\n\n public refreshList(sites: SiteDisplay[]): void {\n this.sitesDisplayed = sites.filter(site => this.filterSite(site));\n }\n\n /********** Pagination **********/\n\n /**\n * Returns the elements to display matching the current pagination\n */\n get sitesSorted(): SiteDisplay[] {\n return this.sitesDisplayed.slice(\n this.paginationService.pagination.indexStart,\n this.paginationService.pagination.indexEnd + 1\n );\n }\n\n /********** Recherche ***********/\n\n onSearch(value: string) {\n this.filter = value;\n this.sitesDisplayed = this.sitesOriginal.filter(site => this.filterSite(site));\n }\n}\n","export default \".graph-bar-toggle .btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n.graph-bar-toggle .btn-primary {\\n color: white;\\n background-color: #4689c3 !important;\\n box-shadow: none !important;\\n}\\n.graph-bar-toggle .btn {\\n cursor: pointer;\\n box-shadow: none !important;\\n}\\n.graph-bar-toggle .btn-white {\\n color: #4689c3;\\n background-color: white !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1iYXItdG9nZ2xlL2NoYXJ0LWJhci10b2dnbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1iYXItdG9nZ2xlL2NoYXJ0LWJhci10b2dnbGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0k7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDZCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDQVI7QURFSTtFQUNJLFlBQUE7RUFDQSxvQ0FBQTtFQUNBLDJCQUFBO0FDQVI7QURFSTtFQUNJLGVBQUE7RUFDQSwyQkFBQTtBQ0FSO0FERUk7RUFDSSxjQUFBO0VBQ0Esa0NBQUE7QUNBUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1iYXItdG9nZ2xlL2NoYXJ0LWJhci10b2dnbGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZ3JhcGgtYmFyLXRvZ2dsZSB7XG4gICAgLmJ0bi1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY4OWMzICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmJ0biB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuYnRuLXdoaXRlIHtcbiAgICAgICAgY29sb3I6ICM0Njg5YzM7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLmdyYXBoLWJhci10b2dnbGUgLmJ0bi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5ncmFwaC1iYXItdG9nZ2xlIC5idG4tcHJpbWFyeSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2ODljMyAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3JhcGgtYmFyLXRvZ2dsZSAuYnRuIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3JhcGgtYmFyLXRvZ2dsZSAuYnRuLXdoaXRlIHtcbiAgY29sb3I6ICM0Njg5YzM7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ChartBarComponent } from '../chart-bar/chart-bar.component';\n\n@Component({\n selector: 'ga-chart-bar-toggle',\n templateUrl: './chart-bar-toggle.component.html',\n styleUrls: ['./chart-bar-toggle.component.scss'],\n providers: [],\n})\nexport class ChartBarToggleComponent implements OnInit {\n _toggleOptions: Array<{ name: string; display: boolean }>;\n\n @Input() datasets: any[];\n @Input() colors: object[];\n @Input() labels: string[] | string[][];\n @Input() width = 900;\n @Input() minHeight = 340;\n @Input() maxHeight = 340;\n @Input() showGrid = true;\n @Input() legend: any[] = [];\n @Input() options: any[];\n @Input() downloadFileNames: any[];\n\n @Input('toggleOptions')\n set toggleOptions(values: Array) {\n this._toggleOptions = [];\n values.forEach(value => {\n if (typeof value === 'string') {\n this._toggleOptions.push({\n name: value,\n display: true,\n });\n } else if (typeof value === 'object') {\n this._toggleOptions.push(value);\n }\n });\n }\n get toggleOptions(): Array {\n return this._toggleOptions;\n }\n @Input() barChartType = 'bar';\n\n @ViewChild('chart', { static: false }) chart: ChartBarComponent;\n\n @Output() emitChartClick = new EventEmitter();\n\n public activeDataset = 0;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit() {\n this.selectToggleWithData();\n }\n\n chartClicked(event) {\n this.emitChartClick.emit(event);\n }\n\n setActiveBarChart(index: number) {\n if (this.chart && this.activeDataset !== index) {\n const datasets = this.datasets[index];\n if (datasets) {\n const colors = this.colors[index];\n for (let i = 0; i < datasets.length; i++) {\n if (colors[i]) {\n Object.assign(datasets[i], colors[i]);\n }\n }\n this.chart.updateOptions(this.options[index]);\n this.chart.replaceDatasets(this.datasets[index]);\n this.activeDataset = index;\n this.chart.replaceLabels(this.currentLabels);\n }\n }\n }\n\n /**\n * Returns false if one of the toggles has data to display\n * @return {boolean}\n */\n isCurrentChartEmpty() {\n // returns false as soon as it finds a dataset with values for one fluid\n return this.findToggleIndexWithData() === -1 ? true : false;\n }\n\n /**\n * Returns the first toggle index with data\n * @return {number}\n */\n findToggleIndexWithData(): number {\n return this.datasets.findIndex(toggleDataset => {\n // returns true as soon as it finds a fluid dataset with values\n return toggleDataset.some(fluidDataSet => {\n return fluidDataSet.data.some(value => value > 0 || value < 0);\n });\n });\n }\n\n /**\n * Select the toggle which has data\n */\n selectToggleWithData() {\n const indexWithData = this.findToggleIndexWithData();\n this.setActiveBarChart(indexWithData);\n }\n\n getButtonClass(i) {\n return this.activeDataset === i ? 'btn-primary' : 'btn-white';\n }\n\n get currentDataSet() {\n return this.datasets[this.activeDataset];\n }\n\n get currentColors() {\n return this.colors[this.activeDataset];\n }\n\n get currentLabels(): string[] {\n if (this.barChartType === 'horizontalBar') {\n return this.labels[this.activeDataset] as string[];\n }\n return this.labels as string[];\n }\n\n get currentLegends() {\n return this.legend[this.activeDataset];\n }\n\n get currentDownloadFileName() {\n return this.downloadFileNames[this.activeDataset];\n }\n\n get currentOptions() {\n return this.options[this.activeDataset];\n }\n\n getHeight() {\n let height = 0;\n if (this.el.nativeElement.children && this.el.nativeElement.children.length) {\n for (const el of this.el.nativeElement.children) {\n height += el.offsetHeight;\n }\n }\n return height;\n }\n\n public addDataset(dataset) {\n if (this.chart) {\n this.chart.addDataset(dataset);\n }\n }\n\n public removeDataset(label = '') {\n if (this.chart) {\n this.chart.removeDataset(label);\n }\n }\n\n public toggleDataset(label = '', hide: true | false | null = null) {\n if (this.chart) {\n this.chart.toggleDataset(label, hide);\n }\n }\n\n public toggleScale(axis: 'x' | 'y' = 'y', id: string = null, hide: true | false | null = null) {\n if (this.chart) {\n this.chart.toggleScale(axis, id, hide);\n }\n }\n}\n","export default \"ng2-charts-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-flex: 1;\\n flex: 1 1 auto;\\n}\\n\\n.chart-bar-class {\\n padding-right: 20px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1iYXIvY2hhcnQtYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvY2hhcnQtYmFyL2NoYXJ0LWJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLG1CQUFBO1VBQUEsY0FBQTtBQ0NKOztBREVBO0VBQ0ksbUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1iYXIvY2hhcnQtYmFyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsibmcyLWNoYXJ0cy1iYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMSAxIGF1dG87XG59XG5cbi5jaGFydC1iYXItY2xhc3Mge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG59XG4iLCJuZzItY2hhcnRzLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDEgMSBhdXRvO1xufVxuXG4uY2hhcnQtYmFyLWNsYXNzIHtcbiAgcGFkZGluZy1yaWdodDogMjBweDtcbn0iXX0= */\"","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport {\n ChartColorGA,\n ChartDataSetsGA,\n ChartGA,\n ChartLegendGA,\n ChartOptionsGA,\n ChartTypeGA,\n} from 'app/shared/models/charts/charts.interface';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'ga-chart-bar',\n templateUrl: './chart-bar.component.html',\n styleUrls: ['./chart-bar.component.scss'],\n})\nexport class ChartBarComponent {\n public chartInstance: ChartGA;\n\n @Input()\n downloadFileName = 'histogramme';\n\n @ViewChild('downloadLink', { static: true }) downloadLink: ElementRef;\n\n @Input() data: any[];\n @Input() dataset: ChartDataSetsGA[];\n @Input() colors: ChartColorGA[];\n @Input() labels: string[];\n @Input() stacked = false;\n @Input() width = 900;\n @Input() minHeight: number = null;\n @Input() maxHeight: number = null;\n @Input() showGrid = true;\n @Input() options: ChartOptionsGA = {};\n @Input() legend: ChartLegendGA[] = [];\n @Input() secondLegend: ChartLegendGA[] = [];\n @Input() barChartType: ChartTypeGA = 'bar';\n\n @Output() emitChartClick = new EventEmitter();\n\n setChartInstance(chart) {\n this.chartInstance = chart;\n }\n\n chartClicked(event) {\n this.emitChartClick.emit(event);\n }\n\n updateChart() {\n this.chartInstance.chart.update();\n }\n\n addDataset(dataset: ChartDataSetsGA) {\n this.chartInstance.chart.data.datasets.push(dataset);\n this.chartInstance.chart.update();\n }\n\n removeDataset(label = '') {\n if (label) {\n const index = this.chartInstance.chart.data.datasets.findIndex(x => x.label === label);\n if (index > -1) {\n this.chartInstance.chart.data.datasets.splice(index, 1);\n this.chartInstance.chart.update();\n }\n }\n }\n\n toggleDataset(label = '', hide: true | false | null = null) {\n if (label) {\n const dataset = this.chartInstance.chart.data.datasets.find(x => x.label === label);\n if (dataset) {\n if (hide !== null) {\n dataset.hidden = hide;\n } else {\n if (dataset.hasOwnProperty('hidden')) {\n dataset.hidden = !dataset.hidden;\n } else {\n dataset.hidden = true;\n }\n }\n this.chartInstance.chart.update();\n }\n }\n }\n\n toggleScale(axis: 'x' | 'y' = 'y', id: string = null, hide: true | false | null = null) {\n if (!['x', 'y'].includes(axis) || !id) {\n return;\n }\n const scaleAxe = this.chartInstance.chart.config.options.scales[`${axis}Axes`];\n if (scaleAxe && scaleAxe.length) {\n const searchAxis = scaleAxe.find(x => x.id === id);\n if (searchAxis) {\n if (hide !== null) {\n searchAxis.display = !hide;\n } else {\n searchAxis.display = !searchAxis.display;\n }\n this.chartInstance.chart.update();\n }\n }\n }\n\n replaceDatasets(datasets: ChartDataSetsGA[]) {\n this.chartInstance.chart.data.datasets = [];\n this.chartInstance.chart.data.datasets.push(...datasets);\n this.chartInstance.chart.update();\n }\n\n /**\n * Replace labels and update\n * @param {string[]} labels - labels to replace\n */\n replaceLabels(labels: string[]) {\n this.chartInstance.chart.data.labels = [];\n this.chartInstance.chart.data.labels.push(...labels);\n this.chartInstance.chart.update();\n }\n\n updateOptions(options: ChartOptionsGA) {\n if (this.chartInstance.chart.config.options && options) {\n // Deep Object.assign, to override properties changed.\n _.merge(this.chartInstance.chart.config.options, options);\n // For axes, we change axes data if needed.\n this.chartInstance.chart.config.options.scales.xAxes.forEach(element => {\n const s = options.scales.xAxes.find(x => x.id === element.id);\n if (s) {\n _.merge(element, s);\n }\n });\n this.chartInstance.chart.config.options.scales.yAxes.forEach((oldAxe, index) => {\n delete oldAxe.ticks.min;\n delete oldAxe.ticks.max;\n\n const newAxe = options.scales.yAxes.find(axe => axe.id === oldAxe.id);\n if (newAxe) {\n _.merge(oldAxe, newAxe);\n } else {\n // If new config has less y axes, hide the overflow\n if (index + 1 > options.scales.yAxes.length) {\n oldAxe.display = false;\n }\n }\n });\n }\n this.chartInstance.chart.update();\n }\n}\n","export default \"ng2-charts-bar {\\n width: 100%;\\n height: 100%;\\n}\\n\\n.graph-doughnut-toggle .btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n\\n.graph-doughnut-toggle .btn-primary {\\n color: white;\\n background-color: #4689c3 !important;\\n box-shadow: none !important;\\n}\\n\\n.graph-doughnut-toggle .btn {\\n cursor: pointer;\\n box-shadow: none !important;\\n}\\n\\n.graph-doughnut-toggle .btn-white {\\n color: #4689c3;\\n background-color: white !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1kb3VnaG51dC10b2dnbGUvY2hhcnQtZG91Z2hudXQtdG9nZ2xlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvY2hhcnQtZG91Z2hudXQtdG9nZ2xlL2NoYXJ0LWRvdWdobnV0LXRvZ2dsZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7RUFDQSxZQUFBO0FDQ0o7O0FER0k7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDZCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDQVI7O0FERUk7RUFDSSxZQUFBO0VBQ0Esb0NBQUE7RUFDQSwyQkFBQTtBQ0FSOztBREVJO0VBQ0ksZUFBQTtFQUNBLDJCQUFBO0FDQVI7O0FERUk7RUFDSSxjQUFBO0VBQ0Esa0NBQUE7QUNBUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1kb3VnaG51dC10b2dnbGUvY2hhcnQtZG91Z2hudXQtdG9nZ2xlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsibmcyLWNoYXJ0cy1iYXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLmdyYXBoLWRvdWdobnV0LXRvZ2dsZSB7XG4gICAgLmJ0bi1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY4OWMzICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmJ0biB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuYnRuLXdoaXRlIHtcbiAgICAgICAgY29sb3I6ICM0Njg5YzM7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwibmcyLWNoYXJ0cy1iYXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uZ3JhcGgtZG91Z2hudXQtdG9nZ2xlIC5idG4tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uZ3JhcGgtZG91Z2hudXQtdG9nZ2xlIC5idG4tcHJpbWFyeSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2ODljMyAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3JhcGgtZG91Z2hudXQtdG9nZ2xlIC5idG4ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5ncmFwaC1kb3VnaG51dC10b2dnbGUgLmJ0bi13aGl0ZSB7XG4gIGNvbG9yOiAjNDY4OWMzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-chart-doughnut-toggle',\n templateUrl: './chart-doughnut-toggle.component.html',\n styleUrls: ['./chart-doughnut-toggle.component.scss'],\n providers: [],\n})\n\n// not used in the app\nexport class ChartDoughnutToggleComponent implements OnInit {\n @Input() titles: string[] = ['Total', 'HP/HC'];\n @Input() datasets: any[];\n @Input() colors: object[];\n @Input() labels: object[];\n @Input() width = 300;\n @Input() height = 300;\n @Input() showGrid = true;\n @Input() legend: any = false;\n @Input() options: object = {};\n\n @Output() emitChartClick = new EventEmitter();\n\n public activeDataset = 0;\n public dataset: any[] = [];\n\n constructor() {}\n\n chartClicked(event: any) {\n const newEvent: any = event;\n newEvent.activeDataset = this.activeDataset;\n\n this.emitChartClick.emit(newEvent);\n }\n\n setActiveBarChart(index: number) {\n this.activeDataset = index;\n this.dataset = this.datasets[index];\n }\n\n ngOnInit() {\n this.setActiveBarChart(0);\n }\n}\n","export default \"ng2-charts-doughnut {\\n width: 100%;\\n height: 100%;\\n display: block;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1kb3VnaG51dC9jaGFydC1kb3VnaG51dC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hhcnRzL2NoYXJ0LWRvdWdobnV0L2NoYXJ0LWRvdWdobnV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksV0FBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvY2hhcnQtZG91Z2hudXQvY2hhcnQtZG91Z2hudXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJuZzItY2hhcnRzLWRvdWdobnV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4iLCJuZzItY2hhcnRzLWRvdWdobnV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogYmxvY2s7XG59Il19 */\"","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'ga-chart-doughnut',\n templateUrl: './chart-doughnut.component.html',\n styleUrls: ['./chart-doughnut.component.scss'],\n})\n\n// not used in the app\nexport class ChartDoughnutComponent {\n public chartInstance: any = {};\n\n downloadFileName = 'chart-doughnut.png';\n\n @ViewChild('downloadLink', { static: true }) downloadLink: ElementRef;\n\n @Input() data: any[];\n @Input() dataset: any[];\n @Input() labels: any[];\n @Input() colors: any[];\n @Input() legend: any = [];\n @Input() width = 900;\n @Input() height = 340;\n @Input() options: any = {};\n\n @Output() emitChartClick = new EventEmitter();\n\n setChartInstance(chart) {\n this.chartInstance = chart;\n }\n\n chartClicked(event) {\n this.emitChartClick.emit(event);\n }\n}\n","export default \"::ng-deep .highcharts-tooltip span,\\n::ng-deep .highcharts-axis text,\\n::ng-deep .highcharts-axis-labels text,\\n::ng-deep .custom-highcharts-labels,\\n::ng-deep .highcharts-label {\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n fill: #607188 !important;\\n color: #607188 !important;\\n font-weight: 100;\\n font-size: 11px;\\n text-align: center;\\n}\\n\\n::ng-deep .highcharts-series {\\n stroke: white !important;\\n stroke-width: 0.8 !important;\\n}\\n\\n::ng-deep .highcharts-point {\\n cursor: pointer;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1oZWF0bWFwL2NoYXJ0LWhlYXRtYXAuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1oZWF0bWFwL2NoYXJ0LWhlYXRtYXAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0VBS0ksZ0RBQUE7RUFDQSx3QkFBQTtFQUNBLHlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7QUNESjs7QURHQTtFQUNJLHdCQUFBO0VBQ0EsNEJBQUE7QUNBSjs7QURFQTtFQUNJLGVBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1oZWF0bWFwL2NoYXJ0LWhlYXRtYXAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbjo6bmctZGVlcCAuaGlnaGNoYXJ0cy10b29sdGlwIHNwYW4sXG46Om5nLWRlZXAgLmhpZ2hjaGFydHMtYXhpcyB0ZXh0LFxuOjpuZy1kZWVwIC5oaWdoY2hhcnRzLWF4aXMtbGFiZWxzIHRleHQsXG46Om5nLWRlZXAgLmN1c3RvbS1oaWdoY2hhcnRzLWxhYmVscyxcbjo6bmctZGVlcCAuaGlnaGNoYXJ0cy1sYWJlbCB7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICAgIGZpbGw6ICR0ZXh0LWNvbG9yICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuOjpuZy1kZWVwIC5oaWdoY2hhcnRzLXNlcmllcyB7XG4gICAgc3Ryb2tlOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgIHN0cm9rZS13aWR0aDogMC44ICFpbXBvcnRhbnQ7XG59XG46Om5nLWRlZXAgLmhpZ2hjaGFydHMtcG9pbnQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbiIsIjo6bmctZGVlcCAuaGlnaGNoYXJ0cy10b29sdGlwIHNwYW4sXG46Om5nLWRlZXAgLmhpZ2hjaGFydHMtYXhpcyB0ZXh0LFxuOjpuZy1kZWVwIC5oaWdoY2hhcnRzLWF4aXMtbGFiZWxzIHRleHQsXG46Om5nLWRlZXAgLmN1c3RvbS1oaWdoY2hhcnRzLWxhYmVscyxcbjo6bmctZGVlcCAuaGlnaGNoYXJ0cy1sYWJlbCB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICBmaWxsOiAjNjA3MTg4ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjNjA3MTg4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG46Om5nLWRlZXAgLmhpZ2hjaGFydHMtc2VyaWVzIHtcbiAgc3Ryb2tlOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDAuOCAhaW1wb3J0YW50O1xufVxuXG46Om5nLWRlZXAgLmhpZ2hjaGFydHMtcG9pbnQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HeatmapProperties } from 'app/shared/models/charts/chart-properties.interface';\nimport { HeatmapPoint } from 'app/shared/models/charts/chart-serie.interface';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'chart-heatmap',\n templateUrl: './chart-heatmap.component.html',\n styleUrls: ['./chart-heatmap.component.scss'],\n providers: [],\n})\nexport class ChartHeatmapComponent implements OnInit {\n @Input() options: HeatmapProperties;\n @Output() cellSelected: EventEmitter = new EventEmitter();\n\n ngOnInit() {}\n\n /**\n * Emit the selected point with its data to the parent page.\n * @param {*} event\n */\n getSelectedValues(event): void {\n if (event.point) {\n this.cellSelected.emit(event.point.options);\n }\n }\n}\n","export default \".graph-line-toggle .btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n.graph-line-toggle .btn-primary {\\n color: white;\\n background-color: #4689c3 !important;\\n box-shadow: none !important;\\n}\\n.graph-line-toggle .btn {\\n cursor: pointer;\\n box-shadow: none !important;\\n}\\n.graph-line-toggle .btn-white {\\n color: #4689c3;\\n background-color: white !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1saW5lLXRvZ2dsZS9jaGFydC1saW5lLXRvZ2dsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hhcnRzL2NoYXJ0LWxpbmUtdG9nZ2xlL2NoYXJ0LWxpbmUtdG9nZ2xlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsOEJBQUE7RUFBQSw2QkFBQTtVQUFBLG1CQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtBQ0FSO0FERUk7RUFDSSxZQUFBO0VBQ0Esb0NBQUE7RUFDQSwyQkFBQTtBQ0FSO0FERUk7RUFDSSxlQUFBO0VBQ0EsMkJBQUE7QUNBUjtBREVJO0VBQ0ksY0FBQTtFQUNBLGtDQUFBO0FDQVIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvY2hhcnQtbGluZS10b2dnbGUvY2hhcnQtbGluZS10b2dnbGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZ3JhcGgtbGluZS10b2dnbGUge1xuICAgIC5idG4tY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuICAgIC5idG4tcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQ2ODljMyAhaW1wb3J0YW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5idG4ge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmJ0bi13aGl0ZSB7XG4gICAgICAgIGNvbG9yOiAjNDY4OWMzO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi5ncmFwaC1saW5lLXRvZ2dsZSAuYnRuLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLmdyYXBoLWxpbmUtdG9nZ2xlIC5idG4tcHJpbWFyeSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2ODljMyAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3JhcGgtbGluZS10b2dnbGUgLmJ0biB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xufVxuLmdyYXBoLWxpbmUtdG9nZ2xlIC5idG4td2hpdGUge1xuICBjb2xvcjogIzQ2ODljMztcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn0iXX0= */\"","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ChartLineComponent } from '../chart-line/chart-line.component';\n\n@Component({\n selector: 'ga-chart-line-toggle',\n templateUrl: './chart-line-toggle.component.html',\n styleUrls: ['./chart-line-toggle.component.scss'],\n providers: [],\n})\nexport class ChartLineToggleComponent implements OnInit {\n @Input() datasets: any[];\n @Input() colors: object[];\n @Input() labels: object[];\n @Input() width = 900;\n @Input() minHeight = 340;\n @Input() showGrid = true;\n @Input() legend = false;\n @Input() options: any[];\n @Input() downloadFileNames: any[];\n @Input() toggleOptions: string[];\n\n @ViewChild('chart', { static: false }) chart: ChartLineComponent;\n\n @Output() emitChartClick = new EventEmitter();\n\n public activeDataset = 0;\n\n constructor() {}\n\n ngOnInit() {\n this.setActiveLineChart(0);\n }\n\n chartClicked(event) {\n this.emitChartClick.emit(event);\n }\n\n setActiveLineChart(index: number) {\n if (this.chart && this.activeDataset !== index) {\n this.chart.updateChart();\n }\n this.activeDataset = index;\n }\n\n DatasetHasData(datasetId) {\n if (this.datasets[this.activeDataset][datasetId]) {\n return this.datasets[this.activeDataset][datasetId].data.reduce((memo, item) => memo + item, 0) !== 0;\n }\n\n return false;\n }\n\n DatasetHPHasData() {\n return this.DatasetHasData(0);\n }\n\n DatasetHCHasData() {\n return this.DatasetHasData(1);\n }\n\n currentChartHasData() {\n if (this.activeDataset === 0) {\n return this.datasets.length && this.datasets[this.activeDataset].length;\n }\n\n return (\n this.datasets.length &&\n this.datasets[this.activeDataset].length &&\n (this.DatasetHPHasData() || this.DatasetHCHasData())\n );\n }\n\n getButtonClass(i) {\n return this.activeDataset === i ? 'btn-primary' : 'btn-white';\n }\n\n get currentDataSet() {\n return this.datasets[this.activeDataset];\n }\n\n get currentColors() {\n return this.colors[this.activeDataset];\n }\n\n get currentLabels() {\n return this.labels;\n }\n\n get currentLegends() {\n return this.legend[this.activeDataset];\n }\n\n get currentDownloadFileName() {\n return this.downloadFileNames[this.activeDataset];\n }\n\n get currentOptions() {\n return this.options[this.activeDataset];\n }\n}\n","export default \"ng2-charts-line {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-flex: 1;\\n flex: 1 1 auto;\\n}\\n\\n.chart-line-class {\\n padding-right: 20px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1saW5lL2NoYXJ0LWxpbmUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9jaGFydC1saW5lL2NoYXJ0LWxpbmUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxtQkFBQTtVQUFBLGNBQUE7QUNDSjs7QURFQTtFQUNJLG1CQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvY2hhcnQtbGluZS9jaGFydC1saW5lLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsibmcyLWNoYXJ0cy1saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xufVxuXG4uY2hhcnQtbGluZS1jbGFzcyB7XG4gICAgcGFkZGluZy1yaWdodDogMjBweDtcbn1cbiIsIm5nMi1jaGFydHMtbGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDEgMSBhdXRvO1xufVxuXG4uY2hhcnQtbGluZS1jbGFzcyB7XG4gIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG59Il19 */\"","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'ga-chart-line',\n templateUrl: './chart-line.component.html',\n styleUrls: ['./chart-line.component.scss'],\n})\nexport class ChartLineComponent {\n private _colors: any[];\n public chartInstance: any = {};\n\n @Input() downloadFileName = 'chart-line.png';\n\n @ViewChild('downloadLink', { static: true }) downloadLink: ElementRef;\n\n @Input() data: any[];\n @Input() dataset: any[];\n @Input() labels: object[];\n @Input() width = 900;\n @Input() minHeight: number = null;\n @Input() options: object = {};\n @Input() legend: object = {};\n @Input() fill = false;\n @Input()\n set colors(colors: any[]) {\n this._colors = colors.map(color => {\n color.fill = this.fill;\n return color;\n });\n }\n get colors(): any[] {\n return this._colors;\n }\n\n @Output() emitChartClick = new EventEmitter();\n\n setChartInstance(chart) {\n this.chartInstance = chart;\n }\n\n chartClicked(event) {\n this.emitChartClick.emit(event);\n }\n\n updateChart() {\n // Reinit datasets as when refreshing, expects old and new one to have both the same size.\n this.chartInstance.chart.data.datasets = [];\n setTimeout(() => {\n this.chartInstance.refresh();\n });\n }\n}\n","export default \".graph-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 5px 16px;\\n min-height: 30px;\\n background-color: #fafafa;\\n border-top: 2px solid #ebebeb;\\n border-bottom: 2px solid #ebebeb;\\n}\\n.graph-bottom ul {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 0;\\n margin: 0;\\n}\\n.graph-bottom li {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n list-style: none;\\n margin-right: 20px;\\n font-size: 13px;\\n}\\n.graph-bottom .legend-color {\\n border-radius: 50%;\\n width: 10px;\\n min-width: 10px;\\n height: 10px;\\n margin-right: 10px;\\n}\\n.graph-bottom .legend-color:not(:nth-last-child(2)) {\\n margin-right: 2px;\\n}\\n.graph-bottom .legend-text {\\n line-height: 1.25;\\n}\\n.graph-bottom .chart-download-container {\\n font-size: 0;\\n cursor: pointer;\\n}\\n.graph-bottom .chart-download-container img {\\n width: 16px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9ncmFwaC1ib3R0b20vZ3JhcGgtYm90dG9tLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvZ3JhcGgtYm90dG9tL2dyYXBoLWJvdHRvbS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSxnQ0FBQTtBQ0NKO0FEQ0k7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7QUNDUjtBREVJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0FDQVI7QURHSTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7QUNEUjtBREVRO0VBQ0ksaUJBQUE7QUNBWjtBRElJO0VBQ0ksaUJBQUE7QUNGUjtBREtJO0VBQ0ksWUFBQTtFQUNBLGVBQUE7QUNIUjtBRElRO0VBQ0ksV0FBQTtBQ0ZaIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hhcnRzL2dyYXBoLWJvdHRvbS9ncmFwaC1ib3R0b20uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZ3JhcGgtYm90dG9tIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IDVweCAxNnB4O1xuICAgIG1pbi1oZWlnaHQ6IDMwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgI2ViZWJlYjtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ViZWJlYjtcblxuICAgIHVsIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgfVxuXG4gICAgLmxlZ2VuZC1jb2xvciB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgIG1pbi13aWR0aDogMTBweDtcbiAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICY6bm90KDpudGgtbGFzdC1jaGlsZCgyKSkge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubGVnZW5kLXRleHQge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICB9XG5cbiAgICAuY2hhcnQtZG93bmxvYWQtY29udGFpbmVyIHtcbiAgICAgICAgZm9udC1zaXplOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ncmFwaC1ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDVweCAxNnB4O1xuICBtaW4taGVpZ2h0OiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBib3JkZXItdG9wOiAycHggc29saWQgI2ViZWJlYjtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlYmViZWI7XG59XG4uZ3JhcGgtYm90dG9tIHVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuLmdyYXBoLWJvdHRvbSBsaSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbi1yaWdodDogMjBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xufVxuLmdyYXBoLWJvdHRvbSAubGVnZW5kLWNvbG9yIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogMTBweDtcbiAgbWluLXdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDEwcHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cbi5ncmFwaC1ib3R0b20gLmxlZ2VuZC1jb2xvcjpub3QoOm50aC1sYXN0LWNoaWxkKDIpKSB7XG4gIG1hcmdpbi1yaWdodDogMnB4O1xufVxuLmdyYXBoLWJvdHRvbSAubGVnZW5kLXRleHQge1xuICBsaW5lLWhlaWdodDogMS4yNTtcbn1cbi5ncmFwaC1ib3R0b20gLmNoYXJ0LWRvd25sb2FkLWNvbnRhaW5lciB7XG4gIGZvbnQtc2l6ZTogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmdyYXBoLWJvdHRvbSAuY2hhcnQtZG93bmxvYWQtY29udGFpbmVyIGltZyB7XG4gIHdpZHRoOiAxNnB4O1xufSJdfQ== */\"","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ChartLegendGA } from 'app/shared/models/charts/charts.interface';\n\n@Component({\n selector: 'ga-graph-bottom',\n templateUrl: './graph-bottom.component.html',\n styleUrls: ['./graph-bottom.component.scss'],\n})\nexport class GraphBottomComponent {\n @Input() legend: ChartLegendGA[];\n @Input() secondLegend: ChartLegendGA[];\n @Input() chartInstance: any;\n @Input() downloadFileName: string;\n @Input() graphType: string;\n\n @ViewChild('downloadLink', { static: true }) downloadLink: ElementRef;\n\n public downloadChart() {\n if (this.chartInstance && this.graphType === 'highchart') {\n this.chartInstance.exportChart({ filename: this.downloadFileName });\n } else {\n this.downloadLink.nativeElement.href = this.chartInstance.chart.toBase64Image();\n this.downloadLink.nativeElement.click();\n }\n }\n\n public getRgbColor(color: string): string {\n return `rgba(${color})`;\n }\n}\n","export default \".btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n\\n.btn-primary {\\n color: white;\\n background-color: #4689c3 !important;\\n box-shadow: none !important;\\n}\\n\\n.btn {\\n cursor: pointer;\\n box-shadow: none !important;\\n}\\n\\n.btn-white {\\n color: #4689c3;\\n background-color: white !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtZG91Z2hudXQtdG9nZ2xlL2hpZ2hjaGFydC1kb3VnaG51dC10b2dnbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtZG91Z2hudXQtdG9nZ2xlL2hpZ2hjaGFydC1kb3VnaG51dC10b2dnbGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDZCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDQ0o7O0FEQ0E7RUFDSSxZQUFBO0VBQ0Esb0NBQUE7RUFDQSwyQkFBQTtBQ0VKOztBREFBO0VBQ0ksZUFBQTtFQUNBLDJCQUFBO0FDR0o7O0FEREE7RUFDSSxjQUFBO0VBQ0Esa0NBQUE7QUNJSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtZG91Z2hudXQtdG9nZ2xlL2hpZ2hjaGFydC1kb3VnaG51dC10b2dnbGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnRuLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLmJ0bi1wcmltYXJ5IHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQ2ODljMyAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5idG4ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uYnRuLXdoaXRlIHtcbiAgICBjb2xvcjogIzQ2ODljMztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuIiwiLmJ0bi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY4OWMzICFpbXBvcnRhbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmJ0biB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uYnRuLXdoaXRlIHtcbiAgY29sb3I6ICM0Njg5YzM7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-highchart-doughnut-toggle',\n templateUrl: './highchart-doughnut-toggle.component.html',\n styleUrls: ['./highchart-doughnut-toggle.component.scss'],\n})\nexport class HighchartDoughnutToggleComponent implements OnInit {\n @Input() options: any;\n @Input() legend: any;\n @Input() toggleNames: string[] = [];\n @Input() downloadFileNames: string[] = [];\n\n @Input() activeDataset = 0;\n\n constructor() {}\n\n ngOnInit() {\n this.selectToggleWithData();\n }\n\n public getRgbColor(color) {\n return `rgb(${color})`;\n }\n\n public setActivePieChart(index: number) {\n this.activeDataset = index;\n }\n\n /**\n * Select the toggle on which the doughnut has data (TTC instead of HTVA)\n */\n public selectToggleWithData() {\n const indexWithData = this.findToggleIndexWithData();\n const indexSelected = indexWithData !== -1 ? indexWithData : 0;\n this.setActivePieChart(indexSelected);\n }\n\n /**\n * Returns false if one of the toggles has data to display\n * @return {boolean}\n */\n public isCurrentChartEmpty(): boolean {\n return this.findToggleIndexWithData() === -1 ? true : false;\n }\n\n /**\n * Returns the first toggle index with data\n * @return {number}\n */\n private findToggleIndexWithData(): number {\n return this.options.findIndex(toggleDataset =>\n // series[0] because it's a simple donut\n // returns true as soon as it finds a fluid dataset with values\n toggleDataset.series[0].data.some(fluidData => fluidData.y > 0)\n );\n }\n}\n","export default \"chart {\\n width: 100%;\\n height: 340px;\\n display: block;\\n margin: 0 auto;\\n}\\n\\n.highcharts-container {\\n margin: 0 auto;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtZG91Z2hudXQvaGlnaGNoYXJ0LWRvdWdobnV0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvaGlnaGNoYXJ0LWRvdWdobnV0L2hpZ2hjaGFydC1kb3VnaG51dC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtFQUNBLGNBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtZG91Z2hudXQvaGlnaGNoYXJ0LWRvdWdobnV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiY2hhcnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMzQwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5oaWdoY2hhcnRzLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG4iLCJjaGFydCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDM0MHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5oaWdoY2hhcnRzLWNvbnRhaW5lciB7XG4gIG1hcmdpbjogMCBhdXRvO1xufSJdfQ== */\"","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ga-highchart-doughnut',\n templateUrl: './highchart-doughnut.component.html',\n styleUrls: ['./highchart-doughnut.component.scss'],\n providers: [],\n})\nexport class HighchartDoughnutComponent {\n @Input() options: any;\n @Input() legend: any;\n\n @Input() downloadFileName = 'chart-doughnut.png';\n public chart: any;\n\n saveInstance(chartInstance) {\n // DONT REMOVE IT: fix to avoid \"Expression has changed after it was checked\" error\n setTimeout(() => {\n this.chart = chartInstance;\n });\n }\n}\n","export default \".graph-pie-toggle .btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n.graph-pie-toggle .btn-primary {\\n color: white;\\n background-color: #4689c3 !important;\\n box-shadow: none !important;\\n}\\n.graph-pie-toggle .btn {\\n cursor: pointer;\\n box-shadow: none !important;\\n}\\n.graph-pie-toggle .btn-white {\\n color: #4689c3;\\n background-color: white !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtbXVsdGlsZXZlbC1waWUtdG9nZ2xlL2hpZ2hjaGFydC1tdWx0aWxldmVsLXBpZS10b2dnbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtbXVsdGlsZXZlbC1waWUtdG9nZ2xlL2hpZ2hjaGFydC1tdWx0aWxldmVsLXBpZS10b2dnbGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0k7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDZCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDQVI7QURFSTtFQUNJLFlBQUE7RUFDQSxvQ0FBQTtFQUNBLDJCQUFBO0FDQVI7QURFSTtFQUNJLGVBQUE7RUFDQSwyQkFBQTtBQ0FSO0FERUk7RUFDSSxjQUFBO0VBQ0Esa0NBQUE7QUNBUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtbXVsdGlsZXZlbC1waWUtdG9nZ2xlL2hpZ2hjaGFydC1tdWx0aWxldmVsLXBpZS10b2dnbGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZ3JhcGgtcGllLXRvZ2dsZSB7XG4gICAgLmJ0bi1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY4OWMzICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmJ0biB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuYnRuLXdoaXRlIHtcbiAgICAgICAgY29sb3I6ICM0Njg5YzM7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLmdyYXBoLXBpZS10b2dnbGUgLmJ0bi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5ncmFwaC1waWUtdG9nZ2xlIC5idG4tcHJpbWFyeSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2ODljMyAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3JhcGgtcGllLXRvZ2dsZSAuYnRuIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3JhcGgtcGllLXRvZ2dsZSAuYnRuLXdoaXRlIHtcbiAgY29sb3I6ICM0Njg5YzM7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-highchart-multilevel-pie-toggle',\n templateUrl: './highchart-multilevel-pie-toggle.component.html',\n styleUrls: ['./highchart-multilevel-pie-toggle.component.scss'],\n providers: [],\n})\nexport class HighchartMultilevelPieToggleComponent implements OnInit {\n @Input() optionsSets: any[];\n @Input() legend: any = [];\n @Input() toggleNames = [];\n @Input() downloadFileNames = [];\n\n @Output() emitChartClick = new EventEmitter();\n\n public activeDataset = 0;\n public options: any[] = [];\n\n constructor() {}\n\n chartClicked(event) {\n this.emitChartClick.emit(event);\n }\n\n setActivePieChart(index: number) {\n this.activeDataset = index;\n this.options = this.optionsSets[index];\n }\n\n ngOnInit() {\n this.selectToggleWithData();\n }\n\n /**\n * Select the toggle which has data\n */\n selectToggleWithData() {\n const indexWithData = this.optionsSets.findIndex(optionSet =>\n optionSet.series[0].data.some(data => data.y > 0)\n );\n const indexSelected = indexWithData !== -1 ? indexWithData : 0;\n this.setActivePieChart(indexSelected);\n }\n}\n","export default \"chart {\\n width: 100%;\\n height: 100%;\\n display: block;\\n margin-top: 20px;\\n align-content: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtbXVsdGlsZXZlbC1waWUvaGlnaGNoYXJ0LW11bHRpbGV2ZWwtcGllLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvaGlnaGNoYXJ0LW11bHRpbGV2ZWwtcGllL2hpZ2hjaGFydC1tdWx0aWxldmVsLXBpZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtbXVsdGlsZXZlbC1waWUvaGlnaGNoYXJ0LW11bHRpbGV2ZWwtcGllLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiY2hhcnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbn1cbiIsImNoYXJ0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbn0iXX0= */\"","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ga-highchart-multilevel-pie',\n templateUrl: './highchart-multilevel-pie.component.html',\n styleUrls: ['./highchart-multilevel-pie.component.scss'],\n providers: [],\n})\nexport class HighchartMultilevelPieComponent {\n @Input() options: object;\n @Input() legend: any = [];\n chart: any;\n @Input() downloadFileName = 'chart-doughnut.png';\n\n saveInstance(chartInstance) {\n // DONT REMOVE IT: fix to avoid \"Expression has changed after it was checked\" error\n setTimeout(() => {\n this.chart = chartInstance;\n });\n }\n}\n","export default \".sankey-bar-toggle .btn-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n.sankey-bar-toggle .btn-primary {\\n color: white;\\n background-color: #4689c3 !important;\\n box-shadow: none !important;\\n}\\n.sankey-bar-toggle .btn {\\n cursor: pointer;\\n box-shadow: none !important;\\n}\\n.sankey-bar-toggle .btn-white {\\n color: #4689c3;\\n background-color: white !important;\\n}\\n.sankey-bar-toggle .filter-title {\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n font-weight: bold;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtc2Fua2V5LWVkaXRhYmxlL2hpZ2hjaGFydC1zYW5rZXktZWRpdGFibGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtc2Fua2V5LWVkaXRhYmxlL2hpZ2hjaGFydC1zYW5rZXktZWRpdGFibGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0k7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDZCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDQVI7QURFSTtFQUNJLFlBQUE7RUFDQSxvQ0FBQTtFQUNBLDJCQUFBO0FDQVI7QURFSTtFQUNJLGVBQUE7RUFDQSwyQkFBQTtBQ0FSO0FERUk7RUFDSSxjQUFBO0VBQ0Esa0NBQUE7QUNBUjtBREdJO0VBQ0ksZ0RBQUE7RUFDQSxpQkFBQTtBQ0RSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hhcnRzL2hpZ2hjaGFydC1zYW5rZXktZWRpdGFibGUvaGlnaGNoYXJ0LXNhbmtleS1lZGl0YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zYW5rZXktYmFyLXRvZ2dsZSB7XG4gICAgLmJ0bi1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY4OWMzICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmJ0biB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuYnRuLXdoaXRlIHtcbiAgICAgICAgY29sb3I6ICM0Njg5YzM7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmZpbHRlci10aXRsZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxufVxuIiwiLnNhbmtleS1iYXItdG9nZ2xlIC5idG4tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uc2Fua2V5LWJhci10b2dnbGUgLmJ0bi1wcmltYXJ5IHtcbiAgY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY4OWMzICFpbXBvcnRhbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5zYW5rZXktYmFyLXRvZ2dsZSAuYnRuIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uc2Fua2V5LWJhci10b2dnbGUgLmJ0bi13aGl0ZSB7XG4gIGNvbG9yOiAjNDY4OWMzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuLnNhbmtleS1iYXItdG9nZ2xlIC5maWx0ZXItdGl0bGUge1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-highchart-sankey-editable',\n templateUrl: './highchart-sankey-editable.component.html',\n styleUrls: ['./highchart-sankey-editable.component.scss'],\n})\nexport class HighchartSankeyEditableComponent implements OnInit {\n @Input() options: any;\n @Input() legend: any;\n @Input() toggles: any[];\n @Input() columnsUser: any[];\n @Input() sankeyHighchartsData: any[];\n\n @Output() activeDatasetChange = new EventEmitter();\n\n columnsAvailable: any[] = [\n {\n label: 'Energies',\n name: 'energyType',\n available: true,\n },\n {\n label: 'Catégories',\n name: 'category',\n available: true,\n },\n {\n label: 'Sous-Catégorie',\n name: 'subcategory',\n available: true,\n },\n {\n label: 'Complément',\n name: 'complement',\n available: true,\n },\n {\n label: 'Natures',\n name: 'nature',\n available: true,\n },\n {\n label: 'Sites',\n name: 'name',\n available: true,\n },\n {\n label: 'Zones',\n name: 'zone',\n available: true,\n },\n {\n label: 'Régions',\n name: 'zipcode',\n available: true,\n },\n ];\n\n columnsNumberChoices = [\n {\n name: 2,\n display: true,\n },\n {\n name: 3,\n display: false,\n },\n ];\n columnNumber: number;\n\n downloadFileName = 'chart-sankey.png';\n\n constructor() {}\n ngOnInit() {\n this.columnsUser.forEach(col => {\n const item = this.columnsAvailable.find(elem => elem.name === col.name);\n item.available = false;\n });\n this.columnNumber = this.columnsUser.length;\n if (this.columnsNumberChoices.find(item => item.name === this.columnNumber)) {\n this.columnsNumberChoices.forEach(col => {\n if (col.name === this.columnNumber) {\n col.display = true;\n } else {\n col.display = false;\n }\n });\n }\n }\n\n private refresh() {\n this.activeDatasetChange.emit();\n }\n\n getRgbColor(color) {\n return `rgb(${color})`;\n }\n\n /**\n * Trigger when the user choose a number of columns to display.\n * @param value Number selected\n */\n public setColumnNumber(value) {\n // If the user doesn't select the selected value\n if (!value.display) {\n // Set not displayed for all other buttons\n this.columnsNumberChoices.forEach(col => {\n if (col.display) {\n col.display = !col.display;\n }\n });\n // Set displayed the selected number\n value.display = !value.display;\n // Get the number\n this.columnNumber = value.name;\n // If reducing number of columns to display\n if (this.columnNumber <= this.columnsUser.length) {\n const size = this.columnsUser.length;\n // Set available for remaining columns all choices removed\n for (let i = this.columnNumber; i < size; i++) {\n const item = this.columnsAvailable.find(elem => elem.name === this.columnsUser[i].name);\n item.available = true;\n }\n // Remove columns\n this.columnsUser.splice(this.columnNumber);\n } else {\n // Add the next available choice\n const toAdd = this.columnNumber - this.columnsUser.length;\n for (let i = 0; i < toAdd; i++) {\n const item = this.columnsAvailable.find(elem => elem.available);\n this.columnsUser.push({ name: item.name, display: true });\n item.available = false;\n }\n }\n this.refresh();\n }\n }\n\n /**\n * Change the data type\n * @param value chose by the user\n */\n public setActiveToggle(value) {\n const others = this.toggles.filter(i => i.name !== value.name);\n value.display = true;\n others.forEach(item => {\n item.display = false;\n });\n this.activeDatasetChange.emit();\n }\n\n public getClass(value) {\n return value.display ? 'btn-primary' : 'btn-white';\n }\n\n /**\n * When a column is updated, update all the available choices.\n */\n public updateColumns() {\n this.columnsAvailable.forEach(item => {\n const temp = this.columnsUser.find(col => col.name === item.name);\n if (temp === undefined) {\n item.available = true;\n } else {\n item.available = false;\n }\n });\n this.refresh();\n }\n\n /**\n * Get the column label from the type\n * @param name type name of the columns\n * @returns {any} Label of the columns\n */\n public getLabel(name) {\n const res = this.columnsAvailable.find(item => item.name === name);\n return res === undefined ? name : res.label;\n }\n\n /**\n * Get the class for columns selects. Depend on the number of columns to display.\n * @returns {string}\n */\n public getClassSelects() {\n return 'col-md-' + 12 / this.columnNumber;\n }\n\n downloadChart(event) {\n const anchor = event.target;\n anchor.href = event.target.parentElement.parentElement.parentElement\n .getElementsByTagName('canvas')[0]\n .toDataURL();\n anchor.download = 'graphique.png';\n }\n}\n","export default \".sankey-bar chart {\\n margin: 0 auto;\\n display: block;\\n}\\n\\n:host ::ng-deep chart .highcharts-node {\\n stroke: white;\\n stroke-width: 2;\\n min-height: 2px;\\n}\\n\\n.labels-row {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.labels-line {\\n margin: 0;\\n font-size: 12px;\\n text-align: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtc2Fua2V5L2hpZ2hjaGFydC1zYW5rZXkuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtc2Fua2V5L2hpZ2hjaGFydC1zYW5rZXkuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0k7RUFDSSxjQUFBO0VBQ0EsY0FBQTtBQ0FSOztBREdBO0VBQ0ksYUFBQTtFQUNBLGVBQUE7RUFDQSxlQUFBO0FDQUo7O0FER0E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FDQUo7O0FER0E7RUFDSSxTQUFBO0VBQ0EsZUFBQTtFQUNBLGtCQUFBO0FDQUoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jaGFydHMvaGlnaGNoYXJ0LXNhbmtleS9oaWdoY2hhcnQtc2Fua2V5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNhbmtleS1iYXIge1xuICAgIGNoYXJ0IHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cbjpob3N0IDo6bmctZGVlcCBjaGFydCAuaGlnaGNoYXJ0cy1ub2RlIHtcbiAgICBzdHJva2U6IHdoaXRlO1xuICAgIHN0cm9rZS13aWR0aDogMjtcbiAgICBtaW4taGVpZ2h0OiAycHg7XG59XG5cbi5sYWJlbHMtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5sYWJlbHMtbGluZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4iLCIuc2Fua2V5LWJhciBjaGFydCB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuOmhvc3QgOjpuZy1kZWVwIGNoYXJ0IC5oaWdoY2hhcnRzLW5vZGUge1xuICBzdHJva2U6IHdoaXRlO1xuICBzdHJva2Utd2lkdGg6IDI7XG4gIG1pbi1oZWlnaHQ6IDJweDtcbn1cblxuLmxhYmVscy1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubGFiZWxzLWxpbmUge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ColorService } from '../../../services/color/color.service';\n\n@Component({\n selector: 'ga-highchart-sankey',\n templateUrl: './highchart-sankey.component.html',\n styleUrls: ['./highchart-sankey.component.scss'],\n})\nexport class HighchartSankeyComponent implements OnInit {\n @Input() options: any;\n @Input() sankeyHighchartsData: any[];\n\n labels: Array> = [[], []];\n totals = [];\n heights: number[] = [1400, 1400];\n\n colors = [];\n\n constructor(private colorService: ColorService) {}\n\n ngOnInit() {\n this.initLabels();\n this.colors = [\n this.colorService.getHexColor('DARK_BLUE1'),\n this.colorService.getHexColor('LIGHT_BLUE2'),\n this.colorService.getHexColor('TURQUOISE'),\n this.colorService.getHexColor('DARK_BLUE2'),\n ];\n }\n\n public initLabels() {\n $(() => {\n this.labels = [[], []];\n this.totals = [0, 0];\n this.sankeyHighchartsData[0].forEach(item => {\n const val = this.labels[0].find(x => x.id === item[0]);\n if (!val) {\n this.labels[0].push({ id: item[0], value: item[2] });\n } else {\n val.value += item[2];\n }\n this.totals[0] += item[2];\n });\n this.sankeyHighchartsData[this.sankeyHighchartsData.length - 1].forEach(item => {\n const val = this.labels[1].find(x => x.id === item[1]);\n if (!val) {\n this.labels[1].push({ id: item[1], value: item[2] });\n } else {\n val.value += item[2];\n }\n this.totals[1] += item[2];\n });\n // Compute height of the left column\n const col1 = $(\"[fill='#104E8B']\");\n if (col1.length > 0) {\n this.heights[0] = (col1.length - 1) * 15;\n for (const c of col1 as any) {\n this.heights[0] += Number($(c).attr('height'));\n }\n }\n\n // Compute height of the right column\n const color = this.colors[this.sankeyHighchartsData.length];\n const query = \"[fill='\" + color + \"']\";\n\n const col2 = $(query);\n if (col2.length > 0) {\n this.heights[1] = (col2.length - 1) * 15;\n for (const c of col2 as any) {\n this.heights[1] += Number($(c).attr('height'));\n }\n }\n });\n }\n\n public getLabels(column: number) {\n return this.labels[column];\n }\n\n public getHeight(item, column) {\n if (item.value > 0) {\n const rest = this.heights[column] - this.getLabels(column).length * 15;\n return rest * (item.value / this.totals[column]);\n } else {\n return 0;\n }\n }\n\n public getShort(text) {\n const res = text.length > 20 ? '...' : '';\n return text.slice(0, 20) + res;\n }\n\n public hasData() {\n if (this.sankeyHighchartsData && this.sankeyHighchartsData.length > 0) {\n return this.sankeyHighchartsData[0].length > 0;\n } else {\n return false;\n }\n }\n}\n","export default \"chart {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-flex: 1;\\n flex: 1 1 auto;\\n}\\nchart .highcharts-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-flex: 1;\\n flex: 1 1 auto;\\n}\\nchart svg {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-flex: 1;\\n flex: 1 1 auto;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtc2NhdHRlci1wbG90L2hpZ2hjaGFydC1zY2F0dGVyLXBsb3QuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9oaWdoY2hhcnQtc2NhdHRlci1wbG90L2hpZ2hjaGFydC1zY2F0dGVyLXBsb3QuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxtQkFBQTtVQUFBLGNBQUE7QUNDSjtBRENJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsbUJBQUE7VUFBQSxjQUFBO0FDQ1I7QURDSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLG1CQUFBO1VBQUEsY0FBQTtBQ0NSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hhcnRzL2hpZ2hjaGFydC1zY2F0dGVyLXBsb3QvaGlnaGNoYXJ0LXNjYXR0ZXItcGxvdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImNoYXJ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuXG4gICAgLmhpZ2hjaGFydHMtY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIH1cbn1cbiIsImNoYXJ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMSAxIGF1dG87XG59XG5jaGFydCAuaGlnaGNoYXJ0cy1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxIDEgYXV0bztcbn1cbmNoYXJ0IHN2ZyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDEgMSBhdXRvO1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange } from '@angular/core';\nimport { ScatterPlotSerie } from 'app/shared/models/charts/chart-serie.interface';\nimport { ChartLegendGA } from 'app/shared/models/charts/charts.interface';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'ga-highchart-scatter-plot',\n templateUrl: './highchart-scatter-plot.component.html',\n styleUrls: ['./highchart-scatter-plot.component.scss'],\n providers: [],\n})\nexport class HighchartScatterPlotComponent implements OnInit, OnChanges {\n @Input() options: any;\n @Input() legend: ChartLegendGA[];\n @Input() data: ScatterPlotSerie[];\n\n @Input() downloadFileName: string;\n chart: any;\n isLoading = true;\n\n @Output() valuesSelected: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {\n this.options.series = this.data;\n this.isLoading = false;\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n // if the chart data has changed, update the values or redraw the chart if the number of series has changed\n for (const propName in changes) {\n if (propName === 'data' && this.chart && this.chart.series && this.chart.series[0]) {\n if (this.chart.series.length !== this.data.length) {\n this.redrawSeries();\n } else {\n this.udpateSeries();\n }\n\n this.chart.update({ series: this.data });\n this.chart.update({ yAxis: this.options.yAxis });\n this.chart.update({ xAxis: this.options.xAxis });\n } else if (propName === 'options' && this.chart) {\n this.chart.update({ containerWidth: this.options.containerWidth });\n }\n }\n }\n\n redrawSeries() {\n const nbSeriesToDelete = this.chart.series.length;\n for (let i = 0; i < nbSeriesToDelete; i++) {\n this.chart.series[0].remove();\n }\n\n this.data.forEach((serie, index) => {\n this.chart.addSeries(this.data[index]);\n });\n }\n\n redrawChart() {\n if (this.chart) {\n // DONT REMOVE IT\n setTimeout(() => {\n this.chart.setSize(null);\n });\n }\n }\n\n udpateSeries() {\n this.data.forEach((serie, index) => {\n this.chart.series[index].setData(this.data[index].data);\n });\n }\n\n saveInstance(chartInstance) {\n // DONT REMOVE IT: fix to avoid highcharts' callback with empty chartInstance after export\n if (!this.chart) {\n // DONT REMOVE IT: fix to avoid \"Expression has changed after it was checked\" error\n setTimeout(() => {\n this.chart = chartInstance;\n this.isLoading = false;\n });\n }\n }\n\n /**\n * Filter the series with only the points selected by zooming and return them to parent component.\n * /!\\ Event doesn't fire when the user scrolls horizontally.\n * @param event\n */\n getSelectedValues(event): void {\n const e = event.originalEvent;\n\n if (e.resetSelection) {\n this.valuesSelected.emit(this.data);\n return;\n }\n\n const xMin = e.xAxis[0].min;\n const xMax = e.xAxis[0].max;\n const yMin = e.yAxis[0].min;\n const yMax = e.yAxis[0].max;\n\n const dataSelected = _.cloneDeep(this.data);\n dataSelected.forEach(serie => {\n if (serie.data) {\n serie.data = serie.data.filter(point => {\n return point.x >= xMin && point.x <= xMax && point.y >= yMin && point.y <= yMax;\n });\n }\n });\n\n this.valuesSelected.emit(dataSelected);\n }\n}\n","export default \".ga-bloc {\\n margin-bottom: 25px;\\n background-color: white;\\n}\\n\\n.component-title {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n width: 100%;\\n height: 50px;\\n border-bottom: 1px solid #d9d9d9;\\n padding-left: 20px;\\n padding-right: 20px;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.component-title .main-title {\\n font-size: 0.875rem;\\n font-weight: bold;\\n}\\n\\n.component-title .subtitle {\\n color: #607188;\\n font-size: 0.875rem;\\n padding-left: 5px;\\n}\\n\\n.export__popover-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n\\n.export__popover-container div:not(:first-child) {\\n padding-top: 0.3rem;\\n}\\n\\n.export__popover-container div:not(:last-child) {\\n padding-bottom: 0.3rem;\\n}\\n\\n.export__popover-container div:hover {\\n cursor: pointer;\\n}\\n\\n.right-component-title {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n color: #607188;\\n font-size: 15px;\\n font-weight: bold;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n\\n.component-container {\\n width: 100%;\\n height: auto;\\n}\\n\\n.excel-icon {\\n height: 40px;\\n width: 32px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n cursor: pointer;\\n}\\n\\n.citron-icon {\\n height: 40px;\\n width: 32px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_citron.svg\\\");\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-position-y: 4px;\\n}\\n\\nbutton {\\n position: absolute;\\n right: 25px;\\n font-size: 12px;\\n top: 0px;\\n padding: 8px;\\n cursor: pointer;\\n}\\n\\n.data-exporting {\\n cursor: progress;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9jb21wb25lbnQtYmxvYy9jb21wb25lbnQtYmxvYy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL2NvbXBvbmVudC1ibG9jL2NvbXBvbmVudC1ibG9jLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLG1CQUFBO0VBQ0EsdUJBQUE7QUNESjs7QURJQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdDQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLGdEQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtBQ0RKOztBREdJO0VBQ0ksbUJBQUE7RUFDQSxpQkFBQTtBQ0RSOztBRElJO0VBQ0ksY0VFSztFRkRMLG1CQUFBO0VBQ0EsaUJBQUE7QUNGUjs7QURNQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7QUNISjs7QURLSTtFQUNJLG1CQUFBO0FDSFI7O0FES0k7RUFDSSxzQkFBQTtBQ0hSOztBREtJO0VBQ0ksZUFBQTtBQ0hSOztBRE9BO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLDhCQUFBO0VBQUEsNkJBQUE7VUFBQSxtQkFBQTtFQUNBLGNFeEJTO0VGeUJULGVBQUE7RUFDQSxpQkFBQTtFQUNBLGdEQUFBO0FDSko7O0FET0E7RUFDSSxXQUFBO0VBQ0EsWUFBQTtBQ0pKOztBRE9BO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSxpRUFBQTtVQUFBLHlEQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUNBLGVBQUE7QUNKSjs7QURPQTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0VBQUE7VUFBQSwwREFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSw0QkFBQTtBQ0pKOztBRE9BO0VBQ0ksa0JBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLFFBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBQ0pKOztBRE9BO0VBQ0ksZ0JBQUE7QUNKSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9jb21wb25lbnQtYmxvYy9jb21wb25lbnQtYmxvYy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMnO1xuXG4uZ2EtYmxvYyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLmNvbXBvbmVudC10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNTBweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgIC5tYWluLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgLnN1YnRpdGxlIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICB9XG59XG5cbi5leHBvcnRfX3BvcG92ZXItY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICBkaXY6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4zcmVtO1xuICAgIH1cbiAgICBkaXY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjNyZW07XG4gICAgfVxuICAgIGRpdjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbi5yaWdodC1jb21wb25lbnQtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xufVxuXG4uY29tcG9uZW50LWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuXG4uZXhjZWwtaWNvbiB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19leGNlbC5zdmcnKTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmNpdHJvbi1pY29uIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2NpdHJvbi5zdmcnKTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbi15OiA0cHg7XG59XG5cbmJ1dHRvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAyNXB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0b3A6IDBweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGF0YS1leHBvcnRpbmcge1xuICAgIGN1cnNvcjogcHJvZ3Jlc3M7XG59XG4iLCIuZ2EtYmxvYyB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uY29tcG9uZW50LXRpdGxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIHBhZGRpbmctbGVmdDogMjBweDtcbiAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5jb21wb25lbnQtdGl0bGUgLm1haW4tdGl0bGUge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5jb21wb25lbnQtdGl0bGUgLnN1YnRpdGxlIHtcbiAgY29sb3I6ICM2MDcxODg7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHBhZGRpbmctbGVmdDogNXB4O1xufVxuXG4uZXhwb3J0X19wb3BvdmVyLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLmV4cG9ydF9fcG9wb3Zlci1jb250YWluZXIgZGl2Om5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgcGFkZGluZy10b3A6IDAuM3JlbTtcbn1cbi5leHBvcnRfX3BvcG92ZXItY29udGFpbmVyIGRpdjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgcGFkZGluZy1ib3R0b206IDAuM3JlbTtcbn1cbi5leHBvcnRfX3BvcG92ZXItY29udGFpbmVyIGRpdjpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnJpZ2h0LWNvbXBvbmVudC10aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGNvbG9yOiAjNjA3MTg4O1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbn1cblxuLmNvbXBvbmVudC1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4uZXhjZWwtaWNvbiB7XG4gIGhlaWdodDogNDBweDtcbiAgd2lkdGg6IDMycHg7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fZXhjZWwuc3ZnXCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jaXRyb24taWNvbiB7XG4gIGhlaWdodDogNDBweDtcbiAgd2lkdGg6IDMycHg7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2l0cm9uLnN2Z1wiKTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXk6IDRweDtcbn1cblxuYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjVweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB0b3A6IDBweDtcbiAgcGFkZGluZzogOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5kYXRhLWV4cG9ydGluZyB7XG4gIGN1cnNvcjogcHJvZ3Jlc3M7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { saveAs } from 'file-saver';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-bloc',\n templateUrl: './component-bloc.component.html',\n styleUrls: ['./component-bloc.component.scss'],\n providers: [],\n})\nexport class ComponentBlocComponent implements OnInit {\n @Input() title: string;\n @Input() subtitle: string = null;\n @Input() unit: string = null;\n @Input() sup: string;\n @Input() customCss: object = {};\n @Input() exportExcelUrls: string[];\n @Input() exportExcelNames: string[];\n @Input() exportExcelUrl: string;\n @Input() exportExcelName: string;\n @Input() isDjuActivated: boolean;\n @Input() hasDju: boolean;\n @Input() isPopover = false;\n\n @Input() componentIsOpen: boolean = null; // to open/close component contained by bloc\n @Output() componentIsOpenChange = new EventEmitter();\n @Output() isDjuActivatedChange = new EventEmitter();\n\n titleColor: string;\n isExporting = false;\n\n /** Excel file extension */\n private fileExtension = 'xlsx';\n\n constructor(private router: Router, private exportService: ExportService, private route: ActivatedRoute) {}\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n let url = this.router.url;\n if (url && url.split('?').length) {\n // Keep only part before query params\n url = url.split('?')[0];\n if (url.split('/').length - 1 > 1) {\n this.titleColor = url.split('/')[1];\n } else {\n this.titleColor = url.replace('/', '');\n }\n }\n });\n }\n\n onDjuActivateSwitch(event) {\n this.isDjuActivatedChange.emit(event.checked);\n }\n\n getButtonTextFromState() {\n return this.componentIsOpen ? 'Fermer' : 'Ouvrir';\n }\n\n updateComponentIsOpen() {\n this.componentIsOpen = !this.componentIsOpen;\n this.componentIsOpenChange.emit(this.componentIsOpen);\n }\n\n getTitle() {\n return this.unit ? this.title.toUpperCase() + ' (' + this.unit + ')' : this.title.toUpperCase();\n }\n\n exportToExcel(index?) {\n if (index === 0 || index) {\n if (this.exportExcelUrls[index] && this.exportExcelNames[index] && !this.isExporting) {\n this.isExporting = true;\n this.getExportFile(this.exportExcelUrls[index], this.exportExcelNames[index]);\n }\n } else {\n if (this.exportExcelUrl && this.exportExcelName && !this.isExporting) {\n this.isExporting = true;\n this.getExportFile(this.exportExcelUrl, this.exportExcelName);\n }\n }\n }\n\n /**\n * Get export file by specified url and excel name\n *\n * @param {string} excelUrl - url to get the exported file\n * @param {string} excelName - exported file name\n */\n getExportFile(excelUrl: string, excelName: string): void {\n this.isExporting = true;\n\n // Rename given file name if missing extension\n if (excelName && !excelName.match(new RegExp(`\\\\.${this.fileExtension}$`))) {\n excelName += `.${this.fileExtension}`;\n }\n\n this.exportService.getFile(excelUrl).subscribe(\n file => {\n saveAs(file, excelName);\n this.isExporting = false;\n },\n err => {\n this.isExporting = false;\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite lors de l'export de données. Merci de réessayer.\",\n 'error'\n );\n }\n );\n }\n\n get canExport() {\n return (\n (this.exportExcelName && this.exportExcelUrl) ||\n (this.exportExcelNames &&\n this.exportExcelNames.length &&\n this.exportExcelUrls &&\n this.exportExcelUrls.length)\n );\n }\n\n get exportClass() {\n return this.isExporting ? 'citron-icon rotating' : 'excel-icon';\n }\n}\n","export default \".h-inherit {\\n height: inherit;\\n}\\n\\n.daterange-picker {\\n color: #607188;\\n font-size: 0.75rem;\\n text-align: center;\\n min-width: 180px;\\n}\\n\\n.days-number {\\n font-size: 0.75rem;\\n}\\n\\n::ng-deep .bs-datepicker .bs-calendar-container .bs-datepicker-head .current {\\n font-size: 0.75rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTtFQUNJLGVBQUE7QUNISjs7QURLQTtFQUNJLGNFa0JTO0VGakJULGtCQVBRO0VBUVIsa0JBQUE7RUFDQSxnQkFBQTtBQ0ZKOztBRElBO0VBQ0ksa0JBWlE7QUNXWjs7QURPWTtFQUNJLGtCQW5CSjtBQ2VaIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbiRmb250LXNpemU6IDAuNzVyZW07XG5cbi5oLWluaGVyaXQge1xuICAgIGhlaWdodDogaW5oZXJpdDtcbn1cbi5kYXRlcmFuZ2UtcGlja2VyIHtcbiAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDE4MHB4O1xufVxuLmRheXMtbnVtYmVyIHtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG59XG46Om5nLWRlZXAgLmJzLWRhdGVwaWNrZXIge1xuICAgIC5icy1jYWxlbmRhci1jb250YWluZXIge1xuICAgICAgICAvLyBDaGFuZ2UgdGhlIGZvbnQtc2l6ZSBmb3IgdGhlIGRhdGVyYW5nZXBpY2tlciBoZWFkZXJcbiAgICAgICAgLmJzLWRhdGVwaWNrZXItaGVhZCB7XG4gICAgICAgICAgICAuY3VycmVudCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmgtaW5oZXJpdCB7XG4gIGhlaWdodDogaW5oZXJpdDtcbn1cblxuLmRhdGVyYW5nZS1waWNrZXIge1xuICBjb2xvcjogIzYwNzE4ODtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1pbi13aWR0aDogMTgwcHg7XG59XG5cbi5kYXlzLW51bWJlciB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuOjpuZy1kZWVwIC5icy1kYXRlcGlja2VyIC5icy1jYWxlbmRhci1jb250YWluZXIgLmJzLWRhdGVwaWNrZXItaGVhZCAuY3VycmVudCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { DateRange, DateRangeLimit, RangePickerConfig } from './date-range-picker.interface';\n\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\n\nimport { defineLocale } from 'ngx-bootstrap/chronos';\nimport { BsLocaleService } from 'ngx-bootstrap/datepicker';\nimport { frLocale } from 'ngx-bootstrap/locale';\ndefineLocale('fr', frLocale);\n\n@Component({\n selector: 'ga-date-range-picker',\n templateUrl: './date-range-picker.component.html',\n styleUrls: ['./date-range-picker.component.scss'],\n})\nexport class DateRangePickerComponent implements OnInit {\n /** used to disable the date range picker input */\n @Input() isDisabled: boolean;\n\n /** date range picker configurations */\n @Input() dateRangePickerConfig: RangePickerConfig;\n\n /**date range limit (minDate & maxDate) */\n @Input() dateRangeLimit: DateRangeLimit;\n\n /** emit the selected period values */\n @Output() dateRangeChanged: EventEmitter = new EventEmitter();\n\n /** emit the number of days in the selected period */\n @Output() daysRangeChanged: EventEmitter = new EventEmitter();\n\n /** Placeholder of the date range input */\n public placeholder: string;\n\n /** date range value for the input element: [fromDate, toDate] */\n public dateRangeValue: Date[];\n\n /** date range data used to store fromDate and toDate values */\n _dateRange: DateRange;\n get dateRange(): DateRange {\n return this._dateRange;\n }\n /** allow date range to be set from parent component */\n @Input() set dateRange(value: DateRange) {\n if (this.isNewDate(value)) {\n this.dateRangeValue = [value.fromDate.date, value.toDate.date];\n this._dateRange = value;\n }\n }\n\n /** Number of days in the current selection */\n public nbDays: number;\n\n constructor(private localeService: BsLocaleService) {}\n\n ngOnInit() {\n /** set language */\n this.localeService.use('fr');\n\n /** init placeholder */\n this.placeholder = 'jj/mm/aaaa - jj/mm/aaaa';\n\n /** init dateRange values */\n const defaultDateRange = {\n fromDate: {\n date: null,\n utcDate: null,\n },\n toDate: {\n date: null,\n utcDate: null,\n },\n };\n this.dateRange = { ...defaultDateRange, ...this.dateRange };\n\n /* init the nb of days selected */\n this.nbDays = 0;\n\n /**\n * set the date range picker configurations\n */\n const defaultConfig = {\n containerClass: 'theme-default',\n dateInputFormat: 'DD/MM/YYYY',\n displayDays: true,\n placement: 'bottom',\n };\n this.dateRangePickerConfig = { ...defaultConfig, ...this.dateRangePickerConfig };\n }\n\n /**\n * Event triggered when the date range is selected\n * @param {Date[]} dateRange - date range selected\n */\n public onDateRangeChange(dateRange: Date[]) {\n const dateRangeKeys = ['fromDate', 'toDate'];\n if (dateRange && dateRange.length === 2) {\n dateRangeKeys.forEach((property: string, index: number) => {\n const date: Date = dateRange[index];\n /**\n * Ngx-bootstrap has a bug : it doesn't care of the timezones.\n * So we need to extract only year, month and day from date, not considering hours, minutes, ...\n */\n const utcDate: Date = date\n ? moment.utc({ y: date.getFullYear(), M: date.getMonth(), d: date.getDate() }).toDate()\n : null;\n\n _.set(this.dateRange, property, { date, utcDate });\n });\n } else {\n // reset date range\n dateRangeKeys.forEach((property: string, index: number) => {\n _.set(this.dateRange, property, {\n date: null,\n utcDate: null,\n });\n });\n }\n\n // compute the new nb of days\n this.setNbDaysSelected();\n // emit event that range has changed\n this.emitDateRangeChanged();\n this.emitRangeDaysChanged();\n }\n\n /**\n * Compute the current number of days selected\n * @returns {number | null}\n */\n private setNbDaysSelected(): number {\n if (!this.isValidDateRange) {\n this.nbDays = 0;\n return null;\n }\n const fromDate: moment.Moment = moment.utc(this.dateRange.fromDate.utcDate);\n const toDate: moment.Moment = moment.utc(this.dateRange.toDate.utcDate).add(1, 'day');\n this.nbDays = moment.utc(toDate).diff(fromDate, 'days');\n }\n\n /**\n * Returns the correct key to display for the number of days (singular or plural)\n * @returns {string} key\n */\n get messageKey(): string {\n return this.nbDays > 1 ? 'days' : 'day';\n }\n\n /**\n * Return true if the dateRange has all data set\n * @returns {boolean}\n */\n get isCompleteDateRange(): boolean {\n const dates = ['fromDate.date', 'toDate.date', 'fromDate.utcDate', 'toDate.utcDate'];\n return dates.every(d => _.get(this.dateRange, d));\n }\n\n /**\n * return true if the dateRange has the fromDate before or same as toDate\n * @returns {boolean}\n */\n get isValidDateRange(): boolean {\n if (!this.isCompleteDateRange) {\n return false;\n }\n const fromDate: moment.Moment = moment.utc(this.dateRange.fromDate.utcDate);\n const toDate: moment.Moment = moment.utc(this.dateRange.toDate.utcDate);\n return fromDate.isValid() && toDate.isValid() && toDate.isSameOrAfter(fromDate);\n }\n\n /**\n * Emit the selected range period values\n * @returns {void}\n */\n private emitDateRangeChanged(): void {\n this.dateRangeChanged.emit(this.dateRange);\n }\n\n /**\n * Emit the number of selected days\n * @returns {void}\n */\n private emitRangeDaysChanged(): void {\n this.daysRangeChanged.emit(this.nbDays);\n }\n\n /**\n * Returns true if a new valid date is incoming\n * @param {DateRange} dateRange - specified date range\n * @returns {boolean}\n */\n private isNewDate(newRange: DateRange): boolean {\n const fields = ['date', 'utcDate'];\n const rangePickers = ['fromDate', 'toDate'];\n if (!this.dateRange || !newRange || !this.dateRangeValue) {\n return true;\n }\n\n const isNewOrInvalid = fields.some(dateField => {\n return rangePickers.some((range, i) => {\n // returns true as soon as it finds an invalid date or a different date\n const isInvalid =\n !moment(this.dateRangeValue[i]).isValid() || !moment(newRange[range][dateField]).isValid();\n\n const isDifferent =\n moment(this.dateRangeValue[i]).format('YYYY-MM-DD') !==\n moment(newRange[range][dateField]).format('YYYY-MM-DD');\n return isInvalid || isDifferent;\n });\n });\n return isNewOrInvalid;\n }\n\n /**\n * @returns {string} grid properties to grant the correct nb of columns\n */\n get inputColClass(): string {\n // leave space to display the number of days if needed\n return this.dateRangePickerConfig.displayDays ? 'col-lg-12 col-xl-10 pb-lg-2' : 'col-sm-12';\n }\n}\n","export default \".multiselect-dropdown ::ng-deep .ng-select-container {\\n font-size: 0.75rem;\\n}\\n.multiselect-dropdown ::ng-deep .ng-select-container .ng-value-container {\\n color: #607188;\\n padding: 0.5rem 0.75rem;\\n}\\n.multiselect-dropdown ::ng-deep .ng-select-container .ng-value-container .ng-input,\\n.multiselect-dropdown ::ng-deep .ng-select-container .ng-value-container .ng-placeholder,\\n.multiselect-dropdown ::ng-deep .ng-select-container .ng-value-container input {\\n padding: 0;\\n}\\n.multiselect-dropdown ::ng-deep .ng-select-container input {\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n.multiselect-dropdown ::ng-deep .ng-dropdown-panel {\\n font-size: 0.75rem;\\n}\\n.multiselect-dropdown ::ng-deep .ng-dropdown-panel .header__select-all:hover {\\n cursor: pointer;\\n}\\n.multiselect-dropdown ::ng-deep .ng-dropdown-panel .header__select-all .ng-option-child .ng-option-label {\\n color: #607188;\\n}\\n.multiselect-dropdown ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option,\\n.multiselect-dropdown ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option-marked,\\n.multiselect-dropdown ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup {\\n color: #607188;\\n}\\n.multiselect-dropdown ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup .ng-option-label {\\n font-weight: bold;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9kcm9wZG93bi1tdWx0aWxldmVsL2Ryb3Bkb3duLW11bHRpbGV2ZWwuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9kcm9wZG93bi1tdWx0aWxldmVsL2Ryb3Bkb3duLW11bHRpbGV2ZWwuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtJO0VBQ0ksa0JBSkc7QUNBWDtBREtRO0VBQ0ksY0VrQkM7RUZqQkQsdUJBQUE7QUNIWjtBRElZOzs7RUFHSSxVQUFBO0FDRmhCO0FES1E7RUFDSSxnREFBQTtBQ0haO0FET0k7RUFDSSxrQkFwQkc7QUNlWDtBRFFZO0VBQ0ksZUFBQTtBQ05oQjtBRFVnQjtFQUNJLGNFTFA7QURIYjtBRGVZOzs7RUFHSSxjRWZIO0FERWI7QURrQmdCO0VBQ0ksaUJBQUE7QUNoQnBCIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL2Ryb3Bkb3duLW11bHRpbGV2ZWwvZHJvcGRvd24tbXVsdGlsZXZlbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbiRmb250c2l6ZTogMC43NXJlbTtcblxuLm11bHRpc2VsZWN0LWRyb3Bkb3duIDo6bmctZGVlcCB7XG4gICAgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgICAgICBmb250LXNpemU6ICRmb250c2l6ZTtcbiAgICAgICAgLm5nLXZhbHVlLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgICAgICAgICAgIC5uZy1pbnB1dCxcbiAgICAgICAgICAgIC5uZy1wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnRzaXplO1xuXG4gICAgICAgIC5oZWFkZXJfX3NlbGVjdC1hbGwge1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hpbGRyZW4gaXRlbVxuICAgICAgICAgICAgLm5nLW9wdGlvbi1jaGlsZCB7XG4gICAgICAgICAgICAgICAgLm5nLW9wdGlvbi1sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMge1xuICAgICAgICAgICAgLy8gYWxsIG9wdGlvbnNcbiAgICAgICAgICAgIC5uZy1vcHRpb24sXG4gICAgICAgICAgICAubmctb3B0aW9uLW1hcmtlZCxcbiAgICAgICAgICAgIC5uZy1vcHRncm91cCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBncm91cCBvcHRpb25cbiAgICAgICAgICAgIC5uZy1vcHRncm91cCB7XG4gICAgICAgICAgICAgICAgLm5nLW9wdGlvbi1sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5tdWx0aXNlbGVjdC1kcm9wZG93biA6Om5nLWRlZXAgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIge1xuICBjb2xvcjogIzYwNzE4ODtcbiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLWlucHV0LFxuLm11bHRpc2VsZWN0LWRyb3Bkb3duIDo6bmctZGVlcCAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcixcbi5tdWx0aXNlbGVjdC1kcm9wZG93biA6Om5nLWRlZXAgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciBpbnB1dCB7XG4gIHBhZGRpbmc6IDA7XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1zZWxlY3QtY29udGFpbmVyIGlucHV0IHtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cbi5tdWx0aXNlbGVjdC1kcm9wZG93biA6Om5nLWRlZXAgLm5nLWRyb3Bkb3duLXBhbmVsIC5oZWFkZXJfX3NlbGVjdC1hbGw6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1kcm9wZG93bi1wYW5lbCAuaGVhZGVyX19zZWxlY3QtYWxsIC5uZy1vcHRpb24tY2hpbGQgLm5nLW9wdGlvbi1sYWJlbCB7XG4gIGNvbG9yOiAjNjA3MTg4O1xufVxuLm11bHRpc2VsZWN0LWRyb3Bkb3duIDo6bmctZGVlcCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24sXG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi1tYXJrZWQsXG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwIHtcbiAgY29sb3I6ICM2MDcxODg7XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24gOjpuZy1kZWVwIC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwIC5uZy1vcHRpb24tbGFiZWwge1xuICBmb250LXdlaWdodDogYm9sZDtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport * as _ from 'lodash';\n\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { DropdownSettings } from './dropdown-multilevel.interface';\n\n@Component({\n selector: 'ga-dropdown-multilevel',\n templateUrl: './dropdown-multilevel.component.html',\n styleUrls: ['./dropdown-multilevel.component.scss'],\n})\nexport class DropdownMultilevelComponent implements OnInit {\n /**\n * Dropdown list to display\n */\n @Input() list: T[];\n\n /**\n * Dropdown multilevel configuration\n */\n @Input() settings: DropdownSettings;\n\n /**\n * Emit the selected items to the parent component\n */\n @Output() itemSelected: EventEmitter = new EventEmitter();\n\n /**\n * The selected items in the dropdown\n */\n @Input()\n public selectedItem: T;\n\n /**\n * Placeholder text to display\n */\n @Input()\n public placeholder: string;\n\n /**\n * Indicates if currently selecting all items.\n */\n private isSelectingAll = false;\n\n /**\n * NgSelectComponent\n */\n @ViewChild(NgSelectComponent, { static: false }) component: NgSelectComponent;\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Emit the selected item to the parent component\n */\n onChange() {\n // Don't emit selection if selecting all items.\n if (!this.isSelectingAll) {\n this.itemSelected.emit(this.selectedItem);\n }\n }\n\n /**\n * Handle select all action\n */\n public onSelectAll() {\n /**\n * Select method on component triggers selection event.\n * So we need to make sure itemSelected not emitted while selecting all, but once at the end.\n */\n this.isSelectingAll = true;\n this.component.itemsList.items.forEach(item => {\n this.component.select(item);\n });\n this.isSelectingAll = false;\n this.onChange();\n }\n}\n","export default \"@media (max-width: 1199.98px) {\\n .filter-lg-noborder .label-container {\\n border-bottom: none;\\n padding-bottom: 0;\\n }\\n}\\n.filter-container {\\n background-color: white;\\n}\\n.filter-select-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n padding: 0;\\n}\\n.label-container {\\n border-bottom: 1px solid #d9d9d9;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n.label-container label {\\n margin: 0 8px;\\n font-size: 12px;\\n}\\n.input-container {\\n padding: 12px 8px;\\n}\\n.input-container .input-date {\\n min-width: 150px;\\n}\\n.input-container select,\\n.input-container input {\\n font-size: 12px;\\n height: 33px;\\n}\\n.input-container .compare-bloc-search-line {\\n font-size: 12px;\\n height: 33px;\\n width: 100%;\\n position: relative;\\n}\\n.input-container .compare-bloc-search-line input {\\n border-radius: 5px;\\n border: 1px solid rgba(0, 0, 0, 0.15);\\n color: #495057;\\n width: 100%;\\n position: relative;\\n right: 0;\\n padding: 0.5rem 0.75rem;\\n height: 33px;\\n background-color: white;\\n}\\n.input-container .compare-bloc-search-line .search-result {\\n position: absolute;\\n top: 40px;\\n right: 0;\\n width: 300px;\\n background-color: white;\\n z-index: 2;\\n border: 1px solid #dfdfdf;\\n max-height: 300px;\\n overflow: scroll;\\n}\\n.input-container .compare-bloc-search-line .search-result .width-full {\\n width: 100%;\\n}\\n.input-container .compare-bloc-search-line .search-result .listOption {\\n width: 100%;\\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\\n color: #495057;\\n position: relative;\\n right: 0;\\n padding: 0.5rem 0.75rem;\\n height: 33px;\\n background-color: white;\\n cursor: pointer;\\n}\\n.input-container .compare-bloc-search-line .search-result .listOption:hover {\\n background-color: #fafafa;\\n}\\n.input-container .compare-bloc-search-line .search-result .listOption:active {\\n background-color: #f0f0f0;\\n}\\n.input-container .compare-bloc-search-line .text {\\n line-height: 40px;\\n height: 40px;\\n width: 100%;\\n padding-left: 2.5px;\\n cursor: pointer;\\n background-color: white;\\n text-align: left;\\n border: none;\\n padding-top: 0;\\n padding-bottom: 0;\\n padding-right: 0;\\n}\\n.compare-bloc-tag {\\n width: 100%;\\n height: auto;\\n}\\n.compare-bloc-tag .tag {\\n margin-left: 5px;\\n line-height: 30px;\\n height: 40px;\\n padding: 5px;\\n background-color: grey;\\n color: white;\\n display: inline-block;\\n border-radius: 4px;\\n}\\n.compare-bloc-tag .tag .text {\\n margin-right: 20px;\\n float: left;\\n font-size: 12px;\\n}\\n.compare-bloc-tag .tag button {\\n float: left;\\n color: white;\\n background-color: transparent;\\n border: 0;\\n font-size: 15px;\\n line-height: 20px;\\n height: 30px;\\n cursor: pointer;\\n}\\n.compare-bloc-tag .tag button:focus,\\n.compare-bloc-tag .tag button:active,\\n.compare-bloc-tag .tag button:hover {\\n background-color: transparent;\\n border: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vZmlsdGVyL2ZpbHRlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJUTtFQUNJO0lBQ0ksbUJBQUE7SUFDQSxpQkFBQTtFQ0hkO0FBQ0Y7QURPSTtFQUNJLHVCQUFBO0FDTFI7QURRSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLFVBQUE7QUNOUjtBRFVBO0VBQ0ksZ0NBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EsbUJBQUE7VUFBQSxZQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtBQ1BKO0FEU0k7RUFDSSxhQUFBO0VBQ0EsZUFBQTtBQ1BSO0FEV0E7RUFDSSxpQkFBQTtBQ1JKO0FEVUk7RUFDSSxnQkFBQTtBQ1JSO0FEV0k7O0VBRUksZUFBQTtFQUNBLFlBQUE7QUNUUjtBRFlJO0VBQ0ksZUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7QUNWUjtBRFlRO0VBQ0ksa0JBQUE7RUFDQSxxQ0FBQTtFQUNBLGNBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUNWWjtBRGFRO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QUNYWjtBRFlZO0VBQ0ksV0FBQTtBQ1ZoQjtBRFlZO0VBQ0ksV0FBQTtFQUNBLDRDQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0VBQ0EsZUFBQTtBQ1ZoQjtBRFlnQjtFQUNJLHlCQUFBO0FDVnBCO0FEYWdCO0VBQ0kseUJBQUE7QUNYcEI7QURnQlE7RUFDSSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtBQ2RaO0FEa0JBO0VBQ0ksV0FBQTtFQUNBLFlBQUE7QUNmSjtBRGdCSTtFQUNJLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7QUNkUjtBRGVRO0VBQ0ksa0JBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtBQ2JaO0FEZVE7RUFDSSxXQUFBO0VBQ0EsWUFBQTtFQUNBLDZCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0FDYlo7QURlUTs7O0VBR0ksNkJBQUE7RUFDQSxTQUFBO0FDYloiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vZmlsdGVyL2ZpbHRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMnO1xuXG4uZmlsdGVyIHtcbiAgICAmLWxnLW5vYm9yZGVyIHtcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkge1xuICAgICAgICAgICAgLmxhYmVsLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtY29udGFpbmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgfVxuXG4gICAgJi1zZWxlY3QtY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbi5sYWJlbC1jb250YWluZXIge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyZ3JleTtcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgbGFiZWwge1xuICAgICAgICBtYXJnaW46IDAgOHB4O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxufVxuXG4uaW5wdXQtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAxMnB4IDhweDtcblxuICAgIC5pbnB1dC1kYXRlIHtcbiAgICAgICAgbWluLXdpZHRoOiAxNTBweDtcbiAgICB9XG5cbiAgICBzZWxlY3QsXG4gICAgaW5wdXQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGhlaWdodDogMzNweDtcbiAgICB9XG5cbiAgICAuY29tcGFyZS1ibG9jLXNlYXJjaC1saW5lIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBoZWlnaHQ6IDMzcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAzM3B4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLXJlc3VsdCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDQwcHg7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZmRmZGY7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7XG4gICAgICAgICAgICAud2lkdGgtZnVsbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubGlzdE9wdGlvbiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM0OTUwNTc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnRleHQge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMi41cHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbi5jb21wYXJlLWJsb2MtdGFnIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgLnRhZyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgLnRleHQge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBidXR0b246Zm9jdXMsXG4gICAgICAgIGJ1dHRvbjphY3RpdmUsXG4gICAgICAgIGJ1dHRvbjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHtcbiAgLmZpbHRlci1sZy1ub2JvcmRlciAubGFiZWwtY29udGFpbmVyIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICB9XG59XG4uZmlsdGVyLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuLmZpbHRlci1zZWxlY3QtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZzogMDtcbn1cblxuLmxhYmVsLWNvbnRhaW5lciB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5sYWJlbC1jb250YWluZXIgbGFiZWwge1xuICBtYXJnaW46IDAgOHB4O1xuICBmb250LXNpemU6IDEycHg7XG59XG5cbi5pbnB1dC1jb250YWluZXIge1xuICBwYWRkaW5nOiAxMnB4IDhweDtcbn1cbi5pbnB1dC1jb250YWluZXIgLmlucHV0LWRhdGUge1xuICBtaW4td2lkdGg6IDE1MHB4O1xufVxuLmlucHV0LWNvbnRhaW5lciBzZWxlY3QsXG4uaW5wdXQtY29udGFpbmVyIGlucHV0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBoZWlnaHQ6IDMzcHg7XG59XG4uaW5wdXQtY29udGFpbmVyIC5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUge1xuICBmb250LXNpemU6IDEycHg7XG4gIGhlaWdodDogMzNweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5pbnB1dC1jb250YWluZXIgLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSBpbnB1dCB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgaGVpZ2h0OiAzM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5pbnB1dC1jb250YWluZXIgLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSAuc2VhcmNoLXJlc3VsdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA0MHB4O1xuICByaWdodDogMDtcbiAgd2lkdGg6IDMwMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgei1pbmRleDogMjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RmZGZkZjtcbiAgbWF4LWhlaWdodDogMzAwcHg7XG4gIG92ZXJmbG93OiBzY3JvbGw7XG59XG4uaW5wdXQtY29udGFpbmVyIC5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUgLnNlYXJjaC1yZXN1bHQgLndpZHRoLWZ1bGwge1xuICB3aWR0aDogMTAwJTtcbn1cbi5pbnB1dC1jb250YWluZXIgLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSAuc2VhcmNoLXJlc3VsdCAubGlzdE9wdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBoZWlnaHQ6IDMzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uaW5wdXQtY29udGFpbmVyIC5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUgLnNlYXJjaC1yZXN1bHQgLmxpc3RPcHRpb246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuLmlucHV0LWNvbnRhaW5lciAuY29tcGFyZS1ibG9jLXNlYXJjaC1saW5lIC5zZWFyY2gtcmVzdWx0IC5saXN0T3B0aW9uOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG59XG4uaW5wdXQtY29udGFpbmVyIC5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUgLnRleHQge1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1sZWZ0OiAyLjVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG59XG5cbi5jb21wYXJlLWJsb2MtdGFnIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cbi5jb21wYXJlLWJsb2MtdGFnIC50YWcge1xuICBtYXJnaW4tbGVmdDogNXB4O1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiA1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4uY29tcGFyZS1ibG9jLXRhZyAudGFnIC50ZXh0IHtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICBmbG9hdDogbGVmdDtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmNvbXBhcmUtYmxvYy10YWcgLnRhZyBidXR0b24ge1xuICBmbG9hdDogbGVmdDtcbiAgY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5jb21wYXJlLWJsb2MtdGFnIC50YWcgYnV0dG9uOmZvY3VzLFxuLmNvbXBhcmUtYmxvYy10YWcgLnRhZyBidXR0b246YWN0aXZlLFxuLmNvbXBhcmUtYmxvYy10YWcgLnRhZyBidXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xufSJdfQ== */\"","import { Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport * as moment from 'moment';\nimport { Subscription } from 'rxjs';\nimport { FilterConfig, TypeFilter } from '../../../models/filter-config.interface';\nimport { FilterService } from '../../../services/filter/filter.service';\n\nenum ParamsType {\n String = 'string',\n Array = 'array',\n}\n\n/**\n * Filter query values\n * Non exhaustive list of all possibilities.\n * But listing some fields can help with the type\n */\nexport interface FilterQuery {\n dateStart?: string;\n dateEnd?: string;\n [key: string]: string | any[] | number;\n}\n\n@Component({\n selector: 'ga-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss'],\n})\nexport class FilterComponent implements OnInit, OnDestroy {\n public readonly ALL_VALUE_FEM = 'Toutes';\n public readonly ALL_VALUE_MASC = 'Tous';\n public filters: FilterConfig[] = [];\n public TypeFilter = TypeFilter;\n public minYear: string = null;\n public maxYear: string = null;\n\n // ** autocomplete select dropdowns\n // array of all the categories/regions/sites\n public initialSearch = {\n sites: [] = [],\n categories: [] = [],\n regions: [] = [],\n energies: [] = [],\n };\n\n // array of the categories/regions/sites displayed\n public tempSearch = {\n sites: [] = [],\n categories: [] = [],\n regions: [] = [],\n energies: [] = [],\n };\n\n // text input from the user\n public autoCompleteValue = {\n sites: null,\n categories: null,\n regions: null,\n energies: null,\n };\n\n // last value displayed in the input when a category is clicked\n public lastSelectedValue = {\n sites: null,\n categories: null,\n regions: null,\n energies: null,\n };\n\n private clickInsideFiter = {\n sites: false,\n categories: false,\n regions: false,\n energies: false,\n };\n\n public placeHolders = {\n sites: this.ALL_VALUE_MASC,\n categories: this.ALL_VALUE_FEM,\n regions: this.ALL_VALUE_FEM,\n energies: this.ALL_VALUE_FEM,\n };\n\n public placeHoldersMultiSelect = {\n sites: 'Sélectionne un site',\n categories: 'Sélectionnez une catégorie',\n regions: 'Sélectionnez une région',\n energies: 'Sélectionnez un fluide',\n };\n\n public optionClass = 'listOption';\n\n private filterIndex = {\n sites: 0,\n categories: 0,\n regions: 0,\n energies: 0,\n };\n\n @Input() public tags = {\n sites: [] = [],\n categories: [] = [],\n regions: [] = [],\n energies: [] = [],\n };\n // to open / close the list of the dropdowns\n public showOptionsList = {\n sites: false,\n categories: false,\n regions: false,\n energies: false,\n };\n\n /**\n * Map between filter query and queryParams names add types\n */\n private paramsQueryMap: Array<{\n param: string;\n query: string;\n type: ParamsType;\n }> = [\n { param: 'loc', query: 'regions', type: ParamsType.String },\n { param: 'cat', query: 'categories', type: ParamsType.String },\n { param: 'en', query: 'energies', type: ParamsType.String },\n { param: 'c', query: 'companyId', type: ParamsType.String },\n { param: 'c_s', query: 'companies', type: ParamsType.Array },\n { param: 'start', query: 'dateStart', type: ParamsType.String },\n { param: 'end', query: 'dateEnd', type: ParamsType.String },\n ];\n\n private routeSubscription: Subscription;\n\n @Input() filterName: string;\n\n @Output() sendError: EventEmitter = new EventEmitter();\n @Output() querySearch: EventEmitter = new EventEmitter();\n @Input() hasLabel = true;\n @Input() companyId: string = null;\n @Input() searchBtnClass: string;\n\n /**\n * Class name on filters html objects. Used mainly for columns management.\n * Applied to every filter item.\n */\n @Input() filterClassName = '';\n\n // ** Listen to the user's clicks to determine whether the user clicked on a category from the list or outside the list to exit it\n @HostListener('click', ['$event']) isClickOnSearchList(event) {\n // clicked inside the filter component\n }\n\n @HostListener('document:click', ['$event']) IsClickOutsideList(event) {\n // if clicks on Search -> the input is reset & list of options hidden\n if (!event.target['classList'].contains(this.searchBtnClass)) {\n // has an id only if clicked on the input, none if clicked outside\n // if clicks completely outside the filter anywhere on the page --> wants to close the dropdown\n if (event.target.id !== 'onInputMulti' && event.target.id !== 'onInputSingle') {\n this.showOptionsList.categories = false;\n this.showOptionsList.regions = false;\n this.showOptionsList.sites = false;\n this.showOptionsList.energies = false;\n }\n }\n }\n\n constructor(private filterService: FilterService, private route: ActivatedRoute, private router: Router) {}\n\n ngOnInit() {\n this.initFilter().then(async () => {\n /**\n * Only one subscription of the route must exists for the filter\n * (Prevent multiple subscrition after company change on home page)\n */\n if (this.routeSubscription) {\n this.routeSubscription.unsubscribe();\n }\n // We only launch the event for the page queries when filters are loaded\n // We don't want to override existing params, but set them if they don't exist.\n await this.search(false);\n\n this.routeSubscription = this.route.queryParams.subscribe({\n next: params => {\n // On refresh (= session company change), we unsubscribe to simulate a \"fresh start\".\n if (params && params.refresh === 'true') {\n if (this.routeSubscription) {\n this.routeSubscription.unsubscribe();\n }\n } else {\n const query = this.paramsToQuery(params);\n this.setQueryValueToFilters(query);\n this.querySearch.emit(query);\n }\n },\n });\n });\n }\n\n ngOnDestroy() {\n if (this.routeSubscription) {\n this.routeSubscription.unsubscribe();\n }\n }\n\n /**\n * Set query values to filters as selected value,\n * or resets filters' default value if no query param is provided\n * Used when loading page with filters already in URL.\n * If value set is the same, won't change filter.\n * @param {FilterQuery} query - query to set values of.\n */\n private setQueryValueToFilters(query: FilterQuery) {\n this.filters.forEach(filter => {\n const value = query[filter.propertyName];\n if (typeof value !== 'undefined') {\n if (filter.multiSelect) {\n filter.selectedValue = value.toString().split(',');\n } else {\n filter.selectedValue = value;\n }\n } else {\n filter.selectedValue = filter.defaultValue;\n }\n });\n }\n\n /**\n * Get values from filters and set it into a query then transform it to URL parameters.\n * Finally, update URL's parameters. This change will be caught by query parameters subscribers to emit search.\n * @param {boolean} overrideParams - if true, override URL params, if false, set only if params weren't present\n */\n async search(overrideParams: boolean = true): Promise {\n const query: FilterQuery = {};\n for (const filter of this.filters) {\n if (filter.type === TypeFilter.selectAutoComplete) {\n this.showOptionsList[filter.propertyName] = false;\n if (filter.multiSelect) {\n this.autoCompleteValue[filter.propertyName] = '';\n query[filter.propertyName] = filter.multiSelectedValues;\n } else {\n this.autoCompleteValue[filter.propertyName] = this.lastSelectedValue[filter.propertyName];\n query[filter.propertyName] = filter.selectedValue;\n }\n } else {\n query[filter.propertyName] = filter.selectedValue;\n }\n }\n\n /**\n * Update route's queryParams with current search\n * If not trying to override the params, will merge them.\n * Keep the old version of a param, if it was existing. Create it otherwise\n */\n const params = this.queryToParams(query);\n if (!overrideParams) {\n Object.assign(params, this.route.snapshot.queryParams);\n }\n // changes the route without moving from the current view or\n // triggering a navigation event\n await this.router.navigate([], {\n relativeTo: this.route,\n queryParams: params,\n queryParamsHandling: '',\n skipLocationChange: false,\n });\n }\n\n /**\n * Called on autocomplete input change\n * @param {string} filterName - name of the input\n * @param {string} search - search value\n */\n public onInputSelected(filterName: string, search: string) {\n this.showOptionsList[filterName] = true;\n this.clickInsideFiter[filterName] = true;\n this.tempSearch[filterName] = [];\n\n if (\n search === '' ||\n search === this.placeHolders[filterName] ||\n search === this.placeHoldersMultiSelect[filterName]\n ) {\n this.tempSearch[filterName] = this.initialSearch[filterName].slice();\n } else {\n this.updateTempSearch(filterName, search);\n }\n }\n\n /**\n * Update the autocomplete input results by specified search value\n * @param {string} filterName - filter name of the handled input\n * @param {string} search - search value\n */\n private updateTempSearch(filterName: string, search: string) {\n const lowerSearch = search.toLowerCase();\n\n this.tempSearch[filterName] = this.initialSearch[filterName].filter(option => {\n return option.text.toLowerCase().includes(lowerSearch);\n });\n }\n\n /**\n * On option clicked:\n * - if clicked on input different than \"Tous\" - will be removed later cause \"Tous\" isn't possible\n * - if option \"Tous\" is selected, display nothing but the placeholder \"Tous\"\n * @param {string} filterName\n * @param {*} optionSelected\n */\n public onOptionClicked(filterName: string, optionSelected: any) {\n // if clicked on input different than \"Tous\" - will be removed later cause \"Tous\" isn't possible\n if (optionSelected) {\n this.autoCompleteValue[filterName] = optionSelected.text; // for the text displayed in the input\n this.lastSelectedValue[filterName] = optionSelected.text; // if next input is wrong - display the previous one\n this.filters[this.filterIndex[filterName]].selectedValue = optionSelected.id; // for the query\n } else {\n // if option \"Tous\" is selected, display nothing but the placeholder \"Tous\"\n this.autoCompleteValue[filterName] = this.placeHolders[filterName];\n this.lastSelectedValue[filterName] = this.placeHolders[filterName];\n this.filters[this.filterIndex[filterName]].selectedValue = null;\n }\n this.showOptionsList[filterName] = false;\n this.clickInsideFiter[filterName] = true;\n }\n\n /**\n * Add the selected item in the tag list (5 items max)\n * @param {*} itemSelected\n * @param {string} filterName\n */\n private addTag(itemSelected: any, filterName: string) {\n if (this.tags[filterName].length < 5) {\n this.tags[filterName].push(itemSelected);\n this.showOptionsList[filterName] = false;\n this.filters[this.filterIndex[filterName]].multiSelectedValues.push(itemSelected.id); // for the query\n }\n }\n\n /**\n * Remove the selected tag\n * @param {string} filterName\n * @param {number} indexTag\n * @param {number} indexFilter\n */\n public removeTag(filterName: string, indexTag: number, indexFilter: number) {\n // put the option back in the dropdown list\n this.tempSearch[filterName].push(this.tags[filterName][indexTag]);\n this.initialSearch[filterName].push(this.tags[filterName][indexTag]);\n this.tempSearch[filterName].sort(this.sortAsc);\n this.initialSearch[filterName].sort(this.sortAsc);\n\n // remove from the tags and selected values\n this.tags[filterName].splice(indexTag, 1);\n this.filters[indexFilter].multiSelectedValues.splice(indexTag, 1);\n }\n\n /**\n * Check selected start date and end date then emit error\n */\n public checkDateValues() {\n const dateStart = this.filters.find(element => element.propertyName === 'dateStart');\n const dateEnd = this.filters.find(element => element.propertyName === 'dateEnd');\n const isDateStartBeforeEnd = moment(dateStart.selectedValue).isBefore(dateEnd.selectedValue);\n\n if (isDateStartBeforeEnd) {\n this.sendError.emit('');\n } else {\n this.sendError.emit('Votre date de début ne peut pas être supérieure à votre date de fin');\n }\n }\n\n /**\n * Init filter\n * @return {Promise}\n */\n public async initFilter(): Promise {\n const onlyValuesFromCompany = this.companyId ? true : false;\n\n const filtersConfig = await this.filterService.getFilterConfig(this.filterName, onlyValuesFromCompany);\n this.filters = filtersConfig.map((filterConfig, index) => {\n if (filterConfig.defaultValue) {\n filterConfig.selectedValue = filterConfig.defaultValue;\n }\n\n // fill options of auto increment dropdowns\n if (\n filterConfig.propertyName === 'categories' ||\n filterConfig.propertyName === 'sites' ||\n filterConfig.propertyName === 'regions' ||\n filterConfig.propertyName === 'energies'\n ) {\n this.filterIndex[filterConfig.propertyName] = index;\n this.initialSearch[filterConfig.propertyName] = filterConfig.data.slice();\n this.initialSearch[filterConfig.propertyName].sort(this.sortAsc);\n this.tempSearch[filterConfig.propertyName] = filterConfig.data.slice();\n this.tempSearch[filterConfig.propertyName].sort(this.sortAsc);\n this.tags[filterConfig.propertyName] = [];\n filterConfig.multiSelectedValues = [];\n }\n\n // put the min max on date select\n if (filterConfig.propertyName === 'dateYear') {\n this.minYear = filterConfig.data[0].value.concat('-01');\n this.maxYear = filterConfig.data[filterConfig.data.length - 1].value.concat('-12');\n }\n\n return filterConfig;\n });\n }\n\n /**\n * Helper to sort asc\n * Return -1 if the text A is before the text B\n * Return 1 if the text A is after the text B\n * Otherwise return 0\n * @param {*} optionA\n * @param {*} optionB\n * @returns {number}\n */\n private sortAsc(optionA: any, optionB: any): number {\n if (optionA.text < optionB.text) {\n return -1;\n } else if (optionA.text > optionB.text) {\n return 1;\n } else {\n return 0;\n }\n }\n\n /**\n * On option autocompleted clicked\n * @param {boolean} isMultiselect\n * @param {*} itemSelected\n * @param {string} filterName\n */\n public onOptionAutoCompleteClicked(isMultiselect: boolean, itemSelected: any, filterName: string) {\n if (isMultiselect) {\n // add to the tags list\n this.addTag(itemSelected, filterName);\n\n // remove from the dropdown options list\n this.tempSearch[filterName] = this.tempSearch[filterName].filter(item => {\n return item !== itemSelected;\n });\n this.initialSearch[filterName] = this.initialSearch[filterName].filter(item => {\n return item !== itemSelected;\n });\n } else {\n this.onOptionClicked(filterName, itemSelected);\n }\n }\n\n /**\n * Get the placeholder identified by the type and the name of the select input\n * @param {boolean} isMultiselect\n * @param {string} filterName\n */\n public getPlaceholder(isMultiselect: boolean, filterName: string) {\n if (isMultiselect) {\n return this.placeHoldersMultiSelect[filterName];\n } else {\n return this.placeHolders[filterName];\n }\n }\n\n /**\n * Transform URL query params into a query for filters\n * @param {Params} params - params from URL\n * @returns {FilterQuery} query formatted object\n */\n private paramsToQuery(params: Params): FilterQuery {\n const query: FilterQuery = {};\n Object.keys(params).forEach(key => {\n const s = this.paramsQueryMap.find(x => x.param === key);\n if (s) {\n switch (s.type) {\n default:\n case ParamsType.String: {\n query[s.query] = params[key];\n break;\n }\n case ParamsType.Array: {\n // query[s.query] = params[key].split(',');\n query[s.query] = params[key];\n break;\n }\n }\n }\n });\n return query;\n }\n\n /**\n * Transform query from filters into URL query params\n * @param {Object} query - query from filters\n * @returns {Parms} query params for URL\n */\n private queryToParams(query: FilterQuery): Params {\n const params: Params = {};\n Object.keys(query).forEach(key => {\n const s = this.paramsQueryMap.find(x => x.query === key);\n if (s) {\n switch (s.type) {\n default:\n case ParamsType.String: {\n params[s.param] = query[key];\n break;\n }\n case ParamsType.Array: {\n if (query[key] && Array.isArray(query[key])) {\n params[s.param] = (query[key] as any[]).join(',');\n }\n break;\n }\n }\n }\n });\n return params;\n }\n}\n","export default \".button-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n width: 100%;\\n background-color: white;\\n margin-top: 0;\\n padding-bottom: 10px;\\n padding-right: 10px;\\n}\\n\\n.filters {\\n margin-bottom: 12px;\\n}\\n\\n.error {\\n font-size: 12px;\\n color: red;\\n padding: 0 6px 6px 16px;\\n z-index: 2;\\n}\\n\\n.citron-btn {\\n height: 40px;\\n font-size: 14px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9mdWxsLWZpbHRlci9mdWxsLWZpbHRlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL2Z1bGwtZmlsdGVyL2Z1bGwtZmlsdGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EscUJBQUE7VUFBQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUNBLG1CQUFBO0FDQ0o7O0FERUE7RUFDSSxtQkFBQTtBQ0NKOztBREVBO0VBQ0ksZUFBQTtFQUNBLFVBQUE7RUFDQSx1QkFBQTtFQUNBLFVBQUE7QUNDSjs7QURFQTtFQUNJLFlBQUE7RUFDQSxlQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vZnVsbC1maWx0ZXIvZnVsbC1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMTBweDtcbn1cblxuLmZpbHRlcnMge1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG59XG5cbi5lcnJvciB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiByZWQ7XG4gICAgcGFkZGluZzogMCA2cHggNnB4IDE2cHg7XG4gICAgei1pbmRleDogMjtcbn1cblxuLmNpdHJvbi1idG4ge1xuICAgIGhlaWdodDogNDBweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIuYnV0dG9uLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG5cbi5maWx0ZXJzIHtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cblxuLmVycm9yIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogcmVkO1xuICBwYWRkaW5nOiAwIDZweCA2cHggMTZweDtcbiAgei1pbmRleDogMjtcbn1cblxuLmNpdHJvbi1idG4ge1xuICBoZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn0iXX0= */\"","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChange,\n ViewChild,\n} from '@angular/core';\nimport { FilterComponent } from '../filter/filter.component';\n\n@Component({\n selector: 'ga-full-filter',\n templateUrl: './full-filter.component.html',\n styleUrls: ['./full-filter.component.scss'],\n})\nexport class FullFilterComponent implements OnInit, OnChanges {\n @ViewChild(FilterComponent, { static: true }) SubFilter;\n\n @Input() filterName: string;\n @Input() subtitle: string;\n @Input() refresh = false;\n\n /**\n * Class name on filters html objects. Used mainly for columns management.\n * Applied to every filter item.\n */\n @Input() filterClassName: string;\n\n @Output() querySearch: EventEmitter = new EventEmitter();\n public searchBtnClassName = 'searchBtn';\n\n public error = '';\n\n constructor() {}\n ngOnInit() {}\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n // Relaunch the filters with the current session values -> reload page by sending event\n for (const propName in changes) {\n if (propName === 'refresh' && this.refresh) {\n // refresh is set when the company logged in has changed --> need to reload the filters accordingly\n this.sendInitEvent();\n }\n }\n }\n\n public sendSearchEvent() {\n this.SubFilter.search();\n }\n\n public sendInitEvent() {\n this.SubFilter.ngOnInit();\n }\n\n public search(query) {\n this.querySearch.emit(query);\n }\n\n public updateError(text) {\n this.error = text;\n }\n}\n","export default \".text {\\n text-align: center;\\n padding-bottom: 15px;\\n padding-top: 15px;\\n}\\n.text.align-center {\\n text-align: center;\\n}\\n.text.align-left {\\n text-align: left;\\n}\\n.text.align-right {\\n text-align: right;\\n}\\n.text p {\\n font-size: 0.875rem;\\n line-height: normal;\\n margin-bottom: 0;\\n}\\n.text span {\\n line-height: normal;\\n margin-bottom: 0;\\n}\\n@-webkit-keyframes blink {\\n 0% {\\n opacity: 0.2;\\n }\\n 20% {\\n opacity: 1;\\n }\\n 100% {\\n opacity: 0.2;\\n }\\n}\\n@keyframes blink {\\n 0% {\\n opacity: 0.2;\\n }\\n 20% {\\n opacity: 1;\\n }\\n 100% {\\n opacity: 0.2;\\n }\\n}\\n.text .saving span {\\n -webkit-animation-name: blink;\\n animation-name: blink;\\n -webkit-animation-duration: 1.4s;\\n animation-duration: 1.4s;\\n -webkit-animation-iteration-count: infinite;\\n animation-iteration-count: infinite;\\n -webkit-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n.text .saving span:nth-child(2) {\\n -webkit-animation-delay: 0.2s;\\n animation-delay: 0.2s;\\n}\\n.text .saving span:nth-child(3) {\\n -webkit-animation-delay: 0.4s;\\n animation-delay: 0.4s;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9sb2FkaW5nLWRhdGEvbG9hZGluZy1kYXRhLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1kYXRhL2xvYWRpbmctZGF0YS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtCQUFBO0VBQ0Esb0JBQUE7RUFDQSxpQkFBQTtBQ0NKO0FEQUk7RUFDSSxrQkFBQTtBQ0VSO0FEQUk7RUFDSSxnQkFBQTtBQ0VSO0FEQUk7RUFDSSxpQkFBQTtBQ0VSO0FEQUk7RUFDSSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7QUNFUjtBREFJO0VBQ0ksbUJBQUE7RUFDQSxnQkFBQTtBQ0VSO0FEQUk7RUFDSTtJQUNJLFlBQUE7RUNFVjtFREFNO0lBQ0ksVUFBQTtFQ0VWO0VEQU07SUFDSSxZQUFBO0VDRVY7QUFDRjtBRFhJO0VBQ0k7SUFDSSxZQUFBO0VDRVY7RURBTTtJQUNJLFVBQUE7RUNFVjtFREFNO0lBQ0ksWUFBQTtFQ0VWO0FBQ0Y7QURDSTtFQUNJLDZCQUFBO1VBQUEscUJBQUE7RUFDQSxnQ0FBQTtVQUFBLHdCQUFBO0VBQ0EsMkNBQUE7VUFBQSxtQ0FBQTtFQUNBLGlDQUFBO1VBQUEseUJBQUE7QUNDUjtBREVJO0VBQ0ksNkJBQUE7VUFBQSxxQkFBQTtBQ0FSO0FER0k7RUFDSSw2QkFBQTtVQUFBLHFCQUFBO0FDRFIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1kYXRhL2xvYWRpbmctZGF0YS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi50ZXh0IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgJi5hbGlnbi1jZW50ZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgICYuYWxpZ24tbGVmdCB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIHNwYW4ge1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIGJsaW5rIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMC4yO1xuICAgICAgICB9XG4gICAgICAgIDIwJSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMC4yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNhdmluZyBzcGFuIHtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGJsaW5rO1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDEuNHM7XG4gICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgIH1cblxuICAgIC5zYXZpbmcgc3BhbjpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMnM7XG4gICAgfVxuXG4gICAgLnNhdmluZyBzcGFuOm50aC1jaGlsZCgzKSB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC40cztcbiAgICB9XG59XG4iLCIudGV4dCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gIHBhZGRpbmctdG9wOiAxNXB4O1xufVxuLnRleHQuYWxpZ24tY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnRleHQuYWxpZ24tbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4udGV4dC5hbGlnbi1yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLnRleHQgcCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4udGV4dCBzcGFuIHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbkBrZXlmcmFtZXMgYmxpbmsge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMC4yO1xuICB9XG4gIDIwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwLjI7XG4gIH1cbn1cbi50ZXh0IC5zYXZpbmcgc3BhbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBibGluaztcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxLjRzO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbn1cbi50ZXh0IC5zYXZpbmcgc3BhbjpudGgtY2hpbGQoMikge1xuICBhbmltYXRpb24tZGVsYXk6IDAuMnM7XG59XG4udGV4dCAuc2F2aW5nIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjRzO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-loading-data',\n templateUrl: './loading-data.component.html',\n styleUrls: ['./loading-data.component.scss'],\n providers: [],\n})\nexport class LoadingDataComponent implements OnInit {\n /** Boolean value : If component is loading, it's true. Else, it's false. */\n @Input() loading: boolean;\n /** String value setting loading text alignment. Possible values are \"center\", \"left\" or \"right\" */\n @Input() align: 'center' | 'left' | 'right' = 'center';\n\n constructor() {}\n ngOnInit() {}\n\n get textAlignClass() {\n return 'align-' + this.align;\n }\n}\n","export default \".map-container {\\n position: relative;\\n}\\n\\n.map-info-container {\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n z-index: 1;\\n border: solid 1px lightgrey;\\n background-color: white;\\n}\\n\\n.map-default-legend-container {\\n display: -webkit-box;\\n display: flex;\\n padding: 0;\\n margin: 0;\\n}\\n\\n.map-default-legend {\\n padding: 5px 5px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n max-width: 150px;\\n font-size: 12px;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.map-default-legend:first-child {\\n border-top-left-radius: 2px;\\n border-bottom-left-radius: 2px;\\n padding-left: 10px;\\n}\\n\\n.map-default-legend:last-child {\\n border-top-right-radius: 2px;\\n border-bottom-right-radius: 2px;\\n padding-right: 10px;\\n}\\n\\n.map-default-legend-image {\\n margin-bottom: 3px;\\n}\\n\\n.map-default-legend-text {\\n text-align: center;\\n}\\n\\n.icon-green {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #39c659;\\n -webkit-mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n}\\n\\n.icon-orange {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #d8a63e;\\n -webkit-mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n}\\n\\n.icon-grey {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n -webkit-mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n}\\n\\n.icon-red {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n mask-image: url(\\\"/assets/img/carto/marker.svg\\\");\\n}\\n\\nagm-map {\\n height: 400px;\\n}\\n\\n.window-title {\\n text-decoration: underline;\\n}\\n\\n.window-title:hover {\\n cursor: pointer;\\n}\\n\\n.window-body {\\n margin-top: 5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9tYXAvbWFwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vbWFwL21hcC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0VBQ0ksa0JBQUE7QUNKSjs7QURPQTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxVQUFBO0VBQ0EsMkJBQUE7RUFDQSx1QkFBQTtBQ0pKOztBRE9BO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7QUNKSjs7QURPQTtFQUNJLGdCQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtBQ0pKOztBRE1JO0VBQ0ksMkJBOUJPO0VBK0JQLDhCQS9CTztFQWdDUCxrQkFBQTtBQ0pSOztBRE1JO0VBQ0ksNEJBbkNPO0VBb0NQLCtCQXBDTztFQXFDUCxtQkFBQTtBQ0pSOztBRFFBO0VBQ0ksa0JBQUE7QUNMSjs7QURRQTtFQUNJLGtCQUFBO0FDTEo7O0FEUUE7RUVuREksWUZvRGlCO0VFbkRqQixXRm1EdUI7RUVsRHZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ3VCTTtFRG5CTix1REFBQTtVQUFBLCtDQUFBO0FEMENSOztBRENBO0VFdERJLFlGdURpQjtFRXREakIsV0ZzRHVCO0VFckR2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkFBQTtFQUlBLHVEQUFBO1VBQUEsK0NBQUE7QURvRFI7O0FETkE7RUV6REksWUYwRGlCO0VFekRqQixXRnlEdUI7RUV4RHZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ2tCSztFRGRMLHVEQUFBO1VBQUEsK0NBQUE7QUQ4RFI7O0FEYkE7RUU1REksWUY2RGlCO0VFNURqQixXRjREdUI7RUUzRHZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ2lCQTtFRGJBLHVEQUFBO1VBQUEsK0NBQUE7QUR3RVI7O0FEbkJBO0VBQ0ksYUFBQTtBQ3NCSjs7QURuQkE7RUFDSSwwQkFBQTtBQ3NCSjs7QURyQkk7RUFDSSxlQUFBO0FDdUJSOztBRG5CQTtFQUNJLGVBQUE7QUNzQkoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vbWFwL21hcC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5cbiRib3JkZXJSYWRpdXM6IDJweDtcblxuLm1hcC1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm1hcC1pbmZvLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTZweDtcbiAgICByaWdodDogMTZweDtcbiAgICB6LWluZGV4OiAxO1xuICAgIGJvcmRlcjogc29saWQgMXB4IGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLm1hcC1kZWZhdWx0LWxlZ2VuZC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5tYXAtZGVmYXVsdC1sZWdlbmQge1xuICAgIHBhZGRpbmc6IDVweCA1cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJGJvcmRlclJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJGJvcmRlclJhZGl1cztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJGJvcmRlclJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgfVxufVxuXG4ubWFwLWRlZmF1bHQtbGVnZW5kLWltYWdlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG59XG5cbi5tYXAtZGVmYXVsdC1sZWdlbmQtdGV4dCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uaWNvbi1ncmVlbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigzMHB4LCAzMHB4LCAkbWFya2VyZ3JlZW4sICcvYXNzZXRzL2ltZy9jYXJ0by9tYXJrZXIuc3ZnJyk7XG59XG4uaWNvbi1vcmFuZ2Uge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMzBweCwgMzBweCwgJGNvbnRyYXRzLCAnL2Fzc2V0cy9pbWcvY2FydG8vbWFya2VyLnN2ZycpO1xufVxuLmljb24tZ3JleSB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigzMHB4LCAzMHB4LCAkdGV4dC1jb2xvciwgJy9hc3NldHMvaW1nL2NhcnRvL21hcmtlci5zdmcnKTtcbn1cbi5pY29uLXJlZCB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigzMHB4LCAzMHB4LCAkYWRtaW4sICcvYXNzZXRzL2ltZy9jYXJ0by9tYXJrZXIuc3ZnJyk7XG59XG5cbmFnbS1tYXAge1xuICAgIGhlaWdodDogNDAwcHg7XG59XG5cbi53aW5kb3ctdGl0bGUge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICY6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4ud2luZG93LWJvZHkge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbn1cbiIsIi5tYXAtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubWFwLWluZm8tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDE2cHg7XG4gIHJpZ2h0OiAxNnB4O1xuICB6LWluZGV4OiAxO1xuICBib3JkZXI6IHNvbGlkIDFweCBsaWdodGdyZXk7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4ubWFwLWRlZmF1bHQtbGVnZW5kLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLm1hcC1kZWZhdWx0LWxlZ2VuZCB7XG4gIHBhZGRpbmc6IDVweCA1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1heC13aWR0aDogMTUwcHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5tYXAtZGVmYXVsdC1sZWdlbmQ6Zmlyc3QtY2hpbGQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAycHg7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDJweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuLm1hcC1kZWZhdWx0LWxlZ2VuZDpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDJweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbn1cblxuLm1hcC1kZWZhdWx0LWxlZ2VuZC1pbWFnZSB7XG4gIG1hcmdpbi1ib3R0b206IDNweDtcbn1cblxuLm1hcC1kZWZhdWx0LWxlZ2VuZC10ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uaWNvbi1ncmVlbiB7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzljNjU5O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9jYXJ0by9tYXJrZXIuc3ZnXCIpO1xufVxuXG4uaWNvbi1vcmFuZ2Uge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4YTYzZTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvY2FydG8vbWFya2VyLnN2Z1wiKTtcbn1cblxuLmljb24tZ3JleSB7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3MTg4O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9jYXJ0by9tYXJrZXIuc3ZnXCIpO1xufVxuXG4uaWNvbi1yZWQge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvY2FydG8vbWFya2VyLnN2Z1wiKTtcbn1cblxuYWdtLW1hcCB7XG4gIGhlaWdodDogNDAwcHg7XG59XG5cbi53aW5kb3ctdGl0bGUge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi53aW5kb3ctdGl0bGU6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi53aW5kb3ctYm9keSB7XG4gIG1hcmdpbi10b3A6IDVweDtcbn0iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { AgmInfoWindow, AgmMarker, MapsAPILoader } from '@agm/core';\nimport { ControlPosition, ZoomControlOptions } from '@agm/core';\nimport {\n Component,\n DoCheck,\n EventEmitter,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnInit,\n Output,\n QueryList,\n ViewChildren,\n} from '@angular/core';\n\nimport { MarkerLegend } from 'app/shared/models/marker-legend.interface';\nimport { Marker } from 'app/shared/models/marker.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { MapService } from 'app/shared/services/map/map.service';\n\n@Component({\n selector: 'ga-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss'],\n providers: [],\n})\nexport class MapComponent implements OnInit, DoCheck {\n @Input() markers: Marker[] = [];\n markersDiffer: IterableDiffer;\n\n latlngBounds: google.maps.LatLngBounds;\n markerSelected: Marker = null;\n\n // google maps inputs\n @Input() lat = 51.673858;\n @Input() lng = 7.815982;\n @Input() styles: object[] = this.mapService.getMapStyle();\n @Input() mapHeight = 400;\n @Input() scrollwheel = false;\n @Input() zoom = 8;\n @Input() zoomControl = true;\n @Input() zoomControlOptions: ZoomControlOptions = { position: ControlPosition.LEFT_TOP };\n @Input() defaultIcon = true;\n\n // data inputs\n @Input() legends: MarkerLegend[] = [];\n\n @Input() multipleInfoWindow = false;\n\n // outputs\n @Output() markerClick: EventEmitter = new EventEmitter();\n @ViewChildren(AgmMarker) agmMarkers: QueryList;\n\n constructor(\n private mapService: MapService,\n private mapsAPILoader: MapsAPILoader,\n private markersDiffers: IterableDiffers,\n private energyService: EnergyService\n ) {\n this.markersDiffer = markersDiffers.find([]).create(null);\n }\n\n ngOnInit() {}\n\n ngDoCheck(): void {\n const changes = this.markersDiffer.diff(this.markers);\n // if the markers list length has changed\n if (changes) {\n this.setBounds(); // when a marker is added or removed, resize the map\n\n const isDefault = this.defaultIcon;\n changes.forEachAddedItem(record => {\n isDefault ? this.setDefaultIcon(record.item) : this.setIconUrl(record.item); // set icon on the map for each new marker\n });\n }\n }\n\n onMarkerClick(marker: Marker, infoWindow: AgmInfoWindow) {\n if (!this.agmMarkers) {\n return;\n }\n const hostMaker = this.agmMarkers.find(x => x.latitude === marker.lat && x.longitude === marker.lng);\n if (hostMaker) {\n infoWindow.hostMarker = hostMaker;\n this.setMarkerWindow(marker);\n this.markerSelected = marker;\n this.latlngBounds = null;\n infoWindow.open();\n this.markerClick.emit(marker);\n }\n }\n\n public setIconUrl(marker: Marker): void {\n marker.icon = this.mapService.getIconUrl(marker.type);\n }\n\n private setDefaultIcon(marker: Marker): void {\n marker.icon = this.mapService.iconsUrl.defaultOne;\n }\n\n public getAgmCss() {\n return {\n height: this.mapHeight + 'px',\n };\n }\n\n private setBounds() {\n // needed to avoid center map on ocean on empty markers #itsnormalindevland\n if (!this.markers.length) {\n return;\n }\n\n this.mapsAPILoader.load().then(() => {\n const newLatLngBounds = new google.maps.LatLngBounds();\n\n this.markers.forEach(marker => {\n if (marker.lat && marker.lng) {\n const latLng = new google.maps.LatLng(marker.lat, marker.lng);\n newLatLngBounds.extend(latLng);\n }\n });\n\n // fix if bounds need more space\n if (newLatLngBounds.getNorthEast().equals(newLatLngBounds.getSouthWest())) {\n const extendPoint1 = new google.maps.LatLng(\n newLatLngBounds.getNorthEast().lat() + 0.01,\n newLatLngBounds.getNorthEast().lng() + 0.01\n );\n const extendPoint2 = new google.maps.LatLng(\n newLatLngBounds.getNorthEast().lat() - 0.01,\n newLatLngBounds.getNorthEast().lng() - 0.01\n );\n newLatLngBounds.extend(extendPoint1);\n newLatLngBounds.extend(extendPoint2);\n }\n\n this.latlngBounds = newLatLngBounds;\n });\n }\n\n /**\n * Get marker route\n * @param {Marker} marker\n * @returns {string[]}\n */\n getMarkerPlaceRoute(marker: Marker): string[] {\n let route: string[] = [];\n if (marker.infoWindow && marker.data._id) {\n switch (marker.config) {\n default:\n case 'carto':\n case 'site': {\n let fluid = 'energie';\n if (marker.type === 'water') {\n fluid = 'eau';\n } else if (marker.type === 'fuel') {\n fluid = 'vehicules';\n }\n route = [`/${fluid}/profil/${marker.data._id}`];\n break;\n }\n }\n }\n return route;\n }\n\n setMarkerWindow(marker: Marker) {\n switch (marker.config) {\n default:\n case 'site':\n marker.infoWindow = {\n title: marker.data.complement || 'NC',\n infoArray: [this.getMarkerAddress(marker.data)],\n };\n break;\n\n case 'carto':\n marker.infoWindow = {\n title: marker.data.complement || 'NC',\n infoArray: [this.getMarkerAddress(marker.data), this.getMarkerPdlCount(marker.data)],\n };\n break;\n\n case 'dju':\n marker.infoWindow = {\n title: '', // not using default title as it is a link and for DJU, link is not needed (no redirection)\n infoArray: [[[marker.data.title]]],\n };\n break;\n }\n }\n\n getMarkerAddress(site) {\n if (site.city) {\n const streetNumber = site.streetNumber || '';\n const zipcode = site.zipcode || '';\n\n return [[`${streetNumber} ${site.streetName}`], [`${zipcode} ${site.city}`]];\n } else {\n return [[site.name]];\n }\n }\n\n getMarkerPdlCount(site) {\n const infoArray = [];\n\n if (site.infoFluids) {\n Object.keys(site.infoFluids).forEach(fluid => {\n if (site.infoFluids[fluid]) {\n let display = this.energyService.energyFullText(fluid) + ' : ' + site.infoFluids[fluid];\n display += this.energyService.isFluidFromVehicle(fluid) ? ' véhicules' : ' PDL';\n infoArray.push([display]);\n }\n });\n }\n\n if (!infoArray.length) {\n infoArray.push(['', 'Aucun PDL']);\n }\n\n return infoArray;\n }\n\n hasMarkerWindow() {\n return Boolean(\n this.markerSelected &&\n this.markerSelected.infoWindow &&\n (this.markerSelected.infoWindow.title || this.markerSelected.infoWindow.infoArray)\n );\n }\n}\n","export default \".modal-header .close {\\n padding: 0;\\n}\\n\\n.modal__container {\\n max-width: none;\\n margin-bottom: 50px;\\n}\\n\\n@media (min-width: 1200px) {\\n .modal-lg .modal__container {\\n width: 1200px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9tb2RhbC9tb2RhbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL21vZGFsL21vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksVUFBQTtBQ0NKOztBREVBO0VBQ0ksZUFBQTtFQUNBLG1CQUFBO0FDQ0o7O0FER0k7RUFDSTtJQUNJLGFBQUE7RUNBVjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL21vZGFsL21vZGFsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm1vZGFsLWhlYWRlciAuY2xvc2Uge1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi5tb2RhbF9fY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbn1cblxuLm1vZGFsLWxnIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgICAgIC5tb2RhbF9fY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMjAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubW9kYWwtaGVhZGVyIC5jbG9zZSB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5tb2RhbF9fY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiBub25lO1xuICBtYXJnaW4tYm90dG9tOiA1MHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5tb2RhbC1sZyAubW9kYWxfX2NvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEyMDBweDtcbiAgfVxufSJdfQ== */\"","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { ModalDirective, ModalOptions } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'ga-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n providers: [],\n})\nexport class ModalComponent implements OnInit {\n @Input() title: string;\n\n /**\n * If true, prevent modal from closing by clicking outside or using ESC key.\n */\n @Input() set preventBackdrop(value: boolean) {\n const doPrevent = Boolean(value);\n\n if (this.modal) {\n const config: ModalOptions = {\n ignoreBackdropClick: doPrevent,\n keyboard: !doPrevent,\n };\n this.modal.config = config;\n }\n }\n\n /** Size of modal. Can be 'sm', 'md' or 'lg' */\n @Input() size: 'sm' | 'md' | 'lg' = 'lg';\n\n /**\n * Creation/Edit modal\n */\n @ViewChild('customModal', { static: true }) modal: ModalDirective;\n\n constructor() {}\n\n ngOnInit() {}\n\n public show() {\n this.modal.show();\n }\n\n public close() {\n this.modal.hide();\n }\n\n /**\n * @returns {boolean} true if modal is shown, false otherwise\n */\n public get isShown(): boolean {\n return this.modal.isShown;\n }\n}\n","export default \".text {\\n text-align: center;\\n padding-top: 15px;\\n padding-bottom: 15px;\\n}\\n.text p {\\n font-size: 0.875rem;\\n line-height: normal;\\n margin-bottom: 0;\\n}\\n.text span {\\n line-height: normal;\\n margin-bottom: 0;\\n}\\n@-webkit-keyframes blink {\\n 0% {\\n opacity: 0.2;\\n }\\n 20% {\\n opacity: 1;\\n }\\n 100% {\\n opacity: 0.2;\\n }\\n}\\n@keyframes blink {\\n 0% {\\n opacity: 0.2;\\n }\\n 20% {\\n opacity: 1;\\n }\\n 100% {\\n opacity: 0.2;\\n }\\n}\\n.text .saving span {\\n -webkit-animation-name: blink;\\n animation-name: blink;\\n -webkit-animation-duration: 1.4s;\\n animation-duration: 1.4s;\\n -webkit-animation-iteration-count: infinite;\\n animation-iteration-count: infinite;\\n -webkit-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n.text .saving span:nth-child(2) {\\n -webkit-animation-delay: 0.2s;\\n animation-delay: 0.2s;\\n}\\n.text .saving span:nth-child(3) {\\n -webkit-animation-delay: 0.4s;\\n animation-delay: 0.4s;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9ub2RhdGEvbm8tZGF0YS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL25vZGF0YS9uby1kYXRhLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0FDQ0o7QURBSTtFQUNJLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtBQ0VSO0FEQUk7RUFDSSxtQkFBQTtFQUNBLGdCQUFBO0FDRVI7QURBSTtFQUNJO0lBQ0ksWUFBQTtFQ0VWO0VEQU07SUFDSSxVQUFBO0VDRVY7RURBTTtJQUNJLFlBQUE7RUNFVjtBQUNGO0FEWEk7RUFDSTtJQUNJLFlBQUE7RUNFVjtFREFNO0lBQ0ksVUFBQTtFQ0VWO0VEQU07SUFDSSxZQUFBO0VDRVY7QUFDRjtBRENJO0VBQ0ksNkJBQUE7VUFBQSxxQkFBQTtFQUNBLGdDQUFBO1VBQUEsd0JBQUE7RUFDQSwyQ0FBQTtVQUFBLG1DQUFBO0VBQ0EsaUNBQUE7VUFBQSx5QkFBQTtBQ0NSO0FERUk7RUFDSSw2QkFBQTtVQUFBLHFCQUFBO0FDQVI7QURHSTtFQUNJLDZCQUFBO1VBQUEscUJBQUE7QUNEUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9ub2RhdGEvbm8tZGF0YS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi50ZXh0IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIHNwYW4ge1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIGJsaW5rIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMC4yO1xuICAgICAgICB9XG4gICAgICAgIDIwJSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMC4yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNhdmluZyBzcGFuIHtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGJsaW5rO1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDEuNHM7XG4gICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgIH1cblxuICAgIC5zYXZpbmcgc3BhbjpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMnM7XG4gICAgfVxuXG4gICAgLnNhdmluZyBzcGFuOm50aC1jaGlsZCgzKSB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC40cztcbiAgICB9XG59XG4iLCIudGV4dCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDE1cHg7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xufVxuLnRleHQgcCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4udGV4dCBzcGFuIHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbkBrZXlmcmFtZXMgYmxpbmsge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMC4yO1xuICB9XG4gIDIwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwLjI7XG4gIH1cbn1cbi50ZXh0IC5zYXZpbmcgc3BhbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBibGluaztcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxLjRzO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbn1cbi50ZXh0IC5zYXZpbmcgc3BhbjpudGgtY2hpbGQoMikge1xuICBhbmltYXRpb24tZGVsYXk6IDAuMnM7XG59XG4udGV4dCAuc2F2aW5nIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjRzO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\n@Component({\n selector: 'ga-nodata',\n templateUrl: './no-data.component.html',\n styleUrls: ['./no-data.component.scss'],\n providers: [],\n})\nexport class NoDataComponent implements OnInit {\n /** The data on which we want to check if it exists. */\n @Input() data: any;\n /** No data message to display */\n @Input() message: string = null;\n\n /**\n * Returns the given no data message or a default one\n * @returns {string}\n */\n get noDataMessage(): string {\n return this.message || this.translateService._('no_data');\n }\n\n constructor(private translateService: TranslateService) {}\n ngOnInit() {}\n}\n","export default \".action-add {\\n font-weight: bold;\\n color: #2f3b40;\\n}\\n\\n.action-enable {\\n font-weight: bold;\\n color: #038c25;\\n}\\n\\n.action-disable {\\n font-weight: bold;\\n color: #db4b47;\\n}\\n\\n.status__line-more {\\n border-bottom: 1px solid #607188;\\n width: 100%;\\n}\\n\\n.status__box-more {\\n position: absolute;\\n}\\n\\n.status__display-more {\\n min-height: 1.2rem;\\n}\\n\\n.status__container-more {\\n height: 100%;\\n}\\n\\n.status__text-more {\\n color: #607188;\\n border: 1px solid #607188;\\n border-radius: 3px;\\n background-color: white;\\n padding: 0px 25px;\\n}\\n\\n.status__text-more:hover {\\n color: white;\\n background-color: #6d7b8d;\\n cursor: pointer;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9wb3BvdmVyL2hpc3RvcnkvaGlzdG9yeS1wb3BvdmVyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL3BvcG92ZXIvaGlzdG9yeS9oaXN0b3J5LXBvcG92ZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7RUFDSSxpQkFBQTtFQUNBLGNDcUJLO0FDeEJUOztBRk1BO0VBQ0ksaUJBQUE7RUFDQSxjQUFBO0FFSEo7O0FGTUE7RUFDSSxpQkFBQTtFQUNBLGNDU0k7QUNaUjs7QUZTQTtFQUNJLGdDQUFBO0VBQ0EsV0FBQTtBRU5KOztBRlNBO0VBQ0ksa0JBQUE7QUVOSjs7QUZTQTtFQUNJLGtCQUFBO0FFTko7O0FGU0E7RUFDSSxZQUFBO0FFTko7O0FGU0E7RUFDSSxjQ2RTO0VEZVQseUJBQUE7RUFDQSxrQkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7QUVOSjs7QUZRSTtFQUNJLFlBQUE7RUFDQSx5QkE1QmtCO0VBNkJsQixlQUFBO0FFTlIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vcG9wb3Zlci9oaXN0b3J5L2hpc3RvcnktcG9wb3Zlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xuXG4uYWN0aW9uLWFkZCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6ICRuYXZiYXI7XG59XG5cbi5hY3Rpb24tZW5hYmxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzAzOGMyNTtcbn1cblxuLmFjdGlvbi1kaXNhYmxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGFkbWluO1xufVxuXG4kc3RhdHVzX19ib3gtY29sb3I6ICR0ZXh0LWNvbG9yO1xuJHN0YXR1c19fYm94LWNvbG9yLWxpZ2h0OiAjNmQ3YjhkO1xuXG4uc3RhdHVzX19saW5lLW1vcmUge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkc3RhdHVzX19ib3gtY29sb3I7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5zdGF0dXNfX2JveC1tb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5zdGF0dXNfX2Rpc3BsYXktbW9yZSB7XG4gICAgbWluLWhlaWdodDogMS4ycmVtO1xufVxuXG4uc3RhdHVzX19jb250YWluZXItbW9yZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc3RhdHVzX190ZXh0LW1vcmUge1xuICAgIGNvbG9yOiAkc3RhdHVzX19ib3gtY29sb3I7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHN0YXR1c19fYm94LWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAwcHggMjVweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzdGF0dXNfX2JveC1jb2xvci1saWdodDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiLmFjdGlvbi1hZGQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICMyZjNiNDA7XG59XG5cbi5hY3Rpb24tZW5hYmxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAjMDM4YzI1O1xufVxuXG4uYWN0aW9uLWRpc2FibGUge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICNkYjRiNDc7XG59XG5cbi5zdGF0dXNfX2xpbmUtbW9yZSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNjA3MTg4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnN0YXR1c19fYm94LW1vcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5zdGF0dXNfX2Rpc3BsYXktbW9yZSB7XG4gIG1pbi1oZWlnaHQ6IDEuMnJlbTtcbn1cblxuLnN0YXR1c19fY29udGFpbmVyLW1vcmUge1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5zdGF0dXNfX3RleHQtbW9yZSB7XG4gIGNvbG9yOiAjNjA3MTg4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjNjA3MTg4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAwcHggMjVweDtcbn1cbi5zdGF0dXNfX3RleHQtbW9yZTpob3ZlciB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZkN2I4ZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport * as moment from 'moment';\n\n@Component({\n selector: 'ga-popover-history',\n templateUrl: './history-popover.component.html',\n styleUrls: ['./history-popover.component.scss'],\n})\nexport class HistoryPopoverComponent implements OnInit {\n @Input() entity: any = [];\n\n historyDisplay: any = [];\n fullDisplay = false;\n\n constructor() {}\n ngOnInit() {\n this.computeHistory();\n }\n\n public computeHistory() {\n this.historyDisplay = [];\n if (this.entity && this.entity.createdAt) {\n this.historyDisplay.push({\n actionText: 'Ajouté',\n actionClass: 'action-add',\n user: 'Citron',\n date: moment(this.entity.createdAt).format('DD/MM/YYYY'),\n });\n }\n if (this.entity && this.entity.status && this.entity.status.history) {\n const history = this.entity.status.history.concat();\n history.forEach((action, index) => {\n const line: any = {};\n if (index === 0 && action.activation && !this.entity.createdAt) {\n line.actionText = 'Ajouté';\n line.actionClass = 'action-add';\n } else {\n line.actionText = action.activation ? 'Activé' : 'Désactivé';\n line.actionClass = action.activation ? 'action-enable' : 'action-disable';\n }\n if (typeof action.user === 'object') {\n line.user = action.user.firstname + ' ' + action.user.name;\n } else {\n line.user = 'NC';\n }\n line.date = moment(action.date).format('DD/MM/YYYY H:mm:ss');\n this.historyDisplay.push(line);\n });\n }\n }\n /**\n * Return true if the history matching the index needs to be displayed (by default display the first and last two)\n */\n isHistoryToDisplay(index): boolean {\n return (\n this.fullDisplay ||\n (index === 0 || index === this.historyDisplay.length - 1 || index === this.historyDisplay.length - 2)\n );\n }\n\n hideDisplayMore(index) {\n return index !== 0 || this.fullDisplay || this.historyDisplay.length <= 3;\n }\n}\n","export default \".citron-progress-bar {\\n width: 100%;\\n min-width: 120px;\\n border-radius: 2px;\\n border: 1px solid #f0f0f0;\\n background-color: transparent;\\n}\\n\\n.citron-progress-bar-line {\\n height: 100%;\\n -webkit-transition: 0.4s all;\\n transition: 0.4s all;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSw2QkFBQTtBQ0NKOztBREVBO0VBQ0ksWUFBQTtFQUNBLDRCQUFBO0VBQUEsb0JBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNpdHJvbi1wcm9ncmVzcy1iYXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi13aWR0aDogMTIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMGYwZjA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5jaXRyb24tcHJvZ3Jlc3MtYmFyLWxpbmUge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiAwLjRzIGFsbDtcbn1cbiIsIi5jaXRyb24tcHJvZ3Jlc3MtYmFyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMTIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2YwZjBmMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5jaXRyb24tcHJvZ3Jlc3MtYmFyLWxpbmUge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zaXRpb246IDAuNHMgYWxsO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n})\nexport class ProgressBarComponent implements OnInit {\n @Input() value = 0;\n @Input() color = '#5BAF4D';\n @Input() height = 7;\n\n constructor() {}\n ngOnInit() {}\n\n getPercentageString() {\n return this.value + '%';\n }\n\n getHeight() {\n return this.height + 'px';\n }\n}\n","export default \".simple-autocomplete {\\n position: relative;\\n height: -webkit-fill-available;\\n}\\n\\n.caret-icon {\\n position: absolute;\\n top: 0;\\n right: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n width: 40px;\\n height: 100%;\\n font-size: 12px;\\n color: inherit;\\n cursor: pointer;\\n -webkit-transition: all 0.15s ease-in-out;\\n transition: all 0.15s ease-in-out;\\n}\\n\\n.list {\\n position: absolute;\\n left: 0;\\n right: 0;\\n max-height: 300px;\\n overflow: auto;\\n background-color: white;\\n z-index: 10;\\n border: 1px solid #e1e1e1;\\n}\\n\\n.list-item {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n min-height: 40px;\\n width: 100%;\\n padding: 0px 16px;\\n font-size: 12px;\\n cursor: pointer;\\n line-height: 1.3;\\n border-bottom: 1px solid #e1e1e1;\\n -webkit-transition: all 0.15s ease-in-out;\\n transition: all 0.15s ease-in-out;\\n}\\n\\n.list-item:last-child {\\n border-bottom: none;\\n}\\n\\n.list-item:hover {\\n background-color: #e1e1e1;\\n}\\n\\n.list-item:active {\\n background-color: #cdcdcd;\\n}\\n\\n.simple-autocomplete .autocomplete-input {\\n height: 100%;\\n width: 100%;\\n font-size: inherit;\\n color: inherit;\\n}\\n\\n.simple-autocomplete.open .autocomplete-input:active, .simple-autocomplete.open .autocomplete-input:focus {\\n background-color: white;\\n}\\n\\n.simple-autocomplete.open .caret-icon {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9zaW1wbGUtYXV0b2NvbXBsZXRlL3NpbXBsZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9zaW1wbGUtYXV0b2NvbXBsZXRlL3NpbXBsZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7RUFDSSxrQkFBQTtFQUNBLDhCQUFBO0FDSEo7O0FETUE7RUFDSSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtFQUNBLHlDQUFBO0VBQUEsaUNBQUE7QUNISjs7QURNQTtFQUNJLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7RUFDQSx1QkE5QmM7RUErQmQsV0FBQTtFQUNBLHlCQUFBO0FDSEo7O0FETUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0NBQUE7RUFDQSx5Q0FBQTtFQUFBLGlDQUFBO0FDSEo7O0FES0k7RUFDSSxtQkFBQTtBQ0hSOztBRE1JO0VBQ0kseUJBbkRNO0FDK0NkOztBRE9JO0VBQ0kseUJBQUE7QUNMUjs7QURVSTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0FDUFI7O0FEV1k7RUFFSSx1QkF2RUU7QUM2RGxCOztBRGNRO0VBQ0ksaUNBQUE7VUFBQSx5QkFBQTtBQ1paIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL3NpbXBsZS1hdXRvY29tcGxldGUvc2ltcGxlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiRiYWNrZ3JvdW5kQ29sb3I6IHdoaXRlO1xuJGJvcmRlckNvbG9yOiAjZTFlMWUxO1xuJGlucHV0SGVpZ2h0OiA0MDtcblxuLnNpbXBsZS1hdXRvY29tcGxldGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XG59XG5cbi5jYXJldC1pY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogJGlucHV0SGVpZ2h0ICsgcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuXG4ubGlzdCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbWF4LWhlaWdodDogMzAwcHg7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmRDb2xvcjtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyQ29sb3I7XG59XG5cbi5saXN0LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtaW4taGVpZ2h0OiAkaW5wdXRIZWlnaHQgKyBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwcHggMTZweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXJDb2xvcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZS1pbi1vdXQ7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9yZGVyQ29sb3I7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RjZGNkO1xuICAgIH1cbn1cblxuLnNpbXBsZS1hdXRvY29tcGxldGUge1xuICAgIC5hdXRvY29tcGxldGUtaW5wdXQge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAgICAuYXV0b2NvbXBsZXRlLWlucHV0IHtcbiAgICAgICAgICAgICY6YWN0aXZlLFxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJldC1pY29uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuc2ltcGxlLWF1dG9jb21wbGV0ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO1xufVxuXG4uY2FyZXQtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuXG4ubGlzdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIG1heC1oZWlnaHQ6IDMwMHB4O1xuICBvdmVyZmxvdzogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDEwO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTFlMWUxO1xufVxuXG4ubGlzdC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWluLWhlaWdodDogNDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDBweCAxNnB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMWUxZTE7XG4gIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlLWluLW91dDtcbn1cbi5saXN0LWl0ZW06bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4ubGlzdC1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZTFlMTtcbn1cbi5saXN0LWl0ZW06YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkY2RjZDtcbn1cblxuLnNpbXBsZS1hdXRvY29tcGxldGUgLmF1dG9jb21wbGV0ZS1pbnB1dCB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uc2ltcGxlLWF1dG9jb21wbGV0ZS5vcGVuIC5hdXRvY29tcGxldGUtaW5wdXQ6YWN0aXZlLCAuc2ltcGxlLWF1dG9jb21wbGV0ZS5vcGVuIC5hdXRvY29tcGxldGUtaW5wdXQ6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5zaW1wbGUtYXV0b2NvbXBsZXRlLm9wZW4gLmNhcmV0LWljb24ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufSJdfQ== */\"","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\n@Component({\n selector: 'ga-simple-autocomplete',\n templateUrl: './simple-autocomplete.component.html',\n styleUrls: ['./simple-autocomplete.component.scss'],\n providers: [],\n})\nexport class SimpleAutocompleteComponent implements OnInit {\n private _list: T[] = [];\n private _selectedItem: T;\n\n searchValue = '';\n canShowList = false;\n filteredList: T[] = [];\n autocompleteClass = '';\n\n // optional inputs\n @Input() name = 'simple-autocomplete';\n @Input() placeholder = '';\n @Input() textAttribute = 'text';\n @Input() defaultNoText = 'Aucune valeur associée à cet item';\n @Input() defaultNoList = 'Pas de valeurs';\n @Input() valueAttribute = 'value';\n @Input() filterAttributes: string[] = [];\n\n // important inputs\n @Input() value: U;\n @Input()\n get list() {\n return this._list;\n }\n set list(list) {\n this._list = list;\n this.setFilteredList();\n }\n\n @Input()\n get selectedItem() {\n return this._selectedItem;\n }\n\n set selectedItem(selectedItem) {\n this._selectedItem = selectedItem;\n\n if (selectedItem) {\n this.searchValue = selectedItem[this.textAttribute];\n this.setFilteredList();\n } else {\n this.searchValue = '';\n this.setFilteredList();\n }\n }\n @Input() disableActions = false;\n\n // event\n @Output() valueChange: EventEmitter = new EventEmitter(true);\n\n // list template used to allow html in list\n @ContentChild(TemplateRef, { static: true }) listItemTemplate: TemplateRef;\n\n constructor(private utils: UtilsService) {}\n\n ngOnInit() {}\n\n showList() {\n this.canShowList = true;\n this.autocompleteClass = 'open';\n }\n\n hideList() {\n this.canShowList = false;\n this.autocompleteClass = '';\n\n if (this.selectedItem) {\n this.searchValue = this.selectedItem[this.textAttribute];\n }\n }\n\n toggleList() {\n if (!this.disableActions) {\n if (this.canShowList) {\n this.hideList();\n } else {\n this.showList();\n }\n }\n }\n\n selectValue(item: T) {\n this.setValue(item);\n this.hideList();\n }\n\n getItemText(item: T) {\n return item[this.textAttribute] || this.defaultNoText;\n }\n\n setFilteredList() {\n if (!this.searchValue) {\n this.filteredList = this.list;\n }\n\n this.filteredList = this.list.sort().filter(item => {\n const isInTextAttribute = this.valueIncludeSearch(item[this.textAttribute]);\n\n if (this.filterAttributes.length) {\n return (\n isInTextAttribute ||\n this.filterAttributes.some(key => item[key] && this.valueIncludeSearch(item[key]))\n );\n } else {\n return isInTextAttribute;\n }\n });\n }\n\n private setValue(item: T) {\n this.value = item[this.valueAttribute];\n this.searchValue = item[this.textAttribute];\n this.selectedItem = item;\n this.valueChange.emit(this.value);\n }\n\n private valueIncludeSearch(value: U): boolean {\n if (value !== null && typeof value !== 'undefined') {\n return this.utils\n .removeAccentFromString(value.toString())\n .toLowerCase()\n .includes(this.searchValue.toLowerCase());\n }\n\n return false;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-simple-table',\n templateUrl: './simple-table.component.html',\n styleUrls: ['./simple-table.component.scss'],\n})\nexport class SimpleTableComponent implements OnInit {\n @Input() data: any[] = [];\n @Input() headers: any[] = [];\n\n constructor() {}\n ngOnInit() {}\n}\n","export default \".citron-btn {\\n width: inherit;\\n}\\n\\n.citron-btn:hover {\\n opacity: 1;\\n}\\n\\n.inactiveToggle {\\n background-color: #ffffff;\\n color: #607188;\\n}\\n\\n.energie {\\n border: solid #d3bf96 1px !important;\\n}\\n\\n.eau {\\n border: solid #4281b8 1px !important;\\n}\\n\\n.analyse {\\n border: solid #4281b8 1px !important;\\n}\\n\\n.inactiveToggle:hover {\\n background-color: #ffffff;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi90b2dnbGUtYnV0dG9ucy90b2dnbGUtYnV0dG9ucy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL3RvZ2dsZS1idXR0b25zL3RvZ2dsZS1idXR0b25zLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLGNBQUE7QUNESjs7QURJQTtFQUNJLFVBQUE7QUNESjs7QURJQTtFQUNJLHlCQUFBO0VBQ0EsY0VjUztBRGZiOztBRElBO0VBQ0ksb0NBQUE7QUNESjs7QURHQTtFQUNJLG9DQUFBO0FDQUo7O0FERUE7RUFDSSxvQ0FBQTtBQ0NKOztBREVBO0VBQ0kseUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi90b2dnbGUtYnV0dG9ucy90b2dnbGUtYnV0dG9ucy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5jaXRyb24tYnRuIHtcbiAgICB3aWR0aDogaW5oZXJpdDtcbn1cblxuLmNpdHJvbi1idG46aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5pbmFjdGl2ZVRvZ2dsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogJHRleHQtY29sb3I7XG59XG5cbi5lbmVyZ2llIHtcbiAgICBib3JkZXI6IHNvbGlkICRlbmVyZ2llIDFweCAhaW1wb3J0YW50O1xufVxuLmVhdSB7XG4gICAgYm9yZGVyOiBzb2xpZCAkZWF1IDFweCAhaW1wb3J0YW50O1xufVxuLmFuYWx5c2Uge1xuICAgIGJvcmRlcjogc29saWQgJGVhdSAxcHggIWltcG9ydGFudDtcbn1cblxuLmluYWN0aXZlVG9nZ2xlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xufVxuIiwiLmNpdHJvbi1idG4ge1xuICB3aWR0aDogaW5oZXJpdDtcbn1cblxuLmNpdHJvbi1idG46aG92ZXIge1xuICBvcGFjaXR5OiAxO1xufVxuXG4uaW5hY3RpdmVUb2dnbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBjb2xvcjogIzYwNzE4ODtcbn1cblxuLmVuZXJnaWUge1xuICBib3JkZXI6IHNvbGlkICNkM2JmOTYgMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5lYXUge1xuICBib3JkZXI6IHNvbGlkICM0MjgxYjggMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5hbmFseXNlIHtcbiAgYm9yZGVyOiBzb2xpZCAjNDI4MWI4IDFweCAhaW1wb3J0YW50O1xufVxuXG4uaW5hY3RpdmVUb2dnbGU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { ToggleButtonConfig, ToggleButtonSelectionType, ToggleValue } from './toggle-buttons.interface';\n\n@Component({\n selector: 'ga-toggle-buttons',\n templateUrl: './toggle-buttons.component.html',\n styleUrls: ['./toggle-buttons.component.scss'],\n})\nexport class ToggleButtonsComponent implements OnInit {\n @Input() selectedDefaultValues: string[];\n @Input() provider: any;\n\n /**\n * Get the selection config for the buttons selection\n */\n @Input() config: ToggleButtonConfig = {\n selectionType: 'multiple',\n };\n\n /**\n * Property that store the selection type\n */\n public selectionType: ToggleButtonSelectionType;\n\n /**\n * Get the energies items and init the selection depending on the selection config\n */\n private _values: ToggleValue[];\n @Input() set values(values: ToggleValue[]) {\n this._values = values;\n this.initItemSelection(this.selectionType);\n }\n get values(): ToggleValue[] {\n return this._values;\n }\n\n /**\n * Emit the selected fluid types to the parent component to update the query\n */\n @Output() currentValuesSelectedChange = new EventEmitter();\n\n constructor(private filterService: FilterService) {}\n\n ngOnInit() {\n if (this.values) {\n this.values.forEach((item: ToggleValue) => {\n if (this.selectedDefaultValues && this.selectedDefaultValues.length) {\n if (this.selectedDefaultValues.includes(item.value)) {\n item.selected = true;\n }\n } else {\n item.selected = true;\n }\n });\n this.currentValuesSelectedChange.emit(this.values);\n } else {\n this.getProvidedValues().then(res => {\n this.values = res.data;\n this.values.forEach(item => {\n item.selected = true;\n });\n this.currentValuesSelectedChange.emit(this.values);\n });\n }\n\n // Check if config exists and if it doesn't, set a selection type by default\n this.selectionType = this.config && this.config.selectionType ? this.config.selectionType : 'multiple';\n }\n\n /**\n * Activate or deactive buttons depending on the selection type :\n * - single: possibility to select only one element\n * - multiple: possibility to select many element\n * - none: buttons are disabled but possibility to select it\n * @param {ToggleButtonSelectionType} selectionType\n * @returns {void}\n */\n private initItemSelection(selectionType: ToggleButtonSelectionType): void {\n switch (selectionType) {\n case 'single':\n // Deselect all the energy buttons, except the first\n this.values.forEach((value: ToggleValue, index: number) => {\n index === 0 ? (value.selected = true) : (value.selected = false);\n });\n break;\n\n case 'none':\n // Deselect all the energy buttons\n this.values.forEach((value: ToggleValue) => {\n value.selected = false;\n });\n break;\n\n case 'multiple':\n default:\n this.values.forEach((value: ToggleValue) => {\n value.selected = true;\n });\n break;\n }\n }\n\n /**\n * Call a different method to activate or deactivate a button according to the selection type\n * @param {ToggleValue} item\n */\n selectItem(item: ToggleValue) {\n switch (this.selectionType) {\n case 'single':\n this.setSingleActive(item);\n break;\n\n case 'none':\n case 'multiple':\n default:\n this.toggle(item);\n break;\n }\n }\n\n /**\n * Toggle the selected property value of an energy item\n * @param {ToggleValue} item\n */\n public toggle(item: ToggleValue) {\n item.selected = !item.selected;\n this.currentValuesSelectedChange.emit(this.values);\n }\n\n getProvidedValues() {\n return this.filterService.getQueryResultByProvider(this.provider);\n }\n\n /**\n * Set a class depending on the selected property of an energy item\n * @param {ToggleValue} item\n * @returns {string}\n */\n getClass(item: ToggleValue): string {\n return item.selected ? 'activeToggle' : 'inactiveToggle';\n }\n\n /**\n * If filters config selection is single, disable the multi selection\n * It also prevents item button deselection\n * @param {ToggleValue} item\n */\n setSingleActive(item: ToggleValue) {\n // Deselect all items\n this.values.forEach(value => {\n value.selected = false;\n });\n\n // Set selected true to the energy selected\n item.selected = true;\n\n this.currentValuesSelectedChange.emit(this.values);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { TreeviewI18n, TreeviewSelection } from 'ngx-treeview';\n\n@Injectable()\nexport class GATreeviewI18n extends TreeviewI18n {\n constructor(protected translateService: TranslateService) {\n super();\n }\n\n /**\n * Return the nb of selected entities to display\n * @param {TreeviewSelection} selection\n * @returns {string}\n */\n getText(selection: TreeviewSelection): string {\n if (selection.uncheckedItems.length === 0) {\n return this.translateService._('all_fp');\n }\n\n switch (selection.checkedItems.length) {\n case 0:\n case 1:\n return `${selection.checkedItems.length} ${this.translateService._('entity')}`;\n default:\n return `${selection.checkedItems.length} ${this.translateService._('entities')}`;\n }\n }\n\n /**\n * Text displayed when all checkboxes are selected\n * @returns {string}\n */\n getAllCheckboxText(): string {\n return this.translateService._('all_fp');\n }\n\n /**\n * Text displayed as the placeholder\n * @returns {string}\n */\n getFilterPlaceholder(): string {\n return this.translateService._('entity_name');\n }\n\n /**\n * Text displayed when there isn't any item found matching the given input\n * @returns {string}\n */\n getFilterNoItemsFoundText(): string {\n return this.translateService._('no_correspondance');\n }\n\n /**\n * Text displayed as the tooltip to expand or collapse the treeview\n * @param {boolean} isCollapse\n * @returns {string}\n */\n getTooltipCollapseExpandText(isCollapse: boolean): string {\n return isCollapse ? this.translateService._('expand') : this.translateService._('collapse');\n }\n}\n","export default \"@charset \\\"UTF-8\\\";\\n.dropdown {\\n min-width: 100px;\\n}\\n.dropdown button {\\n display: inline-block;\\n margin-right: 0 !important;\\n text-align: left;\\n width: -webkit-fill-available;\\n width: -moz-available;\\n}\\n.dropdown button::after {\\n position: absolute;\\n right: 0.6rem;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n}\\n.dropdown button .badge {\\n position: absolute;\\n right: 1.3rem;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n}\\n.dropdown-text {\\n display: inline-block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: calc(100% - 1.6rem);\\n}\\n.dropdown .dropdown-menu {\\n font-size: 13px;\\n color: #607188;\\n width: -webkit-fit-content;\\n width: -moz-fit-content;\\n width: fit-content;\\n min-width: 300px;\\n}\\n.dropdown .dropdown-menu.show {\\n display: block;\\n opacity: 1 !important;\\n visibility: visible !important;\\n margin-top: 5px;\\n}\\n.dropdown .dropdown-menu .dropdown-container {\\n padding: 0;\\n}\\n.dropdown .dropdown-menu .dropdown-submit-btn {\\n position: -webkit-sticky;\\n position: sticky;\\n bottom: 0px;\\n width: 100% !important;\\n min-height: 30px !important;\\n text-align: center;\\n}\\n.dropdown .dropdown-toggle {\\n height: 33px;\\n margin: 0;\\n padding: 0.375rem 0.75rem;\\n font-size: 13px;\\n font-weight: 500;\\n text-transform: inherit;\\n border: 1px solid #ced4da;\\n}\\n.dropdown .dropdown-toggle.disabled {\\n cursor: not-allowed;\\n}\\n:host ::ng-deep .treeView {\\n padding: 10px 0;\\n}\\n:host ::ng-deep .treeView .form-check-label {\\n cursor: pointer;\\n}\\n:host ::ng-deep .treeView .row-item {\\n width: 100%;\\n -webkit-transition: all 300ms ease-in;\\n transition: all 300ms ease-in;\\n padding: 3px 0;\\n line-height: normal;\\n}\\n:host ::ng-deep .treeView .row-item:hover {\\n background-color: #f5faff;\\n}\\n:host ::ng-deep .treeView .row-item .form-check {\\n width: 100%;\\n -webkit-box-pack: left;\\n justify-content: left;\\n}\\n:host ::ng-deep .treeView .row-item label {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n -webkit-box-pack: left;\\n justify-content: left;\\n}\\n:host ::ng-deep .treeView input.form-control {\\n font-size: 12px;\\n}\\n:host ::ng-deep .treeView input[type=checkbox] {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n:host ::ng-deep .treeView input[type=checkbox] + label:before {\\n font-family: \\\"FontAwesome\\\";\\n display: inline-block;\\n content: \\\"\\\";\\n margin-right: 10px;\\n margin-top: 3px;\\n line-height: 1;\\n}\\n:host ::ng-deep .treeView input[type=checkbox]:checked + label:before {\\n content: \\\"\\\";\\n}\\n:host ::ng-deep .treeView input[type=checkbox]:indeterminate + label:before {\\n content: \\\"\\\";\\n}\\n:host ::ng-deep .treeView .treeview-header,\\n:host ::ng-deep .treeView .treeview-container {\\n padding: 0 10px;\\n}\\n:host ::ng-deep .treeView .treeview-container > ngx-treeview-item > .treeview-item {\\n margin-left: 0.5rem !important;\\n}\\n:host ::ng-deep .treeView .treeview-item {\\n margin-left: 1.2rem !important;\\n}\\n:host ::ng-deep .treeView .treeview-item .treeview-item {\\n padding-left: 0.9rem;\\n}\\n.select-all-btn {\\n cursor: pointer;\\n margin-left: 0.7rem !important;\\n width: 100% !important;\\n text-decoration: underline !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL3RyZWUtdmlldy1zZWxlY3QvdHJlZS12aWV3LXNlbGVjdC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi90cmVlLXZpZXctc2VsZWN0L3RyZWUtdmlldy1zZWxlY3QuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQ0VoQjtFQUNJLGdCQUFBO0FEQUo7QUNFSTtFQUNJLHFCQUFBO0VBQ0EsMEJBQUE7RUFDQSxnQkFBQTtFQUNBLDZCQUFBO0VBQ0EscUJBQUE7QURBUjtBQ0VRO0VBQ0ksa0JBQUE7RUFDQSxhQUFBO0VBQ0EsUUFBQTtFQUNBLG1DQUFBO1VBQUEsMkJBQUE7QURBWjtBQ0VRO0VBQ0ksa0JBQUE7RUFDQSxhQUFBO0VBQ0EsUUFBQTtFQUNBLG1DQUFBO1VBQUEsMkJBQUE7QURBWjtBQ0lJO0VBQ0kscUJBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7RUFDQSw4QkFBQTtBREZSO0FDS0k7RUFDSSxlQUFBO0VBQ0EsY0NWSztFRFdMLDBCQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLGdCQUFBO0FESFI7QUNLUTtFQUNJLGNBQUE7RUFDQSxxQkFBQTtFQUNBLDhCQUFBO0VBQ0EsZUFBQTtBREhaO0FDTVE7RUFDSSxVQUFBO0FESlo7QUNPUTtFQUNJLHdCQUFBO0VBQUEsZ0JBQUE7RUFDQSxXQUFBO0VBQ0Esc0JBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFBO0FETFo7QUNTSTtFQUtJLFlBQUE7RUFDQSxTQUFBO0VBQ0EseUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtFQUNBLHlCQUFBO0FEWFI7QUNDUTtFQUNJLG1CQUFBO0FEQ1o7QUNZQTtFQUNJLGVBQUE7QURUSjtBQ1dJO0VBQ0ksZUFBQTtBRFRSO0FDV0k7RUFDSSxXQUFBO0VBQ0EscUNBQUE7RUFBQSw2QkFBQTtFQUNBLGNBQUE7RUFDQSxtQkFBQTtBRFRSO0FDV1E7RUFDSSx5QkMzQ0s7QUZrQ2pCO0FDWVE7RUFDSSxXQUFBO0VBQ0Esc0JBQUE7VUFBQSxxQkFBQTtBRFZaO0FDYVE7RUFDSSxtQkFBQTtVQUFBLFlBQUE7RUFDQSxzQkFBQTtVQUFBLHFCQUFBO0FEWFo7QUNjSTtFQUNJLGVBQUE7QURaUjtBQ2dCSTtFQUNJLHdCQUFBO0tBQUEscUJBQUE7VUFBQSxnQkFBQTtBRGRSO0FDZ0JRO0VBQ0ksMEJBQUE7RUFDQSxxQkFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FEZFo7QUNpQlE7RUFDSSxZQUFBO0FEZlo7QUNpQlE7RUFDSSxZQUFBO0FEZlo7QUNtQkk7O0VBRUksZUFBQTtBRGpCUjtBQ29CUTtFQUNJLDhCQUFBO0FEbEJaO0FDcUJJO0VBQ0ksOEJBQUE7QURuQlI7QUNzQkk7RUFDSSxvQkFBQTtBRHBCUjtBQ3dCQTtFQUNJLGVBQUE7RUFDQSw4QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUNBQUE7QURyQkoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb21tb24vdHJlZS12aWV3LXNlbGVjdC90cmVlLXZpZXctc2VsZWN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLmRyb3Bkb3duIHtcbiAgbWluLXdpZHRoOiAxMDBweDtcbn1cbi5kcm9wZG93biBidXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbiAgd2lkdGg6IC1tb3otYXZhaWxhYmxlO1xufVxuLmRyb3Bkb3duIGJ1dHRvbjo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwLjZyZW07XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG4uZHJvcGRvd24gYnV0dG9uIC5iYWRnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEuM3JlbTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5kcm9wZG93bi10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxLjZyZW0pO1xufVxuLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogIzYwNzE4ODtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBtaW4td2lkdGg6IDMwMHB4O1xufVxuLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51LnNob3cge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cbi5kcm9wZG93biAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgcGFkZGluZzogMDtcbn1cbi5kcm9wZG93biAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24tc3VibWl0LWJ0biB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIGJvdHRvbTogMHB4O1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgaGVpZ2h0OiAzM3B4O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7XG59XG4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5kaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbjpob3N0IDo6bmctZGVlcCAudHJlZVZpZXcge1xuICBwYWRkaW5nOiAxMHB4IDA7XG59XG46aG9zdCA6Om5nLWRlZXAgLnRyZWVWaWV3IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuOmhvc3QgOjpuZy1kZWVwIC50cmVlVmlldyAucm93LWl0ZW0ge1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGVhc2UtaW47XG4gIHBhZGRpbmc6IDNweCAwO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuOmhvc3QgOjpuZy1kZWVwIC50cmVlVmlldyAucm93LWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmYWZmO1xufVxuOmhvc3QgOjpuZy1kZWVwIC50cmVlVmlldyAucm93LWl0ZW0gLmZvcm0tY2hlY2sge1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xufVxuOmhvc3QgOjpuZy1kZWVwIC50cmVlVmlldyAucm93LWl0ZW0gbGFiZWwge1xuICBmbGV4LWdyb3c6IDE7XG4gIGp1c3RpZnktY29udGVudDogbGVmdDtcbn1cbjpob3N0IDo6bmctZGVlcCAudHJlZVZpZXcgaW5wdXQuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuOmhvc3QgOjpuZy1kZWVwIC50cmVlVmlldyBpbnB1dFt0eXBlPWNoZWNrYm94XSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG46aG9zdCA6Om5nLWRlZXAgLnRyZWVWaWV3IGlucHV0W3R5cGU9Y2hlY2tib3hdICsgbGFiZWw6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFwiRm9udEF3ZXNvbWVcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb250ZW50OiBcIu+CllwiO1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIG1hcmdpbi10b3A6IDNweDtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG46aG9zdCA6Om5nLWRlZXAgLnRyZWVWaWV3IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICBjb250ZW50OiBcIu+BhlwiO1xufVxuOmhvc3QgOjpuZy1kZWVwIC50cmVlVmlldyBpbnB1dFt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlICsgbGFiZWw6YmVmb3JlIHtcbiAgY29udGVudDogXCLvgpZcIjtcbn1cbjpob3N0IDo6bmctZGVlcCAudHJlZVZpZXcgLnRyZWV2aWV3LWhlYWRlcixcbjpob3N0IDo6bmctZGVlcCAudHJlZVZpZXcgLnRyZWV2aWV3LWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDAgMTBweDtcbn1cbjpob3N0IDo6bmctZGVlcCAudHJlZVZpZXcgLnRyZWV2aWV3LWNvbnRhaW5lciA+IG5neC10cmVldmlldy1pdGVtID4gLnRyZWV2aWV3LWl0ZW0ge1xuICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG59XG46aG9zdCA6Om5nLWRlZXAgLnRyZWVWaWV3IC50cmVldmlldy1pdGVtIHtcbiAgbWFyZ2luLWxlZnQ6IDEuMnJlbSAhaW1wb3J0YW50O1xufVxuOmhvc3QgOjpuZy1kZWVwIC50cmVlVmlldyAudHJlZXZpZXctaXRlbSAudHJlZXZpZXctaXRlbSB7XG4gIHBhZGRpbmctbGVmdDogMC45cmVtO1xufVxuXG4uc2VsZWN0LWFsbC1idG4ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiAwLjdyZW0gIWltcG9ydGFudDtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbn0iLCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLmRyb3Bkb3duIHtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgd2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XG4gICAgICAgIHdpZHRoOiAtbW96LWF2YWlsYWJsZTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDogMC42cmVtO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIH1cbiAgICAgICAgLmJhZGdlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxLjNyZW07XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtdGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMS42cmVtKTtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgIG1pbi13aWR0aDogMzAwcHg7XG5cbiAgICAgICAgJi5zaG93IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3Bkb3duLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3Bkb3duLXN1Ym1pdC1idG4ge1xuICAgICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDMwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi10b2dnbGUge1xuICAgICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBoZWlnaHQ6IDMzcHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlcjtcbiAgICB9XG59XG5cbjpob3N0IDo6bmctZGVlcCAudHJlZVZpZXcge1xuICAgIHBhZGRpbmc6IDEwcHggMDtcblxuICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgICAucm93LWl0ZW0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGVhc2UtaW47XG4gICAgICAgIHBhZGRpbmc6IDNweCAwO1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWhvdmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2sge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5wdXQuZm9ybS1jb250cm9sIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgIC8vIHRoaXMgcGFydCBwZXJzb25hbGl6ZSBjaGVja2JveGVzIGljb25zLiBXZSByZXBsYWNlIHRoZSBvcmlnaW5hbCBvbmVzIGJ5IEZvbnRBd2Vzb21lIGljb25zLlxuICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgICAgICYgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdGb250QXdlc29tZSc7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBjb250ZW50OiAnXFxmMDk2JztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGYwNDYnO1xuICAgICAgICB9XG4gICAgICAgICY6aW5kZXRlcm1pbmF0ZSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnXFxmMDk2JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50cmVldmlldy1oZWFkZXIsXG4gICAgLnRyZWV2aWV3LWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICB9XG4gICAgLnRyZWV2aWV3LWNvbnRhaW5lciB7XG4gICAgICAgID4gbmd4LXRyZWV2aWV3LWl0ZW0gPiAudHJlZXZpZXctaXRlbSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnRyZWV2aWV3LWl0ZW0ge1xuICAgICAgICBtYXJnaW4tbGVmdDogMS4ycmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnRyZWV2aWV3LWl0ZW0gLnRyZWV2aWV3LWl0ZW0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuOXJlbTtcbiAgICB9XG59XG5cbi5zZWxlY3QtYWxsLWJ0biB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjdyZW0gIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import {\n Component,\n DoCheck,\n EventEmitter,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { OptionValue } from 'app/shared/models/filter-config.interface';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport _ = require('lodash');\nimport { BsDropdownDirective } from 'ngx-bootstrap/dropdown';\nimport { TreeItem, TreeviewComponent, TreeviewConfig, TreeviewI18n, TreeviewItem } from 'ngx-treeview';\nimport { GATreeviewI18n } from './ga-treeview-i18n';\n\n@Component({\n selector: 'ga-tree-view-select',\n templateUrl: './tree-view-select.component.html',\n styleUrls: ['./tree-view-select.component.scss'],\n providers: [{ provide: TreeviewI18n, useClass: GATreeviewI18n }],\n})\n\n/**\n * Component used to create select with tree view\n * For constructing the tree, we count the number of dashes at the beginning of the value string and determine the depth of the data\n */\nexport class TreeViewSelectComponent implements OnInit, OnChanges, DoCheck {\n /**\n * List of the selected values inside the tree\n */\n @Input() values: string[] = [];\n /**\n * Differ to detect changes in `values`\n */\n private valuesDiffer: IterableDiffer;\n /**\n * List of data containing an array of options. We will use the dashes as basis for calculating depth of the treeview\n */\n @Input() data: OptionValue[] = [];\n\n /**\n * If false, prevent the user from unchecking every option & reset the first option by default. (Default: false)\n */\n @Input() public canUncheckAll = false;\n\n /**\n * If true, when selecting a parent it selects all its children. (Default: true)\n */\n @Input() public decoupleChildren = true;\n\n /**\n * If true, add a submit button with an onclick event emitting selected values.\n * Otherwise, emits selected values on selection changes. (Default: false)\n */\n @Input() public hasSubmitButton = false;\n\n /**\n * If true, the field cannot be selected and changed\n */\n @Input() public disabled = false;\n\n /**\n * Name of the field containing the value\n */\n @Input() public valueField = 'value';\n\n /**\n * Name of the field containing the display name\n */\n @Input() public displayNameField = 'displayName';\n\n /**\n * Emit the checked values in the tree view\n */\n @Output() selectionChanged: EventEmitter = new EventEmitter();\n\n /**\n * Dropdown object in the treeview select.\n */\n @ViewChild('dropdownList', { static: false }) private readonly dropdownList: BsDropdownDirective;\n\n /**\n * Treeview component.\n */\n @ViewChild(TreeviewComponent, { static: false }) private treeviewComponent!: TreeviewComponent;\n\n /**\n * Limits of the string in the input\n */\n private strLimit = 15;\n\n /**\n * Basic Config for treeView select\n */\n public treeViewConfig: TreeviewConfig = {\n hasAllCheckBox: false,\n hasFilter: true,\n hasCollapseExpand: false,\n decoupleChildFromParent: true,\n maxHeight: 500,\n hasDivider: false,\n };\n\n /**\n * List containing the main tree object, and its children elements\n */\n public treeItems: TreeviewItem[] = [];\n\n /**\n * List of the checked options in the tree view items\n * So far only used to display the number of selected options\n */\n public checkedOptions: string[] = [];\n /**\n * Differ to detect changes in `checkedOptions` and prevent excessive emit of selection changed\n */\n private checkedOptionsDiffer: IterableDiffer;\n\n /**\n * Regex matching string indicating if element is a child element. String only containing `-`\n */\n private readonly childRegex = /^\\-+$/g;\n\n /** True if all options in the treeview are checked. */\n public allOptionsChecked: boolean;\n\n constructor(protected translateService: TranslateService, private iterable: IterableDiffers) {\n this.valuesDiffer = iterable.find([]).create(null);\n this.checkedOptionsDiffer = iterable.find([]).create(null);\n }\n\n /**\n * Close the dropdown list if the user click outsite\n */\n public closeDropdownList() {\n this.dropdownList.isOpen = false;\n }\n\n private initTreeview() {\n const result: TreeItem = this.formateRawDataIntoTreeView();\n if (result) {\n this.treeItems.push(new TreeviewItem(result));\n }\n this.setCheckedOptions(this.treeItems);\n this.allOptionsChecked = this.areAllOptionsChecked(this.treeItems);\n this.checkedOptions = this.getCheckedOptions(this.treeItems);\n this.valuesDiffer.diff(this.values);\n this.checkedOptionsDiffer.diff(this.checkedOptions);\n }\n\n ngOnInit(): void {\n this.treeViewConfig.decoupleChildFromParent = this.decoupleChildren;\n this.initTreeview();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Recreate treeview each time treeview data is modified\n if (changes.data && !changes.data.firstChange) {\n // Reset treeview items\n this.treeItems = [];\n // Update by initializing with new data\n this.initTreeview();\n }\n }\n\n ngDoCheck(): void {\n const changes = this.valuesDiffer.diff(this.values);\n\n // if the selected options have changed\n if (changes) {\n this.setCheckedOptions(this.treeItems);\n this.checkedOptions = this.getCheckedOptions(this.treeItems);\n }\n }\n\n /**\n * Format the initial data into a tree.\n * Use carets to know the item's depth. Ex: \"- Ville de Anglet\" & \"-- Office de tourisme d'Anglet\"\n * @returns {TreeItem} tree created\n */\n private formateRawDataIntoTreeView(): TreeItem {\n let treeObject: TreeItem;\n\n for (const item of this.data) {\n // Look for cartes indicating the depth. Ex: \"-- Office de tourisme d'Anglet\" -> length = 3\n const depthString = item[this.displayNameField].split(' ')[0];\n const isChild = depthString.match(this.childRegex);\n const depth = isChild ? depthString.length : 0;\n // Insert the value into the right parent.\n const newTreeItem = this.createTreeItem(item[this.displayNameField], item[this.valueField]);\n\n treeObject = this.insertChildrenTreeItem(treeObject, treeObject, newTreeItem, depth);\n }\n\n return treeObject;\n }\n\n /**\n * Insert children branch of legal entity recursirvely.\n * @param {TreeItem} treeObject\n * @param {TreeItem} child\n * @param {TreeItem} treeItem\n * @param {number} depth\n *\n * @returns {TreeItem} updated tree object\n */\n private insertChildrenTreeItem(treeObject: TreeItem, child: TreeItem, treeItem: TreeItem, depth: number): TreeItem {\n switch (depth) {\n case 0:\n treeObject = treeItem;\n break;\n case 1:\n child.children.push(treeItem);\n break;\n default:\n this.insertChildrenTreeItem(treeObject, child.children[child.children.length - 1], treeItem, depth - 1);\n break;\n }\n\n return treeObject;\n }\n\n /**\n * Create new tree view item and remove any dashes at the beginning of the name\n * @param {string} name\n * @param {string} value\n * @returns {TreeItem}\n */\n private createTreeItem(name: string, value: string): TreeItem {\n // Remove the dashes at the beginning of the name string\n const newName = name.split(' ');\n if (newName[0].match(this.childRegex)) {\n newName.shift();\n }\n\n return {\n text: newName.join(' '),\n value,\n children: [],\n };\n }\n\n /**\n * Sets all the options in the treeview to the given value.\n * If all options arent already checked, selects them all. Otherwise, unselects them all.\n */\n public onSelectAllOptions(): void {\n this.setAllOptions(this.treeItems, this.allOptionsChecked ? false : true);\n this.treeviewComponent.raiseSelectedChange();\n }\n\n /**\n * Compute and emit the list of checked options to the parent component.\n */\n public emitCheckedOptions() {\n this.checkedOptions = this.getCheckedOptions(this.treeItems);\n\n const diff = this.checkedOptionsDiffer.diff(this.checkedOptions);\n\n if (diff) {\n this.selectionChanged.emit(this.checkedOptions);\n }\n }\n\n /**\n * On change, emit checked options if there is no submit button\n */\n public onTreeSelectedChange(): void {\n this.allOptionsChecked = this.areAllOptionsChecked(this.treeItems);\n this.checkedOptions = this.getCheckedOptions(this.treeItems);\n\n // handle the case where all options are unchecked\n if (!this.checkedOptions.length && !this.canUncheckAll) {\n // set the first option by default when all options are unchecked and should not\n this.values = [this.treeItems[0].value];\n this.setCheckedOptions(this.treeItems);\n }\n\n if (!this.hasSubmitButton) {\n this.emitCheckedOptions();\n }\n }\n\n /**\n * Return list of checked values on tree view\n * @param {TreeviewItems} treeItems - list of tree items to go through\n * @returns {string[]}\n */\n private getCheckedOptions(treeItems: TreeviewItem[]): string[] {\n let checked = [];\n for (const item of treeItems) {\n // Add checked items which are not parents (parents are represented by empty string)\n if (item.checked && item[this.valueField] !== '') {\n checked.push(item[this.valueField]);\n }\n if ('children' in item && typeof item.children !== 'undefined' && item.children.length) {\n checked = checked.concat(this.getCheckedOptions(item.children));\n }\n }\n return checked;\n }\n\n /**\n * Set checked options depending of the send values of the parent component\n * @param {TreeviewItems} treeItems - list of tree items\n * @param {boolean} forcedChecked - true to check all items regardeless of the values\n */\n private setCheckedOptions(treeItems: TreeviewItem[], forcedChecked: boolean = false): void {\n for (const item of treeItems) {\n item.checked = forcedChecked ? true : this.values.includes(item[this.valueField]);\n if ('children' in item && typeof item.children !== 'undefined' && item.children.length) {\n this.setCheckedOptions(item.children);\n }\n }\n }\n\n /**\n * Sets all the options in the list of treeview items to the given checked value.\n */\n public setAllOptions(items: TreeviewItem[], checked: boolean): void {\n for (const item of items) {\n item.checked = checked;\n if (Array.isArray(item.children) && item.children.length > 0) {\n this.setAllOptions(item.children, checked);\n }\n }\n }\n\n /**\n * Returns true if all the treeview items in the list (and their children) are checked.\n */\n private areAllOptionsChecked(items: TreeviewItem[]): boolean {\n for (const item of items) {\n if (!item.checked) {\n return false;\n }\n if (Array.isArray(item.children) && item.children.length > 0) {\n if (!this.areAllOptionsChecked(item.children)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * Return the text to display in the input, cut with \"...\" if too long\n * @returns {string} text to display\n */\n public getText(): string {\n if (this.checkedOptions.length === 0) {\n return this.translateService._('none_f');\n }\n\n const firstCheckedName = this.data\n .find(d => this.checkedOptions[0] === d[this.valueField])\n [this.displayNameField].replace(/^[^a-zA-Z]+/, '')\n .substring(0, this.strLimit);\n\n return `${firstCheckedName}${firstCheckedName.length >= this.strLimit ? '...' : ''}`;\n }\n}\n","export default \".simple-autocomplete {\\n position: relative;\\n height: -webkit-fill-available;\\n}\\n\\n.caret-icon {\\n position: absolute;\\n top: 0;\\n right: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n width: 40px;\\n height: 100%;\\n font-size: 12px;\\n color: inherit;\\n cursor: pointer;\\n -webkit-transition: all 0.15s ease-in-out;\\n transition: all 0.15s ease-in-out;\\n}\\n\\n.list {\\n position: absolute;\\n left: 0;\\n right: 0;\\n max-height: 300px;\\n overflow: auto;\\n background-color: white;\\n z-index: 10;\\n border: 1px solid #e1e1e1;\\n}\\n\\n.list-item {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n min-height: 40px;\\n width: 100%;\\n padding: 0px 16px;\\n font-size: 12px;\\n cursor: pointer;\\n line-height: 1.3;\\n border-bottom: 1px solid #e1e1e1;\\n -webkit-transition: all 0.15s ease-in-out;\\n transition: all 0.15s ease-in-out;\\n}\\n\\n.list-item:last-child {\\n border-bottom: none;\\n}\\n\\n.list-item:hover {\\n background-color: #e1e1e1;\\n}\\n\\n.list-item:active {\\n background-color: #cdcdcd;\\n}\\n\\n.simple-autocomplete .autocomplete-input {\\n height: 100%;\\n width: 100%;\\n font-size: inherit;\\n color: inherit;\\n}\\n\\n.simple-autocomplete.open .autocomplete-input:active, .simple-autocomplete.open .autocomplete-input:focus {\\n background-color: white;\\n}\\n\\n.simple-autocomplete.open .caret-icon {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi91bHRyYS1zaW1wbGUtYXV0b2NvbXBsZXRlL3VsdHJhLXNpbXBsZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbW1vbi91bHRyYS1zaW1wbGUtYXV0b2NvbXBsZXRlL3VsdHJhLXNpbXBsZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7RUFDSSxrQkFBQTtFQUNBLDhCQUFBO0FDSEo7O0FETUE7RUFDSSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtFQUNBLHlDQUFBO0VBQUEsaUNBQUE7QUNISjs7QURNQTtFQUNJLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7RUFDQSx1QkE5QmM7RUErQmQsV0FBQTtFQUNBLHlCQUFBO0FDSEo7O0FETUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0NBQUE7RUFDQSx5Q0FBQTtFQUFBLGlDQUFBO0FDSEo7O0FES0k7RUFDSSxtQkFBQTtBQ0hSOztBRE1JO0VBQ0kseUJBbkRNO0FDK0NkOztBRE9JO0VBQ0kseUJBQUE7QUNMUjs7QURVSTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0FDUFI7O0FEV1k7RUFFSSx1QkF2RUU7QUM2RGxCOztBRGNRO0VBQ0ksaUNBQUE7VUFBQSx5QkFBQTtBQ1paIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tbW9uL3VsdHJhLXNpbXBsZS1hdXRvY29tcGxldGUvdWx0cmEtc2ltcGxlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiRiYWNrZ3JvdW5kQ29sb3I6IHdoaXRlO1xuJGJvcmRlckNvbG9yOiAjZTFlMWUxO1xuJGlucHV0SGVpZ2h0OiA0MDtcblxuLnNpbXBsZS1hdXRvY29tcGxldGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XG59XG5cbi5jYXJldC1pY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogJGlucHV0SGVpZ2h0ICsgcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuXG4ubGlzdCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbWF4LWhlaWdodDogMzAwcHg7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmRDb2xvcjtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyQ29sb3I7XG59XG5cbi5saXN0LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtaW4taGVpZ2h0OiAkaW5wdXRIZWlnaHQgKyBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwcHggMTZweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXJDb2xvcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZS1pbi1vdXQ7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9yZGVyQ29sb3I7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RjZGNkO1xuICAgIH1cbn1cblxuLnNpbXBsZS1hdXRvY29tcGxldGUge1xuICAgIC5hdXRvY29tcGxldGUtaW5wdXQge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAgICAuYXV0b2NvbXBsZXRlLWlucHV0IHtcbiAgICAgICAgICAgICY6YWN0aXZlLFxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJldC1pY29uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuc2ltcGxlLWF1dG9jb21wbGV0ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO1xufVxuXG4uY2FyZXQtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuXG4ubGlzdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIG1heC1oZWlnaHQ6IDMwMHB4O1xuICBvdmVyZmxvdzogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDEwO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTFlMWUxO1xufVxuXG4ubGlzdC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWluLWhlaWdodDogNDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDBweCAxNnB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMWUxZTE7XG4gIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlLWluLW91dDtcbn1cbi5saXN0LWl0ZW06bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4ubGlzdC1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZTFlMTtcbn1cbi5saXN0LWl0ZW06YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkY2RjZDtcbn1cblxuLnNpbXBsZS1hdXRvY29tcGxldGUgLmF1dG9jb21wbGV0ZS1pbnB1dCB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uc2ltcGxlLWF1dG9jb21wbGV0ZS5vcGVuIC5hdXRvY29tcGxldGUtaW5wdXQ6YWN0aXZlLCAuc2ltcGxlLWF1dG9jb21wbGV0ZS5vcGVuIC5hdXRvY29tcGxldGUtaW5wdXQ6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5zaW1wbGUtYXV0b2NvbXBsZXRlLm9wZW4gLmNhcmV0LWljb24ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufSJdfQ== */\"","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { FormControl } from '@angular/forms';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { AutoCompleteItem } from './ultra-simple-autocomplete.interface';\n\n@Component({\n selector: 'ga-ultra-simple-autocomplete',\n templateUrl: './ultra-simple-autocomplete.component.html',\n styleUrls: ['./ultra-simple-autocomplete.component.scss'],\n providers: [],\n})\nexport class UltraSimpleAutocompleteComponent implements OnInit {\n /**\n * Array containing list with all items\n */\n private _list: AutoCompleteItem[] = [];\n\n /**\n * Array containing items to display, sorted and matching search\n */\n public filteredList: AutoCompleteItem[] = [];\n\n /**\n * Boolean that indaicates if list must be displayed of not\n */\n public canShowList = false;\n\n /**\n * Input class\n */\n public autocompleteClass = '';\n\n /**\n * Search input control\n */\n public inputControl = new FormControl('');\n\n /**\n * Input value\n */\n @Input() set inputValue(value: string) {\n if (this.inputControl) {\n this.inputControl.setValue(value);\n }\n }\n get inputValue(): string {\n if (this.inputControl) {\n return this.inputControl.value;\n }\n return null;\n }\n\n /**\n * Debounce time for input in ms\n */\n @Input() debounceTime = 1;\n\n /**\n * Item in list to display/search\n * Items with `value` set to null will always be displayed and can't be selected (usefull to display error or loading).\n */\n @Input()\n get list() {\n return this._list;\n }\n set list(list: AutoCompleteItem[]) {\n this._list = list;\n this.setList();\n }\n\n /**\n * Placeholder value\n */\n @Input() placeholder = '';\n /**\n * Default value when no match or no value\n */\n @Input() defaultNoList = 'Pas de valeurs';\n /**\n * Emit value change/search on item selected\n */\n @Input() emitInputChangedOnItemSelected = false;\n\n /**\n * Event triggered when input changed\n */\n @Output() inputChanged: EventEmitter = new EventEmitter(true);\n /**\n * Event triggered when an item is selected\n */\n @Output() itemSelected: EventEmitter = new EventEmitter(true);\n\n /**\n * Click on document\n */\n @HostListener('document:click', ['$event']) IsClickOutsideList() {\n // If click outside component, hide list\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.hideList();\n }\n }\n\n constructor(private utils: UtilsService, private elementRef: ElementRef) {}\n\n ngOnInit() {\n this.inputControl.valueChanges.pipe(debounceTime(this.debounceTime)).subscribe({\n next: value => {\n this.emitSearchChange(value);\n },\n });\n }\n\n /**\n * Show list\n */\n public showList() {\n this.canShowList = true;\n this.autocompleteClass = 'open';\n }\n\n /**\n * Hide list\n */\n public hideList() {\n this.canShowList = false;\n this.autocompleteClass = '';\n }\n\n /**\n * Toggle list display\n */\n public toggleList() {\n if (this.canShowList) {\n this.hideList();\n } else {\n this.showList();\n }\n }\n\n /**\n * Set selected item in list\n * @param {AutoCompleteItem} item - item selected in list\n */\n public selectItem(item: AutoCompleteItem) {\n if (item.value !== null) {\n this.setValue(item);\n this.hideList();\n }\n }\n\n /**\n * Refresh filtered list, sorted by value and filtered with items matching search\n */\n public setList() {\n this.filteredList = _.sortBy(this._list, ['value']).filter(item => {\n return this.valueIncludeSearch(item);\n });\n }\n\n /**\n * Emit serch value change\n */\n public emitSearchChange(value: string) {\n this.inputChanged.emit(value);\n }\n\n /**\n * Set selected item and emit\n * @param {AutoCompleteItem} item - item selected\n */\n private setValue(item: AutoCompleteItem) {\n this.itemSelected.emit(item);\n this.inputControl.setValue(item.label, { emitEvent: this.emitInputChangedOnItemSelected });\n }\n\n /**\n * @returns {boolean} true if item matches search, false otherwise\n */\n private valueIncludeSearch(item: AutoCompleteItem): boolean {\n if (!this.inputValue) {\n return false;\n }\n if (item.value === null) {\n return true;\n }\n return this.utils\n .removeAccentFromString(item.label.toString())\n .toLowerCase()\n .includes(this.inputValue.toLowerCase());\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdC1lZGl0aW9uL2NhcGFjaXR5LWZhY3Rvci9jYXBhY2l0eS1mYWN0b3IuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\n\nimport { ContractPricing, ContractPricingItem } from 'app/shared/models/contract-pricing.interface';\nimport { ContractPopulated, PricingSelected, PricingSelectedValue } from 'app/shared/models/contract.interface';\nimport { PricingOption } from '../contract-edition.interface';\nimport { ContractEditionService } from '../contract-edition.service';\n\n@Component({\n selector: 'contract-edition-capacity-factor',\n templateUrl: './capacity-factor.component.html',\n styleUrls: ['./capacity-factor.component.scss'],\n})\nexport class CapacityFactorComponent implements OnInit {\n /**\n * Pricing items related to the pricings\n */\n public pricingItems: ContractPricingItem[] = [];\n\n /**\n * Get each pricing selected in the pricing section\n */\n public get pricingOptions(): PricingOption[] {\n return this.contractEditionService.selectedPricingOptions;\n }\n\n public items: ContractPricing[] = [];\n\n constructor(private contractEditionService: ContractEditionService) {}\n\n ngOnInit() {\n this.pricingItems = this.contractEditionService.pricingItems;\n // Find pricing items with coefficient capacity group only\n this.pricingItems = _.filter(this.pricingItems, { group: 'coefficient_capacity' });\n this.pricingItems = _.sortBy(this.pricingItems, ['label']);\n }\n\n /**\n * @param {PricingOption} pricing\n * @param {ContractPricingItem} item\n * @returns {boolean} true if pricing option is concerned by the pricing item.\n */\n public hasContractPricingItem(pricing: PricingOption, item: ContractPricingItem): boolean {\n return pricing.items.some(x => x.id === item._id);\n }\n\n /**\n * Get the factor of a pricing item of a contract pricing\n * @param {PricingOption} pricing\n * @param {ContractPricingItem} item\n * @returns {string|number}\n */\n /**\n * Get the value of a pricing item of a contract pricing.\n * @param {PricingOption} pricing\n * @param {ContractPricingItem} item\n * @returns {string|number}\n */\n public getContractPricingValue(pricing: PricingOption, item: ContractPricingItem): string | number {\n const search = pricing.items.find(x => x.id === item._id);\n if (search && typeof search.value !== 'undefined') {\n return search.value;\n }\n return null;\n }\n\n /**\n * Set the value of a pricing item of a contract pricing.\n * @param {PricingOption} pricing\n * @param {ContractPricingItem} item\n * @param {string} value\n */\n public setContractPricingValue(pricing: PricingOption, item: ContractPricingItem, value: string) {\n const search = pricing.items.find(x => x.id === item._id);\n if (search && value) {\n search.value = value;\n this.onContractPricingsChange();\n }\n }\n\n /**\n * Create most recent version of contract pricings selected and emit to parent component.\n * No save done in this component.\n */\n private onContractPricingsChange() {\n const pricings: PricingSelected[] = this.pricingOptions.map(pricing => {\n /** Get values converted with rate choosen to set base unit for fluids (eg. for elec convert all to c€/kWh) */\n const values: PricingSelectedValue[] = pricing.items.map(item => {\n return {\n id: item.id,\n value: item.value,\n };\n });\n const obj: PricingSelected = {\n pathContractPricing: pricing.path,\n values,\n };\n return obj;\n });\n\n this.contractEditionService.updateCommonPricing(pricings);\n }\n}\n","export default \".row-save-container {\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n.row-save-container .save-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: end;\\n align-items: flex-end;\\n}\\n.row-save-container .save-container .message-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n.row-save-container .save-container .icon {\\n width: 40px;\\n height: 40px;\\n margin-right: 0.5rem;\\n background-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-position: center;\\n mask-position: center;\\n background-color: #d8a63e;\\n mask-image: url(\\\"/assets/img/pictos-svg/info_bulb.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/info_bulb.svg\\\");\\n}\\n.row-save-container .save-container .message {\\n padding-left: 0.5rem;\\n font-size: 13px;\\n text-align: end;\\n border-right: none !important;\\n border-top: none !important;\\n border-bottom: none !important;\\n}\\n.overlay {\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: 1000;\\n background: white;\\n opacity: 0.5;\\n}\\n::ng-deep .section {\\n border-top: 1px solid #ddd;\\n padding-bottom: 35px;\\n padding-top: 35px;\\n margin: 0 auto;\\n}\\n::ng-deep .section .section-title {\\n text-transform: uppercase;\\n font-size: 18px;\\n font-weight: bold;\\n margin-bottom: 25px;\\n}\\n::ng-deep .section .section-title span {\\n background: #d8a63e;\\n border-radius: 100%;\\n font-size: 14px;\\n color: white;\\n margin-right: 10px;\\n width: 25px;\\n display: inline-block;\\n text-align: center;\\n}\\n::ng-deep .section hr {\\n width: 10%;\\n background-color: #d8a63e;\\n}\\n::ng-deep .section select,\\n::ng-deep .section input {\\n font-size: 13px;\\n}\\n::ng-deep .section table {\\n font-size: 13px;\\n text-align: center;\\n}\\n::ng-deep .section table td,\\n::ng-deep .section table th {\\n vertical-align: middle;\\n}\\n::ng-deep .section table thead th {\\n border-top: none;\\n border-bottom: none;\\n}\\n::ng-deep .section table tbody th {\\n font-weight: normal;\\n}\\n::ng-deep .section .form-group {\\n font-weight: normal;\\n font-size: 15px;\\n}\\n::ng-deep .section .form-group label {\\n font-weight: normal;\\n}\\n::ng-deep .section .form-control:focus, ::ng-deep .section .form-control:active {\\n border-color: #d8a63e !important;\\n}\\n.citron-btn:focus {\\n box-shadow: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdC1lZGl0aW9uL2NvbnRyYWN0LWVkaXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdC1lZGl0aW9uL2NvbnRyYWN0LWVkaXRpb24uY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLHFCQUFBO1VBQUEseUJBQUE7QUNGSjtBRElJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0Esc0JBQUE7VUFBQSxxQkFBQTtBQ0ZSO0FESVE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FDRlo7QURLUTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7RUFDQSx3QkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EseUJFZkQ7RUN3QlAsdURIUlE7RUdTUiwrREhUUTtBQ0ZaO0FESVE7RUFDSSxvQkFBQTtFQUNBLGVBQUE7RUFDQSxlQUFBO0VBQ0EsNkJBQUE7RUFDQSwyQkFBQTtFQUNBLDhCQUFBO0FDRlo7QURPQTtFQUNJLG9CQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7QUNKSjtBRE9BO0VBQ0ksMEJBQUE7RUFDQSxvQkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtBQ0pKO0FETUk7RUFDSSx5QkFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FDSlI7QURNUTtFQUNJLG1CRXJERDtFRnNEQyxtQkFBQTtFQUNBLGVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtBQ0paO0FEUUk7RUFDSSxVQUFBO0VBQ0EseUJFbEVHO0FENERYO0FEU0k7O0VBRUksZUFBQTtBQ1BSO0FEVUk7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7QUNSUjtBRFVROztFQUVJLHNCQUFBO0FDUlo7QURZWTtFQUNJLGdCQUFBO0VBQ0EsbUJBQUE7QUNWaEI7QURlWTtFQUNJLG1CQUFBO0FDYmhCO0FEa0JJO0VBQ0ksbUJBQUE7RUFDQSxlQUFBO0FDaEJSO0FEa0JRO0VBQ0ksbUJBQUE7QUNoQlo7QURxQlE7RUFFSSxnQ0FBQTtBQ3BCWjtBRDBCSTtFQUNJLGdCQUFBO0FDdkJSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29udHJhY3RzL2NvbnRyYWN0LWVkaXRpb24vY29udHJhY3QtZWRpdGlvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvY29sb3JzJztcbkBpbXBvcnQgJy4uLy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvbWl4aW5zJztcblxuLnJvdy1zYXZlLWNvbnRhaW5lciB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAgIC5zYXZlLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblxuICAgICAgICAubWVzc2FnZS1jb250YWluZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb250cmF0cztcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hc2staW1hZ2UodXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL2luZm9fYnVsYi5zdmcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLm1lc3NhZ2Uge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBlbmQ7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm92ZXJsYXkge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuNTtcbn1cblxuOjpuZy1kZWVwIC5zZWN0aW9uIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMzVweDtcbiAgICBwYWRkaW5nLXRvcDogMzVweDtcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgIC5zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb250cmF0cztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhyIHtcbiAgICAgICAgd2lkdGg6IDEwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbnRyYXRzO1xuICAgIH1cblxuICAgIHNlbGVjdCxcbiAgICBpbnB1dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIHRkLFxuICAgICAgICB0aCB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhlYWQge1xuICAgICAgICAgICAgdGgge1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHtcbiAgICAgICAgICAgIHRoIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAmOmZvY3VzLFxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb250cmF0cyAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2l0cm9uLWJ0biB7XG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxufVxuIiwiLnJvdy1zYXZlLWNvbnRhaW5lciB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG4ucm93LXNhdmUtY29udGFpbmVyIC5zYXZlLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cbi5yb3ctc2F2ZS1jb250YWluZXIgLnNhdmUtY29udGFpbmVyIC5tZXNzYWdlLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4ucm93LXNhdmUtY29udGFpbmVyIC5zYXZlLWNvbnRhaW5lciAuaWNvbiB7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4YTYzZTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9pbmZvX2J1bGIuc3ZnXCIpO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvaW5mb19idWxiLnN2Z1wiKTtcbn1cbi5yb3ctc2F2ZS1jb250YWluZXIgLnNhdmUtY29udGFpbmVyIC5tZXNzYWdlIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgdGV4dC1hbGlnbjogZW5kO1xuICBib3JkZXItcmlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5vdmVybGF5IHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogMTAwMDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuOjpuZy1kZWVwIC5zZWN0aW9uIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIHBhZGRpbmctYm90dG9tOiAzNXB4O1xuICBwYWRkaW5nLXRvcDogMzVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG46Om5nLWRlZXAgLnNlY3Rpb24gLnNlY3Rpb24tdGl0bGUge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuOjpuZy1kZWVwIC5zZWN0aW9uIC5zZWN0aW9uLXRpdGxlIHNwYW4ge1xuICBiYWNrZ3JvdW5kOiAjZDhhNjNlO1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB3aWR0aDogMjVweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG46Om5nLWRlZXAgLnNlY3Rpb24gaHIge1xuICB3aWR0aDogMTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDhhNjNlO1xufVxuOjpuZy1kZWVwIC5zZWN0aW9uIHNlbGVjdCxcbjo6bmctZGVlcCAuc2VjdGlvbiBpbnB1dCB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cbjo6bmctZGVlcCAuc2VjdGlvbiB0YWJsZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuOjpuZy1kZWVwIC5zZWN0aW9uIHRhYmxlIHRkLFxuOjpuZy1kZWVwIC5zZWN0aW9uIHRhYmxlIHRoIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbjo6bmctZGVlcCAuc2VjdGlvbiB0YWJsZSB0aGVhZCB0aCB7XG4gIGJvcmRlci10b3A6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG46Om5nLWRlZXAgLnNlY3Rpb24gdGFibGUgdGJvZHkgdGgge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuOjpuZy1kZWVwIC5zZWN0aW9uIC5mb3JtLWdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNXB4O1xufVxuOjpuZy1kZWVwIC5zZWN0aW9uIC5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cbjo6bmctZGVlcCAuc2VjdGlvbiAuZm9ybS1jb250cm9sOmZvY3VzLCA6Om5nLWRlZXAgLnNlY3Rpb24gLmZvcm0tY29udHJvbDphY3RpdmUge1xuICBib3JkZXItY29sb3I6ICNkOGE2M2UgIWltcG9ydGFudDtcbn1cblxuLmNpdHJvbi1idG46Zm9jdXMge1xuICBib3gtc2hhZG93OiBub25lO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ContractLight, ContractPopulated } from 'app/shared/models/contract.interface';\nimport { ContractsService } from 'app/shared/services/contracts/contracts.service';\nimport { ContractEditionService } from './contract-edition.service';\n\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'contract-edition',\n templateUrl: './contract-edition.component.html',\n styleUrls: ['./contract-edition.component.scss'],\n providers: [ContractEditionService],\n})\nexport class ContractEditionComponent implements OnInit {\n /**\n * Unpopulated contract to be editted\n */\n @Input() private _contract: ContractLight;\n\n /**\n * Triggered when save button pressed and save done\n */\n @Output() public saved: EventEmitter = new EventEmitter();\n /**\n * Triggered when cancel button pressed\n */\n @Output() public canceled: EventEmitter = new EventEmitter();\n\n /**\n * Contract populated to display and use in component\n */\n public get contract(): ContractPopulated {\n return this.contractEditionService.contract;\n }\n\n /**\n * Is the contract loading\n */\n public loading = true;\n\n /**\n * Is contract being saved\n */\n public saving = false;\n\n constructor(private contractsService: ContractsService, private contractEditionService: ContractEditionService) {}\n\n ngOnInit(): void {\n this.getData();\n }\n\n public get enableSave(): boolean {\n return this.contractEditionService.updates.isValid();\n }\n\n /**\n * Send save request of updates to api\n */\n public async save() {\n try {\n /** If already saving, don't send other request */\n if (this.saving) {\n return;\n }\n /**\n * Convert routing references pricing values using unit rate\n * @todo only convert pricing values that need to be converted, not all\n */\n this.contractEditionService.computeUpdateRoutingReferencesPrices();\n /**\n * Get contract updates\n */\n const updates = this.contractEditionService.updates;\n /**\n * If updates invalid, don't send request\n */\n if (!updates.isValid()) {\n return;\n }\n /**\n * Check if there is some updates to do\n */\n const properties = ['infos', 'pricings', 'routingReferences'];\n const hasUpdate = properties.some(prop => updates[prop]);\n /**\n * If there is updates to do, then save contract with new values\n */\n if (updates && updates._id && hasUpdate) {\n this.saving = true;\n await this.contractsService.updateContract(updates);\n }\n this.saved.emit();\n } catch (e) {\n if (!e.errorCode) {\n e.errorCode = 'save';\n }\n this.displayError(e.errorCode);\n }\n this.saving = false;\n }\n\n /**\n * Triggers cancel : reset updates and emit cancel event\n */\n public cancel() {\n this.contractEditionService.resetUpdates();\n this.canceled.emit();\n }\n\n /**\n * Get data :\n * - contract populated\n * - available contract pricings for contract's fluid\n * - available contract pricings items for the available contract pricings\n */\n private async getData() {\n try {\n /** Get populated contract */\n this.contractEditionService.contract = await this.contractsService.getContractPopulated(this._contract._id);\n /** Get tarifications for the contract type */\n const { pricings, pricingsItems } = await this.contractsService.getPricings(this.contract.energyType);\n this.contractEditionService.pricings = pricings;\n this.contractEditionService.pricingItems = pricingsItems;\n } catch (e) {\n if (!e.errorCode) {\n e.errorCode = 'get_data';\n }\n this.displayError(e.errorCode);\n }\n this.loading = false;\n }\n\n /**\n * Display error\n * @param {string} errorCode\n */\n private displayError(errorCode: string) {\n const map = {\n default: ['Une erreur est survenue', 'Merci de réessayer ultérieurement.', 'error'],\n get_data: [\n 'Une erreur est survenue',\n 'Une erreur est survenue lors de la récupération des données.',\n 'error',\n ],\n save: ['Une erreur est survenue', 'Une erreur est survenue lors de la sauvegarde du contrat.', 'error'],\n invalid_contract: ['Contrat invalide', 'Veuillez vérifier la cohérence des données du contrat.', 'error'],\n contract_not_found: ['Contrat non trouvé', \"Ce contrat n'existe pas ou vous n'y avez pas accès.\", 'error'],\n };\n let error = map[errorCode];\n if (!error) {\n error = map['default'];\n }\n Swal.fire({\n title: error[0],\n text: error[1],\n icon: error[2],\n });\n }\n\n /**\n * Return the key of the message to display while the contract is saved\n */\n get saveMessage(): string {\n return this.saving ? 'bills_control_delay' : 'bills_control_saving_message';\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ContractPricing, ContractPricingItem } from 'app/shared/models/contract-pricing.interface';\n\nimport {\n ContractPopulated,\n InfoContract,\n PricingSelected,\n PricingSelectedValue,\n RoutingRefContract,\n} from 'app/shared/models/contract.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { ContractUpdate, PricingOption, PricingSection } from './contract-edition.interface';\n\n@Injectable()\nexport class ContractEditionService {\n /**\n * Contract property with latest values\n */\n private _contract: ContractPopulated;\n\n /**\n * All available contract pricings for the contract's fluid\n */\n private _pricings: ContractPricing[] = [];\n\n /**\n * All the contract pricing items that can be found in `pricings`\n */\n private _pricingItems: ContractPricingItem[] = [];\n\n /**\n * Selected pricings options\n */\n private _selectedPricingOptions: PricingOption[] = [];\n\n /**\n * Subject to subscribe changes to pricing options selected.\n */\n public pricingOptionsSubject: BehaviorSubject = new BehaviorSubject([]);\n\n /**\n * Object of all updates to set to contract.\n */\n public updates: ContractUpdate = {\n _id: '',\n validity: {\n infos: true,\n pricings: true,\n },\n isValid() {\n return Boolean(this.validity.infos && this.validity.pricings);\n },\n };\n\n constructor(private utilsService: UtilsService) {}\n\n /**\n * Update selected pricing options and emit next subject value\n * @param {PricingOption[]} pricings\n */\n public updateSelectedPricingOptions(pricings: PricingOption[]) {\n this._selectedPricingOptions = _.uniqBy(pricings, 'label');\n this.pricingOptionsSubject.next(this.selectedPricingOptions);\n }\n\n /**\n * Set infos updates\n */\n public updateInfos(infos: { data: InfoContract; isValid: boolean }) {\n const unitRate = _.get(this.updates, 'infos.unitRate') || _.get(this.contract, 'infos.unitRate');\n this.updates.infos = unitRate ? Object.assign({}, infos.data, { unitRate }) : infos.data;\n this.updates.validity.infos = infos.isValid;\n }\n\n /**\n * Set pricings updates and emit next subject value\n */\n public updateCommonPricing(pricings: PricingSelected[]) {\n this.updates.pricings = pricings;\n\n // Reset the rRefs pricing which are not in the updated common contract pricing\n this.resetUnselectedRrefsPricing();\n }\n\n /**\n * Set routing references updates\n */\n public updateRoutingReferences(routingReferences: Array>) {\n this.updates.routingReferences = routingReferences;\n }\n\n /**\n * Reset the Rrefs pricings related to the updated (unselected) common contract pricing\n */\n public resetUnselectedRrefsPricing() {\n // check if updated contract pricings\n if (!Array.isArray(this.updates.pricings)) {\n return;\n }\n\n // Update (reset) the rRefs pricings which are not in the updated contract.pricings\n let update = false;\n for (const rRef of this.contract.routingReferences) {\n const rRefPath = _.get(rRef, 'pricing.pathContractPricing');\n\n if (Array.isArray(rRefPath) && rRefPath.length) {\n const foundPath = this.updates.pricings.some(p =>\n _.isEqual(p.pathContractPricing, rRef.pricing.pathContractPricing)\n );\n if (!foundPath) {\n rRef.pricing = null;\n update = true;\n }\n }\n }\n\n if (update) {\n this.updateRoutingReferences(this.contract.routingReferences);\n }\n }\n\n /**\n * Set prices unitRate\n */\n public updateUnitRate(unitRate: number) {\n const currentInfos = _.get(this.updates, 'infos') || _.get(this.contract, 'infos');\n const routingRefs = _.get(this.updates, 'routingReferences') || _.get(this.contract, 'routingReferences');\n if (routingRefs) {\n this.updates.routingReferences = routingRefs;\n }\n this.updates.infos = Object.assign({}, currentInfos, { unitRate });\n }\n\n /**\n * Is contract pricing item a unit pricing\n * @param {string} id - id of the ContractPricingItem\n * @returns {boolan} true if item is a unit pricing, false is not or not found.\n */\n public isPricingItemUnitPricing(id: string): boolean {\n const item = this._pricingItems.find(x => x._id === id);\n return item ? item.isUnitPricing : false;\n }\n\n /**\n * Get pricing item value. Apply conversion on pricing item unit if needed.\n * Doesn't mutate object apssed in arguments.\n * @param {PricingSelectedValue} item - item to get value from.\n * @param {number} rate - rate to apply to value. A multiplication is done between item value and rate.\n * @returns {string} value\n */\n public getPricingItemValue(item: PricingSelectedValue, rate: number): string {\n if (!this.isPricingItemUnitPricing(item.id)) {\n return item.value;\n }\n const parsed = parseFloat(item.value);\n let val = null;\n // Pricing values must be >= 0\n if (!Number.isNaN(parsed) && parsed >= 0) {\n val = this.utilsService.roundNumber(parsed * rate).toString();\n }\n return val;\n }\n\n /**\n * Compute all prices for routing references with the contract unit rate\n */\n public computeUpdateRoutingReferencesPrices() {\n const unitRate: number = _.get(this.updates, 'infos.unitRate') || _.get(this.contract, 'infos.unitRate');\n const routingReferences = _.get(this.updates, 'routingReferences') || _.get(this.contract, 'routingReferences');\n if (typeof unitRate === 'number' && routingReferences) {\n routingReferences.forEach(rf => {\n const pricingValues: PricingSelectedValue[] = _.get(rf, 'pricing.values');\n if (pricingValues) {\n pricingValues.forEach(pv => {\n if (pv !== null) {\n pv.value = this.getPricingItemValue(pv, unitRate);\n }\n });\n }\n });\n }\n }\n\n /**\n * Reset updates object\n */\n public resetUpdates() {\n this.updates = {\n _id: this._contract._id,\n validity: {\n infos: true,\n pricings: true,\n },\n isValid: this.updates.isValid,\n };\n }\n\n /**\n * Set the selected pricing inside the contract's selected routing reference\n * @param {RoutingRefContract} routingReference\n * @param {PricingSection} pricingSection\n */\n setRoutingReferencePricing(routingReference: RoutingRefContract, pricingSection: PricingSection) {\n // Find the current section to get the path IDS\n const currentSection = _.find(this.selectedPricingOptions, { label: pricingSection.label });\n const pathContractPricings: string[] = currentSection.id.split('-');\n\n // Create pricing object to associate to the routing reference\n const obj: PricingSelected = {\n pathContractPricing: pathContractPricings,\n values: this.getInitialPricingValues(pricingSection.pricingItems),\n };\n\n // Find the routing reference inside the contract\n const contractRoutingReferencesSelected = this.contract.routingReferences.find(\n x => x.routingReference._id === routingReference.routingReference._id\n );\n\n // Set its new pricing value\n contractRoutingReferencesSelected.pricing = obj;\n\n this.updateRoutingReferences(this.contract.routingReferences);\n }\n\n /**\n * Set initial array for routingReferences pricingItems\n * @param {ContractPricingItem[]} pricingItems\n */\n private getInitialPricingValues(pricingItems: ContractPricingItem[]): PricingSelectedValue[] {\n const values = pricingItems.map(x => ({ id: x._id, value: null }));\n\n return values;\n }\n\n /**\n * Getters and setters\n */\n public get contract(): ContractPopulated {\n return this._contract;\n }\n public set contract(contract: ContractPopulated) {\n this._contract = contract;\n this.updates._id = this._contract._id;\n }\n public get pricings(): ContractPricing[] {\n return this._pricings;\n }\n public set pricings(pricings: ContractPricing[]) {\n this._pricings = pricings;\n }\n public get pricingItems(): ContractPricingItem[] {\n return this._pricingItems;\n }\n public set pricingItems(pricingItems: ContractPricingItem[]) {\n this._pricingItems = pricingItems;\n }\n public get selectedPricingOptions(): PricingOption[] {\n return this._selectedPricingOptions;\n }\n public set selectedPricingOptions(pricingOptions: PricingOption[]) {\n this.updateSelectedPricingOptions(pricingOptions);\n }\n}\n","export default \".required {\\n color: red;\\n}\\n\\n#periodicity_day {\\n width: 4rem;\\n display: inline-block;\\n}\\n\\n#periodicity_reminder {\\n width: auto;\\n display: inline-block;\\n}\\n\\nspan,\\n.mat-form-field {\\n font-size: 0.875rem;\\n}\\n\\n.mat-select {\\n font-family: \\\"Montserrat\\\", sans-serif;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdC1lZGl0aW9uL2RhdGVzLXBlcmlvZGljaXR5L2RhdGVzLXBlcmlvZGljaXR5LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb250cmFjdHMvY29udHJhY3QtZWRpdGlvbi9kYXRlcy1wZXJpb2RpY2l0eS9kYXRlcy1wZXJpb2RpY2l0eS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFVBQUE7QUNDSjs7QURFQTtFQUNJLFdBQUE7RUFDQSxxQkFBQTtBQ0NKOztBREVBO0VBQ0ksV0FBQTtFQUNBLHFCQUFBO0FDQ0o7O0FERUE7O0VBRUksbUJBQUE7QUNDSjs7QURFQTtFQUNJLHFDQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb250cmFjdHMvY29udHJhY3QtZWRpdGlvbi9kYXRlcy1wZXJpb2RpY2l0eS9kYXRlcy1wZXJpb2RpY2l0eS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5yZXF1aXJlZCB7XG4gICAgY29sb3I6IHJlZDtcbn1cblxuI3BlcmlvZGljaXR5X2RheSB7XG4gICAgd2lkdGg6IDRyZW07XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4jcGVyaW9kaWNpdHlfcmVtaW5kZXIge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3Bhbixcbi5tYXQtZm9ybS1maWVsZCB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLm1hdC1zZWxlY3Qge1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7XG59XG4iLCIucmVxdWlyZWQge1xuICBjb2xvcjogcmVkO1xufVxuXG4jcGVyaW9kaWNpdHlfZGF5IHtcbiAgd2lkdGg6IDRyZW07XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuI3BlcmlvZGljaXR5X3JlbWluZGVyIHtcbiAgd2lkdGg6IGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3Bhbixcbi5tYXQtZm9ybS1maWVsZCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5tYXQtc2VsZWN0IHtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ContractPopulated, InfoContract, Periodicity } from 'app/shared/models/contract.interface';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport { ContractEditionService } from '../contract-edition.service';\n\ninterface Item {\n value: T;\n label: string;\n}\n\ninterface DateInput {\n key: string;\n required: boolean;\n property: string;\n value: string;\n isValid: boolean;\n validator: (inputs: DateInput[]) => boolean;\n errorMessage: string;\n}\n\n@Component({\n selector: 'contract-edition-dates-periodicity',\n templateUrl: './dates-periodicity.component.html',\n styleUrls: ['./dates-periodicity.component.scss'],\n})\nexport class ContractDatesPeriodicityComponent implements OnInit {\n /**\n * Contract to display\n */\n private get contract(): ContractPopulated {\n return this.contractEditionService.contract;\n }\n\n /**\n * Periodicity object with value and available items.\n */\n public periodicity: {\n value: Periodicity;\n items: Array>;\n } = {\n value: null,\n items: [\n {\n value: null,\n label: '-',\n },\n {\n value: 'monthly',\n label: 'monthly',\n },\n {\n value: 'quarterly',\n label: 'quarterly',\n },\n ],\n };\n\n /**\n * Periodicity day of month when bills arrive.\n */\n public periodicityDay: {\n value: number;\n min: number;\n max: number;\n isValid: () => boolean;\n } = {\n value: null,\n min: 1,\n max: 31,\n isValid() {\n if (typeof this.value !== 'number') {\n return true;\n }\n if (this.value < this.min || this.value > this.max) {\n return false;\n }\n return true;\n },\n };\n\n /**\n * Periodicity reminder object with value and available items.\n * Items list initialized in ngOnInit\n */\n public periodicityReminders: {\n value: number;\n items: Array>;\n } = {\n value: null,\n items: [],\n };\n\n /**\n * Date inputs with validation functions\n */\n public dateInputs: DateInput[] = [\n {\n key: 'contract_start',\n required: true,\n property: 'infos.dateStart',\n value: null,\n isValid: true,\n validator(dateInputs) {\n const end = dateInputs.find(x => x.key === 'contract_end');\n if (end && end.value && this.value) {\n return moment(this.value).isBefore(end.value);\n }\n return true;\n },\n errorMessage: 'La date de début doit être inférieure à la date de fin',\n },\n {\n key: 'contract_on_notice',\n required: false,\n property: 'infos.dateNotice',\n value: null,\n isValid: true,\n validator(dateInputs) {\n if (!this.value) {\n return true;\n }\n const start = dateInputs.find(x => x.key === 'contract_start');\n if (start && start.value && !moment(start.value).isBefore(this.value)) {\n return false;\n }\n const end = dateInputs.find(x => x.key === 'contract_end');\n if (end && end.value && !moment(end.value).isAfter(this.value)) {\n return false;\n }\n return true;\n },\n errorMessage: 'La date de préavis doit être entre les dates de début et de fin',\n },\n {\n key: 'contract_end',\n required: true,\n property: 'infos.dateEnd',\n value: null,\n isValid: true,\n validator(dateInputs) {\n const start = dateInputs.find(x => x.key === 'contract_start');\n if (start && start.value && this.value) {\n return moment(this.value).isAfter(start.value);\n }\n return true;\n },\n errorMessage: 'La date de fin doit être supérieure à la date de début',\n },\n ];\n\n constructor(private contractEditionService: ContractEditionService) {}\n\n ngOnInit(): void {\n this.initPeriodicityReminders();\n this.initDateInputs();\n this.initPeriodicities();\n }\n\n /**\n * Initiate list of available values for periodicity reminders\n */\n private initPeriodicityReminders() {\n this.periodicityReminders.items = [\n {\n value: null,\n label: '-',\n },\n ];\n for (let i = 1; i <= 12; i++) {\n this.periodicityReminders.items.push({\n value: i,\n label: i.toString(),\n });\n }\n }\n\n /**\n * Initiate date inputs by setting contract values and computing validity\n */\n private initDateInputs() {\n this.dateInputs.forEach(dateInput => {\n const value = _.get(this.contract, dateInput.property);\n if (value) {\n dateInput.value = moment(value).format('YYYY-MM-DD');\n }\n dateInput.isValid = dateInput.validator(this.dateInputs);\n });\n }\n\n /**\n * Initiate periodicity input fields\n */\n private initPeriodicities() {\n /** Set periodicity */\n const billPeriodicity = _.get(this.contract, 'infos.billPeriodicity');\n if (billPeriodicity) {\n this.periodicity.value = billPeriodicity;\n }\n\n /** Set periodicity day of the month */\n const billDateNumber = _.get(this.contract, 'infos.billDateNumber');\n if (billDateNumber) {\n this.periodicityDay.value = billDateNumber;\n }\n\n /** Set periodicity reminder */\n const billNotification = _.get(this.contract, 'infos.billNotification');\n if (billNotification) {\n this.periodicityReminders.value = billNotification;\n }\n }\n\n /**\n * On date change, set if date is valid then triggers component change\n */\n public onDateChange() {\n // Recompute all validity\n this.dateInputs.forEach(dateInput => {\n dateInput.isValid = dateInput.validator(this.dateInputs);\n });\n this.handleChange();\n }\n\n /**\n * On input change, compute new info contracts and emit it if valid.\n */\n public handleChange() {\n /** Check all and emit most recent values */\n let valid = true;\n\n this.dateInputs.forEach(dateInput => {\n if (dateInput.isValid === false) {\n valid = false;\n }\n });\n\n if (!this.periodicityDay.isValid()) {\n valid = false;\n }\n\n const infoContract: InfoContract = {\n dateStart: this.dateInputs.find(x => x.key === 'contract_start').value || null,\n dateNotice: this.dateInputs.find(x => x.key === 'contract_on_notice').value || null,\n dateEnd: this.dateInputs.find(x => x.key === 'contract_end').value || null,\n billPeriodicity: this.periodicity.value,\n billDateNumber: this.periodicityDay.value,\n billNotification: this.periodicityReminders.value,\n };\n this.contractEditionService.updateInfos({ data: infoContract, isValid: valid });\n }\n}\n","export default \".section .no-data {\\n text-align: center;\\n font-size: 0.875rem;\\n}\\n\\n.pricing-section .pricing {\\n display: -webkit-box;\\n display: flex;\\n clear: both;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n align-items: center;\\n overflow: auto;\\n padding: 10px 15px;\\n cursor: pointer;\\n border-bottom: 1px solid #e9ecef;\\n}\\n\\n.pricing-section .pricing h2 {\\n font-size: 1rem;\\n}\\n\\n.pricing-section .pricing .collapse-icon {\\n background-color: #607188;\\n height: 20px;\\n width: 20px;\\n margin: 0;\\n cursor: pointer;\\n mask-size: contain;\\n -webkit-mask-size: contain;\\n mask-repeat: no-repeat;\\n -webkit-mask-repeat: no-repeat;\\n}\\n\\n.pricing-section .pricing .collapse-down {\\n mask-image: url(\\\"/assets/img/pictos-svg/chevron-down.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/chevron-down.svg\\\");\\n}\\n\\n.pricing-section .pricing .collapse-up {\\n mask-image: url(\\\"/assets/img/pictos-svg/chevron-up.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/chevron-up.svg\\\");\\n}\\n\\n.pricing-section .pdl-list {\\n margin: 15px 15px 25px;\\n}\\n\\n.pricing-section .pdl-list .pdl-list-table tbody tr:nth-child(odd) {\\n background: whitesmoke;\\n}\\n\\n.pricing-section .pdl-list .pdl-box {\\n margin-top: 30px;\\n}\\n\\n.pricing-section .pdl-list .pdl-box h4 {\\n font-size: 0.875rem;\\n margin-bottom: 5px;\\n font-weight: bold;\\n}\\n\\n.pricing-section .pdl-list .pdl-box .box-content {\\n border: 1px solid #e9ecef;\\n padding: 15px 0;\\n}\\n\\n.pricing-section .pdl-list .pdl-box .box-content .search-box {\\n margin-bottom: 20px;\\n position: relative;\\n}\\n\\n.pricing-section .pdl-list .pdl-box .box-content .search-box input {\\n width: 100%;\\n padding-left: 0;\\n border-top: none;\\n border-left: none;\\n border-right: none;\\n border-radius: inherit;\\n border-bottom: 1px solid #e9ecef;\\n}\\n\\n.pricing-section .pdl-list .pdl-box .box-content .search-box input:focus {\\n border-bottom: 1px solid #e9ecef;\\n}\\n\\n.pricing-section .pdl-list .pdl-box .box-content .search-box .search-icon {\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n mask-size: contain;\\n -webkit-mask-size: contain;\\n mask-repeat: no-repeat;\\n -webkit-mask-repeat: no-repeat;\\n width: 25px;\\n height: 18px;\\n background-color: #607188;\\n display: inline-block;\\n right: 23px;\\n position: absolute;\\n}\\n\\n.pricing-section .pdl-list .pdl-box .box-content .table-container {\\n overflow-y: auto;\\n min-height: 250px;\\n max-height: 450px;\\n}\\n\\n.pricing-section .pdl-list .pdl-box .box-content .table-container .table td label {\\n padding-left: 0;\\n font-size: 0.75rem;\\n}\\n\\n.pricing-section .pdl-list .pdl-box button {\\n background: #d8a63e;\\n font-family: \\\"Montserrat\\\", Arial, sans-serif;\\n color: white;\\n cursor: pointer;\\n font-size: 0.75rem;\\n font-weight: inherit;\\n box-shadow: none;\\n padding: 5px 15px;\\n float: left;\\n}\\n\\n.pricing-section .pdl-list .pdl-box button:hover {\\n background: #bd8c26;\\n}\\n\\n.pricing-section .pdl-list .pdl-box button:focus {\\n box-shadow: none;\\n}\\n\\n/** Multiselect Dropdown override style **/\\n\\n::ng-deep .multiselect-dropdown .dropdown-btn {\\n padding: 8px 12px !important;\\n}\\n\\n::ng-deep .multiselect-dropdown .dropdown-btn .selected-item {\\n border: none !important;\\n background: #d8a63e !important;\\n color: white !important;\\n}\\n\\n::ng-deep .multiselect-dropdown .dropdown-btn .selected-item:hover {\\n box-shadow: none !important;\\n}\\n\\n::ng-deep .multiselect-dropdown .dropdown-btn .dropdown-down {\\n margin-top: 10px;\\n border-top: 8px solid #adadad !important;\\n border-left: 8px solid transparent !important;\\n border-right: 8px solid transparent !important;\\n}\\n\\n::ng-deep .multiselect-dropdown .dropdown-btn .dropdown-up {\\n border-bottom: 8px solid #adadad !important;\\n border-left: 8px solid transparent !important;\\n border-right: 8px solid transparent !important;\\n}\\n\\n::ng-deep .multiselect-dropdown .dropdown-btn span {\\n font-size: 0.813rem;\\n}\\n\\n::ng-deep .multiselect-dropdown .dropdown-btn span span:first-child {\\n margin-top: 5px;\\n display: inline-block;\\n}\\n\\n::ng-deep .multiselect-item-checkbox {\\n padding: 12px 10px !important;\\n}\\n\\n::ng-deep .multiselect-item-checkbox input + div {\\n font-size: 0.875rem;\\n}\\n\\n::ng-deep .multiselect-item-checkbox input + div:before {\\n color: #d8a63e !important;\\n border: 2px solid #d8a63e !important;\\n}\\n\\n::ng-deep .multiselect-item-checkbox input:checked + div {\\n font-size: 0.875rem;\\n}\\n\\n::ng-deep .multiselect-item-checkbox input:checked + div:before {\\n background: #d8a63e !important;\\n}\\n\\n::ng-deep .dropdown-list .filter-textbox input {\\n font-size: 0.875rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdC1lZGl0aW9uL3BkbC1wcmljaW5ncy9wZGwtcHJpY2luZ3MuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdC1lZGl0aW9uL3BkbC1wcmljaW5ncy9wZGwtcHJpY2luZ3MuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7QUNGSjs7QURNSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLFdBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxnQ0FBQTtBQ0hSOztBREtRO0VBQ0ksZUFBQTtBQ0haOztBRE1RO0VBQ0kseUJFRUM7RUZERCxZQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VHRFIsa0JIRTJCO0VHRDNCLDBCSEMyQjtFR1EzQixzQkhQUTtFR1FSLDhCSFJRO0FDRlo7O0FES1E7RUdESiwwREhFUTtFR0RSLGtFSENRO0FDRlo7O0FES1E7RUdMSix3REhNUTtFR0xSLGdFSEtRO0FDRlo7O0FETUk7RUFDSSxzQkFBQTtBQ0pSOztBRFFnQjtFQUNJLHNCQUFBO0FDTnBCOztBRFdRO0VBQ0ksZ0JBQUE7QUNUWjs7QURVWTtFQUNJLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtBQ1JoQjs7QURXWTtFQUNJLHlCQUFBO0VBQ0EsZUFBQTtBQ1RoQjs7QURXZ0I7RUFDSSxtQkFBQTtFQUNBLGtCQUFBO0FDVHBCOztBRFdvQjtFQUNJLFdBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0Esc0JBQUE7RUFDQSxnQ0FBQTtBQ1R4Qjs7QURXd0I7RUFDSSxnQ0FBQTtBQ1Q1Qjs7QURhb0I7RUduRGhCLDBESG9Eb0I7RUduRHBCLGtFSG1Eb0I7RUd6RHBCLGtCSDBEdUM7RUd6RHZDLDBCSHlEdUM7RUdoRHZDLHNCSGlEb0I7RUdoRHBCLDhCSGdEb0I7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHlCRS9EWDtFRmdFVyxxQkFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtBQ1J4Qjs7QURZZ0I7RUFDSSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7QUNWcEI7O0FEYTRCO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0FDWGhDOztBRGtCWTtFQUNJLG1CRXhHTDtFRnlHSyw0Q0FBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0FDaEJoQjs7QURrQmdCO0VBQ0ksbUJBQUE7QUNoQnBCOztBRG1CZ0I7RUFDSSxnQkFBQTtBQ2pCcEI7O0FEd0JBLDJDQUFBOztBQUVJO0VBQ0ksNEJBQUE7QUN0QlI7O0FEd0JRO0VBQ0ksdUJBQUE7RUFDQSw4QkFBQTtFQUNBLHVCQUFBO0FDdEJaOztBRHdCWTtFQUNJLDJCQUFBO0FDdEJoQjs7QUQwQlE7RUFDSSxnQkFBQTtFQUNBLHdDQUFBO0VBQ0EsNkNBQUE7RUFDQSw4Q0FBQTtBQ3hCWjs7QUQyQlE7RUFDSSwyQ0FBQTtFQUNBLDZDQUFBO0VBQ0EsOENBQUE7QUN6Qlo7O0FENEJRO0VBQ0ksbUJBQUE7QUMxQlo7O0FENEJZO0VBQ0ksZUFBQTtFQUNBLHFCQUFBO0FDMUJoQjs7QURnQ0E7RUFDSSw2QkFBQTtBQzdCSjs7QUQrQkk7RUFDSSxtQkFBQTtBQzdCUjs7QUQ4QlE7RUFDSSx5QkFBQTtFQUNBLG9DQUFBO0FDNUJaOztBRGdDSTtFQUNJLG1CQUFBO0FDOUJSOztBRCtCUTtFQUNJLDhCQUFBO0FDN0JaOztBRG9DUTtFQUNJLG1CQUFBO0FDakNaIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29udHJhY3RzL2NvbnRyYWN0LWVkaXRpb24vcGRsLXByaWNpbmdzL3BkbC1wcmljaW5ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9jb2xvcnMnO1xuQGltcG9ydCAnLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbi5zZWN0aW9uIC5uby1kYXRhIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLnByaWNpbmctc2VjdGlvbiB7XG4gICAgLnByaWNpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkdGFibGVfYm9yZGVyO1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2xsYXBzZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYXNrLXNpemUoY29udGFpbik7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYXNrLXJlcGVhdChuby1yZXBlYXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbGxhcHNlLWRvd24ge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1pbWFnZSh1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvY2hldnJvbi1kb3duLnN2ZycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2xsYXBzZS11cCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYXNrLWltYWdlKHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9jaGV2cm9uLXVwLnN2ZycpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wZGwtbGlzdCB7XG4gICAgICAgIG1hcmdpbjogMTVweCAxNXB4IDI1cHg7XG5cbiAgICAgICAgLnBkbC1saXN0LXRhYmxlIHtcbiAgICAgICAgICAgIHRib2R5IHtcbiAgICAgICAgICAgICAgICB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlc21va2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnBkbC1ib3gge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJveC1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkdGFibGUtYm9yZGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMDtcblxuICAgICAgICAgICAgICAgIC5zZWFyY2gtYm94IHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkdGFibGUtYm9yZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHRhYmxlLWJvcmRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5zZWFyY2gtaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtYXNrLWltYWdlKHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19zZWFyY2guc3ZnJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1zaXplKGNvbnRhaW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWFzay1yZXBlYXQobm8tcmVwZWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMjNweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC50YWJsZS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogNDUwcHg7XG4gICAgICAgICAgICAgICAgICAgIC50YWJsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbnRyYXRzO1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCRjb250cmF0cywgMTAlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiAgTXVsdGlzZWxlY3QgRHJvcGRvd24gb3ZlcnJpZGUgc3R5bGUgKiovXG46Om5nLWRlZXAgLm11bHRpc2VsZWN0LWRyb3Bkb3duIHtcbiAgICAuZHJvcGRvd24tYnRuIHtcbiAgICAgICAgcGFkZGluZzogOHB4IDEycHggIWltcG9ydGFudDtcblxuICAgICAgICAuc2VsZWN0ZWQtaXRlbSB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb250cmF0cyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1kb3duIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICAgICAgICBib3JkZXItdG9wOiA4cHggc29saWQgI2FkYWRhZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiA4cHggc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi11cCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiA4cHggc29saWQgI2FkYWRhZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiA4cHggc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjgxM3JlbTtcblxuICAgICAgICAgICAgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuOjpuZy1kZWVwIC5tdWx0aXNlbGVjdC1pdGVtLWNoZWNrYm94IHtcbiAgICBwYWRkaW5nOiAxMnB4IDEwcHggIWltcG9ydGFudDtcblxuICAgIGlucHV0ICsgZGl2IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29sb3I6ICRjb250cmF0cyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgJGNvbnRyYXRzICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dDpjaGVja2VkICsgZGl2IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbnRyYXRzICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjo6bmctZGVlcCAuZHJvcGRvd24tbGlzdCB7XG4gICAgLmZpbHRlci10ZXh0Ym94IHtcbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5zZWN0aW9uIC5uby1kYXRhIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4ucHJpY2luZy1zZWN0aW9uIC5wcmljaW5nIHtcbiAgZGlzcGxheTogZmxleDtcbiAgY2xlYXI6IGJvdGg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZWNlZjtcbn1cbi5wcmljaW5nLXNlY3Rpb24gLnByaWNpbmcgaDIge1xuICBmb250LXNpemU6IDFyZW07XG59XG4ucHJpY2luZy1zZWN0aW9uIC5wcmljaW5nIC5jb2xsYXBzZS1pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwNzE4ODtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFyZ2luOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgLXdlYmtpdC1tYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cbi5wcmljaW5nLXNlY3Rpb24gLnByaWNpbmcgLmNvbGxhcHNlLWRvd24ge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL2NoZXZyb24tZG93bi5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9jaGV2cm9uLWRvd24uc3ZnXCIpO1xufVxuLnByaWNpbmctc2VjdGlvbiAucHJpY2luZyAuY29sbGFwc2UtdXAge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL2NoZXZyb24tdXAuc3ZnXCIpO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvY2hldnJvbi11cC5zdmdcIik7XG59XG4ucHJpY2luZy1zZWN0aW9uIC5wZGwtbGlzdCB7XG4gIG1hcmdpbjogMTVweCAxNXB4IDI1cHg7XG59XG4ucHJpY2luZy1zZWN0aW9uIC5wZGwtbGlzdCAucGRsLWxpc3QtdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZXNtb2tlO1xufVxuLnByaWNpbmctc2VjdGlvbiAucGRsLWxpc3QgLnBkbC1ib3gge1xuICBtYXJnaW4tdG9wOiAzMHB4O1xufVxuLnByaWNpbmctc2VjdGlvbiAucGRsLWxpc3QgLnBkbC1ib3ggaDQge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLnByaWNpbmctc2VjdGlvbiAucGRsLWxpc3QgLnBkbC1ib3ggLmJveC1jb250ZW50IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U5ZWNlZjtcbiAgcGFkZGluZzogMTVweCAwO1xufVxuLnByaWNpbmctc2VjdGlvbiAucGRsLWxpc3QgLnBkbC1ib3ggLmJveC1jb250ZW50IC5zZWFyY2gtYm94IHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnByaWNpbmctc2VjdGlvbiAucGRsLWxpc3QgLnBkbC1ib3ggLmJveC1jb250ZW50IC5zZWFyY2gtYm94IGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbiAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWVjZWY7XG59XG4ucHJpY2luZy1zZWN0aW9uIC5wZGwtbGlzdCAucGRsLWJveCAuYm94LWNvbnRlbnQgLnNlYXJjaC1ib3ggaW5wdXQ6Zm9jdXMge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZWNlZjtcbn1cbi5wcmljaW5nLXNlY3Rpb24gLnBkbC1saXN0IC5wZGwtYm94IC5ib3gtY29udGVudCAuc2VhcmNoLWJveCAuc2VhcmNoLWljb24ge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3NlYXJjaC5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19zZWFyY2guc3ZnXCIpO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIC13ZWJraXQtbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIHdpZHRoOiAyNXB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDcxODg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcmlnaHQ6IDIzcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5wcmljaW5nLXNlY3Rpb24gLnBkbC1saXN0IC5wZGwtYm94IC5ib3gtY29udGVudCAudGFibGUtY29udGFpbmVyIHtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgbWluLWhlaWdodDogMjUwcHg7XG4gIG1heC1oZWlnaHQ6IDQ1MHB4O1xufVxuLnByaWNpbmctc2VjdGlvbiAucGRsLWxpc3QgLnBkbC1ib3ggLmJveC1jb250ZW50IC50YWJsZS1jb250YWluZXIgLnRhYmxlIHRkIGxhYmVsIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG4ucHJpY2luZy1zZWN0aW9uIC5wZGwtbGlzdCAucGRsLWJveCBidXR0b24ge1xuICBiYWNrZ3JvdW5kOiAjZDhhNjNlO1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogd2hpdGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgcGFkZGluZzogNXB4IDE1cHg7XG4gIGZsb2F0OiBsZWZ0O1xufVxuLnByaWNpbmctc2VjdGlvbiAucGRsLWxpc3QgLnBkbC1ib3ggYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI2JkOGMyNjtcbn1cbi5wcmljaW5nLXNlY3Rpb24gLnBkbC1saXN0IC5wZGwtYm94IGJ1dHRvbjpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi8qKiAgTXVsdGlzZWxlY3QgRHJvcGRvd24gb3ZlcnJpZGUgc3R5bGUgKiovXG46Om5nLWRlZXAgLm11bHRpc2VsZWN0LWRyb3Bkb3duIC5kcm9wZG93bi1idG4ge1xuICBwYWRkaW5nOiA4cHggMTJweCAhaW1wb3J0YW50O1xufVxuOjpuZy1kZWVwIC5tdWx0aXNlbGVjdC1kcm9wZG93biAuZHJvcGRvd24tYnRuIC5zZWxlY3RlZC1pdGVtIHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICNkOGE2M2UgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG46Om5nLWRlZXAgLm11bHRpc2VsZWN0LWRyb3Bkb3duIC5kcm9wZG93bi1idG4gLnNlbGVjdGVkLWl0ZW06aG92ZXIge1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG46Om5nLWRlZXAgLm11bHRpc2VsZWN0LWRyb3Bkb3duIC5kcm9wZG93bi1idG4gLmRyb3Bkb3duLWRvd24ge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICBib3JkZXItdG9wOiA4cHggc29saWQgI2FkYWRhZCAhaW1wb3J0YW50O1xuICBib3JkZXItbGVmdDogOHB4IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yaWdodDogOHB4IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG46Om5nLWRlZXAgLm11bHRpc2VsZWN0LWRyb3Bkb3duIC5kcm9wZG93bi1idG4gLmRyb3Bkb3duLXVwIHtcbiAgYm9yZGVyLWJvdHRvbTogOHB4IHNvbGlkICNhZGFkYWQgIWltcG9ydGFudDtcbiAgYm9yZGVyLWxlZnQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBib3JkZXItcmlnaHQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuOjpuZy1kZWVwIC5tdWx0aXNlbGVjdC1kcm9wZG93biAuZHJvcGRvd24tYnRuIHNwYW4ge1xuICBmb250LXNpemU6IDAuODEzcmVtO1xufVxuOjpuZy1kZWVwIC5tdWx0aXNlbGVjdC1kcm9wZG93biAuZHJvcGRvd24tYnRuIHNwYW4gc3BhbjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG46Om5nLWRlZXAgLm11bHRpc2VsZWN0LWl0ZW0tY2hlY2tib3gge1xuICBwYWRkaW5nOiAxMnB4IDEwcHggIWltcG9ydGFudDtcbn1cbjo6bmctZGVlcCAubXVsdGlzZWxlY3QtaXRlbS1jaGVja2JveCBpbnB1dCArIGRpdiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG46Om5nLWRlZXAgLm11bHRpc2VsZWN0LWl0ZW0tY2hlY2tib3ggaW5wdXQgKyBkaXY6YmVmb3JlIHtcbiAgY29sb3I6ICNkOGE2M2UgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAycHggc29saWQgI2Q4YTYzZSAhaW1wb3J0YW50O1xufVxuOjpuZy1kZWVwIC5tdWx0aXNlbGVjdC1pdGVtLWNoZWNrYm94IGlucHV0OmNoZWNrZWQgKyBkaXYge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuOjpuZy1kZWVwIC5tdWx0aXNlbGVjdC1pdGVtLWNoZWNrYm94IGlucHV0OmNoZWNrZWQgKyBkaXY6YmVmb3JlIHtcbiAgYmFja2dyb3VuZDogI2Q4YTYzZSAhaW1wb3J0YW50O1xufVxuXG46Om5nLWRlZXAgLmRyb3Bkb3duLWxpc3QgLmZpbHRlci10ZXh0Ym94IGlucHV0IHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ContractPricing, ContractPricingItem } from 'app/shared/models/contract-pricing.interface';\nimport {\n ContractPopulated,\n PricingSelected,\n PricingSelectedValue,\n RoutingRefContract,\n} from 'app/shared/models/contract.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport * as _ from 'lodash';\nimport { PricingOption, PricingSection } from '../contract-edition.interface';\nimport { ContractEditionService } from '../contract-edition.service';\n\n@Component({\n selector: 'contract-edition-pdl-pricings',\n templateUrl: './pdl-pricings.component.html',\n styleUrls: ['./pdl-pricings.component.scss'],\n})\nexport class PdlPricingsComponent implements OnInit {\n /**\n * Contract to edit\n */\n public get contract(): ContractPopulated {\n return this.contractEditionService.contract;\n }\n\n /**\n * Available pricings description for the contract\n */\n public get pricings(): ContractPricing[] {\n return this.contractEditionService.pricings;\n }\n\n /**\n * Pricing items related to the pricings\n */\n public get pricingItems(): ContractPricingItem[] {\n return this.contractEditionService.pricingItems;\n }\n\n /**\n * Get each pricing selected in the pricing section\n */\n public get pricingOptions(): PricingOption[] {\n return this.contractEditionService.selectedPricingOptions;\n }\n\n public pricingList: PricingSection[] = [];\n public expandedIndex: number;\n public selectedRoutingReferences: Array> = [];\n public searchText: string;\n\n public items: ContractPricing[] = [];\n\n public routingReferenceList: Array> = [];\n\n constructor(private contractEditionService: ContractEditionService) {}\n\n ngOnInit() {\n this.expandedIndex = -1;\n\n this.pricings.forEach(pricing => {\n this.flattenDeep(pricing);\n });\n\n this.setAvailableRoutingReferencesList();\n\n /**\n * Subscribe to pricing options change\n */\n this.contractEditionService.pricingOptionsSubject.subscribe(pricingOptions => {\n this.updatePricingList(pricingOptions);\n });\n }\n\n /**\n * Update pricing list with new pricing options\n *\n * @param {PricingOption[]} pricingOptions\n */\n private updatePricingList(pricingOptions: PricingOption[]) {\n this.pricingList = pricingOptions.map(pricingOption => {\n const pricingItems = this.getContractPricingItems(pricingOption);\n return {\n label: pricingOption.label,\n routingReferences: [],\n pricingItems,\n };\n });\n\n this.assignSelectedRoutingReferences();\n }\n\n /**\n * Collapse pricing section\n *\n * @param {number} index\n */\n collapse(index: number) {\n this.expandedIndex = index === this.expandedIndex ? -1 : index;\n }\n\n /**\n * Construct the list of all available PDL\n */\n setAvailableRoutingReferencesList() {\n for (const rf of this.contract.routingReferences) {\n const routingReference = rf;\n this.computedRoutingReferencePrices(routingReference);\n this.routingReferenceList.push(routingReference);\n }\n }\n\n /**\n * compute all pricing values of a routingReference with the contract unitRate\n * @param {RoutingRefContract} routingReference\n */\n computedRoutingReferencePrices(routingReference: RoutingRefContract) {\n const unitRate: number = _.get(this.contract, 'infos.unitRate');\n const pricingValues: PricingSelectedValue[] = _.get(routingReference, 'pricing.values', []);\n if (pricingValues) {\n pricingValues.forEach(pv => {\n if (unitRate) {\n pv.value = this.contractEditionService.getPricingItemValue(pv, 1 / unitRate);\n }\n });\n }\n }\n\n /**\n * Select one or many PDL and push it in an array\n *\n * @param {RoutingRefContract} routingReference\n * @param {boolean} isChecked\n */\n onSelectRoutingReference(routingReference: RoutingRefContract, isChecked: boolean) {\n if (isChecked) {\n // Add each selected PDL in a selected PDL array\n this.selectedRoutingReferences.push(routingReference);\n } else {\n // Remove each PDL from the selected array\n const index = this.selectedRoutingReferences.indexOf(routingReference);\n this.selectedRoutingReferences.splice(index, 1);\n }\n }\n\n /**\n * Assign one or many PDL in the pricing section\n *\n * @param {PricingSection} pricingSection\n */\n addRoutingReferences(pricingSection: PricingSection) {\n // Add all the checked PDL into the routingReferences array of the pricing section\n this.selectedRoutingReferences.forEach((routingReference: RoutingRefContract) => {\n // Before adding check if the selected PDL is not yet added\n if (\n pricingSection.routingReferences.findIndex(\n rRef =>\n rRef.routingReference &&\n routingReference.routingReference &&\n rRef.routingReference._id === routingReference.routingReference._id\n ) === -1\n ) {\n pricingSection.routingReferences.push(routingReference);\n\n // Remove the selected PDL from the routing references list\n const index = this.routingReferenceList.findIndex(\n rRef =>\n rRef.routingReference &&\n routingReference.routingReference &&\n rRef.routingReference._id === routingReference.routingReference._id\n );\n this.routingReferenceList.splice(index, 1);\n\n // Update the pathContractPricing property for the routing reference of the contract\n this.contractEditionService.setRoutingReferencePricing(routingReference, pricingSection);\n\n this.onRoutingReferencePricingsChange();\n }\n });\n\n // Remove everything in the selected array after adding the PDl in the pricing section\n this.selectedRoutingReferences = [];\n }\n\n /**\n * Remove the assignation of a PDL for a pricing section\n *\n * @param {RoutingRefContract} routingReference\n * @param {PricingSection} pricingSection\n */\n unSelectRoutingReference(routingReference: RoutingRefContract, pricingSection: PricingSection) {\n // Remove the PDL from the pricing section\n const index = pricingSection.routingReferences.indexOf(routingReference);\n\n if (index !== -1) {\n pricingSection.routingReferences.splice(index, 1);\n\n // Add the PDl in the routing references array\n this.routingReferenceList.unshift(routingReference);\n\n // Find the right routing reference in the contract and set its pricing at {}\n for (const contractRoutingReference of this.contract.routingReferences) {\n if (\n contractRoutingReference.routingReference.reference === routingReference.routingReference.reference\n ) {\n contractRoutingReference.pricing = null;\n this.onRoutingReferencePricingsChange();\n }\n }\n }\n }\n\n /**\n * Recursively flatten contract pricing to create pricing option.\n * Objective is to have all possible options.\n *\n * @param {ContractPricing} pricing - contract pricing at any depth\n */\n private flattenDeep(pricing: ContractPricing) {\n if (pricing.contractData && pricing.contractData.custom && pricing.contractData.custom.length) {\n this.items.push(pricing);\n }\n\n if (pricing.items && pricing.items.length) {\n pricing.items.forEach(item => {\n this.flattenDeep(item);\n });\n }\n }\n\n /**\n * Add each existing routing reference of the current contract to the right pricing section\n */\n private assignSelectedRoutingReferences() {\n for (const contractRoutingReference of this.contract.routingReferences) {\n const pathContractPricing: string[] = _.get(contractRoutingReference, 'pricing.pathContractPricing');\n if (pathContractPricing) {\n let isAssignedRrefPricing = false;\n\n for (const pricingOption of this.pricingOptions) {\n // For each added pricing sections, get the string ID path in the form of an array\n const pricingOptionPathIDs = pricingOption.id.split('-');\n\n // Compare each pricing section ID path with each routing reference pricing path\n if (_.isEqual(pricingOptionPathIDs, pathContractPricing)) {\n // If the ID paths matches, get the right section and push the routing reference in it\n const section = _.find(this.pricingList, list => {\n return list.label === pricingOption.label;\n });\n section.routingReferences.push(contractRoutingReference);\n\n isAssignedRrefPricing = true;\n }\n }\n\n const routingReferencesList = this.routingReferenceList;\n const index = _.findIndex(routingReferencesList, r => {\n return r.routingReference.reference === contractRoutingReference.routingReference.reference;\n });\n\n // When the rRef is not assigned to a contract pricing option, it must be in the rRef select list\n if (!isAssignedRrefPricing && index === -1) {\n routingReferencesList.unshift(contractRoutingReference);\n } else if (isAssignedRrefPricing && index !== -1) {\n // Then we remove these routing references from the list of all routing references\n routingReferencesList.splice(index, 1);\n }\n }\n }\n }\n\n /**\n * Get the value of each routing reference pricing\n *\n * @param {RoutingRefContract} routingReference\n * @param {ContractPricingItem} item\n *\n * @returns {string}\n */\n getRoutingReferencePricingValue(\n routingReference: RoutingRefContract,\n item: ContractPricingItem\n ): string {\n if (routingReference.pricing && routingReference.pricing.values) {\n const search = routingReference.pricing.values.find(rf => rf.id === item._id);\n\n if (search && typeof search.value !== 'undefined') {\n return search.value;\n }\n return null;\n } else {\n return null;\n }\n }\n\n /**\n * Set the changes for each pricing input value\n *\n * @param {RoutingRefContract} routingReference\n * @param {ContractPricingItem} item\n * @param {string} value\n */\n setRoutingReferencePricingValue(\n routingReference: RoutingRefContract,\n item: ContractPricingItem,\n value: string\n ) {\n // Check if the pricing item exist in the the routing reference pricing.values array\n const pricingValue = _.find(routingReference.pricing.values, v => {\n return v.id === item._id;\n });\n if (value === '') {\n value = null;\n }\n if (pricingValue) {\n // If the value exists, update it\n pricingValue.value = value;\n } else {\n // If the value doesn't exist, update it\n routingReference.pricing.values.push({ id: item._id, value });\n }\n\n this.onRoutingReferencePricingsChange();\n }\n\n onRoutingReferencePricingsChange() {\n this.contractEditionService.updateRoutingReferences(this.contract.routingReferences);\n }\n\n /**\n * Get contract pricing items for a given pricing option\n * @param {pricingOption} pricingOption\n * @returns {ContractPricingItem[]}\n */\n private getContractPricingItems(pricingOption: PricingOption): ContractPricingItem[] {\n const pricingItemIds: string[] = [];\n // Get path ids\n const pathIds = pricingOption.id.split('-');\n // Get root pricing\n const rootId = pathIds.shift();\n let item = this.pricings.find(x => x._id === rootId);\n // Get root custom pricing items\n const customItems: string[] = _.get(item, 'contractData.custom', []);\n pricingItemIds.push(...customItems);\n // Iterate over child paths to get each level's custom pricing items\n pathIds.forEach(pathId => {\n item = item.items.find(x => x._id === pathId);\n const childCustomItems: string[] = _.get(item, 'contractData.custom', []);\n pricingItemIds.push(...childCustomItems);\n });\n return pricingItemIds.map(x => this.pricingItems.find(y => y._id === x));\n }\n}\n","export default \".section .add-pricing {\\n background: #d8a63e;\\n width: auto;\\n border: inherit;\\n border-radius: 30px;\\n padding: 4px 15px;\\n display: inline-block;\\n margin-top: 15px;\\n -webkit-transition: all ease 300ms;\\n transition: all ease 300ms;\\n color: white;\\n font-size: 0.875rem;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n cursor: pointer;\\n}\\n.section .add-pricing:hover {\\n background: #d29c2a;\\n}\\n.section .add-pricing i {\\n font-size: 1.25rem;\\n color: white;\\n margin-right: 10px;\\n float: left;\\n}\\n.section .pricings-available {\\n margin-top: 10px;\\n margin-bottom: 30px;\\n width: 200%;\\n z-index: 1000;\\n position: absolute;\\n}\\n.section .pricings-available .arrow-up:before {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n left: 50px;\\n bottom: 100%;\\n border: 10px solid transparent;\\n border-bottom-color: #d8a63e;\\n}\\n.section .pricings-available .arrow-up:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n left: 51px;\\n top: -17px;\\n border: 9px solid transparent;\\n border-bottom-color: white;\\n}\\n.section .pricings-available .content {\\n background: white;\\n border: 1px solid #d8a63e;\\n overflow: auto;\\n padding: 20px;\\n}\\n.section .pricings-available .content .close {\\n float: right;\\n cursor: pointer;\\n color: #607188;\\n}\\n.section .pricings-available .content .pricings-section h4 {\\n color: #d8a63e;\\n width: 80px;\\n float: left;\\n clear: both;\\n}\\n.section .pricings-available .content .pricings-section ul.pricings {\\n padding: 0;\\n float: left;\\n}\\n.section .pricings-available .content .pricings-section ul.pricings > li {\\n list-style: none;\\n cursor: pointer;\\n font-weight: 300;\\n font-size: 0.875rem;\\n}\\n.section .pricings-available .content .pricings-section ul.pricings > li:hover {\\n color: #bd8c26;\\n}\\n.not-empty-select.mat-selected {\\n color: green !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdC1lZGl0aW9uL3ByaWNpbmdzLWNvbW1vbi9wcmljaW5ncy1jb21tb24uY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9jb250cmFjdHMvY29udHJhY3QtZWRpdGlvbi9wcmljaW5ncy1jb21tb24vcHJpY2luZ3MtY29tbW9uLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlJO0VBQ0ksbUJDR0c7RURGSCxXQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0NBQUE7RUFBQSwwQkFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFQUNBLHFDQUFBO0VBQ0EsZUFBQTtBRUhSO0FGS1E7RUFDSSxtQkFBQTtBRUhaO0FGTVE7RUFDSSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7QUVKWjtBRlFJO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7QUVOUjtBRlNZO0VBQ0ksV0FBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsOEJBQUE7RUFDQSw0QkNyQ0w7QUM4Qlg7QUZVWTtFQUNJLFdBQUE7RUFDQSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBQ0EsVUFBQTtFQUNBLDZCQUFBO0VBQ0EsMEJBQUE7QUVSaEI7QUZZUTtFQUNJLGlCQUFBO0VBQ0EseUJBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtBRVZaO0FGWVk7RUFDSSxZQUFBO0VBQ0EsZUFBQTtFQUNBLGNDMUNIO0FDZ0NiO0FGY2dCO0VBQ0ksY0NqRVQ7RURrRVMsV0FBQTtFQUNBLFdBQUE7RUFDQSxXQUFBO0FFWnBCO0FGY2dCO0VBQ0ksVUFBQTtFQUNBLFdBQUE7QUVacEI7QUZjb0I7RUFDSSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0FFWnhCO0FGY3dCO0VBQ0ksY0FBQTtBRVo1QjtBRnFCQTtFQUNJLHVCQUFBO0FFbEJKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29udHJhY3RzL2NvbnRyYWN0LWVkaXRpb24vcHJpY2luZ3MtY29tbW9uL3ByaWNpbmdzLWNvbW1vbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvY29sb3JzJztcbkBpbXBvcnQgJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvbWl4aW5zJztcblxuLnNlY3Rpb24ge1xuICAgIC5hZGQtcHJpY2luZyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb250cmF0cztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGJvcmRlcjogaW5oZXJpdDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDE1cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIGVhc2UgMzAwbXM7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCRjb250cmF0cywgNSUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcmljaW5ncy1hdmFpbGFibGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICAgICAgIC5hcnJvdy11cCB7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29udHJhdHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MXB4O1xuICAgICAgICAgICAgICAgIHRvcDogLTE3cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiA5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb250cmF0cztcbiAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcblxuICAgICAgICAgICAgLmNsb3NlIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnByaWNpbmdzLXNlY3Rpb24ge1xuICAgICAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb250cmF0cztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDgwcHg7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdWwucHJpY2luZ3Mge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcblxuICAgICAgICAgICAgICAgICAgICAmID4gbGkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZGFya2VuKCRjb250cmF0cywgMTAlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm5vdC1lbXB0eS1zZWxlY3QubWF0LXNlbGVjdGVkIHtcbiAgICBjb2xvcjogZ3JlZW4gIWltcG9ydGFudDtcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiLnNlY3Rpb24gLmFkZC1wcmljaW5nIHtcbiAgYmFja2dyb3VuZDogI2Q4YTYzZTtcbiAgd2lkdGg6IGF1dG87XG4gIGJvcmRlcjogaW5oZXJpdDtcbiAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgcGFkZGluZzogNHB4IDE1cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXRvcDogMTVweDtcbiAgdHJhbnNpdGlvbjogYWxsIGVhc2UgMzAwbXM7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uc2VjdGlvbiAuYWRkLXByaWNpbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZDI5YzJhO1xufVxuLnNlY3Rpb24gLmFkZC1wcmljaW5nIGkge1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGNvbG9yOiB3aGl0ZTtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBmbG9hdDogbGVmdDtcbn1cbi5zZWN0aW9uIC5wcmljaW5ncy1hdmFpbGFibGUge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICB3aWR0aDogMjAwJTtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLnNlY3Rpb24gLnByaWNpbmdzLWF2YWlsYWJsZSAuYXJyb3ctdXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTBweDtcbiAgYm90dG9tOiAxMDAlO1xuICBib3JkZXI6IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNkOGE2M2U7XG59XG4uc2VjdGlvbiAucHJpY2luZ3MtYXZhaWxhYmxlIC5hcnJvdy11cDphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUxcHg7XG4gIHRvcDogLTE3cHg7XG4gIGJvcmRlcjogOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiB3aGl0ZTtcbn1cbi5zZWN0aW9uIC5wcmljaW5ncy1hdmFpbGFibGUgLmNvbnRlbnQge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q4YTYzZTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHBhZGRpbmc6IDIwcHg7XG59XG4uc2VjdGlvbiAucHJpY2luZ3MtYXZhaWxhYmxlIC5jb250ZW50IC5jbG9zZSB7XG4gIGZsb2F0OiByaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzYwNzE4ODtcbn1cbi5zZWN0aW9uIC5wcmljaW5ncy1hdmFpbGFibGUgLmNvbnRlbnQgLnByaWNpbmdzLXNlY3Rpb24gaDQge1xuICBjb2xvcjogI2Q4YTYzZTtcbiAgd2lkdGg6IDgwcHg7XG4gIGZsb2F0OiBsZWZ0O1xuICBjbGVhcjogYm90aDtcbn1cbi5zZWN0aW9uIC5wcmljaW5ncy1hdmFpbGFibGUgLmNvbnRlbnQgLnByaWNpbmdzLXNlY3Rpb24gdWwucHJpY2luZ3Mge1xuICBwYWRkaW5nOiAwO1xuICBmbG9hdDogbGVmdDtcbn1cbi5zZWN0aW9uIC5wcmljaW5ncy1hdmFpbGFibGUgLmNvbnRlbnQgLnByaWNpbmdzLXNlY3Rpb24gdWwucHJpY2luZ3MgPiBsaSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cbi5zZWN0aW9uIC5wcmljaW5ncy1hdmFpbGFibGUgLmNvbnRlbnQgLnByaWNpbmdzLXNlY3Rpb24gdWwucHJpY2luZ3MgPiBsaTpob3ZlciB7XG4gIGNvbG9yOiAjYmQ4YzI2O1xufVxuXG4ubm90LWVtcHR5LXNlbGVjdC5tYXQtc2VsZWN0ZWQge1xuICBjb2xvcjogZ3JlZW4gIWltcG9ydGFudDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\n\n// interfaces\nimport { ContractPricing, ContractPricingItem } from 'app/shared/models/contract-pricing.interface';\nimport { ContractPopulated, PricingSelected, PricingSelectedValue } from 'app/shared/models/contract.interface';\nimport { PricingOption } from '../contract-edition.interface';\nimport { PricingSection } from './pricings-common.interface';\n\n// services\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { ContractEditionService } from '../contract-edition.service';\n\n@Component({\n selector: 'contract-edition-pricings-common',\n templateUrl: './pricings-common.component.html',\n styleUrls: ['./pricings-common.component.scss'],\n})\nexport class PricingsCommonComponent implements OnInit {\n /**\n * Pricing available options with values set and updated.\n * Used to set new pricings wihtout updating contract object\n */\n public pricingsAvailable: {\n default: string;\n options: PricingOption[];\n } = {\n default: '0',\n options: [],\n };\n\n public priceRates: {\n rate: number;\n items: Array<{\n label: string;\n rate: number;\n }>;\n } = {\n rate: 1,\n items: [],\n };\n\n public isUnselectedPricingsOpened: boolean;\n\n public selected = '';\n\n /**\n * Contract to edit common pricing from\n */\n public get contract(): ContractPopulated {\n return this.contractEditionService.contract;\n }\n\n /**\n * Available pricings description for the contract\n */\n public get pricings(): ContractPricing[] {\n return this.contractEditionService.pricings;\n }\n\n /**\n * Pricing items related to the pricings\n */\n public pricingItems: ContractPricingItem[] = [];\n\n /**\n * Property to store the available contract pricing items by section\n */\n public availablePricingsSections: PricingSection[] = [];\n\n constructor(private energyService: EnergyService, private contractEditionService: ContractEditionService) {}\n\n ngOnInit() {\n this.pricingItems = this.contractEditionService.pricingItems;\n // Find pricing items with base group only\n this.pricingItems = _.filter(this.pricingItems, { group: 'base' });\n this.pricingItems = _.sortBy(this.pricingItems, ['label']);\n\n this.initPricingsAvailable();\n this.initPriceRates();\n\n // If a pricing is already selected and saved, push it in an array of selected pricings\n if (this.selectedPricings.length !== 0) {\n // Update pricing options selected in service\n this.contractEditionService.updateSelectedPricingOptions(this.selectedPricings);\n }\n\n this.isUnselectedPricingsOpened = false;\n\n this.refreshAvailablePricingsSections();\n }\n\n /**\n * Get selected pricing options\n * @returns {PricingOption[]}\n */\n public get selectedPricings(): PricingOption[] {\n return this.pricingsAvailable.options.filter(x => x.selected);\n }\n\n /**\n * Get unselected pricing options\n * @returns {PricingOption[]}\n */\n public get unselectedPricings(): PricingOption[] {\n return this.pricingsAvailable.options.filter(x => !x.selected);\n }\n\n /**\n * Group available contract pricings by section\n */\n refreshAvailablePricingsSections() {\n this.availablePricingsSections = [];\n\n this.pricings.forEach((pricing: ContractPricing) => {\n const availablePricings = this.unselectedPricings.filter(p => p.path[0] === pricing._id);\n\n this.availablePricingsSections.push({\n pricingSectionName: pricing.value,\n pricings: availablePricings,\n });\n });\n }\n\n /**\n * Set pricing option as selected\n * @param {string} value - id of pricing option item\n */\n public setPricingSelected(section: PricingSection, pricing: PricingOption) {\n const toSelect = this.pricingsAvailable.options.find(x => x.id === pricing.id);\n const index = section.pricings.findIndex(s => s.label === pricing.label);\n\n if (toSelect) {\n toSelect.selected = true;\n\n // Update pricing options selected in service\n this.contractEditionService.updateSelectedPricingOptions(this.selectedPricings);\n\n this.onContractPricingsChange();\n\n this.isUnselectedPricingsOpened = false;\n\n section.pricings.splice(index, 1);\n }\n }\n\n /**\n * Unselect pricing\n * @param {PricingOption} pricing - pricing to set as unselected\n */\n public unselectPricing(pricing: PricingOption) {\n pricing.selected = false;\n\n // Remove the pricing in the right section of the available pricings list\n this.refreshAvailablePricingsSections();\n\n // Update pricing options selected in service\n this.contractEditionService.updateSelectedPricingOptions(this.selectedPricings);\n this.onContractPricingsChange();\n }\n\n /**\n * @param {PricingOption} pricing\n * @param {ContractPricingItem} item\n * @returns {boolean} true if pricing option is concerned by the pricing item.\n */\n public hasContractPricingItem(pricing: PricingOption, item: ContractPricingItem): boolean {\n return pricing.items.some(x => x.id === item._id);\n }\n\n /**\n * @param {ContractPricingItem} item\n * @returns {boolean} true if pricing item is in a selected pricing item.\n */\n public isPricingItemInSelected(item: ContractPricingItem): boolean {\n return this.selectedPricings.some(pricing => this.hasContractPricingItem(pricing, item));\n }\n\n /**\n * Get the value of a pricing item of a contract pricing.\n * @param {PricingOption} pricing\n * @param {ContractPricingItem} item\n * @returns {string|number}\n */\n public getContractPricingValue(pricing: PricingOption, item: ContractPricingItem): string | number {\n const search = pricing.items.find(x => x.id === item._id);\n if (search && typeof search.value !== 'undefined') {\n return search.value;\n }\n return null;\n }\n\n /**\n * Set the value of a pricing item of a contract pricing.\n * @param {PricingOption} pricing\n * @param {ContractPricingItem} item\n * @param {string} value\n */\n public setContractPricingValue(pricing: PricingOption, item: ContractPricingItem, value: string) {\n const search = pricing.items.find(x => x.id === item._id);\n if (search) {\n if (value === '') {\n value = null;\n }\n search.value = value;\n this.onContractPricingsChange();\n }\n }\n\n /**\n * Set rate unit.\n *\n * @param value - value comes from HTML select-option which is a string\n */\n public setRateUnit(value: any) {\n const rate = parseFloat(value.value);\n if (!Number.isNaN(rate)) {\n this.priceRates.rate = rate;\n this.contractEditionService.updateUnitRate(rate);\n this.onContractPricingsChange();\n }\n }\n\n /**\n * Init pricing options by flattening contract pricings\n */\n private initPricingsAvailable() {\n this.pricings.forEach(pricing => {\n const option: PricingOption = {\n label: '',\n path: [],\n items: [],\n id: '',\n selected: false,\n };\n this.flattenDeep(pricing, option);\n });\n this.fillPricingsAvailable();\n }\n\n /**\n * Recursively flatten contract pricing to create pricing option.\n * Objective is to have all possible options.\n * @param {ContractPricing} pricing - contract pricing at any depth\n * @param {PricingOption} option - pricing option item to increment and clone for child items.\n */\n private flattenDeep(pricing: ContractPricing, option: PricingOption) {\n option.label += ` ${pricing.value}`;\n option.path.push(pricing._id);\n if (pricing.contractData && pricing.contractData.common && pricing.contractData.common.length) {\n pricing.contractData.common.forEach(commonId => {\n const item = this.pricingItems.find(x => x._id === commonId);\n if (item) {\n option.items.push({\n id: item._id,\n value: null,\n });\n }\n });\n }\n if (pricing.items && pricing.items.length) {\n pricing.items.forEach(item => {\n this.flattenDeep(item, _.cloneDeep(option));\n });\n } else {\n option.id = option.path.join('-');\n this.pricingsAvailable.options.push(option);\n }\n }\n\n /**\n * Fill pricings available with currently loaded contract values.\n * For each available pricing, find if already defined in contract.\n * If so, set pricing as selected and fill values from contract if exists.\n */\n private fillPricingsAvailable() {\n const unitRate = _.get(this.contract, 'infos.unitRate');\n this.pricingsAvailable.options.forEach(option => {\n if (!Array.isArray(this.contract.pricings)) {\n this.contract.pricings = [];\n }\n const contractValues = this.contract.pricings.find(\n x => x.pathContractPricing.join('-') === option.path.join('-')\n );\n if (contractValues) {\n option.selected = true;\n option.items.forEach(item => {\n const contractValue = contractValues.values.find(x => x.id === item.id);\n if (contractValue) {\n if (unitRate) {\n // As we reverse conversion (displaying non-converted value), rate to apply is inverse of stored rate.\n item.value = this.contractEditionService.getPricingItemValue(contractValue, 1 / unitRate);\n } else {\n item.value = contractValue.value;\n }\n }\n });\n }\n });\n }\n\n /**\n * Init price rates for the fluid contract.\n * @todo When rate (or similar name) property is stored in contract, set it at init\n */\n private initPriceRates() {\n const unitRate = _.get(this.contract, 'infos.unitRate');\n if (unitRate) {\n this.priceRates.rate = unitRate;\n }\n this.priceRates.items = this.energyService.getFluidPricingRates(this.contract.energyType);\n }\n\n /**\n * Create most recent version of contract pricings selected and emit to parent component.\n * No save done in this component.\n */\n private onContractPricingsChange() {\n const pricings: PricingSelected[] = this.selectedPricings.map(pricing => {\n /** Get values converted with rate choosen to set base unit for fluids (eg. for elec convert all to c€/kWh) */\n const values: PricingSelectedValue[] = pricing.items.map(item => {\n return {\n id: item.id,\n value: this.contractEditionService.getPricingItemValue(item, this.priceRates.rate),\n };\n });\n const obj: PricingSelected = {\n pathContractPricing: pricing.path,\n values,\n };\n return obj;\n });\n this.contractEditionService.updateCommonPricing(pricings);\n }\n\n toggleUnselectedPricingsList() {\n this.isUnselectedPricingsOpened = !this.isUnselectedPricingsOpened;\n }\n\n /**\n * Close the available pricings list when click on button\n */\n closeUnselectedPricingsList() {\n this.isUnselectedPricingsOpened = false;\n }\n\n /**\n * Action to close the available pricings list if click outside the content\n *\n * @param {boolean} event\n */\n offClickAction(event: boolean) {\n if (this.isUnselectedPricingsOpened === true && event === true) {\n this.isUnselectedPricingsOpened = false;\n }\n }\n}\n","export default \".table {\\n background-color: white;\\n font-size: 12px;\\n color: #607188;\\n}\\n.table .table__row:hover {\\n background-color: whitesmoke;\\n}\\n.table .table__row .svg-icon {\\n height: 30px;\\n width: 30px;\\n}\\n.table td,\\n.table th {\\n vertical-align: middle;\\n line-height: 1rem;\\n text-align: center;\\n}\\n.table td .label,\\n.table th .label {\\n margin-right: 10px;\\n font-size: 12px;\\n padding: 7px 12px;\\n background-color: transparent;\\n color: lightgrey;\\n}\\n.table td i,\\n.table th i {\\n padding-left: 3px;\\n}\\n.table td i:hover,\\n.table th i:hover {\\n cursor: pointer;\\n color: #d8a63e;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbnRyYWN0cy9jb250cmFjdHMtdGFibGUvY29udHJhY3RzLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29udHJhY3RzL2NvbnRyYWN0cy10YWJsZS9jb250cmFjdHMtdGFibGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSx1QkFBQTtFQUNBLGVBQUE7RUFDQSxjQ3FCUztBQ3RCYjtBRklRO0VBQ0ksNEJBQUE7QUVGWjtBRktRO0VBQ0ksWUFBQTtFQUNBLFdBQUE7QUVIWjtBRk9JOztFQUVJLHNCQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtBRUxSO0FGT1E7O0VBQ0ksa0JBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSw2QkFBQTtFQUNBLGdCQUFBO0FFSlo7QUZPUTs7RUFDSSxpQkFBQTtBRUpaO0FGTVk7O0VBQ0ksZUFBQTtFQUNBLGNDN0JMO0FDMEJYIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29udHJhY3RzL2NvbnRyYWN0cy10YWJsZS9jb250cmFjdHMtdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLnRhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuXG4gICAgLnRhYmxlX19yb3cge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlc21va2U7XG4gICAgICAgIH1cblxuICAgICAgICAuc3ZnLWljb24ge1xuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ZCxcbiAgICB0aCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxcmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAxMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBjb2xvcjogbGlnaHRncmV5O1xuICAgICAgICB9XG5cbiAgICAgICAgaSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29udHJhdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiIsIi50YWJsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAjNjA3MTg4O1xufVxuLnRhYmxlIC50YWJsZV9fcm93OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTtcbn1cbi50YWJsZSAudGFibGVfX3JvdyAuc3ZnLWljb24ge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xufVxuLnRhYmxlIHRkLFxuLnRhYmxlIHRoIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbGluZS1oZWlnaHQ6IDFyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi50YWJsZSB0ZCAubGFiZWwsXG4udGFibGUgdGggLmxhYmVsIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIHBhZGRpbmc6IDdweCAxMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IGxpZ2h0Z3JleTtcbn1cbi50YWJsZSB0ZCBpLFxuLnRhYmxlIHRoIGkge1xuICBwYWRkaW5nLWxlZnQ6IDNweDtcbn1cbi50YWJsZSB0ZCBpOmhvdmVyLFxuLnRhYmxlIHRoIGk6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjZDhhNjNlO1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\n\nimport { ContractDisplay } from 'app/pages/contracts/contracts.interface';\nimport { ModalComponent } from 'app/shared/components/common/modal/modal.component';\nimport { PaginationBackService } from 'app/shared/components/pagination/back/pagination-back.service';\nimport { ContractLight } from 'app/shared/models/contract.interface';\nimport { FormatDatePipe } from 'app/shared/pipes/format-date.pipe';\n\n@Component({\n selector: 'ga-contracts-table',\n templateUrl: './contracts-table.component.html',\n styleUrls: ['./contracts-table.component.scss'],\n providers: [],\n})\nexport class ContractsTableComponent implements OnInit {\n @Input() contracts: ContractDisplay[] = [];\n\n /**\n * Event emitted when the table is sorted\n */\n @Output() sortChanged: EventEmitter = new EventEmitter();\n\n /**\n * Event emitted when the contract has been successfully edited\n */\n @Output() contractEdited: EventEmitter = new EventEmitter();\n\n /**\n * Creation/Edit modal\n */\n @ViewChild(ModalComponent, { static: true }) private modal: ModalComponent;\n\n /**\n * Contract being edited\n */\n contractEditing: ContractLight = null;\n\n /**\n * Set a dynamic header when sorting on the period column :\n * ASC : display contracts by ascending dateStart (infos.dateStart)\n * DESC : display contracts by descending dateEnd (infos.dateEnd)\n */\n public periodHeader = 'infos.dateStart';\n\n constructor(private paginationService: PaginationBackService, private datePipe: FormatDatePipe) {}\n\n ngOnInit(): void {}\n\n openModal(contract: ContractDisplay) {\n this.contractEditing = contract;\n this.modal.show();\n }\n\n get isModalShown() {\n return this.modal.isShown;\n }\n\n /**\n * Update the sort caret class according to the user action.\n * @param {string} header\n * @returns {string[]} css classes\n */\n getClass(header: string): string[] {\n return this.paginationService.getClassesSort(header);\n }\n\n /**\n * Handle sort click to update the contracts list accordingly.\n * @param {string} header column header selected for sort\n */\n onSort(header: string): void {\n this.paginationService.onSort(header);\n if (header === this.periodHeader) {\n // Handle click on the period column and set the header depending on the paginationService.sort.asc\n this.paginationService.sort.field = this.paginationService.sort.asc ? 'infos.dateStart' : 'infos.dateEnd';\n this.periodHeader = this.paginationService.sort.field;\n }\n this.sortChanged.emit();\n }\n\n /**\n * Get contract start date or return 'NC' if no date\n * @param {ContractDisplay} contract\n * @returns {string}\n */\n getContractStartDate(contract: ContractDisplay): string {\n return contract.infos.dateStart ? this.datePipe.transform(contract.infos.dateStart) : 'NC';\n }\n\n /**\n * Get contract end date or return 'NC' if no date\n * @param {ContractDisplay} contract\n * @returns {string}\n */\n getContractEndDate(contract: ContractDisplay): string {\n return contract.infos.dateEnd ? this.datePipe.transform(contract.infos.dateEnd) : 'NC';\n }\n\n public onContractSaved() {\n this.modal.close();\n this.contractEdited.emit();\n }\n\n public closeModal() {\n this.modal.close();\n }\n}\n","export default \".dt1-container {\\n position: relative;\\n width: 100%;\\n}\\n\\n.large-container {\\n height: 85px;\\n}\\n\\n.medium-container {\\n height: 78px;\\n}\\n\\n.small-container {\\n height: 68px;\\n}\\n\\n.dt1-icon-container {\\n position: absolute;\\n left: 0;\\n top: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n height: 100%;\\n width: 75px;\\n border-top-left-radius: 3px;\\n border-bottom-left-radius: 3px;\\n}\\n\\n.dt1-icon {\\n width: 38%;\\n}\\n\\n.dt1-text-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n height: 100%;\\n padding: 10px;\\n margin-left: 75px;\\n border-top-right-radius: 3px;\\n border-bottom-right-radius: 3px;\\n color: white;\\n}\\n\\n.dt1-label {\\n font-size: 14px;\\n margin-bottom: 10px;\\n line-height: 1.25;\\n color: white;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n\\n.dt1-price-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n flex-wrap: wrap;\\n}\\n\\n.dt1-price-container span {\\n font-size: 12px;\\n}\\n\\n.dt1-price-container .dt1-info {\\n margin-left: 4px;\\n}\\n\\n.dt1-price {\\n color: white;\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.25;\\n margin-right: 6px;\\n margin-bottom: 0;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGlsZXMvdGlsZS0xL2RhdGEtdGlsZS0xLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9kYXRhLXRpbGVzL3RpbGUtMS9kYXRhLXRpbGUtMS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtBQ0ZKOztBREtBO0VBQ0ksWUFBQTtBQ0ZKOztBREtBO0VBQ0ksWUFBQTtBQ0ZKOztBREtBO0VBQ0ksWUFBQTtBQ0ZKOztBREtBO0VBQ0ksa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBM0JpQjtFQTRCakIsMkJBN0JXO0VBOEJYLDhCQTlCVztBQzRCZjs7QURLQTtFQUNJLFVBQUE7QUNGSjs7QURLQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGlCQTFDaUI7RUEyQ2pCLDRCQTVDVztFQTZDWCwrQkE3Q1c7RUE4Q1gsWUFBQTtBQ0ZKOztBREtBO0VBQ0ksZUFBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBO0VBQ0EsZ0RBQUE7QUNGSjs7QURLQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxxQkFBQTtVQUFBLHlCQUFBO0VBQ0EsZUFBQTtBQ0ZKOztBREdJO0VBQ0ksZUFBQTtBQ0RSOztBRElJO0VBQ0ksZ0JBQUE7QUNGUjs7QURNQTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnREFBQTtBQ0hKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZGF0YS10aWxlcy90aWxlLTEvZGF0YS10aWxlLTEuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIkYm9yZGVyUmFkaXVzOiAzcHg7XG4kaWNvbkNvbnRhaW5lcldpZHRoOiA3NXB4O1xuXG4uZHQxLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubGFyZ2UtY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IDg1cHg7XG59XG5cbi5tZWRpdW0tY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IDc4cHg7XG59XG5cbi5zbWFsbC1jb250YWluZXIge1xuICAgIGhlaWdodDogNjhweDtcbn1cblxuLmR0MS1pY29uLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6ICRpY29uQ29udGFpbmVyV2lkdGg7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJGJvcmRlclJhZGl1cztcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9yZGVyUmFkaXVzO1xufVxuXG4uZHQxLWljb24ge1xuICAgIHdpZHRoOiAzOCU7XG59XG5cbi5kdDEtdGV4dC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWFyZ2luLWxlZnQ6ICRpY29uQ29udGFpbmVyV2lkdGg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4uZHQxLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xufVxuXG4uZHQxLXByaWNlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIHNwYW4ge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuXG4gICAgLmR0MS1pbmZvIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICB9XG59XG5cbi5kdDEtcHJpY2Uge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG4iLCIuZHQxLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5sYXJnZS1jb250YWluZXIge1xuICBoZWlnaHQ6IDg1cHg7XG59XG5cbi5tZWRpdW0tY29udGFpbmVyIHtcbiAgaGVpZ2h0OiA3OHB4O1xufVxuXG4uc21hbGwtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiA2OHB4O1xufVxuXG4uZHQxLWljb24tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiA3NXB4O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDtcbn1cblxuLmR0MS1pY29uIHtcbiAgd2lkdGg6IDM4JTtcbn1cblxuLmR0MS10ZXh0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nOiAxMHB4O1xuICBtYXJnaW4tbGVmdDogNzVweDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uZHQxLWxhYmVsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbn1cblxuLmR0MS1wcmljZS1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uZHQxLXByaWNlLWNvbnRhaW5lciBzcGFuIHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmR0MS1wcmljZS1jb250YWluZXIgLmR0MS1pbmZvIHtcbiAgbWFyZ2luLWxlZnQ6IDRweDtcbn1cblxuLmR0MS1wcmljZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gIG1hcmdpbi1yaWdodDogNnB4O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { TileSize, TilesService } from 'app/shared/services/tiles/tiles.service';\n\n@Component({\n selector: 'data-tile-1',\n templateUrl: './data-tile-1.component.html',\n styleUrls: ['./data-tile-1.component.scss'],\n providers: [],\n})\nexport class DataTile1Component implements OnInit {\n @Input() label: string;\n @Input() unit: string;\n @Input() value: number;\n @Input() value2: number;\n @Input() valueHTML: string;\n @Input() type: number;\n @Input() mainColor: string;\n @Input() secondaryColor: string;\n @Input() info: string;\n\n /**\n * Define a size for the tile in order to define a height\n */\n @Input() size: TileSize = 'large';\n\n constructor(private tilesService: TilesService) {}\n ngOnInit() {}\n\n /**\n * Get formated value to display in tile\n * @param {number} value\n * @returns {string}\n */\n getFormatedValue(value: number): string {\n return this.tilesService.getNumberToDisplay(value, this.unit);\n }\n}\n","export default \".dt2-container {\\n width: 100%;\\n}\\n\\n.dt2-title-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 8px;\\n border-top-left-radius: 3px;\\n border-top-right-radius: 3px;\\n}\\n\\n.dt2-value-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n padding: 15px 8px 15px 8px;\\n border-bottom-left-radius: 3px;\\n border-bottom-right-radius: 3px;\\n}\\n\\n.dt2-icon {\\n height: 15px;\\n width: 15px;\\n background-color: white;\\n margin-right: 8px;\\n}\\n\\n.dt2-label {\\n font-size: 15px;\\n font-weight: bold;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n\\n.dt2-sublabel {\\n font-size: 14px;\\n}\\n\\n.dt2-price {\\n font-size: 15px;\\n font-weight: bold;\\n margin-right: 10px;\\n}\\n\\n.dt2-unit,\\n.dt2-label,\\n.dt2-sublabel,\\n.dt2-price {\\n color: white;\\n line-height: 1.2;\\n margin-bottom: 0;\\n}\\n\\n.dt2-with-sublabel .dt2-icon {\\n height: 20px;\\n}\\n\\n.no-bold {\\n font-weight: normal;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGlsZXMvdGlsZS0yL2RhdGEtdGlsZS0yLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9kYXRhLXRpbGVzL3RpbGUtMi9kYXRhLXRpbGUtMi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTtFQUNJLFdBQUE7QUNISjs7QURNQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxZQUFBO0VBQ0EsMkJBWFc7RUFZWCw0QkFaVztBQ1NmOztBRE1BO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHFCQUFBO1VBQUEseUJBQUE7RUFDQSwwQkFBQTtFQUNBLDhCQXBCVztFQXFCWCwrQkFyQlc7QUNrQmY7O0FETUE7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7QUNISjs7QURNQTtFQUNJLGVBL0JRO0VBZ0NSLGlCQUFBO0VBQ0EsZ0RBQUE7QUNISjs7QURNQTtFQUNJLGVBQUE7QUNISjs7QURNQTtFQUNJLGVBekNRO0VBMENSLGlCQUFBO0VBQ0Esa0JBQUE7QUNISjs7QURNQTs7OztFQUlJLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0FDSEo7O0FET0k7RUFDSSxZQUFBO0FDSlI7O0FEUUE7RUFDSSxtQkFBQTtBQ0xKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZGF0YS10aWxlcy90aWxlLTIvZGF0YS10aWxlLTIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG4kYm9yZGVyUmFkaXVzOiAzcHg7XG4kZm9udC1zaXplOiAxNXB4O1xuXG4uZHQyLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5kdDItdGl0bGUtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG59XG5cbi5kdDItdmFsdWUtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwYWRkaW5nOiAxNXB4IDhweCAxNXB4IDhweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9yZGVyUmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9yZGVyUmFkaXVzO1xufVxuXG4uZHQyLWljb24ge1xuICAgIGhlaWdodDogMTVweDtcbiAgICB3aWR0aDogMTVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cblxuLmR0Mi1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbn1cblxuLmR0Mi1zdWJsYWJlbCB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uZHQyLXByaWNlIHtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4uZHQyLXVuaXQsXG4uZHQyLWxhYmVsLFxuLmR0Mi1zdWJsYWJlbCxcbi5kdDItcHJpY2Uge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5kdDItd2l0aC1zdWJsYWJlbCB7XG4gICAgLmR0Mi1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cbn1cblxuLm5vLWJvbGQge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG4iLCIuZHQyLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZHQyLXRpdGxlLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDhweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4O1xufVxuXG4uZHQyLXZhbHVlLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDE1cHggOHB4IDE1cHggOHB4O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7XG59XG5cbi5kdDItaWNvbiB7XG4gIGhlaWdodDogMTVweDtcbiAgd2lkdGg6IDE1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cblxuLmR0Mi1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xufVxuXG4uZHQyLXN1YmxhYmVsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uZHQyLXByaWNlIHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4uZHQyLXVuaXQsXG4uZHQyLWxhYmVsLFxuLmR0Mi1zdWJsYWJlbCxcbi5kdDItcHJpY2Uge1xuICBjb2xvcjogd2hpdGU7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5kdDItd2l0aC1zdWJsYWJlbCAuZHQyLWljb24ge1xuICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5uby1ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { TilesService } from 'app/shared/services/tiles/tiles.service';\n\n@Component({\n selector: 'data-tile-2',\n templateUrl: './data-tile-2.component.html',\n styleUrls: ['./data-tile-2.component.scss'],\n providers: [],\n})\nexport class DataTile2Component implements OnInit {\n @Input() label: string;\n @Input() subLabel: string;\n @Input() unit: string;\n @Input() value: number;\n @Input() valueHTML: string;\n @Input() mainColor: string;\n @Input() secondaryColor: string;\n @Input() type: string;\n\n constructor(private tilesService: TilesService) {}\n ngOnInit() {}\n\n getClass(): string {\n return this.subLabel ? 'dt2-with-sublabel' : '';\n }\n\n /**\n * Return the formated value to display\n * @param {number} value - value to format\n * @returns {string} formated value\n */\n getFormatedValue(value: number): string {\n return this.tilesService.getNumberToDisplay(value, this.unit);\n }\n}\n","export default \".dt3-container {\\n position: relative;\\n width: 100%;\\n}\\n.dt3-container.dt3-modifier-full {\\n height: 100px;\\n}\\n.dt3-modifier-square .dt3-ratio {\\n padding-bottom: 100%;\\n}\\n.dt3-real-container {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n padding: 12px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n justify-content: space-around;\\n}\\n.dt3-icon {\\n height: 25px;\\n margin-bottom: 5px;\\n}\\n.dt3-label {\\n font-size: 13px;\\n margin-bottom: 0;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n.dt3-price {\\n font-size: 18px;\\n font-weight: bold;\\n margin-bottom: 0;\\n}\\n.dt3-label,\\n.dt3-price {\\n line-height: 1.25;\\n color: white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGlsZXMvdGlsZS0zL2RhdGEtdGlsZS0zLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9kYXRhLXRpbGVzL3RpbGUtMy9kYXRhLXRpbGUtMy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtBQ0NKO0FEQ0k7RUFDSSxhQUFBO0FDQ1I7QURJSTtFQUNJLG9CQUFBO0FDRFI7QURLQTtFQUNJLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsNkJBQUE7QUNGSjtBREtBO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0FDRko7QURLQTtFQUNJLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGdEQUFBO0FDRko7QURLQTtFQUNJLGVBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0FDRko7QURLQTs7RUFFSSxpQkFBQTtFQUNBLFlBQUE7QUNGSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGlsZXMvdGlsZS0zL2RhdGEtdGlsZS0zLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmR0My1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgICYuZHQzLW1vZGlmaWVyLWZ1bGwge1xuICAgICAgICBoZWlnaHQ6IDEwMHB4O1xuICAgIH1cbn1cblxuLmR0My1tb2RpZmllci1zcXVhcmUge1xuICAgIC5kdDMtcmF0aW8ge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgICB9XG59XG5cbi5kdDMtcmVhbC1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgcGFkZGluZzogMTJweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuLmR0My1pY29uIHtcbiAgICBoZWlnaHQ6IDI1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZHQzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG5cbi5kdDMtcHJpY2Uge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uZHQzLWxhYmVsLFxuLmR0My1wcmljZSB7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuIiwiLmR0My1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmR0My1jb250YWluZXIuZHQzLW1vZGlmaWVyLWZ1bGwge1xuICBoZWlnaHQ6IDEwMHB4O1xufVxuXG4uZHQzLW1vZGlmaWVyLXNxdWFyZSAuZHQzLXJhdGlvIHtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG59XG5cbi5kdDMtcmVhbC1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbi5kdDMtaWNvbiB7XG4gIGhlaWdodDogMjVweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZHQzLWxhYmVsIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbn1cblxuLmR0My1wcmljZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5kdDMtbGFiZWwsXG4uZHQzLXByaWNlIHtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gIGNvbG9yOiB3aGl0ZTtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'data-tile-3',\n templateUrl: './data-tile-3.component.html',\n styleUrls: ['./data-tile-3.component.scss'],\n})\nexport class DataTile3Component implements OnInit {\n private MODIFIERS = {\n SQUARE: 'square',\n FULL: 'full',\n };\n\n @Input() label: string;\n @Input() value: number;\n @Input() color: string;\n @Input() modifier: string;\n @Input() unit: string;\n @Input() type: string;\n @Input() digits = 0;\n\n constructor() {}\n ngOnInit() {\n this.setModifier();\n }\n\n setModifier() {\n this.modifier = this.modifier || this.MODIFIERS.SQUARE;\n }\n\n getModifierClass(): string {\n return `dt3-modifier-${this.modifier}`;\n }\n}\n","export default \".dt4-container {\\n position: relative;\\n width: 100%;\\n height: 110px;\\n border-radius: 6px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: center;\\n justify-content: center;\\n padding: 15px 35px;\\n}\\n\\n.dt4-icon {\\n position: absolute;\\n top: 10px;\\n right: 12px;\\n}\\n\\n.dt4-icon.electricity {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_fluid_elec.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_fluid_elec.svg\\\");\\n}\\n\\n.dt4-icon.water {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_fluid_water.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_fluid_water.svg\\\");\\n}\\n\\n.dt4-icon.gaz {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_fluid_gas.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_fluid_gas.svg\\\");\\n}\\n\\n.dt4-icon.cost {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_wallet.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_wallet.svg\\\");\\n}\\n\\n.dt4-text {\\n font-size: 16px;\\n margin-bottom: 5px;\\n}\\n\\n.dt4-label {\\n font-size: 14px;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n}\\n\\n.dt4-label,\\n.dt4-text {\\n line-height: 1.25;\\n color: white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGlsZXMvdGlsZS00L2RhdGEtdGlsZS00LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9kYXRhLXRpbGVzL3RpbGUtNC9kYXRhLXRpbGUtNC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtFQUNBLGtCQUFBO0FDREo7O0FESUE7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0FDREo7O0FER0k7RUVsQkEsWUZtQnFCO0VFbEJyQixXRmtCMkI7RUVqQjNCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHVCRlk2QjtFRVI3QixzRUFBQTtVQUFBLDhEQUFBO0FEYVI7O0FESEk7RUVyQkEsWUZzQnFCO0VFckJyQixXRnFCMkI7RUVwQjNCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHVCRmU2QjtFRVg3Qix1RUFBQTtVQUFBLCtEQUFBO0FEc0JSOztBRFRJO0VFeEJBLFlGeUJxQjtFRXhCckIsV0Z3QjJCO0VFdkIzQiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx1QkZrQjZCO0VFZDdCLHFFQUFBO1VBQUEsNkRBQUE7QUQrQlI7O0FEZkk7RUUzQkEsWUY0QnFCO0VFM0JyQixXRjJCMkI7RUUxQjNCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHVCRnFCNkI7RUVqQjdCLGtFQUFBO1VBQUEsMERBQUE7QUR3Q1I7O0FEbkJBO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0FDc0JKOztBRG5CQTtFQUNJLGVBQUE7RUFDQSxnREFBQTtBQ3NCSjs7QURuQkE7O0VBRUksaUJBQUE7RUFDQSxZQUFBO0FDc0JKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZGF0YS10aWxlcy90aWxlLTQvZGF0YS10aWxlLTQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbi5kdDQtY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTVweCAzNXB4O1xufVxuXG4uZHQ0LWljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEycHg7XG5cbiAgICAmLmVsZWN0cmljaXR5IHtcbiAgICAgICAgQGluY2x1ZGUgc3ZnSWNvbigyMHB4LCAyMHB4LCB3aGl0ZSwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fZmx1aWRfZWxlYy5zdmcnKTtcbiAgICB9XG4gICAgJi53YXRlciB7XG4gICAgICAgIEBpbmNsdWRlIHN2Z0ljb24oMjBweCwgMjBweCwgd2hpdGUsICcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2ZsdWlkX3dhdGVyLnN2ZycpO1xuICAgIH1cbiAgICAmLmdheiB7XG4gICAgICAgIEBpbmNsdWRlIHN2Z0ljb24oMjBweCwgMjBweCwgd2hpdGUsICcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2ZsdWlkX2dhcy5zdmcnKTtcbiAgICB9XG4gICAgJi5jb3N0IHtcbiAgICAgICAgQGluY2x1ZGUgc3ZnSWNvbigyMHB4LCAyMHB4LCB3aGl0ZSwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fd2FsbGV0LnN2ZycpO1xuICAgIH1cbn1cblxuLmR0NC10ZXh0IHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZHQ0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xufVxuXG4uZHQ0LWxhYmVsLFxuLmR0NC10ZXh0IHtcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG4iLCIuZHQ0LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDE1cHggMzVweDtcbn1cblxuLmR0NC1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwcHg7XG4gIHJpZ2h0OiAxMnB4O1xufVxuLmR0NC1pY29uLmVsZWN0cmljaXR5IHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2ZsdWlkX2VsZWMuc3ZnXCIpO1xufVxuLmR0NC1pY29uLndhdGVyIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2ZsdWlkX3dhdGVyLnN2Z1wiKTtcbn1cbi5kdDQtaWNvbi5nYXoge1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fZmx1aWRfZ2FzLnN2Z1wiKTtcbn1cbi5kdDQtaWNvbi5jb3N0IHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3dhbGxldC5zdmdcIik7XG59XG5cbi5kdDQtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZHQ0LWxhYmVsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCIsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbn1cblxuLmR0NC1sYWJlbCxcbi5kdDQtdGV4dCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBjb2xvcjogd2hpdGU7XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { TilesService } from '../../../services/tiles/tiles.service';\n\n@Component({\n selector: 'data-tile-4',\n templateUrl: './data-tile-4.component.html',\n styleUrls: ['./data-tile-4.component.scss'],\n})\nexport class DataTile4Component implements OnInit {\n @Input() color: string;\n @Input() type: string;\n @Input() label: string;\n @Input() value: number;\n @Input() valueHTML: string;\n @Input() unit: string;\n\n constructor(private tilesService: TilesService) {}\n\n ngOnInit() {}\n\n getFormatedValue(value) {\n return this.tilesService.getNumberToDisplay(value, this.unit);\n }\n}\n","export default \".dt5-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n height: 52px;\\n border: 1px solid #e3e3e3;\\n border-radius: 3px;\\n min-width: 200px;\\n margin-top: 5px;\\n margin-bottom: 5px;\\n padding: 10px;\\n color: #444251;\\n}\\n\\n.dt5-label {\\n font-size: 15px;\\n font-weight: bold;\\n line-height: 1.1;\\n}\\n\\n.dt5-subValue {\\n font-size: 12px;\\n}\\n\\n.tile-selected {\\n color: white !important;\\n}\\n\\n.icon-selected {\\n background-color: white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGlsZXMvdGlsZS01L2RhdGEtdGlsZS01LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9kYXRhLXRpbGVzL3RpbGUtNS9kYXRhLXRpbGUtNS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0VBQ0EsWUFQWTtFQVFaLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0FDTEo7O0FEUUE7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtBQ0xKOztBRFFBO0VBQ0ksZUFBQTtBQ0xKOztBRFFBO0VBQ0ksdUJBQUE7QUNMSjs7QURRQTtFQUNJLHVCQUFBO0FDTEoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9kYXRhLXRpbGVzL3RpbGUtNS9kYXRhLXRpbGUtNS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vLi4vLi4vc2hhcmVkL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbiRnZW5lcmFsSGVpZ2h0OiA1MnB4O1xuJGljb25XaWR0aDogNDhweDtcblxuLmR0NS1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBoZWlnaHQ6ICRnZW5lcmFsSGVpZ2h0O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjcsIDIyNywgMjI3KTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgY29sb3I6ICM0NDQyNTE7XG59XG5cbi5kdDUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsaW5lLWhlaWdodDogMS4xO1xufVxuXG4uZHQ1LXN1YlZhbHVlIHtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi50aWxlLXNlbGVjdGVkIHtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmljb24tc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuIiwiLmR0NS1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgaGVpZ2h0OiA1MnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTNlM2UzO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBwYWRkaW5nOiAxMHB4O1xuICBjb2xvcjogIzQ0NDI1MTtcbn1cblxuLmR0NS1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi5kdDUtc3ViVmFsdWUge1xuICBmb250LXNpemU6IDEycHg7XG59XG5cbi50aWxlLXNlbGVjdGVkIHtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5pY29uLXNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'data-tile-5',\n templateUrl: './data-tile-5.component.html',\n styleUrls: ['./data-tile-5.component.scss'],\n})\nexport class DataTile5Component implements OnInit {\n @Input() label: string;\n @Input() unit: string;\n @Input() value: number;\n\n /**\n * subUnit is a label for subValue property.\n */\n @Input() subUnit?: string;\n\n /**\n * subValue is a property for secondary stats, next to the initial value-unit pair. It appear as less important stat number on the front.\n */\n @Input() subValue?: number;\n @Input() color: string;\n @Input() type: string;\n @Input() digits = 0;\n\n /**\n * selected indicates if the given Tile has been selected as a filter\n */\n @Input() selected = false;\n\n constructor() {}\n ngOnInit() {}\n\n showSubValue(): boolean {\n return typeof this.subValue === 'number';\n }\n\n /**\n * Returns dynamically assign Tile classes and/or selected Tile classes depending on input type\n * @param {string} type Type of element to get classes for\n * @returns {string[]} array of css classes\n */\n public getTileClasses(type: string): string[] {\n const classes: string[] = [];\n\n if (type === 'icon') {\n classes.push('svg-icon');\n classes.push(this.type + '-icon');\n\n if (this.selected) {\n classes.push('icon-selected');\n }\n } else if (type === 'container' && this.selected) {\n classes.push(this.type + '-background-80p');\n classes.push('tile-selected');\n }\n\n return classes;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2V4cG9ydC1idXR0b24vZXhwb3J0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { saveAs } from 'file-saver';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-export-button',\n templateUrl: './export-button.component.html',\n styleUrls: ['./export-button.component.scss'],\n})\nexport class ExportButtonComponent implements OnInit {\n /**\n * Is currently exporting\n */\n public isExporting = false;\n /**\n * If null a default one is used\n */\n @Input() fileName?: string;\n @Input() url: string;\n @Input() queryString: string;\n\n /**\n * used to display the right icon when exporting excel file or not\n * @returns {string} - classname\n */\n get exportClass(): string {\n return this.isExporting ? 'citron-icon rotating' : 'excel-icon';\n }\n\n constructor(private sessionService: SessionService, private exportService: ExportService) {}\n\n ngOnInit() {}\n\n public async exportToExcel(): Promise {\n this.isExporting = true;\n this.exportService.getFile(`${this.url}${this.queryString}`).subscribe(\n file => {\n saveAs(file, this.fileName || this.getDefaultName());\n this.isExporting = false;\n },\n err => {\n this.isExporting = false;\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite lors de l'export de données. Merci de réessayer.\",\n 'error'\n );\n }\n );\n }\n\n private getDefaultName(): string {\n const currentCompany = this.sessionService.getCompany();\n const extractStart =\n this.queryString.match(/[?|&]start=([^&]*)/) || this.queryString.match(/[?|&]dateStart=([^&]*)/);\n const extractEnd = this.queryString.match(/[?|&]end=([^&]*)/) || this.queryString.match(/[?|&]dateEnd=([^&]*)/);\n const dateStart = moment(extractStart ? extractStart[1] : new Date())\n .format('MMMM YYYY')\n .toString();\n const dateEnd = moment(extractEnd ? extractEnd[1] : new Date())\n .format('MMMM YYYY')\n .toString();\n return `${currentCompany.name} - ${dateStart} à ${dateEnd}.xlsx`;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvYXV0b2NvbXBsZXRlLWZpbHRlci9hdXRvY29tcGxldGUtZmlsdGVyLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-autocomplete-filter',\n templateUrl: './autocomplete-filter.component.html',\n styleUrls: ['./autocomplete-filter.component.scss'],\n})\nexport class AutocompleteFilterComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","export default \".form-control:focus, .form-control:active {\\n border: 1px solid #d8a63e;\\n}\\n\\n.filter-title,\\n.filter-label,\\n.advanced-search__title {\\n font-size: 0.875rem;\\n}\\n\\n.filter-title .filter-title__icon,\\n.filter-label .filter-title__icon {\\n margin-right: 0.5rem;\\n}\\n\\n.fluids-filter .filter-title,\\n.period-filter .filter-title,\\n.providers-filter .filter-title,\\n.contract-state-filter .filter-title,\\n.control-state-filter .filter-title,\\n.control-error-filter .filter-title,\\n.include-branches-filter .filter-title,\\n.only-error-filter .filter-title {\\n margin-bottom: 0.8rem;\\n}\\n\\n.checkbox-filter .filter-label {\\n margin-top: 5px;\\n}\\n\\n.error-message {\\n font-size: 0.75rem;\\n line-height: 1.4;\\n margin-top: 6px;\\n}\\n\\ninput {\\n font-size: 0.75rem;\\n padding: 0.5rem 0.75rem;\\n border-radius: 5px;\\n border: 1px solid rgba(0, 0, 0, 0.15);\\n width: 100%;\\n color: #607188;\\n}\\n\\n.error {\\n color: #db4b47;\\n}\\n\\n.flex-v-center {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.tag {\\n margin-bottom: 0 !important;\\n}\\n\\n.advanced-search__container {\\n margin-bottom: 15px;\\n}\\n\\n.advanced-search__container .advanced-search__title {\\n text-align: left;\\n cursor: pointer;\\n}\\n\\n.advanced-search__container .advanced-search__title .advanced-search__icon {\\n margin-left: 5px;\\n}\\n\\n.title .icon {\\n display: inline-block;\\n background-color: #607188;\\n mask-repeat: no-repeat;\\n -webkit-mask-repeat: no-repeat;\\n mask-size: 100%;\\n -webkit-mask-size: 100%;\\n}\\n\\n.title .icon.fluid-icon {\\n mask-image: url(\\\"/assets/img/pictos-svg/drop.svg\\\");\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/drop.svg\\\");\\n width: 15px;\\n height: 15px;\\n margin-top: 4px;\\n}\\n\\n.search h4 {\\n width: 140px;\\n line-height: 2.5;\\n}\\n\\n.fluids-filter .fluid-container {\\n padding-left: 5px;\\n padding-right: 5px;\\n}\\n\\n.fluids-filter .fluid {\\n background: #eee;\\n cursor: pointer;\\n margin-bottom: 10px;\\n}\\n\\n.fluids-filter .fluid .fluid-type {\\n text-align: center;\\n display: inherit;\\n color: #607188;\\n padding: 10px 0;\\n font-size: 0.75rem;\\n}\\n\\n.fluids-filter .fluid.selected {\\n background: #d5d5d5;\\n}\\n\\n.fluids-filter .fluid.selected .water {\\n background-color: #4281b8;\\n}\\n\\n.fluids-filter .fluid.selected .vehicles {\\n background-color: #df7c3a;\\n -webkit-mask-image: url(\\\"/assets/img/carto/car.png\\\");\\n mask-image: url(\\\"/assets/img/carto/car.png\\\");\\n}\\n\\n.fluids-filter .fluid.selected .gas,\\n.fluids-filter .fluid.selected .gaz {\\n background-color: #5ac6bc;\\n}\\n\\n.fluids-filter .fluid.selected .fuel {\\n background-color: #df7c3a;\\n}\\n\\n.fluids-filter .fluid.selected .elec {\\n background-color: #f2bf04;\\n}\\n\\n.fluids-filter .fluid.selected .heating {\\n background-color: #ab2f52;\\n}\\n\\n.fluids-filter .fluid.selected .cooling {\\n background-color: #28bae1;\\n}\\n\\n.fluids-filter .fluid.selected .fluid-type {\\n color: white;\\n}\\n\\n.period-filter span {\\n width: 21px;\\n text-align: center;\\n font-size: 0.75rem;\\n}\\n\\n.filter-title {\\n margin: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvYmlsbHMtY29udHJhY3RzLWZpbHRlci9iaWxscy1jb250cmFjdHMtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL2JpbGxzLWNvbnRyYWN0cy1maWx0ZXIvYmlsbHMtY29udHJhY3RzLWZpbHRlci5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9JO0VBRUkseUJBQUE7QUNQUjs7QURXQTs7O0VBR0ksbUJBYmM7QUNLbEI7O0FEYUk7O0VBQ0ksb0JBQUE7QUNUUjs7QURxQkk7Ozs7Ozs7O0VBQ0kscUJBQUE7QUNYUjs7QURnQkk7RUFDSSxlQUFBO0FDYlI7O0FEaUJBO0VBQ0ksa0JBMUNhO0VBMkNiLGdCQUFBO0VBQ0EsZUFBQTtBQ2RKOztBRGlCQTtFQUNJLGtCQWhEYTtFQWlEYix1QkFBQTtFQUNBLGtCQUFBO0VBQ0EscUNBQUE7RUFDQSxXQUFBO0VBQ0EsY0UvQlM7QURpQmI7O0FEaUJBO0VBQ0ksY0V2Q0k7QUR5QlI7O0FEaUJBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtBQ2RKOztBRGlCQTtFQUNJLDJCQUFBO0FDZEo7O0FEaUJBO0VBQ0ksbUJBQUE7QUNkSjs7QURnQkk7RUFDSSxnQkFBQTtFQUNBLGVBQUE7QUNkUjs7QURnQlE7RUFDSSxnQkFBQTtBQ2RaOztBRG9CSTtFQUNJLHFCQUFBO0VBQ0EseUJFL0RLO0VDV1Qsc0JIcURJO0VHcERKLDhCSG9ESTtFRy9ESixlSGdFdUI7RUcvRHZCLHVCSCtEdUI7QUNmM0I7O0FEaUJRO0VHN0RKLGtESDhEUTtFRzdEUiwwREg2RFE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7QUNkWjs7QURvQkk7RUFDSSxZQUFBO0VBQ0EsZ0JBQUE7QUNqQlI7O0FEc0JJO0VBQ0ksaUJBQUE7RUFDQSxrQkFBQTtBQ25CUjs7QURzQkk7RUFDSSxnQkU5RU07RUYrRU4sZUFBQTtFQUNBLG1CQUFBO0FDcEJSOztBRHNCUTtFQUNJLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjRWpHQztFRmtHRCxlQUFBO0VBQ0Esa0JBekhLO0FDcUdqQjs7QUR1QlE7RUFDSSxtQkFBQTtBQ3JCWjs7QUR1Qlk7RUFDSSx5QkVwSFY7QUQrRk47O0FEd0JZO0VBQ0kseUJFdkhUO0VGd0hTLG9EQUFBO1VBQUEsNENBQUE7QUN0QmhCOztBRHlCWTs7RUFFSSx5QkVoSVY7QUR5R047O0FEMEJZO0VBQ0kseUJFaklUO0FEeUdQOztBRDJCWTtFQUNJLHlCRXZJRjtBRDhHZDs7QUQ0Qlk7RUFDSSx5QkV4SU47QUQ4R1Y7O0FENkJZO0VBQ0kseUJFM0lOO0FEZ0hWOztBRDhCWTtFQUNJLFlBQUE7QUM1QmhCOztBRG1DSTtFQUNJLFdBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQXhLUztBQ3dJakI7O0FEb0NBO0VBQ0ksU0FBQTtBQ2pDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvYmlsbHMtY29udHJhY3RzLWZpbHRlci9iaWxscy1jb250cmFjdHMtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuXG4kdGl0bGUtZm9udC1zaXplOiAwLjg3NXJlbTtcbiR0ZXh0LWZvbnQtc2l6ZTogMC43NXJlbTtcblxuLmZvcm0tY29udHJvbCB7XG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb250cmF0cztcbiAgICB9XG59XG5cbi5maWx0ZXItdGl0bGUsXG4uZmlsdGVyLWxhYmVsLFxuLmFkdmFuY2VkLXNlYXJjaF9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogJHRpdGxlLWZvbnQtc2l6ZTtcbn1cblxuLmZpbHRlci10aXRsZSxcbi5maWx0ZXItbGFiZWwge1xuICAgIC5maWx0ZXItdGl0bGVfX2ljb24ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICB9XG59XG5cbi5mbHVpZHMtZmlsdGVyLFxuLnBlcmlvZC1maWx0ZXIsXG4ucHJvdmlkZXJzLWZpbHRlcixcbi5jb250cmFjdC1zdGF0ZS1maWx0ZXIsXG4uY29udHJvbC1zdGF0ZS1maWx0ZXIsXG4uY29udHJvbC1lcnJvci1maWx0ZXIsXG4uaW5jbHVkZS1icmFuY2hlcy1maWx0ZXIsXG4ub25seS1lcnJvci1maWx0ZXIge1xuICAgIC5maWx0ZXItdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07XG4gICAgfVxufVxuXG4uY2hlY2tib3gtZmlsdGVyIHtcbiAgICAuZmlsdGVyLWxhYmVsIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIH1cbn1cblxuLmVycm9yLW1lc3NhZ2Uge1xuICAgIGZvbnQtc2l6ZTogJHRleHQtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xufVxuXG5pbnB1dCB7XG4gICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xufVxuXG4uZXJyb3Ige1xuICAgIGNvbG9yOiAkZXJyb3I7XG59XG5cbi5mbGV4LXYtY2VudGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50YWcge1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cblxuLmFkdmFuY2VkLXNlYXJjaF9fY29udGFpbmVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuXG4gICAgLmFkdmFuY2VkLXNlYXJjaF9fdGl0bGUge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgLmFkdmFuY2VkLXNlYXJjaF9faWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGl0bGUge1xuICAgIC5pY29uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgQGluY2x1ZGUgbWFzay1yZXBlYXQobm8tcmVwZWF0KTtcbiAgICAgICAgQGluY2x1ZGUgbWFzay1zaXplKDEwMCUpO1xuXG4gICAgICAgICYuZmx1aWQtaWNvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYXNrLWltYWdlKHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9kcm9wLnN2ZycpKTtcbiAgICAgICAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2VhcmNoIHtcbiAgICBoNCB7XG4gICAgICAgIHdpZHRoOiAxNDBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIuNTtcbiAgICB9XG59XG5cbi5mbHVpZHMtZmlsdGVyIHtcbiAgICAuZmx1aWQtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICB9XG5cbiAgICAuZmx1aWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYm94LWNvbnRlbnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgICAuZmx1aWQtdHlwZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgICAgIH1cblxuICAgICAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigkYm94LWNvbnRlbnQsIDEwJSk7XG5cbiAgICAgICAgICAgIC53YXRlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGVhdTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnZlaGljbGVzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZnVlbDtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL2NhcnRvL2Nhci5wbmcnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmdhcyxcbiAgICAgICAgICAgIC5nYXoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRnYXo7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5mdWVsIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZnVlbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmVsZWMge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlbGVjdHJpY2l0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmhlYXRpbmcge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWF0aW5nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29vbGluZyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvb2xpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5mbHVpZC10eXBlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wZXJpb2QtZmlsdGVyIHtcbiAgICBzcGFuIHtcbiAgICAgICAgd2lkdGg6IDIxcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgfVxufVxuXG4uZmlsdGVyLXRpdGxlIHtcbiAgICBtYXJnaW46IDA7XG59XG4iLCIuZm9ybS1jb250cm9sOmZvY3VzLCAuZm9ybS1jb250cm9sOmFjdGl2ZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkOGE2M2U7XG59XG5cbi5maWx0ZXItdGl0bGUsXG4uZmlsdGVyLWxhYmVsLFxuLmFkdmFuY2VkLXNlYXJjaF9fdGl0bGUge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uZmlsdGVyLXRpdGxlIC5maWx0ZXItdGl0bGVfX2ljb24sXG4uZmlsdGVyLWxhYmVsIC5maWx0ZXItdGl0bGVfX2ljb24ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cblxuLmZsdWlkcy1maWx0ZXIgLmZpbHRlci10aXRsZSxcbi5wZXJpb2QtZmlsdGVyIC5maWx0ZXItdGl0bGUsXG4ucHJvdmlkZXJzLWZpbHRlciAuZmlsdGVyLXRpdGxlLFxuLmNvbnRyYWN0LXN0YXRlLWZpbHRlciAuZmlsdGVyLXRpdGxlLFxuLmNvbnRyb2wtc3RhdGUtZmlsdGVyIC5maWx0ZXItdGl0bGUsXG4uY29udHJvbC1lcnJvci1maWx0ZXIgLmZpbHRlci10aXRsZSxcbi5pbmNsdWRlLWJyYW5jaGVzLWZpbHRlciAuZmlsdGVyLXRpdGxlLFxuLm9ubHktZXJyb3ItZmlsdGVyIC5maWx0ZXItdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAwLjhyZW07XG59XG5cbi5jaGVja2JveC1maWx0ZXIgLmZpbHRlci1sYWJlbCB7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cblxuLmVycm9yLW1lc3NhZ2Uge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIG1hcmdpbi10b3A6IDZweDtcbn1cblxuaW5wdXQge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogIzYwNzE4ODtcbn1cblxuLmVycm9yIHtcbiAgY29sb3I6ICNkYjRiNDc7XG59XG5cbi5mbGV4LXYtY2VudGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnRhZyB7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cblxuLmFkdmFuY2VkLXNlYXJjaF9fY29udGFpbmVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cbi5hZHZhbmNlZC1zZWFyY2hfX2NvbnRhaW5lciAuYWR2YW5jZWQtc2VhcmNoX190aXRsZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hZHZhbmNlZC1zZWFyY2hfX2NvbnRhaW5lciAuYWR2YW5jZWQtc2VhcmNoX190aXRsZSAuYWR2YW5jZWQtc2VhcmNoX19pY29uIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuLnRpdGxlIC5pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3MTg4O1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogMTAwJTtcbiAgLXdlYmtpdC1tYXNrLXNpemU6IDEwMCU7XG59XG4udGl0bGUgLmljb24uZmx1aWQtaWNvbiB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvZHJvcC5zdmdcIik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9kcm9wLnN2Z1wiKTtcbiAgd2lkdGg6IDE1cHg7XG4gIGhlaWdodDogMTVweDtcbiAgbWFyZ2luLXRvcDogNHB4O1xufVxuXG4uc2VhcmNoIGg0IHtcbiAgd2lkdGg6IDE0MHB4O1xuICBsaW5lLWhlaWdodDogMi41O1xufVxuXG4uZmx1aWRzLWZpbHRlciAuZmx1aWQtY29udGFpbmVyIHtcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDVweDtcbn1cbi5mbHVpZHMtZmlsdGVyIC5mbHVpZCB7XG4gIGJhY2tncm91bmQ6ICNlZWU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5mbHVpZHMtZmlsdGVyIC5mbHVpZCAuZmx1aWQtdHlwZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZGlzcGxheTogaW5oZXJpdDtcbiAgY29sb3I6ICM2MDcxODg7XG4gIHBhZGRpbmc6IDEwcHggMDtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuLmZsdWlkcy1maWx0ZXIgLmZsdWlkLnNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZDogI2Q1ZDVkNTtcbn1cbi5mbHVpZHMtZmlsdGVyIC5mbHVpZC5zZWxlY3RlZCAud2F0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4MWI4O1xufVxuLmZsdWlkcy1maWx0ZXIgLmZsdWlkLnNlbGVjdGVkIC52ZWhpY2xlcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZjdjM2E7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL2NhcnRvL2Nhci5wbmdcIik7XG59XG4uZmx1aWRzLWZpbHRlciAuZmx1aWQuc2VsZWN0ZWQgLmdhcyxcbi5mbHVpZHMtZmlsdGVyIC5mbHVpZC5zZWxlY3RlZCAuZ2F6IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVhYzZiYztcbn1cbi5mbHVpZHMtZmlsdGVyIC5mbHVpZC5zZWxlY3RlZCAuZnVlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZjdjM2E7XG59XG4uZmx1aWRzLWZpbHRlciAuZmx1aWQuc2VsZWN0ZWQgLmVsZWMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJiZjA0O1xufVxuLmZsdWlkcy1maWx0ZXIgLmZsdWlkLnNlbGVjdGVkIC5oZWF0aW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FiMmY1Mjtcbn1cbi5mbHVpZHMtZmlsdGVyIC5mbHVpZC5zZWxlY3RlZCAuY29vbGluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGJhZTE7XG59XG4uZmx1aWRzLWZpbHRlciAuZmx1aWQuc2VsZWN0ZWQgLmZsdWlkLXR5cGUge1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5wZXJpb2QtZmlsdGVyIHNwYW4ge1xuICB3aWR0aDogMjFweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5maWx0ZXItdGl0bGUge1xuICBtYXJnaW46IDA7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iXX0= */\"","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { DropdownSettings } from 'app/shared/components/common/dropdown-multilevel/dropdown-multilevel.interface';\nimport { UserTypes } from 'app/shared/constants/user-types-list.constants';\nimport {\n Filter,\n FiltersAvailable,\n FilterSelectGrp,\n GrpOption,\n Option,\n QueryFilter,\n} from 'app/shared/models/bills-contracts-filter.interface';\nimport { NoticeState } from 'app/shared/models/contract.interface';\nimport { BillsListService } from 'app/shared/services/bills-list/bills-list.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\nimport { UsersService } from 'app/shared/services/users/users.service';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'ga-bills-contracts-filter',\n templateUrl: './bills-contracts-filter.component.html',\n styleUrls: ['./bills-contracts-filter.component.scss'],\n providers: [],\n})\nexport class BillsContractsFilterComponent implements OnInit, OnChanges {\n isLoading = true;\n\n @Input() filtersAvailable: FiltersAvailable;\n\n @Output()\n filterChanged = new EventEmitter();\n\n /**\n * Form controls to add a debounce time to fields\n */\n form = {\n search: new FormControl(),\n start: new FormControl(),\n end: new FormControl(),\n };\n\n filters: Filter;\n\n toggleFilters = false;\n\n // Configuration for the dropdown list\n public dropdownSettings: DropdownSettings = {\n multiple: true,\n bindLabel: 'name',\n groupBy: 'group',\n selectableGroup: true,\n selectableGroupAsModel: true,\n notFoundText: 'Aucun type trouvé',\n dropdownPosition: 'bottom',\n customSearch: (term: string, item: GrpOption) => {\n term = term.toLowerCase();\n return [item.name, item.value, item.group].some(x => x && x.toLowerCase().indexOf(term) > -1);\n },\n };\n\n constructor(\n private energyService: EnergyService,\n private filterService: FilterService,\n private route: ActivatedRoute,\n private router: Router,\n private usersService: UsersService,\n private billsListService: BillsListService,\n private translateService: TranslateService\n ) {}\n\n async ngOnInit(): Promise {\n await this.initFilter();\n\n this.form.search.valueChanges\n .pipe(debounceTime(300))\n .subscribe({ next: newSearch => this.onInputSearchChanged(newSearch) });\n\n this.route.queryParams.subscribe({\n next: queryParams => {\n this.updateFiltersFromParams(queryParams);\n },\n });\n }\n\n async ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (const propName in changes) {\n if (propName === 'filtersAvailable' && !changes.filtersAvailable.firstChange) {\n await this.setAvailableFilters();\n this.isLoading = false;\n }\n }\n }\n\n /**\n * ------\n * Initilisaiton\n * ------\n */\n\n /**\n * Initialize the filter with data sent from parent.\n */\n async initFilter() {\n this.filters = {\n searchValue: '',\n hasBranches: false,\n includeBranches: false,\n errorMsg: null,\n };\n\n await this.setAvailableFilters();\n\n this.isLoading = false;\n }\n\n /**\n * Returns array for selectbox with name in French and value in short English term\n * @param {string[]} fluidsArray: array of short English fluids names. ex: [\"elec\", \"gaz\"]\n * @returns {Option[]} fluids array formated as options\n */\n private formatFluidSelectbox(fluidsArray: string[]): Option[] {\n return fluidsArray.map(fluid => {\n return {\n name: this.energyService.energyFullText(fluid),\n value: fluid,\n };\n });\n }\n\n /**\n * Returns the array of providers formated as options\n * @param {string[]} providersArray\n * @returns {Option[]} providers formated as options\n */\n private formatProvidersSelectBox(providersArray: string[]): Option[] {\n return providersArray.map(provider => {\n return {\n value: provider,\n name: provider,\n };\n });\n }\n\n /**\n *\n * @param {string[]} status\n * @returns {Option[]}\n */\n private formatStatusSelectBox(status: string[]): Option[] {\n return status.map(value => {\n return {\n value,\n name: this.billsListService.getBillStatusFullText(value),\n };\n });\n }\n\n /**\n * Returns the array of failed verifications possibilities formated as options\n * @param {{ [fluid: string]: Option[] }} fluidsOptions\n * @returns {GrpOption[]} failed verifications formated as options\n */\n private formatFailedVerificationsSelectBox(fluidsOptions: { [fluid: string]: Option[] }): GrpOption[] {\n return Object.keys(fluidsOptions).reduce((memo: GrpOption[], fluid) => {\n const items = fluidsOptions[fluid];\n const fluidLabel = this.translateService._(fluid);\n const fluidOptions = items.map(x => Object.assign({ group: fluidLabel }, x));\n return memo.concat(fluidOptions);\n }, []);\n }\n\n /**\n * Returns the array of the contract states formated as options\n * @param {NoticeState[]} contractStatesArray\n * @returns {Option[]}\n */\n private formatContractStatesSelectBox(contractStatesArray: NoticeState[]): Option[] {\n return contractStatesArray.map(contractState => {\n return {\n value: contractState.name,\n name: contractState.msg,\n };\n });\n }\n\n /**\n * Update filters from params object. If some changes valid, an event to update the search.\n * Toggle the advanced filter when one of its fields is updated by the params.\n * @param {Params} params - object containing params to set\n * @param {string} params.e - error param, must be 0 or 1\n * @param {string} params.q - search query (bill number for example)\n * @param {string} start - period date start (format YYYY-MM)\n * @param {string} end - period date end (format YYYY-MM)\n */\n private updateFiltersFromParams(params: Params): void {\n const onlyErrorString = params['e'];\n\n if (_.get(this.filtersAvailable, 'onlyErrorSelected.enabled') && ['1', '0'].includes(onlyErrorString)) {\n this.updateOnlyError(Boolean(onlyErrorString === '1'));\n this.toggleFilters = true;\n }\n\n if (\n _.get(this.filtersAvailable, 'searchValue.enabled') &&\n params['q'] &&\n params['q'] !== this.filters.searchValue\n ) {\n this.form.search.setValue(params['q']);\n }\n\n if (_.get(this.filtersAvailable, 'years.enabled')) {\n if (params['date']) {\n const date = moment(params['date']);\n if (date.isValid()) {\n const formattedDate = date.format('YYYY-MM');\n if (formattedDate !== this.filters.years.selectedStart) {\n this.form.start.setValue(formattedDate);\n this.toggleFilters = true;\n }\n if (formattedDate !== this.filters.years.selectedEnd) {\n this.form.end.setValue(formattedDate);\n this.toggleFilters = true;\n }\n }\n }\n if (params['start']) {\n const date = moment(params['start']);\n if (date.isValid()) {\n const formattedDate = date.format('YYYY-MM');\n if (formattedDate !== this.filters.years.selectedStart) {\n this.form.start.setValue(formattedDate);\n this.toggleFilters = true;\n }\n }\n }\n if (params['end']) {\n const date = moment(params['end']);\n if (date.isValid()) {\n const formattedDate = date.format('YYYY-MM');\n if (formattedDate !== this.filters.years.selectedEnd) {\n this.form.end.setValue(formattedDate);\n this.toggleFilters = true;\n }\n }\n }\n }\n\n /**\n * Emit an event to launch the search with the correct filters\n */\n this.emitFilterChanged();\n }\n\n /**\n * --------\n * User interactions\n * --------\n */\n\n /**\n * Handle search from user keyboard in the research part\n * @param {string} searchInput\n */\n onInputSearchChanged(searchInput: string) {\n this.filters.searchValue = searchInput;\n this.emitFilterChanged();\n }\n\n /**\n * Handle a change in dates selection\n *\n * @param {string} value - filled date input value\n * @property {'selectedStart' | 'selectedEnd'} property - date input target (start date or end date)\n * @returns {void}\n */\n onDatesChanged(value: string, property: 'selectedStart' | 'selectedEnd'): void {\n this.filters.years[property] = value && moment(value, 'YYYY-MM').isValid() ? value : null;\n\n if (!this.filters.years.selectedStart || !this.filters.years.selectedEnd) {\n this.filters.errorMsg = null;\n // If allowMissngBound option is enabled : emit on changed start date or changed end date\n if (this.filtersAvailable.years.allowMissingBound === true) {\n this.emitFilterChanged();\n }\n return;\n }\n\n const isDateStartBeforeEnd = moment(this.filters.years.selectedStart)\n .startOf('month')\n .isBefore(moment(this.filters.years.selectedEnd).endOf('month'));\n if (isDateStartBeforeEnd) {\n this.filters.errorMsg = null;\n this.emitFilterChanged();\n } else {\n this.filters.errorMsg = 'Votre date de début ne peut pas être supérieure à votre date de fin.';\n }\n }\n\n /**\n * Manage click error checkbox. Navigate by updating query parameter e (= error, only error).\n * @param {Event} e - event from checkbox\n */\n onClickOnlyError(e) {\n this.updateOnlyError(e.target.checked);\n // changes the route without moving from the current view or\n // triggering a navigation event\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: { e: this.filters.onlyErrorSelected ? '1' : '0' },\n // preserve the existing query params in the route\n queryParamsHandling: 'merge',\n skipLocationChange: false,\n });\n }\n\n /**\n * Manage click on checkbox to include branches. Set value selected in filters.\n * @param {Event} e - event from checkbox\n */\n onClickIncludeBranches(e) {\n this.isLoading = true;\n this.filters.includeBranches = e.target.checked;\n this.emitFilterChanged();\n }\n\n /**\n * Update filter value for onlyErrorSelected\n * @param {boolean} value - true to display only error, false otherwise\n */\n private updateOnlyError(value: boolean) {\n this.filters.onlyErrorSelected = value;\n }\n\n /**\n * Compute and emit the new filters query to the parent component\n */\n public emitFilterChanged() {\n this.filterChanged.emit(this.computeFilterQuery());\n }\n\n /**\n * Set selected values to filter. Handle filter using groups changes.\n * If group selected, add all items of the group to filter selected items.\n * @param {GrpOption[]} selected - group options selected\n * @param {FilterSelectGrp} filterSelect - related filter\n */\n public groupFilterChanged(selected: GrpOption[], filterSelect: FilterSelectGrp) {\n if (selected) {\n filterSelect.selected = selected.reduce((memo: GrpOption[], item) => {\n // If not a group, has a value, so add it.\n if (item.value) {\n memo.push(item);\n return memo;\n }\n // Otherwise, it's a group, so we need to add all items of the group.\n const groupItems = filterSelect.available.filter(x => x.group === item.group);\n memo = memo.concat(groupItems);\n return memo;\n }, []);\n }\n this.emitFilterChanged();\n }\n\n /**\n * Select/unselect fluid in filter\n * @param {{ name: string; value: string }} fluidOption\n */\n selectFluid(fluidOption: { name: string; value: string }) {\n const index = _.findIndex(this.filters.fluids.selected, { value: fluidOption.value });\n\n if (index === -1) {\n this.filters.fluids.selected.push(fluidOption);\n } else {\n this.filters.fluids.selected.splice(index, 1);\n }\n\n this.emitFilterChanged();\n }\n\n /**\n * Get fluid selection class\n * @param {{ name: string; value: string }} fluidOption\n * @returns {string}\n */\n getFluidSelectionClass(fluidOption: { name: string; value: string }): string {\n const index = _.findIndex(this.filters.fluids.selected, { value: fluidOption.value });\n\n if (index === -1) {\n return '';\n }\n return 'selected';\n }\n\n /**\n * Compute the query from the filters selection\n * @return {QueryFilter}\n */\n computeFilterQuery(): QueryFilter {\n const queryFilters: QueryFilter = {};\n\n if (_.get(this.filtersAvailable, 'searchValue.enabled')) {\n queryFilters.query = this.filters.searchValue;\n }\n\n if (_.get(this.filtersAvailable, 'branches.enabled')) {\n queryFilters.includeBranches = this.filters.includeBranches;\n }\n\n if (\n _.get(this.filtersAvailable, 'onlyErrorSelected.enabled') &&\n typeof this.filters.onlyErrorSelected === 'boolean'\n ) {\n queryFilters.onlyError = this.filters.onlyErrorSelected;\n }\n\n if (_.get(this.filtersAvailable, 'years.enabled') && this.filters.years) {\n if (!this.filtersAvailable.years.allowMissingBound) {\n this.filters.years.selectedStart = this.filters.years.selectedStart || this.filters.years.minDate;\n this.filters.years.selectedEnd = this.filters.years.selectedEnd || this.filters.years.maxDate;\n }\n\n if (this.filters.years.selectedStart) {\n queryFilters.start = moment\n .utc(this.filters.years.selectedStart)\n .startOf('month')\n .toISOString();\n }\n if (this.filters.years.selectedEnd) {\n queryFilters.end = moment\n .utc(this.filters.years.selectedEnd)\n .endOf('month')\n .toISOString();\n }\n }\n\n if (_.get(this.filtersAvailable, 'fluids.enabled') && this.filters.fluids.selected.length) {\n queryFilters.fluids = this.filters.fluids.selected.map(f => f.value);\n }\n\n if (_.get(this.filtersAvailable, 'providers.enabled') && this.filters.providers.selected.length) {\n queryFilters.providers = this.filters.providers.selected.map(f => f.value);\n }\n\n if (_.get(this.filtersAvailable, 'contractStates.enabled') && this.filters.contractStates.selected.length) {\n queryFilters.states = this.filters.contractStates.selected.map(f => f.value);\n }\n\n if (_.get(this.filtersAvailable, 'status.enabled') && this.filters.status.selected.length) {\n queryFilters.status = this.filters.status.selected.map(f => f.value);\n }\n\n if (\n _.get(this.filtersAvailable, 'failedVerifications.enabled') &&\n this.filters.failedVerifications.selected.length\n ) {\n queryFilters.failedVerifications = this.filters.failedVerifications.selected.map(f => f.value);\n }\n\n return queryFilters;\n }\n\n /**\n * Get the fluid type (water, elec...)\n * @param {Option} fluid\n */\n getFluidType(fluid: Option): string {\n return fluid.value;\n }\n\n /**\n * Set the filter with data sent from the parent\n */\n async setAvailableFilters() {\n if (_.get(this.filtersAvailable, 'years.enabled')) {\n let start = '';\n let min = null;\n if (this.filtersAvailable.years.selectedStart) {\n start = this.filtersAvailable.years.selectedStart;\n }\n if (this.filtersAvailable.years.yearsMin) {\n min = this.filtersAvailable.years.yearsMin.concat('-01');\n start = start || min;\n }\n\n let end = '';\n let max = null;\n if (this.filtersAvailable.years.selectedEnd) {\n end = this.filtersAvailable.years.selectedEnd;\n }\n if (this.filtersAvailable.years.yearsMin) {\n max = this.filtersAvailable.years.yearsMax.concat('-12');\n end = end || max;\n }\n\n const selectedStart = _.get(this.filters, 'years.selectedStart', '');\n const selectedEnd = _.get(this.filters, 'years.selectedEnd', '');\n\n this.filters.years = {\n selectedStart: this.filtersAvailable.years.setDefault ? start : selectedStart,\n selectedEnd: this.filtersAvailable.years.setDefault ? end : selectedEnd,\n minDate: min,\n maxDate: max,\n };\n\n this.form.start.setValue(this.filters.years.selectedStart);\n this.form.end.setValue(this.filters.years.selectedEnd);\n\n this.form.start.valueChanges\n .pipe(debounceTime(500))\n .subscribe({ next: value => this.onDatesChanged(value, 'selectedStart') });\n this.form.end.valueChanges\n .pipe(debounceTime(500))\n .subscribe({ next: value => this.onDatesChanged(value, 'selectedEnd') });\n }\n\n if (_.get(this.filtersAvailable, 'fluids.enabled')) {\n const availableFluids = _.get(this.filtersAvailable, 'fluids.values', []);\n const selectedFluids = _.get(this.filters, 'fluids.selected', []).filter(f => {\n return availableFluids.includes(f.value);\n });\n\n this.filters.fluids = {\n available: this.formatFluidSelectbox(this.filtersAvailable.fluids.values),\n selected: selectedFluids,\n };\n }\n\n if (_.get(this.filtersAvailable, 'providers.enabled')) {\n const availableProviders = _.get(this.filtersAvailable, 'providers.values', []);\n const selectedProviders = _.get(this.filters, 'providers.selected', []).filter(p => {\n return availableProviders.includes(p.value);\n });\n\n this.filters.providers = {\n available: this.formatProvidersSelectBox(this.filtersAvailable.providers.values),\n selected: selectedProviders,\n };\n }\n\n if (_.get(this.filtersAvailable, 'contractStates.enabled')) {\n this.filters.contractStates = {\n available: this.formatContractStatesSelectBox(this.filtersAvailable.contractStates.values),\n selected: [],\n };\n }\n\n if (_.get(this.filtersAvailable, 'status.enabled')) {\n this.filters.status = {\n available: this.formatStatusSelectBox(this.filtersAvailable.status.values),\n selected: [],\n };\n }\n\n if (_.get(this.filtersAvailable, 'onlyErrorSelected.enabled')) {\n this.filters.onlyErrorSelected = this.filtersAvailable.onlyErrorSelected.value || false;\n }\n\n if (_.get(this.filtersAvailable, 'failedVerifications.enabled')) {\n this.filters.failedVerifications = {\n available: this.formatFailedVerificationsSelectBox(this.filtersAvailable.failedVerifications.values),\n selected: [],\n placeholder: this.filtersAvailable.failedVerifications.placeholder,\n };\n }\n\n // display the checkbox to include branches only when useful\n if (_.get(this.filtersAvailable, 'branches.enabled')) {\n const branches = await this.filterService.getAllVisibleBranches();\n this.filters.hasBranches = Boolean(branches.length);\n }\n }\n}\n","export default \".icon {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n margin-left: 10px;\\n}\\n\\n.icon--add {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_add-2.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_add-2.svg\\\");\\n}\\n\\n.icon--edit {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_edit.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_edit.svg\\\");\\n}\\n\\n.icon--delete {\\n font-size: 20px;\\n}\\n\\n.custom-filter__select {\\n min-width: 20rem;\\n}\\n\\n@media (min-width: 1200px) {\\n .management__modal--container {\\n width: 1200px;\\n }\\n}\\n\\n.overview__modal--container,\\n.management__modal--container {\\n max-width: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvY3VzdG9tLWZpbHRlci9jdXN0b20tZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVycy9jdXN0b20tZmlsdGVyL2N1c3RvbS1maWx0ZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUNESSxZREVpQjtFQ0RqQixXREN1QjtFQ0F2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUREQSxpQkFBQTtBRUdKOztBRkFBO0VBQ0ksaUVBQUE7VUFBQSx5REFBQTtBRUdKOztBRkFBO0VBQ0ksZ0VBQUE7VUFBQSx3REFBQTtBRUdKOztBRkFBO0VBQ0ksZUFBQTtBRUdKOztBRkFBO0VBQ0ksZ0JBQUE7QUVHSjs7QUZBQTtFQUNJO0lBQ0ksYUFBQTtFRUdOO0FBQ0Y7O0FGQUE7O0VBRUksZUFBQTtBRUVKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVycy9jdXN0b20tZmlsdGVyL2N1c3RvbS1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcblxuLmljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMjBweCwgMjBweCk7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbi5pY29uLS1hZGQge1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19hZGQtMi5zdmcnKTtcbn1cblxuLmljb24tLWVkaXQge1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19lZGl0LnN2ZycpO1xufVxuXG4uaWNvbi0tZGVsZXRlIHtcbiAgICBmb250LXNpemU6IDIwcHg7XG59XG5cbi5jdXN0b20tZmlsdGVyX19zZWxlY3Qge1xuICAgIG1pbi13aWR0aDogMjByZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAubWFuYWdlbWVudF9fbW9kYWwtLWNvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAxMjAwcHg7XG4gICAgfVxufVxuXG4ub3ZlcnZpZXdfX21vZGFsLS1jb250YWluZXIsXG4ubWFuYWdlbWVudF9fbW9kYWwtLWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiLmljb24ge1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbi5pY29uLS1hZGQge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2FkZC0yLnN2Z1wiKTtcbn1cblxuLmljb24tLWVkaXQge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2VkaXQuc3ZnXCIpO1xufVxuXG4uaWNvbi0tZGVsZXRlIHtcbiAgZm9udC1zaXplOiAyMHB4O1xufVxuXG4uY3VzdG9tLWZpbHRlcl9fc2VsZWN0IHtcbiAgbWluLXdpZHRoOiAyMHJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAubWFuYWdlbWVudF9fbW9kYWwtLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEyMDBweDtcbiAgfVxufVxuLm92ZXJ2aWV3X19tb2RhbC0tY29udGFpbmVyLFxuLm1hbmFnZW1lbnRfX21vZGFsLS1jb250YWluZXIge1xuICBtYXgtd2lkdGg6IG5vbmU7XG59Il19 */\"","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { RuleSitesAttributionInterface, RuleSitesInterface } from 'app/shared/models/rule-sites-attribution.interface';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { ModalDirective } from 'ngx-bootstrap/modal';\nimport Swal from 'sweetalert2';\n\ninterface CustomFilterInterface {\n _id?: string;\n company: string;\n user?: string;\n name: string;\n rules: Array<{\n regions: string[];\n departments: string[];\n cities: string[];\n natures: string[];\n subnatures: string[];\n categories: { organization: string; items: string[] };\n sites: string[];\n routingReferences: string[];\n }>;\n}\n\n@Component({\n selector: 'ga-custom-filter',\n templateUrl: './custom-filter.component.html',\n styleUrls: ['./custom-filter.component.scss'],\n providers: [],\n})\nexport class CustomFilterComponent implements OnInit {\n /**\n * Even triggered when a custom filter is selected, created or updated.\n */\n @Output() filterSelected: EventEmitter<{ value: string | number; displayName: string }> = new EventEmitter<{\n value: string | number;\n displayName: string;\n }>();\n\n /**\n * Company to use if it's needed to use a different one than the one in session\n */\n @Input() company: { _id: string; organization: string; name: string; [key: string]: any } = null;\n\n /**\n * Id of Default value\n */\n @Input() defaultValue: string = null;\n /**\n * Values to be displayed in the selectbox.\n */\n values: Array<{ value: string | number; displayName: string }> = [];\n\n /**\n * Custom filter selected\n */\n selectedFilter: string;\n\n /**\n * Custom filter management modal\n */\n @ViewChild('modalManageEl', { static: true }) modalManage: ModalDirective;\n /**\n * Custom filter results overview modal\n */\n @ViewChild('modalOverviewEl', { static: true }) modalOverview: ModalDirective;\n /**\n * Custom filter save modal\n */\n @ViewChild('modalSaveEl', { static: true }) modalSave: ModalDirective;\n\n /**\n * Filter to display in modal. Empty for filter creation.\n * This data is at the same format as user sites rules but the display is adapted for custom filters.\n */\n filterData: RuleSitesAttributionInterface;\n\n /**\n * Custom filter model data. Set when a new filter is created or existing one is updated.\n */\n customFilter: CustomFilterInterface;\n\n /**\n * Sites to be displayed in custom filter preview\n */\n sitesPreview: RuleSitesInterface;\n\n /**\n * List of fluids available for the company\n */\n fluids: string[];\n\n /**\n * Current company the user is connected to.\n */\n currentCompany: { _id: string; organization: string; [key: string]: any };\n\n /**\n * Name filter input\n */\n @ViewChild('filterNameInput', { static: true }) saveNameInput: ElementRef;\n\n constructor(\n private sessionService: SessionService,\n private energyService: EnergyService,\n private sitesService: SitesService,\n private filterService: FilterService\n ) {}\n\n ngOnInit() {\n // Get company to be associated to the custom filters.\n // Mandatory for the editing modal display (selectboxes)\n this.currentCompany = this.company ? this.company : this.sessionService.getCompany();\n // Get fluids for sites display list\n this.energyService.getFluidsAvailable(this.currentCompany._id).then(fluids => {\n this.fluids = fluids;\n });\n\n // Get all user custom filter for the company their's connected to\n this.setAllUserCustomFilter();\n\n /**\n * ModalDirective.onHidden : event fired when modal has finished being hidden from user\n */\n this.modalSave.onHidden.subscribe(() => {\n if (this.saveNameInput && this.saveNameInput.nativeElement) {\n this.saveNameInput.nativeElement.value = '';\n }\n });\n }\n\n /**\n * Actions to perform when a custom filter is selected\n * @param {string|number} val - value selected\n */\n selectCustomFilter(val: string | number) {\n if (val || val === '' || val === 0) {\n // Set the selected custom filter\n const value = val.toString();\n this.selectedFilter = value;\n const searchCF = this.values.find(x => x.value === value);\n if (searchCF) {\n this.filterSelected.emit(searchCF);\n } else {\n this.selectedFilter = null;\n this.filterSelected.emit(null);\n }\n } else {\n this.selectedFilter = null;\n this.filterSelected.emit(null);\n }\n }\n\n /**\n * Open custom filter creation/edition modal.\n * Creates the object needed by the component of filter creation/edition.\n */\n openCreateFilter() {\n this.filterData = {\n companies: [this.currentCompany._id],\n rules: [\n {\n regions: [],\n departments: [],\n categories: [\n {\n organization: this.currentCompany.organization,\n items: [],\n },\n ],\n sites: [],\n cities: [],\n natures: [],\n subnatures: [],\n energies: [],\n routingReferences: [],\n },\n ],\n };\n this.customFilter = null;\n this.modalManage.show();\n }\n\n /**\n * Open custom filter creation/edition modal\n * First, get the custom filter data\n */\n openEditFilter() {\n this.filterService\n .getCustomFilter(this.selectedFilter)\n .then(response => {\n const customFilter = response.data;\n\n this.customFilter = customFilter;\n\n this.filterData = {\n companies: [customFilter.company],\n rules: customFilter.rules.map(rule => {\n return {\n regions: rule.regions,\n departments: rule.departments,\n categories: [rule.categories],\n sites: rule.sites,\n cities: rule.cities,\n natures: rule.natures,\n subnatures: rule.subnatures,\n energies: [],\n routingReferences: rule.routingReferences,\n };\n }),\n };\n this.modalManage.show();\n })\n .catch(() => {\n Swal.fire(\n 'Impossible de récupérer le filtre personnalisé',\n 'Une erreur est survenue lors de la récupération du filtre, merci de réessayer ultérieurement',\n 'error'\n );\n });\n }\n\n /**\n * Update the custom filter value\n * @param {RuleSitesAttributionInterface} value - data from the edition component.\n */\n updateCustomFilter(value: RuleSitesAttributionInterface) {\n const customFilterClean = this.formatCustomFilter(value);\n if (this.customFilter && this.customFilter._id) {\n customFilterClean._id = this.customFilter._id;\n }\n this.customFilter = customFilterClean;\n }\n\n /**\n * Format custom filter data from RuleSitesAttributionInterface to CustomFilterInterface\n * @param value\n */\n private formatCustomFilter(value: RuleSitesAttributionInterface): CustomFilterInterface {\n return {\n company: this.currentCompany._id,\n name: this.customFilter ? this.customFilter.name : '',\n rules: value.rules.map(rule => {\n return {\n regions: rule.regions,\n departments: rule.departments,\n cities: rule.cities,\n natures: rule.natures,\n subnatures: rule.subnatures,\n categories:\n rule.categories && rule.categories.length\n ? rule.categories[0]\n : { organization: this.currentCompany.organization, items: [] },\n sites: rule.sites,\n routingReferences: rule.routingReferences,\n };\n }),\n };\n }\n\n /**\n * Get the sites matching the custom filter and open sites list preview modal.\n */\n openOverviewModal() {\n if (this.modalOverview) {\n this.sitesPreview = {\n sitesMatching: [],\n pagination: {\n start: 0,\n end: 0,\n },\n isReady: false,\n isVisible: false,\n };\n // Get sites matching the filter\n this.sitesService\n .getSitesFromCustomFilter(this.customFilter)\n .then(response => {\n this.sitesPreview.sitesMatching = response.data;\n\n this.sitesPreview.isReady = true;\n this.sitesPreview.isVisible = true;\n })\n .catch(() => {\n this.sitesPreview.isReady = true;\n this.sitesPreview.isVisible = true;\n\n Swal.fire(\n \"Impossible d'afficher l'aperçu des sites\",\n 'Une erreur est survenue lors de la récupération des sites, merci de réessayer ultérieurement.',\n 'error'\n );\n });\n // Show modal\n this.modalOverview.show();\n }\n }\n\n /**\n * Save custom filter. Display save modal if no name\n * @param {string} value - custom filter name\n */\n saveFilter(value: string) {\n if (this.customFilter && (value || this.customFilter.name)) {\n if (value) {\n this.customFilter.name = value;\n }\n this.filterService\n .saveCustomFilter(this.customFilter, { companyId: this.currentCompany._id })\n .then(response => {\n const updatedFilter = response.data;\n\n const searchExisting = this.values.find(x => x.value === updatedFilter._id);\n if (!searchExisting) {\n this.values.push({\n value: updatedFilter._id,\n displayName: updatedFilter.name,\n });\n }\n this.selectCustomFilter(updatedFilter._id);\n\n if (this.modalOverview && this.modalOverview.isShown) {\n this.modalOverview.hide();\n }\n if (this.modalManage) {\n this.modalManage.hide();\n }\n if (this.modalSave) {\n this.modalSave.hide();\n }\n })\n .catch(() => {\n Swal.fire(\n \"Impossible d'enregistrer le filtre\",\n \"Une erreur est survenue lors de l'enregistrement du filtre, merci de réessayer ultérieurement\",\n 'error'\n );\n });\n } else if (this.modalSave && !this.modalSave.isShown && this.customFilter) {\n this.modalSave.show();\n }\n }\n\n async openDeleteFilter() {\n const response = await this.filterService.getCustomFilter(this.selectedFilter);\n this.customFilter = response.data;\n const result = await Swal.fire({\n title: 'Suppression du filtre personnalisé',\n text: 'Êtes-vous certain de vouloir supprimer le filtre : ' + this.customFilter.name + ' ?',\n showCancelButton: true,\n confirmButtonText: 'Oui, supprimer',\n cancelButtonText: 'Annuler',\n });\n\n if (result.value) {\n try {\n await this.filterService.deleteCustomFilter(this.selectedFilter);\n // update the choice of custom filters\n this.setAllUserCustomFilter();\n Swal.fire('Supprimé !', 'Le filtre personnalisé a bien été supprimé.', 'success');\n } catch (error) {\n Swal.fire(\n 'Erreur',\n 'Impossible de supprimer le filtre personnalisé. Veuillez réessayer plus tard.',\n 'error'\n );\n }\n }\n }\n\n /**\n * Get all user custom filter for the company their's connected to\n */\n async setAllUserCustomFilter() {\n this.values = [];\n try {\n const response = await this.filterService.getUserCustomFilters({ companyId: this.currentCompany._id });\n this.values = response.data.map(item => {\n return {\n value: item._id,\n displayName: item.name,\n };\n });\n this.selectCustomFilter(this.defaultValue);\n } catch (error) {\n this.values = [];\n Swal.fire(\n 'Impossible de récupérer les filtres personnalisés',\n 'Une erreur est survenue lors de la récupération de vos filtres, merci de réessayer ultérieurement',\n 'error'\n );\n }\n }\n\n get filterManagementModalTitle() {\n const action = this.selectedFilter && this.customFilter ? 'Modification' : 'Création';\n return action + \" d'un filtre personnalisé - \" + this.company.name;\n }\n}\n","export default \".filters__title,\\n.sites__title {\\n cursor: pointer;\\n}\\n\\n.chevron-rotated {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n\\n.margin-top {\\n margin-top: 15px;\\n}\\n\\n.padding-10 {\\n padding: 10px;\\n}\\n\\n.padding-tb-10 {\\n padding: 10px 0;\\n}\\n\\n.ruleblock__container {\\n padding-bottom: 15px;\\n}\\n\\n.ruleblock__container:not(:first-child) {\\n padding-top: 15px;\\n border-color: #db4b47;\\n border-top: dashed #db4b47 1px;\\n}\\n\\n.ruleblock-orga {\\n padding: 1rem;\\n height: 100%;\\n}\\n\\n.ruleblock-orga span.remove {\\n position: absolute;\\n right: 7px;\\n top: 2px;\\n cursor: pointer;\\n}\\n\\n.ruleblock-orga btn {\\n height: -webkit-max-content;\\n height: -moz-max-content;\\n height: max-content;\\n}\\n\\n.rule-block {\\n margin: 10px 0;\\n position: relative;\\n}\\n\\n.rule-block .filters {\\n padding: 25px;\\n}\\n\\n.rule-block span.remove {\\n position: absolute;\\n right: 7px;\\n top: 2px;\\n cursor: pointer;\\n}\\n\\n.block-title {\\n font-size: 12px;\\n margin-bottom: 5px;\\n}\\n\\n.flex-end {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: end;\\n justify-content: flex-end;\\n}\\n\\n.flex-start {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: start;\\n justify-content: flex-start;\\n}\\n\\n.flex-center {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.flex-vertical-center {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.flex-center-column {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n\\n.flex-around {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: around;\\n justify-content: around;\\n}\\n\\n.add-rule-block {\\n font-size: 12px;\\n color: #db4b47;\\n position: relative;\\n}\\n\\n.add-rule-block .visible {\\n -webkit-transition: opacity 1s;\\n transition: opacity 1s;\\n opacity: 1;\\n}\\n\\n.add-rule-block .not-visible {\\n -webkit-transition: opacity 1s;\\n transition: opacity 1s;\\n opacity: 0;\\n}\\n\\ni {\\n margin: 0 3px;\\n}\\n\\ntable td {\\n padding: 0.75rem;\\n vertical-align: middle;\\n}\\n\\ntable td label {\\n margin-bottom: 0;\\n}\\n\\ntable tr {\\n height: calc(33px + 2 * 0.75rem);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvY3VzdG9tLWZpbHRlci9maWx0ZXItc2l0ZXMtcnVsZXMvZmlsdGVyLXNpdGVzLXJ1bGVzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL2N1c3RvbS1maWx0ZXIvZmlsdGVyLXNpdGVzLXJ1bGVzL2ZpbHRlci1zaXRlcy1ydWxlcy5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0VBRUksZUFBQTtBQ0RKOztBRElBO0VBQ0ksaUNBQUE7RUFJQSx5QkFBQTtBQ0RKOztBRElBO0VBQ0ksZ0JBQUE7QUNESjs7QURJQTtFQUNJLGFBQUE7QUNESjs7QURHQTtFQUNJLGVBQUE7QUNBSjs7QURHQTtFQUNJLG9CQUFBO0FDQUo7O0FERUk7RUFDSSxpQkFBQTtFQUNBLHFCRU5BO0VGT0EsOEJBQUE7QUNBUjs7QURJQTtFQUNJLGFBQUE7RUFDQSxZQUFBO0FDREo7O0FER0k7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxRQUFBO0VBQ0EsZUFBQTtBQ0RSOztBREdJO0VBQ0ksMkJBQUE7RUFBQSx3QkFBQTtFQUFBLG1CQUFBO0FDRFI7O0FES0E7RUFDSSxjQUFBO0VBQ0Esa0JBQUE7QUNGSjs7QURJSTtFQUNJLGFBQUE7QUNGUjs7QURJSTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSxlQUFBO0FDRlI7O0FETUE7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7QUNISjs7QURNQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHFCQUFBO1VBQUEseUJBQUE7QUNISjs7QURLQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHVCQUFBO1VBQUEsMkJBQUE7QUNGSjs7QURJQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FDREo7O0FER0E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FDQUo7O0FERUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0FDQ0o7O0FEQ0E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDRUo7O0FEQ0E7RUFDSSxlQUFBO0VBQ0EsY0UzRUk7RUY0RUosa0JBQUE7QUNFSjs7QURBSTtFQUNJLDhCQUFBO0VBQUEsc0JBQUE7RUFDQSxVQUFBO0FDRVI7O0FEQUk7RUFDSSw4QkFBQTtFQUFBLHNCQUFBO0VBQ0EsVUFBQTtBQ0VSOztBREVBO0VBQ0ksYUFBQTtBQ0NKOztBREVJO0VBQ0ksZ0JBQUE7RUFDQSxzQkFBQTtBQ0NSOztBREFRO0VBQ0ksZ0JBQUE7QUNFWjs7QURDSTtFQUVJLGdDQUFBO0FDQVIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL2N1c3RvbS1maWx0ZXIvZmlsdGVyLXNpdGVzLXJ1bGVzL2ZpbHRlci1zaXRlcy1ydWxlcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5maWx0ZXJzX190aXRsZSxcbi5zaXRlc19fdGl0bGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmNoZXZyb24tcm90YXRlZCB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAtby10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5cbi5tYXJnaW4tdG9wIHtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xufVxuXG4ucGFkZGluZy0xMCB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5wYWRkaW5nLXRiLTEwIHtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG59XG5cbi5ydWxlYmxvY2tfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG5cbiAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGFkbWluO1xuICAgICAgICBib3JkZXItdG9wOiBkYXNoZWQgJGFkbWluIDFweDtcbiAgICB9XG59XG5cbi5ydWxlYmxvY2stb3JnYSB7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBzcGFuLnJlbW92ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDdweDtcbiAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgYnRuIHtcbiAgICAgICAgaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgICB9XG59XG5cbi5ydWxlLWJsb2NrIHtcbiAgICBtYXJnaW46IDEwcHggMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuZmlsdGVycyB7XG4gICAgICAgIHBhZGRpbmc6IDI1cHg7XG4gICAgfVxuICAgIHNwYW4ucmVtb3ZlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogN3B4O1xuICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLmJsb2NrLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZmxleC1lbmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cbi5mbGV4LXN0YXJ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cbi5mbGV4LWNlbnRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmZsZXgtdmVydGljYWwtY2VudGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uZmxleC1jZW50ZXItY29sdW1uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5mbGV4LWFyb3VuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGFyb3VuZDtcbn1cblxuLmFkZC1ydWxlLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICRhZG1pbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAudmlzaWJsZSB7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIC5ub3QtdmlzaWJsZSB7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxufVxuXG5pIHtcbiAgICBtYXJnaW46IDAgM3B4O1xufVxudGFibGUge1xuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0ciB7XG4gICAgICAgIC8vIEhlaWdodCBvZiBhdXRvY29tcGxldGUgKyAyKiBwYWRkaW5nICh0b3AgKyBib3QpXG4gICAgICAgIGhlaWdodDogY2FsYygzM3B4ICsgMiAqIDAuNzVyZW0pO1xuICAgIH1cbn1cbiIsIi5maWx0ZXJzX190aXRsZSxcbi5zaXRlc19fdGl0bGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jaGV2cm9uLXJvdGF0ZWQge1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5cbi5tYXJnaW4tdG9wIHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbn1cblxuLnBhZGRpbmctMTAge1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4ucGFkZGluZy10Yi0xMCB7XG4gIHBhZGRpbmc6IDEwcHggMDtcbn1cblxuLnJ1bGVibG9ja19fY29udGFpbmVyIHtcbiAgcGFkZGluZy1ib3R0b206IDE1cHg7XG59XG4ucnVsZWJsb2NrX19jb250YWluZXI6bm90KDpmaXJzdC1jaGlsZCkge1xuICBwYWRkaW5nLXRvcDogMTVweDtcbiAgYm9yZGVyLWNvbG9yOiAjZGI0YjQ3O1xuICBib3JkZXItdG9wOiBkYXNoZWQgI2RiNGI0NyAxcHg7XG59XG5cbi5ydWxlYmxvY2stb3JnYSB7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGhlaWdodDogMTAwJTtcbn1cbi5ydWxlYmxvY2stb3JnYSBzcGFuLnJlbW92ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDdweDtcbiAgdG9wOiAycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5ydWxlYmxvY2stb3JnYSBidG4ge1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xufVxuXG4ucnVsZS1ibG9jayB7XG4gIG1hcmdpbjogMTBweCAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ucnVsZS1ibG9jayAuZmlsdGVycyB7XG4gIHBhZGRpbmc6IDI1cHg7XG59XG4ucnVsZS1ibG9jayBzcGFuLnJlbW92ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDdweDtcbiAgdG9wOiAycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmJsb2NrLXRpdGxlIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi5mbGV4LWVuZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi5mbGV4LXN0YXJ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4uZmxleC1jZW50ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmZsZXgtdmVydGljYWwtY2VudGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmZsZXgtY2VudGVyLWNvbHVtbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5mbGV4LWFyb3VuZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogYXJvdW5kO1xufVxuXG4uYWRkLXJ1bGUtYmxvY2sge1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAjZGI0YjQ3O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uYWRkLXJ1bGUtYmxvY2sgLnZpc2libGUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xuICBvcGFjaXR5OiAxO1xufVxuLmFkZC1ydWxlLWJsb2NrIC5ub3QtdmlzaWJsZSB7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7XG4gIG9wYWNpdHk6IDA7XG59XG5cbmkge1xuICBtYXJnaW46IDAgM3B4O1xufVxuXG50YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG50YWJsZSB0ZCBsYWJlbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG50YWJsZSB0ciB7XG4gIGhlaWdodDogY2FsYygzM3B4ICsgMiAqIDAuNzVyZW0pO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Company } from 'app/shared/models/company.interface';\nimport { RuleBlockInterface, RuleSitesAttributionInterface } from 'app/shared/models/rule-sites-attribution.interface';\nimport { Site } from 'app/shared/models/site.interface';\nimport { UserPopulated } from 'app/shared/models/users.interface';\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport * as clone from 'clone';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-filter-sites-rules',\n templateUrl: './filter-sites-rules.component.html',\n styleUrls: ['./filter-sites-rules.component.scss'],\n providers: [],\n})\nexport class FilterSitesRulesComponent implements OnInit {\n @Input() user: UserPopulated = null;\n\n /**\n * All companies\n */\n get allCompanies(): Company[] {\n return this.user ? this.user.companies : this.companiesAvailable;\n }\n\n @Input() sitesRule: RuleSitesAttributionInterface;\n\n /**\n * Companies not used in any rule\n */\n @Input() companiesAvailable: Company[];\n\n /**\n * Can delete a rule block.\n * To be set to true if multiple ruleBlocks.\n * Now used, to know if there is multiple ruleBlocks :\n * If only one company is selected, it can't be delete in case of multiple ruleBlocks\n * (a company can be in only one rule)\n */\n @Input() canDelete = false;\n\n /**\n * Is the component meant to display filters for custom filters (instead of user sites rules).\n * If true, there is no fluid selection, no company selection and for categories there is no organisation selection\n */\n @Input() isCustomFilter = false;\n\n /**\n * Event triggered when a rule changes.\n */\n @Output() ruleChanged: EventEmitter = new EventEmitter<\n RuleSitesAttributionInterface\n >();\n\n /**\n * A ruleBlock is a block of rules, focused on one or multiple companies (rule: RuleSitesAttributionInterface)\n * +\n * the list filling the selectboxes\n *\n * ex: block 1 -- \"For the companies A & B\"\n * rule1: I allow the user to see the sites of Category 1 & 2\"\n * block 2 -- \"For the companies C\"\n * rule 1: I allow the user to see the sites of (Region A & Nature \"Batiment tertiaire\")\n * or\n * rule 2: I allow the user to see the sites of (Region B & Complement 101)\"\n *\n * @type {RuleBlockInterface} array of ruleBloc\n */\n ruleBlock: RuleBlockInterface = null;\n\n private regionsJson = {};\n private allRegionsFormated = [];\n private allDepartmentsFormated = [];\n private allCitiesFormated = [];\n private allNaturesFormated = [];\n private allOrganizationsFormated = [];\n /**\n * Array of routing references we can display in the autocomplete selectBoxe\n */\n private allRoutingReferencesFormatted = [];\n\n // objects gathering the categories per organization type\n // key: organization number, value: [{id: .., name:.., subcategories: [...]}]\n highlightedCategoriesPerOrganization = {}; // only the categories of the companies selected\n allCategoriesPerOrganization = {}; // all existing categories\n\n allFluids = [];\n\n infoMessage: string = null;\n displayInfoMessage = false;\n hasInfoMessage = true;\n isReadyForAddBtn = false;\n\n localisationTypes: Array<{ value: string; name: string }> = [\n {\n value: 'regions',\n name: 'Régions',\n },\n {\n value: 'departments',\n name: 'Départements',\n },\n {\n value: 'cities',\n name: 'Villes',\n },\n ];\n localisationsSelected: any[] = [];\n\n constructor(\n private companiesService: CompaniesService,\n private filterService: FilterService,\n private energyService: EnergyService,\n private siteService: SitesService\n ) {}\n\n ngOnInit() {\n this.initData();\n }\n\n /** ------ Initialization --------- **/\n\n /**\n * Initialize a first block of rules targeting all the user's companies by default\n * Hence, the table aggregates all the sites of all the user's companies\n */\n async initData() {\n /**\n * Companies the connected user can access to\n */\n const allCompaniesIds = this.allCompanies.map(c => c._id);\n // values needed to init the first rule block :\n // regions: all the regions + departments of France\n // natures & organizations: all the available natures & organizations\n // cities: coming from the sites of the user's companies\n // fluids: coming from the sites of the user's companies\n // routingReferences : coming from the sites of the user's companies\n\n try {\n const [regions, properties, cities, fluids, sites] = await Promise.all([\n this.getAllRegions(),\n this.getAllProperties(),\n this.getCitiesFromCompanies(allCompaniesIds),\n this.energyService.getFluidsAvailableForCompanies(allCompaniesIds),\n this.getSitesFromCompanies(allCompaniesIds),\n ]);\n // format response for selectboxes\n this.allRegionsFormated = this.filterService.flattenRegionsJson(regions);\n this.allDepartmentsFormated = this.filterService.flattenDepartmentsJson(regions);\n this.allNaturesFormated = properties.natures;\n this.allCitiesFormated = this.formatArrayForSelectbox(cities);\n this.allFluids = this.formatFluidSelectbox(fluids);\n this.allRoutingReferencesFormatted = this.getRoutingReferencesFromSites(sites);\n\n // highlight all the cities & fluids in the selectboxes\n this.initHighlightForSelectbox(this.allCitiesFormated);\n this.initHighlightForSelectbox(this.allFluids);\n if (!this.sitesRule) {\n await this.addNewRuleBlock(true);\n } else {\n // init the ruleBlocks with the userSites values\n await this.initRuleblockFromUserSiteRule();\n }\n\n this.cleanAndEmitSitesRule();\n } catch (error) {\n this.getSwalMsg(error.errorCode);\n }\n }\n\n /**\n * Add a ruleBlock with an empty rule + all the companies without any rule applied to it\n * isInit: boolean if true, no need to set the selectboxes, already done\n */\n async addNewRuleBlock(isInit: boolean) {\n this.ruleBlock = this.createRuleBlock();\n\n try {\n await this.initRuleBlock(isInit);\n } catch (err) {\n throw err;\n }\n\n return;\n }\n\n /**\n * Init the ruleBlocks with the userSites values\n */\n async initRuleblockFromUserSiteRule() {\n this.ruleBlock = this.createRuleBlock();\n this.ruleBlock.rule.companies = this.sitesRule.companies;\n this.ruleBlock.companiesSelected = this.allCompanies\n .filter(x => this.sitesRule.companies.includes(x._id))\n .map(x => x._id);\n try {\n await this.initRuleBlock(true);\n this.ruleBlock.rule.rules = this.sitesRule.rules.map(rule => this.createGlobalRuleFromUserRuleSite(rule));\n this.ruleBlock.rule.rules.forEach((rule, i) => {\n const type = this.getRuleLocalisationType(rule);\n this.localisationsSelected[i] = type;\n });\n // this.onOrganizationSelected()\n } catch (err) {\n throw err;\n }\n\n return;\n }\n\n /**\n *\n * @param siteRule\n * @return {{regions: any, departments: any, sites: any, cities: any, natures: any, subnatures: any, energies: any, categories: (any | {organization: any; items: Array}[])}}\n */\n createGlobalRuleFromUserRuleSite(siteRule) {\n const rule = {\n regions: this.setRuleFromRuleSite(siteRule.regions, 'regions', 'value'),\n departments: this.setRuleFromRuleSite(siteRule.departments, 'departments', 'value'),\n sites: this.setRuleFromRuleSite(siteRule.sites, 'sites', '_id'),\n cities: this.setRuleFromRuleSite(siteRule.cities, 'cities', 'value'),\n natures: this.setNaturesFromRuleSite(siteRule.natures, siteRule.subnatures),\n energies: this.setRuleFromRuleSite(siteRule.energies, 'fluids', 'value'),\n categories: this.setCategoriesFromRuleSite(siteRule.categories),\n subnatures: [], // Subnatures empty because same input as natures. Computed for results in cleanAndEmitSitesRule\n routingReferences: this.setRuleFromRuleSite(siteRule.routingReferences, 'routingReferences', '_id'),\n };\n return rule;\n }\n\n setCategoriesFromRuleSite(categories) {\n if (categories.length) {\n return categories.map((c, index) => {\n this.ruleBlock.selectboxes.categories[index].items = this.createCategoriesItemsSelectbox(\n c.organization\n );\n this.ruleBlock.isReady.complementsSelectBoxes = true;\n\n return {\n organization: this.ruleBlock.selectboxes.categories[index].organizations.find(\n option => option.id === c.organization\n ),\n items: c.items.length\n ? c.items.map(i =>\n this.ruleBlock.selectboxes.categories[index].items.find(option => option.id === i)\n )\n : [],\n };\n });\n } else {\n if (this.isCustomFilter && this.allCompanies && this.allCompanies.length) {\n this.ruleBlock.isReady.complementsSelectBoxes = true;\n return [\n {\n organization: this.allCompanies[0].organization,\n items: [],\n },\n ];\n }\n return [\n {\n organization: null,\n items: [],\n },\n ];\n }\n }\n\n /**\n * Set natures and subnatures as values selected.\n * These values are from the rule in db and function is used during the initialization.\n * They are in the same array because they are in the same selectbox.\n * @param natures - list of natures objects selected\n * @param subnatures - list of subnatures objects selected\n */\n setNaturesFromRuleSite(natures, subnatures) {\n const values = [].concat(\n this.setRuleFromRuleSite(natures, 'natures', 'id'),\n this.setRuleFromRuleSite(subnatures, 'natures', 'id')\n );\n return values;\n }\n\n setRuleFromRuleSite(modelValues, name, fieldToCompare) {\n if (!modelValues) {\n return [];\n }\n return modelValues\n .map(modelValue => {\n return this.ruleBlock.selectboxes[name].find(option => option[fieldToCompare] === modelValue);\n })\n .filter(x => x);\n }\n\n /**\n * Returns an object ruleblock which targets by default all the companies left to assign\n */\n createRuleBlock(): RuleBlockInterface {\n return {\n isReady: {\n sitesSelectbox: false,\n fluids: false,\n regionsSelectbox: false,\n departmentsSelectbox: false,\n citiesSelectbox: false,\n organizationsSelectBoxes: false,\n complementsSelectBoxes: false,\n naturesSelectBox: false,\n routingReferencesSelectbox: false,\n },\n isVisible: true,\n rule: this.initQuery(),\n selectboxes: {\n sites: [],\n regions: [],\n departments: [],\n cities: [],\n categories: [\n {\n organizations: [],\n items: [],\n },\n ],\n natures: [],\n fluids: [],\n routingReferences: [],\n },\n companiesSelected: clone(this.getAvailableCompanies()),\n };\n }\n\n /**\n * Initialize a ruleBlock with one empty rule targeting all the companies the user belongs to.\n * The sites displayed is an aggregation of all the sites from all these companies.\n * Fluids available depend on the companies as well\n * @param {boolean} isInit: boolean if true, no need to set the selectboxes, already done\n */\n initRuleBlock(isInit: boolean): Promise {\n // in parallel we set the values for the selectboxes,\n // each one only needs to know which companies are preselected on this rulebloc\n const promiseArray = [\n this.getSitesFromRule(this.ruleBlock.rule), // the rule contains the companies\n\n // set the natures regions and departments selectboxes & highlight the options contained in the sites\n this.setNaturesOrgaCategoriesForSelectbox(),\n this.setRegionsForSelectbox(),\n this.setDepartmentsForSelectbox(),\n this.setRoutingReferencesForSelectbox(),\n ];\n\n // when it's the first rulelock, all the cities & fluids are already highlighted because they all belong to the sites\n // when it's not the first, some companies are not selected, so we highlight the cities and fluids related to the sites of the companies left\n if (!isInit) {\n promiseArray.push(this.setCitiesForSelectbox());\n promiseArray.push(this.setFluidsForSelectbox());\n }\n\n return Promise.all(promiseArray)\n .then(results => {\n const sites = results[0];\n\n // sites: sites from the companies. Display all of them in the selectbox\n this.ruleBlock.selectboxes.sites = sites;\n\n // update loaders for site\n this.ruleBlock.isReady.sitesSelectbox = true;\n\n // when it's the first ruleblock, put all the cities & fluids inside the selectboxes\n if (isInit) {\n this.ruleBlock.selectboxes.cities = this.allCitiesFormated;\n this.ruleBlock.selectboxes.fluids = this.allFluids;\n this.ruleBlock.isReady.citiesSelectbox = true;\n this.ruleBlock.isReady.fluids = true;\n }\n return Promise.resolve();\n })\n .catch(err => {\n this.getSwalMsg(err.errorCode);\n return Promise.reject(err);\n });\n }\n\n /**\n * Return the list of companies that aren't in any ruleBlock: they are available to apply a new ruleblock on\n */\n getAvailableCompanies(): Company[] {\n // aggregate in 'companiesWithRule' all the companies present in the ruleblocks\n const companiesWithRule = this.ruleBlock ? this.ruleBlock.rule.companies : [];\n\n // keep only the one that aren't in this array\n return clone(this.companiesAvailable).filter(c => !companiesWithRule.includes(c._id));\n }\n\n /**\n * Initialize a ruleBlock with one empty rule targeting all the user's companies that aren't used yet in another ruleblock.\n * @return {{companies; rules: [{regions: Array; departments: Array; categories: Array; sites: Array; cities: Array; natures: Array; energies: Array}]}}\n */\n initQuery() {\n return {\n companies: this.getAvailableCompanies().map(c => c._id),\n rules: [this.initRule()],\n };\n }\n\n /**\n * One ruleblock can contain multiple rules which apply to the same companies.\n */\n initRule() {\n let organization = null;\n if (this.isCustomFilter && this.allCompanies && this.allCompanies.length) {\n organization = this.allCompanies[0].organization;\n }\n return {\n regions: [],\n departments: [],\n categories: [\n {\n organization,\n items: [],\n },\n ],\n sites: [],\n cities: [],\n natures: [],\n subnatures: [],\n energies: [],\n routingReferences: [],\n };\n }\n\n /**\n * Called on click on the btn \"Rule n° ..\"\n */\n addNewRule() {\n this.ruleBlock.rule.rules.push(this.initRule());\n }\n\n removeRule(index) {\n this.ruleBlock.rule.rules.splice(index, 1);\n this.localisationsSelected[index] = null;\n }\n\n /**\n * Highlight every element of an array. Add or uodate a field called 'isHighlighted'\n * @param array: selectbox options\n */\n initHighlightForSelectbox(array) {\n array.forEach(elem => {\n elem.isHighlighted = true;\n });\n }\n\n /**\n * Store the json file of all the regions in France + the zipcode inside each\n * @return {Promise>}\n */\n getAllRegions(): Promise {\n return this.filterService.getRegions(false);\n }\n\n /**\n * Returns json file of all the existing sites' properties(categories/natures/organizations)\n * @return {Promise>}\n */\n getAllProperties(): Promise {\n return this.filterService.getCategories(false);\n }\n\n /**\n * Returns the names of the cities belonging to the companies selected\n * @param {string[]} companies\n * @return {Promise}\n */\n getCitiesFromCompanies(companies: string[]): Promise {\n return this.filterService.getCitiesFromCompanies(companies);\n }\n\n /**\n * Returns the natures of the sites belonging to the companies selected\n * @return {Promise>}\n */\n getNatureOrgaCategoriesFromCompanies(companies): Promise {\n return this.companiesService.getNatureOrgaCategoriesFromCompanies(companies);\n }\n\n /** ------ Filters functions for companies --------- **/\n\n /**\n * Called when a new company is selected\n * rule.companies aggregates all the companies selected for the query.\n * companiesSelected aggregates all the companies displayed.\n * They are different when all the companies are selected - none are displayed\n *\n * @param {Company} company\n */\n onCompanyAdded(company: Company) {\n this.isReadyForAddBtn = false;\n\n // specific case: it's the first company selected in the filter\n // before, all companies were selected for the query, none was actually selected as a filter\n if (this.ruleBlock.rule.companies.length === this.allCompanies.length) {\n this.ruleBlock.rule.companies = [];\n this.ruleBlock.companiesSelected = [];\n\n // there might be sites selected coming from other companies\n // keep only the sites that belong to the company selected\n this.ruleBlock.rule.rules.forEach(rule => {\n rule.sites = rule.sites.filter(site => site.company === company._id);\n });\n }\n this.ruleBlock.rule.companies.push(company._id);\n this.ruleBlock.companiesSelected.push(company._id);\n\n // update the selectboxes with new colors depending on the companies selected\n this.updateSelectboxesFromCompanies()\n .then(() => {\n this.isReadyForAddBtn = true;\n this.cleanAndEmitSitesRule();\n })\n .catch(err => {\n this.isReadyForAddBtn = true;\n this.cleanAndEmitSitesRule();\n });\n }\n\n /**\n *\n * Update all the selectboxes needed when the companies selected have changed (added/removed)\n * Sites selectbox: add or remove the one from the companies added/removed\n * Other selectboxes: the list remains the same but we update which options are highlighted depending on the companies selected\n * @param ruleBlock\n * @return {Promise}\n */\n async updateSelectboxesFromCompanies(): Promise {\n try {\n await this.setNaturesOrgaCategoriesForSelectbox();\n const promiseArray = [\n this.updateSitesSelectBox(),\n this.setRegionsForSelectbox(),\n this.setDepartmentsForSelectbox(),\n this.setCitiesForSelectbox(),\n this.setFluidsForSelectbox(),\n ];\n\n return Promise.all(promiseArray);\n } catch (err) {\n this.getSwalMsg(err.errorCode);\n return Promise.reject(err);\n }\n }\n\n /**\n * Update the list of sites for the selectbox with the companies list in rule\n */\n updateSitesSelectBox(): Promise {\n this.ruleBlock.isReady.sitesSelectbox = false;\n return this.getSitesFromCompanies(this.ruleBlock.rule.companies).then(\n sites => {\n this.ruleBlock.selectboxes.sites = sites;\n this.ruleBlock.isReady.sitesSelectbox = true;\n return Promise.resolve();\n },\n err => {\n return Promise.reject(err);\n }\n );\n }\n\n /**\n * Aggregate the sites belonging to the companies sent in param 'companies'\n * @param companies Array of ids as strings\n * @return {Promise}\n */\n getSitesFromCompanies(companies): Promise {\n const query: RuleSitesAttributionInterface = {\n companies,\n rules: [\n {\n regions: [],\n departments: [],\n categories: [],\n sites: [],\n cities: [],\n natures: [],\n subnatures: [],\n energies: [],\n routingReferences: [],\n },\n ],\n };\n return this.getSitesFromRule(query);\n }\n\n /**\n * Query the database with the filters in the rule in params\n * @param rule\n * @return {Promise} the list of sites matching the query\n */\n getSitesFromRule(rule: RuleSitesAttributionInterface): Promise {\n const ruleWithoutEmptyQuery = clone(rule);\n\n // if there are more than one rule, delete the empty ones - they won't be saved anyway\n // otherwise all sites will be displayed and the rules with filters will be ignored\n if (rule.rules.length > 1) {\n ruleWithoutEmptyQuery.rules = this.deleteEmptyRules(ruleWithoutEmptyQuery.rules);\n }\n\n return this.siteService\n .getSitesFromRule(this.createRuleFromObjectsList(ruleWithoutEmptyQuery))\n .then(response => {\n let sitesFromRule = response;\n\n sitesFromRule = sitesFromRule.sort(sortListAlphabetically);\n\n // for the selectbox filter: add google address to display + aggregate list of reference number\n this.setAddresses(sitesFromRule);\n\n return Promise.resolve(sitesFromRule);\n\n function sortListAlphabetically(siteA, siteB) {\n const a = siteA.complement;\n const b = siteB.complement;\n return a > b ? 1 : a < b ? -1 : 0;\n }\n });\n }\n\n canDeleteCompany() {\n if (this.canDelete && this.ruleBlock.companiesSelected.length === 1) {\n return false;\n }\n return true;\n }\n\n /**\n * Called when a company tag is removed.\n *\n * @param {Company} company\n */\n onCompanyDeleted(company: Company) {\n this.isReadyForAddBtn = false;\n\n // update the list of companies in the rule\n const companyId = company._id;\n const indexRule = this.ruleBlock.rule.companies.findIndex(e => e === companyId);\n if (indexRule > -1) {\n this.ruleBlock.rule.companies.splice(indexRule, 1);\n }\n // update the list of companies selected for display\n const indexRuleBlock = this.ruleBlock.companiesSelected.findIndex(e => e === companyId);\n if (indexRuleBlock > -1) {\n this.ruleBlock.companiesSelected.splice(indexRuleBlock, 1);\n }\n\n // specific case: when zero company is selected && there is only 1 ruleblock\n // it means thant all the rule applies to all of them - update rule.companies\n if (this.ruleBlock && this.ruleBlock.companiesSelected.length === 0) {\n this.ruleBlock.rule.companies = this.getAvailableCompanies().map(c => c._id);\n this.ruleBlock.rule.companies.unshift(companyId);\n }\n\n // update the sites in the filter rules\n // remove from the filter the sites belonging to the removed company\n this.ruleBlock.rule.rules.forEach(rule => {\n rule.sites = rule.sites.filter(site => site.company !== company._id);\n });\n\n // update the selectboxes with new colors depending on the companies selected\n this.updateSelectboxesFromCompanies().then(() => {\n this.isReadyForAddBtn = true;\n this.cleanAndEmitSitesRule();\n });\n }\n\n /**\n * Set in each site a new property 'googleAddress' a clear aggregation of the address properties in one String\n * @param sites\n */\n setAddresses(sites) {\n sites.forEach(site => {\n site.googleAddress = this.siteService.getAddressToDisplay(site);\n });\n }\n\n /** ------ Filters functions --------- **/\n\n /**\n * Called when a filter is changed (add/remove). ex: a site, a region, ..\n */\n onFilterChanged() {\n // Get clean rules and emit\n this.cleanAndEmitSitesRule();\n }\n\n /**\n * Clean sites rule (values instead of selectbox items) and emit change\n * @param ruleblock\n */\n cleanAndEmitSitesRule() {\n const ruleWithoutEmptyQuery = clone(this.ruleBlock.rule);\n\n // if there are more than one rule, don't save the empty ones\n // otherwise the rules with filters will be ignored\n if (ruleWithoutEmptyQuery.rules.length > 1) {\n ruleWithoutEmptyQuery.rules = this.deleteEmptyRules(ruleWithoutEmptyQuery.rules);\n }\n\n const cleanSitesRule = this.createRuleFromObjectsList(ruleWithoutEmptyQuery);\n\n this.ruleChanged.emit(cleanSitesRule);\n }\n\n /**\n * Create a mongo Query from the rule filters.\n * In the rule, filters are aggregation of Objects.\n * The query need the ids from each object instead.\n * @param rule\n * @return {{companies: (any | Array); rules: Array}}\n */\n createRuleFromObjectsList(rule): RuleSitesAttributionInterface {\n const ruleWithIds = {\n companies: rule.companies,\n rules: [],\n };\n\n rule.rules.forEach(ruleWithObjects => {\n const natures = ruleWithObjects.natures.reduce((memo, n) => {\n if (n.level === 0) {\n memo.push(n.id);\n }\n return memo;\n }, []);\n const subnatures = ruleWithObjects.natures.reduce((memo, n) => {\n if (n.level === 1) {\n memo.push(n.id);\n }\n return memo;\n }, []);\n ruleWithIds.rules.push({\n regions: ruleWithObjects.regions.map(r => r.value),\n departments: ruleWithObjects.departments.map(d => d.value),\n categories: this.createQueryForOrganizationsCategories(ruleWithObjects.categories),\n sites: ruleWithObjects.sites.map(s => s._id),\n cities: ruleWithObjects.cities.map(c => c.value),\n natures,\n subnatures,\n energies: ruleWithObjects.energies.map(e => e.value),\n routingReferences: ruleWithObjects.routingReferences.map(r => r._id),\n });\n });\n return ruleWithIds;\n }\n\n createQueryForOrganizationsCategories(categories) {\n return categories.reduce((query, currentBlock) => {\n if (currentBlock.items && currentBlock.items.length) {\n query.push({\n organization: currentBlock.organization.id,\n items: currentBlock.items.map(category => category.id),\n });\n }\n\n return query;\n }, []);\n }\n\n /** ------- Fill the selectboxes -------- **/\n\n /**\n * Set the formated array expected by the regions selectbox.\n * The regions list aggregates all the regions in France.\n * The name is highlighted when one of the companies has a site inside it.\n */\n setRegionsForSelectbox(): Promise {\n return this.setSelectbox('regions', 'displayName', 'displayName', 'regionsSelectbox');\n }\n\n /**\n * Set the formated array expected by the departments selectbox.\n * The departments list aggregates all the departments in France.\n * The name is highlighted when one of the companies has a site inside it.\n */\n setDepartmentsForSelectbox(): Promise {\n return this.setSelectbox('departments', 'displayName', 'displayName', 'departmentsSelectbox');\n }\n\n /**\n * Set the formated array expected by the cities selectbox.\n * The cities list aggregates all the cities found in the user's companies' sites.\n * The name is highlighted when one of the companies has a site inside it.\n */\n setCitiesForSelectbox(): Promise {\n return this.setSelectbox('cities', 'displayName', 'displayName', 'citiesSelectbox');\n }\n\n /**\n * We want to highlight some options in the selectbox: all that are linked to the selected values\n * Get the selectboxe values from the companies selected and highlight them among all the options of the selectbox.\n * Ex: the selectbox region includes all the regions in France, if Asnieres is selected, only 'Ile-De-France' will be highlighted in the selectbox options.\n * @param name: 'fluids', 'cities', 'regions' or 'deparments'\n * @param selectboxFieldToCompare: name of the field in the selectbox to do the comparison\n * @param optionFieldToSort: option field to sort the options in the selectbox\n * @param isReadyName: field from the global isReady\n */\n setSelectbox(name, selectboxFieldToCompare, optionFieldToSort, isReadyName): Promise {\n this.ruleBlock.isReady[isReadyName] = false;\n const functions = {\n fluids: 'getFluidsFromCompanies',\n cities: 'getCitiesFromCompanies',\n regions: 'getRegionsFromCompanies',\n departments: 'getDepartmentsFromCompanies',\n };\n const allOptions = {\n fluids: this.allFluids,\n cities: this.allCitiesFormated,\n regions: this.allRegionsFormated,\n departments: this.allDepartmentsFormated,\n };\n return this[functions[name]](this.ruleBlock.rule.companies).then(valuesFromSites => {\n const optionsSelectbox = clone(allOptions[name]);\n\n optionsSelectbox.forEach(option => {\n if (!valuesFromSites.includes(option[selectboxFieldToCompare])) {\n option.isHighlighted = false;\n } else {\n option.isHighlighted = true;\n }\n });\n\n this.ruleBlock.selectboxes[name] = optionsSelectbox.sort(this.sortListAlphabetically(optionFieldToSort));\n this.ruleBlock.isReady[isReadyName] = true;\n return Promise.resolve();\n });\n }\n\n /**\n * Set the formated array expected by the fluids selectbox.\n * The fluids list aggregates all the fluids found in the user's companies' sites.\n * The name is highlighted when one of the companies' contracts has a site inside it.\n */\n setFluidsForSelectbox(): Promise {\n return this.setSelectbox('fluids', 'value', 'displayName', 'fluids');\n }\n\n async setNaturesOrgaCategoriesForSelectbox(): Promise {\n this.ruleBlock.isReady.naturesSelectBox = false;\n this.ruleBlock.isReady.organizationsSelectBoxes = false;\n this.ruleBlock.isReady.complementsSelectBoxes = false;\n this.ruleBlock.isReady.routingReferencesSelectbox = false;\n\n const propertiesFromCompanies = await this.getNatureOrgaCategoriesFromCompanies(this.ruleBlock.rule.companies);\n\n // 1. update the organizations list available\n this.allOrganizationsFormated = propertiesFromCompanies['organizations'];\n this.highlightedCategoriesPerOrganization = propertiesFromCompanies['categoriesPerOrgaFiltered'];\n this.allCategoriesPerOrganization = propertiesFromCompanies['categoriesPerOrgaAll'];\n this.allNaturesFormated = propertiesFromCompanies['naturesAll'];\n\n // 2. update all blocks of the organization/categories subblocks in the filter rules\n // remove from the filter the organizations targeting an organization which isn't in the list anymore\n // keep all the organization/category block that match the new organization list\n this.ruleBlock.rule.rules.forEach(rule => {\n rule.categories = rule.categories.filter(orgablock => {\n return orgablock.organization\n ? this.allOrganizationsFormated.some(orga => orga.id === orgablock.organization.id)\n : true;\n });\n if (!rule.categories.length) {\n rule.categories.push({ organization: null, items: [] });\n }\n });\n\n // update the selectboxes\n this.ruleBlock.selectboxes.categories.forEach((catSelectbox, index) => {\n catSelectbox.organizations = this.allOrganizationsFormated;\n });\n\n // ------ update the natures selectbox highlighted elements ------\n const naturesFromCompanies = propertiesFromCompanies['natures'];\n const allNatures = clone(this.allNaturesFormated);\n const optionsSelectboxNature = allNatures.reduce((memo, nature) => {\n const natureInCompany = naturesFromCompanies.find(x => x.id === nature.id);\n // Add Nature\n const value = {\n id: nature.id,\n name: nature.name,\n isHighlighted: Boolean(natureInCompany),\n level: 0,\n items: [],\n };\n memo.push(value);\n // Add subnature\n if (nature.items && nature.items.length) {\n nature.items.forEach(subnature => {\n value.items.push(subnature._id);\n memo.push({\n id: subnature._id,\n name: `${nature.name} - ${subnature.name}`,\n isHighlighted: natureInCompany\n ? Boolean(natureInCompany.items.find(x => x._id === subnature._id))\n : false,\n level: 1,\n });\n });\n }\n return memo;\n }, []);\n\n this.ruleBlock.selectboxes.natures = optionsSelectboxNature.sort(this.sortListAlphabetically('name'));\n this.ruleBlock.isReady.naturesSelectBox = true;\n this.ruleBlock.isReady.organizationsSelectBoxes = true;\n this.ruleBlock.isReady.routingReferencesSelectbox = true;\n\n return;\n }\n\n onOrganizationSelected(rule, index, elemSelected) {\n // remove the complements if the organization has changed\n if (rule.categories[index].organization && rule.categories[index].organization.id !== elemSelected.id) {\n rule.categories[index].items = [];\n }\n\n // update the rule\n rule.categories[index].organization = elemSelected;\n this.ruleBlock.selectboxes.categories[index].items = this.createCategoriesItemsSelectbox(elemSelected.id);\n\n this.ruleBlock.isReady.complementsSelectBoxes = true;\n }\n\n /**\n * Create an array with all the options of the selectbox\n * Group every category/subcategory/complement existing, highlights the options included in the companies selected.\n * @param organization\n * @return {{id: string, name: string, isHighlighted: boolean}[]} Array of options for categories selectboxes with categories, subcategories & complements\n */\n createCategoriesItemsSelectbox(organization) {\n /* get highlightedCategories & allCategories: [\n {\n id: \"0\"\n name: \"Services généraux des administrations publiques locales\",\n subcategories: [{\n id: \"02\"\n name: \"Administration générale\",\n complements: [...]\n }]\n }, ...\n ]*/\n const highlightedCategories = this.highlightedCategoriesPerOrganization[organization];\n const allCategories = this.allCategoriesPerOrganization[organization];\n\n return allCategories.reduce((selectboxCategories, currentCategory) => {\n const optionsForCategory = [];\n const highlightedCat = highlightedCategories.find(c => c.id === currentCategory.id);\n\n optionsForCategory.push({\n id: currentCategory.id,\n name: currentCategory.id + ' - ' + currentCategory.name,\n sHighlighted: highlightedCat ? true : false,\n });\n currentCategory.subcategories.forEach(subcat => {\n const highlightedSubcat = highlightedCat\n ? highlightedCat.subcategories.find(s => s.id === subcat.id)\n : null;\n optionsForCategory.push({\n id: subcat.id,\n name: subcat.id + ' - ' + subcat.name,\n isHighlighted: highlightedSubcat ? true : false,\n });\n subcat.complements.forEach(comp => {\n const highlightedComp = highlightedSubcat\n ? highlightedSubcat.complements.find(c => c.id === comp.id)\n : null;\n\n optionsForCategory.push({\n id: comp.id,\n name: comp.id + ' - ' + comp.name,\n isHighlighted: highlightedComp ? true : false,\n });\n });\n });\n selectboxCategories = selectboxCategories.concat(optionsForCategory);\n return selectboxCategories;\n }, []);\n }\n\n onOrganizationRemoved(rule, index) {\n // update the rule: remove the organization and the categories selected\n rule.categories[index].organization = null;\n rule.categories[index].items = [];\n this.onFilterChanged();\n }\n\n addNewOrgaCategoriesBlock(rule) {\n // can't create a new block if the previous one doesn't have any category selected\n rule.categories.push({\n organization: null,\n items: [],\n });\n this.ruleBlock.selectboxes.categories.push({\n organizations: this.allOrganizationsFormated,\n items: [],\n });\n }\n\n onRuleCatPerOrgaRemoved(index, rule) {\n rule.categories.splice(index, 1);\n this.ruleBlock.selectboxes.categories.splice(index, 1);\n this.onFilterChanged();\n }\n\n sortListAlphabetically(field = 'displayName') {\n return (itemA, itemB) => {\n const a = itemA[field];\n const b = itemB[field];\n return a > b ? 1 : a < b ? -1 : 0;\n };\n }\n\n canAddOrgaBlock(rule) {\n return rule.categories.length > 0 && rule.categories[rule.categories.length - 1].items.length;\n }\n\n /**\n * Returns the names of the regions belonging to the companies selected\n * @param companies\n * @return {Promise>}\n */\n getRegionsFromCompanies(companies): Promise {\n return this.filterService.getRegionsFromCompanies(companies);\n }\n\n /**\n * Returns the names of the departments belonging to the companies selected\n * @param companies array of string id\n * @return {Promise>}\n */\n getDepartmentsFromCompanies(companies): Promise {\n return this.filterService.getDepartmentsFromCompanies(companies);\n }\n\n /**\n * Return an array formated for selectboxes\n * [ {\n * displayName: string,\n * value: string\n * }, ..\n * ]\n * @param array of string\n */\n formatArrayForSelectbox(array) {\n return array.map(elem => {\n return {\n displayName: elem,\n value: elem,\n };\n });\n }\n\n getFluidsFromCompanies(companies): Promise {\n return this.energyService.getFluidsAvailableForCompanies(companies);\n }\n\n /**\n * Returns array for selectbox with name in French and value in short English term\n * @param fluidsArray: array of short English fluids names. ex: [\"elec\", \"gaz\"]\n */\n formatFluidSelectbox(fluidsArray) {\n return fluidsArray.map(fluid => {\n return {\n name: this.energyService.energyFullText(fluid),\n value: fluid,\n };\n });\n }\n\n /** ------ HTML functions to display companies & sites ------- **/\n\n /**\n * Returns the companies that are currently selected in the selectbox.\n * If the rule applies to all companies, it means there is no filter.\n * So the current selection is actually empty - fill the selectbox with all the user's companies\n * @param ruleBlock\n * @return {string[]}\n */\n getCompaniesSelectedForSelectBox(): string[] {\n if (this.ruleBlock.rule.companies.length === this.allCompanies.length) {\n return [];\n } else {\n return clone(this.ruleBlock.companiesSelected); // clone because the \"onCompanyAdded\" modifies this list adequatly\n }\n }\n\n /**\n * Return the list of available companies to display in the selectbox\n * Specif case: when the ruleblock targets all the companies, it means no filter is applied yet.\n * Hence, all companies must be available for selection in this specific case\n * @return {Company[]}\n */\n getAvailableCompaniesForSelectbox(): Company[] {\n if (this.ruleBlock.rule.companies.length === this.allCompanies.length) {\n return this.allCompanies;\n }\n return this.getAvailableCompanies();\n }\n\n /**\n * Returns the companies that need to be displayed in tags.\n * If the rule applies to all companies, it means there is no filter.\n * So the current selection is actually empty - display none in tags\n * @return {Company[]}\n */\n getCompaniesSelectedForTags(): Company[] {\n if (this.ruleBlock.rule.companies.length === this.allCompanies.length && this.allCompanies.length > 1) {\n return [];\n } else {\n return this.ruleBlock.companiesSelected.reduce((memo, companyId) => {\n const item = this.allCompanies.find(y => y._id === companyId);\n if (item) {\n memo.push(item);\n }\n return memo;\n }, []);\n }\n }\n\n getOrganizationForTag(ruleCategoryPerOrga) {\n return ruleCategoryPerOrga.organization ? [ruleCategoryPerOrga.organization] : [];\n }\n\n getOrganizationSelectedForSelectbox(ruleCategoryPerOrga) {\n return ruleCategoryPerOrga.organization ? [ruleCategoryPerOrga.organization] : [];\n }\n\n getTextForAddRuleBtn() {\n return 'Combiner avec une règle supplémentaire';\n }\n\n addBorderToRule(index) {\n return index > 0 ? 'border' : '';\n }\n\n onLocalisationChange(value: string, rule, index) {\n const oldValue = this.localisationsSelected[index];\n if (oldValue && oldValue !== value && rule) {\n rule[oldValue] = [];\n }\n if (value) {\n this.localisationsSelected[index] = value;\n }\n this.onFilterChanged();\n }\n\n getRuleLocalisationType(rule) {\n const type = this.localisationTypes.find(localisation => {\n return rule[localisation.value] && rule[localisation.value].length;\n });\n if (type) {\n return type.value;\n }\n return '';\n }\n\n /** ----- Pagination for the rule block ----- */\n\n /**\n * Returns false if all the companies are already used in a rule\n * @return {boolean}\n */\n hasAvailableCompanies() {\n return this.getAvailableCompanies().length;\n }\n\n getTooltipVisibility() {\n return this.displayInfoMessage ? 'visible' : 'not-visible';\n }\n\n hasOneRuleEmpty() {\n // if the rule hasn't been created yet\n if (!this.ruleBlock || !this.ruleBlock.rule || !this.ruleBlock.rule.rules.length) {\n return false;\n } else {\n const hasOneRuleEmpty = this.ruleBlock.rule.rules.some(r => {\n return this.isRuleEmpty(r);\n });\n return hasOneRuleEmpty;\n }\n }\n\n isRuleEmpty(rule) {\n let isEmpty = true;\n if (\n !rule.regions.length &&\n !rule.sites.length &&\n !rule.departments.length &&\n !rule.cities.length &&\n !rule.natures.length &&\n !rule.energies.length &&\n !rule.subnatures.length &&\n !rule.routingReferences.length\n ) {\n if (!rule.categories.length) {\n return true;\n } else {\n rule.categories.forEach(catPerOrga => {\n if (!catPerOrga.organization || !catPerOrga.items.length) {\n return true;\n } else {\n isEmpty = false;\n }\n });\n }\n } else {\n isEmpty = false;\n }\n return isEmpty;\n }\n\n deleteEmptyRules(rules) {\n return rules.reduce((rulesNotEmpty, currentRule) => {\n if (!this.isRuleEmpty(currentRule)) {\n rulesNotEmpty.push(currentRule);\n }\n return rulesNotEmpty;\n }, []);\n }\n\n /**\n * Sweet alerts when something went wrong\n * @param msg_code\n */\n private getSwalMsg(msgCode) {\n const messages = {\n error_getSitesFromRule: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des sites.',\n 'error',\n ],\n error_getSitesProperties: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des natures.',\n 'error',\n ],\n error_getFluidsForCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des fluides.',\n 'error',\n ],\n error_getRegionsFromCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des régions.',\n 'error',\n ],\n error_getDepartmentsFromCompanies: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des départements.',\n 'error',\n ],\n error_getCitiesList: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des villes.',\n 'error',\n ],\n error_getCompaniesList: [\n 'Toutes nos excuses',\n 'Une erreur est survenue pendant le chargement des entreprises.',\n 'error',\n ],\n };\n\n if (messages[msgCode]) {\n Swal.fire(messages[msgCode][0], messages[msgCode][1], messages[msgCode][2]);\n } else {\n Swal.fire(\n 'Toutes nos excuses',\n 'Une erreur inconnue est survenue. Merci de réessayer ultérieurement.',\n 'error'\n );\n }\n }\n\n /**\n * Get the list of PDLs that the user can access to\n * Formate PDLs in order to access to it and to display it\n */\n getRoutingReferencesFromSites(sites: any[]) {\n const routingReferences = [];\n sites.forEach(site => {\n site.routingReferences.forEach(routingReference => {\n const formattedRoutingReference = {\n ...routingReference,\n displayName: `${routingReference.reference} - ${site.complement}`,\n idCompare: `${routingReference._id}-${site._id}`,\n };\n routingReferences.push(formattedRoutingReference);\n });\n });\n return routingReferences;\n }\n\n /**\n * Set routingReference for selectbox\n * Make selectbox ready\n */\n setRoutingReferencesForSelectbox() {\n this.ruleBlock.isReady.routingReferencesSelectbox = false;\n this.ruleBlock.selectboxes.routingReferences = this.allRoutingReferencesFormatted;\n this.ruleBlock.isReady.routingReferencesSelectbox = true;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvZGF0YS1zY29wZS1maWx0ZXItcmVhZG9ubHkvZGF0YS1zY29wZS1maWx0ZXItcmVhZG9ubHkuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport * as moment from 'moment';\n\ninterface ScopeFilter {\n dateStart?: string;\n dateEnd?: string;\n energyTypes?: string | string[];\n sites?: string | string[];\n regions?: string | string[];\n categories?: string | string[];\n routingreferences?: string | string[];\n sitesStatus?: string;\n routingreferencesStatus?: string;\n customFilter?: string;\n}\n\n@Component({\n selector: 'ga-data-scope-filter-readonly',\n templateUrl: './data-scope-filter-readonly.component.html',\n styleUrls: ['./data-scope-filter-readonly.component.scss'],\n providers: [],\n})\nexport class DataScopeFilterReadonlyComponent implements OnInit {\n private _scope: ScopeFilter = {};\n @Input()\n set scope(scope: ScopeFilter) {\n this._scope = scope;\n this.getScopeDisplayValues();\n }\n get scope(): ScopeFilter {\n return this._scope;\n }\n\n scopeDisplay: Array<{\n title: string;\n value: string;\n }> = [];\n\n constructor(private filterService: FilterService) {}\n\n ngOnInit() {}\n\n async getScopeDisplayValues() {\n try {\n const scope = Object.assign({}, this.scope, { energies: this.scope.energyTypes });\n const result = await this.filterService.getScopeFilterDisplayValues(scope);\n const scopeValues = result.data;\n\n this.scopeDisplay = [];\n this.handleDates(scopeValues);\n this.handleValueList(scopeValues.energies, 'Énergies');\n this.handleValueList(scopeValues.sites, 'Sites');\n this.handleValueList(scopeValues.regions, 'Régions');\n this.handleValueList(scopeValues.categories, 'Catégories');\n this.handleValueList(scopeValues.routingreferences, 'PDLs');\n this.handleValue(scopeValues.sitesStatus, 'Status des sites');\n this.handleValue(scopeValues.routingreferencesStatus, 'Status des PDLs');\n this.handleValue(scopeValues.customFilter, 'Filtre personnalisé');\n } catch (err) {\n this.scopeDisplay = [];\n }\n }\n\n private handleDates(scope) {\n let start = null;\n let end = null;\n if (scope.dateStart) {\n start = moment(scope.dateStart).format('MMMM YYYY');\n }\n if (scope.dateEnd) {\n end = moment(scope.dateEnd).format('MMMM YYYY');\n }\n if (start || end) {\n if (start && end) {\n this.scopeDisplay.push({\n title: 'Période',\n value: `De ${start} à ${end}`,\n });\n } else if (start) {\n this.scopeDisplay.push({\n title: 'Date de début',\n value: `${start}`,\n });\n } else if (end) {\n this.scopeDisplay.push({\n title: 'Date de fin',\n value: `${end}`,\n });\n }\n }\n }\n\n private handleValue(value, title) {\n if (value) {\n this.scopeDisplay.push({\n title,\n value,\n });\n }\n }\n\n private handleValueList(values, title) {\n if (values && Array.isArray(values) && values.length) {\n this.scopeDisplay.push({\n title,\n value: values.join('
'),\n });\n }\n }\n}\n","export default \".form-control {\\n margin-top: 43px;\\n font-size: 12px;\\n border-radius: 5px;\\n border: 1px solid rgba(0, 0, 0, 0.15);\\n color: #495057;\\n width: 100%;\\n position: relative;\\n right: 0;\\n padding: 0.5rem 0.75rem;\\n height: 33px;\\n background-color: white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLHFDQUFBO0VBQ0EsY0FBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFFBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVycy9kYXRlLWZpbHRlci9kYXRlLWZpbHRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWNvbnRyb2wge1xuICAgIG1hcmdpbi10b3A6IDQzcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICByaWdodDogMDtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgICBoZWlnaHQ6IDMzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4iLCIuZm9ybS1jb250cm9sIHtcbiAgbWFyZ2luLXRvcDogNDNweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gIGhlaWdodDogMzNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport * as moment from 'moment';\nimport { PartialObserver } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'ga-date-filter',\n templateUrl: './date-filter.component.html',\n styleUrls: ['./date-filter.component.scss'],\n})\nexport class DateFilterComponent implements OnInit {\n @Output() updateDate: EventEmitter = new EventEmitter();\n\n @Input() set currentValue(value: string) {\n if (this.dateControl && value !== this.dateControl.value) {\n this.dateControl.setValue(value);\n }\n }\n\n @Input() minDate: string;\n @Input() maxDate: string;\n\n dateControl = new FormControl();\n value: any;\n\n constructor() {}\n ngOnInit() {\n const observer: PartialObserver = {\n next: value => {\n this.validateMinMaxFromKeys(value);\n this.updateDate.emit(value);\n },\n };\n this.dateControl.valueChanges.pipe(debounceTime(300)).subscribe(observer);\n }\n\n private validateMinMaxFromKeys(value: string) {\n if (moment(value).isAfter(moment(this.maxDate))) {\n this.currentValue = this.maxDate;\n }\n if (moment(value).isBefore(moment(this.minDate))) {\n this.currentValue = this.minDate;\n }\n }\n}\n","export default \".action-btn {\\n text-align: center;\\n margin-bottom: 15px;\\n}\\n.action-btn button {\\n border-radius: 50px !important;\\n margin-top: 15px;\\n margin-inline: 15px;\\n padding-top: 17px;\\n height: 50px;\\n width: 17%;\\n}\\n.action-btn .excel-icon {\\n position: relative;\\n top: -12px;\\n -webkit-box-flex: 0;\\n flex-grow: 0;\\n width: 40px;\\n height: 40px;\\n width: 40px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n}\\n.action-btn .citron-icon {\\n position: relative;\\n top: -10px;\\n background-color: white;\\n}\\n.action-btn .search-icon {\\n -webkit-box-flex: 0;\\n flex-grow: 0;\\n width: 20px;\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n}\\n.action-btn .action-btn__text {\\n margin-left: 10px;\\n text-transform: uppercase;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvZm9sbG93dXAtZmlsdGVyL2ZvbGxvd3VwLWZpbHRlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVycy9mb2xsb3d1cC1maWx0ZXIvZm9sbG93dXAtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7QUNGSjtBRElJO0VBQ0ksOEJBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtBQ0ZSO0FES0k7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtVQUFBLFlBQUE7RUFDQSxXQUFBO0VFbkJKLFlGb0JxQjtFRW5CckIsV0ZtQjJCO0VFbEIzQiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx1QkZhNkI7RUVUN0IsaUVBQUE7VUFBQSx5REFBQTtBRFlSO0FEQUk7RUFFSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSx1QkFBQTtBQ0NSO0FERUk7RUFDSSxtQkFBQTtVQUFBLFlBQUE7RUFDQSxXQUFBO0VFaENKLFlGaUNxQjtFRWhDckIsV0ZnQzJCO0VFL0IzQiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx1QkYwQjZCO0VFdEI3QixrRUFBQTtVQUFBLDBEQUFBO0FENEJSO0FESEk7RUFDSSxpQkFBQTtFQUNBLHlCQUFBO0FDS1IiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL2ZvbGxvd3VwLWZpbHRlci9mb2xsb3d1cC1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5hY3Rpb24tYnRuIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgbWFyZ2luLWlubGluZTogMTVweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDE3cHg7XG4gICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgd2lkdGg6IDE3JTtcbiAgICB9XG5cbiAgICAuZXhjZWwtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiAtMTJweDtcbiAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgQGluY2x1ZGUgc3ZnSWNvbig0MHB4LCA0MHB4LCB3aGl0ZSwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fZXhjZWwuc3ZnJyk7XG4gICAgfVxuXG4gICAgLmNpdHJvbi1pY29uIHtcbiAgICAgICAgQGV4dGVuZCAuY2l0cm9uLWljb247XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiAtMTBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pY29uIHtcbiAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgQGluY2x1ZGUgc3ZnSWNvbigyMHB4LCAyMHB4LCB3aGl0ZSwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fc2VhcmNoLnN2ZycpO1xuICAgIH1cblxuICAgIC5hY3Rpb24tYnRuX190ZXh0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxufVxuIiwiLmFjdGlvbi1idG4ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4uYWN0aW9uLWJ0biBidXR0b24ge1xuICBib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIG1hcmdpbi1pbmxpbmU6IDE1cHg7XG4gIHBhZGRpbmctdG9wOiAxN3B4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIHdpZHRoOiAxNyU7XG59XG4uYWN0aW9uLWJ0biAuZXhjZWwtaWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMTJweDtcbiAgZmxleC1ncm93OiAwO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogNDBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2V4Y2VsLnN2Z1wiKTtcbn1cbi5hY3Rpb24tYnRuIC5jaXRyb24taWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uYWN0aW9uLWJ0biAuc2VhcmNoLWljb24ge1xuICBmbGV4LWdyb3c6IDA7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fc2VhcmNoLnN2Z1wiKTtcbn1cbi5hY3Rpb24tYnRuIC5hY3Rpb24tYnRuX190ZXh0IHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { saveAs } from 'file-saver';\nimport _ = require('lodash');\nimport Swal from 'sweetalert2';\n\n// interfaces\nimport { ScopeFilterConfig } from 'app/shared/components/filters/scope-filter/scope-filter.interface';\nimport {\n OptionValueGroup,\n QueryFilter,\n QueryFilterRoutingRef,\n QueryFilterVeh,\n} from '../scope-filter/scope-filter.interface';\n\n// services\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { FollowupFilterService } from './followup-filter.service';\n\n// components\nimport { RoutingReferenceScopeFilterComponent } from '../scope-filter/routing-reference/routing-reference-scope-filter.component';\nimport { VehicleScopeFilterComponent } from '../scope-filter/vehicle/vehicle-scope-filter.component';\n\n@Component({\n selector: 'ga-followup-filter',\n templateUrl: './followup-filter.component.html',\n styleUrls: ['./followup-filter.component.scss'],\n providers: [FollowupFilterService],\n})\nexport class FollowupFilterComponent implements OnInit {\n public shownButtons = {\n search: true,\n exportDT: false,\n };\n public isExportingDT = false;\n\n /**\n * ------------\n * INPUTS\n * ------------\n */\n\n /**\n * Accepted fluids that can be displayed.\n */\n private _fluidsAccepted: string[] = [];\n @Input()\n set fluidsAccepted(values: string[]) {\n this._fluidsAccepted = Array.from(values);\n }\n get fluidsAccepted() {\n return this._fluidsAccepted;\n }\n\n /**\n * Accepted fuel products that can be displayed.\n */\n private _fuelTypesAvailable: string[] = [];\n @Input()\n set fuelTypesAvailable(values: string[]) {\n this._fuelTypesAvailable = Array.from(values);\n }\n get fuelTypesAvailable() {\n return this._fuelTypesAvailable;\n }\n\n /**\n * Last used and valid params\n */\n private params: Params;\n\n /** Date can be either yearly or a custom period with a start and end.*/\n @Input() isDateCustomisable = true;\n\n /** Used to filter the accepted fluids. Eg: 'energy' or 'water'. */\n @Input() fluidsCategory: string;\n\n /** Used to diabled reasearch button */\n @Input() isLoading: boolean;\n\n /**\n * Boolean to indicate which set of elements must be displayed in the filter.\n * 2 different sets for now: routing references VS vehicles.\n */\n @Input() isRoutingReferenceScope = true;\n\n /**\n * Get the filters configuration obtained in the child component\n */\n @Input() filtersConfig: ScopeFilterConfig;\n\n @Input()\n set showSearchButton(value: boolean) {\n this.shownButtons.search = value;\n }\n @Input()\n set showExportDTButton(value: boolean) {\n this.shownButtons.exportDT = value;\n }\n\n /**\n * ------------\n * OUTPUTS\n * ------------\n */\n\n /**\n * Event emitted each time an element is changed inside the filter\n */\n @Output() filterChange: EventEmitter = new EventEmitter();\n\n /**\n * Holds the options values selected in the filter\n */\n filter: QueryFilterVeh | QueryFilterRoutingRef = null;\n filterComponent: VehicleScopeFilterComponent | RoutingReferenceScopeFilterComponent;\n\n @ViewChild(VehicleScopeFilterComponent, { static: false }) scopeFilterVeh: VehicleScopeFilterComponent;\n @ViewChild(RoutingReferenceScopeFilterComponent, { static: false })\n scopeFilterRoutingRef: RoutingReferenceScopeFilterComponent;\n\n constructor(\n private filterService: FilterService,\n private followupFilterService: FollowupFilterService,\n private exportService: ExportService\n ) {}\n\n ngOnInit() {}\n\n /**\n * Update the filter selected value.\n * @param {QueryFilterVeh | QueryFilterRoutingRe} filter\n */\n updateFilter(filter: QueryFilterVeh | QueryFilterRoutingRef): void {\n this.filter = filter;\n }\n\n /**\n * After filter initialized, update filter member and emit search.\n * @param {QueryFilterVeh | QueryFilterRoutingRef} filter\n */\n updateFilterAndSearch(filter: QueryFilterVeh | QueryFilterRoutingRef): void {\n this.filterComponent = this.isRoutingReferenceScope ? this.scopeFilterRoutingRef : this.scopeFilterVeh;\n this.updateFilter(filter);\n this.search();\n }\n\n /**\n * Launch the filter search by updating the url query params.\n */\n public search(): void {\n const params = this.followupFilterService.convertFilterIntoQueryParams(this.filter);\n if (!_.isEqual(params, this.params)) {\n this.params = params;\n\n this.filterService.updateRouteParams(this.params, '');\n }\n }\n\n /**\n * Launch the filter search in the parent component.\n * @param {QueryFilterVeh | QueryFilterRoutingRef} filter\n */\n public emitFilter(filter: QueryFilterVeh | QueryFilterRoutingRef) {\n this.filterComponent = this.isRoutingReferenceScope ? this.scopeFilterRoutingRef : this.scopeFilterVeh;\n this.updateFilter(filter);\n this.filterChange.emit(this.filter);\n }\n\n /**\n * @returns {boolean} true if at least one fluid in research, false otherwise\n */\n public hasFluidsSelected(): boolean {\n return this.getFluidsCount() > 0;\n }\n\n /**\n * @returns {boolean} true is search button need to be disabled, false otherwise.\n */\n public areButtonsDisabled(): boolean {\n const isLoading = this.isLoading || this.isExportingDT;\n\n const hasDataForCurrentFilter = this.filterComponent && this.filterComponent.hasOptionsSelected();\n const hasEnergies = this.hasFluidsSelected();\n\n return !hasDataForCurrentFilter || !hasEnergies || isLoading;\n }\n\n /************************\n * Used by hosts\n ************************/\n\n /**\n * Returns the current selected element among the top filter elements.\n */\n public getMainFilterSelected(): OptionValueGroup {\n if (this.filterComponent) {\n return this.filterComponent.getMainFilterSelected();\n }\n return null;\n }\n\n /**\n * Returns the selected values inside the current top filter element selected.\n */\n public getFilters() {\n if (this.filterComponent) {\n return this.filterComponent.mainFilterSelectedValues;\n }\n return [];\n }\n\n /**\n * @returns {number} number of energies / fuelTypes selected\n */\n public getFluidsCount(): number {\n const queryFilter = this.isRoutingReferenceScope ? 'energies' : 'fuelTypes';\n\n if (!this.filter || !this.filter[queryFilter]) {\n return 0;\n }\n return this.filter[queryFilter].split(',').length;\n }\n\n public getExportDTFile(): void {\n const excelName = 'Déclaration DT.xlsx';\n const queryStringParams = this.filterService.formatQueryToUrl(this.filter);\n const excelUrl = `/api/export/excel/consumptions/sites-zones${queryStringParams}`;\n\n this.isExportingDT = true;\n this.exportService.getFile(excelUrl).subscribe(\n file => {\n saveAs(file, excelName);\n this.isExportingDT = false;\n },\n err => {\n this.isExportingDT = false;\n Swal.fire(\n 'Toutes nos excuses',\n \"Une erreur s'est produite lors de l'export de données. Merci de réessayer.\",\n 'error'\n );\n }\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Params } from '@angular/router';\nimport _ = require('lodash');\n\n// interfaces\nimport { QueryFilter, QueryFilterRoutingRef, QueryFilterVeh } from '../scope-filter/scope-filter.interface';\n\n// services\nimport { FilterAlias } from 'app/shared/services/filter/filter.interface';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport moment = require('moment');\n\n/**\n * This service is used for any scope filter objects.\n */\n@Injectable()\nexport class FollowupFilterService {\n constructor(private filterService: FilterService) {}\n\n /************************\n * Query into url params convertion functions\n ************************/\n\n /**\n * Convert the filter params into url params. It will convert filter fields names into shortened ones and remove unnecessary variables\n * @param {QueryFilterVeh | QueryFilterRoutingRef | QueryFilter} filter\n * @returns {Params}\n */\n public convertFilterIntoQueryParams(filter: QueryFilterVeh | QueryFilterRoutingRef | QueryFilter): Params {\n const params: Params = {};\n\n // else : convert with the aliases in a for loop\n this.convertFilterValuesIntoQueryParams(params, filter);\n\n // Dates if date start month = jan and date end = date start + 11 months = YEAR, or personalized\n this.convertFilterDatesIntoQueryParams(params, filter);\n\n // Remove the legal entity params if the id is equal to the session's company id\n if (params.hasOwnProperty('le') && params.le === this.filterService.sessionCompany._id) {\n delete params.le;\n }\n\n if (filter.hasOwnProperty('fuelTypes')) {\n delete params.e;\n }\n\n return params;\n }\n\n /**\n * Format the dates params. If the period correspond in an entire year (January to Decembre to the same year),\n * then it will consider it's a year params.\n * In other case, it will simply return the initial dates into params.\n * @param {Params} params\n * @param {QueryFilterVeh | QueryFilterRoutingRef | QueryFilter} filter\n * @returns {Params}\n */\n public convertFilterDatesIntoQueryParams(\n params: Params,\n filter: QueryFilterVeh | QueryFilterRoutingRef | QueryFilter\n ): Params {\n if (filter.dateStart === '' || filter.dateEnd === '') {\n return params;\n }\n\n const ds = moment(filter.dateStart);\n const de = moment(filter.dateEnd);\n\n // If it's an entire year, from january to december, it will use the year params instead of both dateEnd and dateStart.\n if (ds.month() === 0 && de.month() === 11 && ds.year() === de.year()) {\n params.year = ds.year();\n delete params.ds;\n delete params.de;\n } else {\n params.ds = ds.format(this.filterService.urlDateFormat);\n params.de = de.format(this.filterService.urlDateFormat);\n }\n\n return params;\n }\n\n /**\n * Convert the params in the filter into params for the url params with shortened key names.\n * It don't take any values that don't fit the authorized key list and empty values\n * @param {Params} params\n * @param {QueryFilterVeh | QueryFilterRoutingRef | QueryFilter} filter\n * @returns {Params}\n */\n public convertFilterValuesIntoQueryParams(\n params: Params,\n filter: QueryFilterVeh | QueryFilterRoutingRef | QueryFilter\n ): Params {\n for (const key in filter) {\n if (filter[key] !== '') {\n const alias = key as FilterAlias;\n if (this.filterService.getParamAlias(alias)) {\n params[this.filterService.getParamAlias(alias)] = filter[alias];\n }\n }\n }\n\n // Exception for the perimeter. If it's set at 'all', it will consider if as useless\n if (params.hasOwnProperty('p') && params.p === 'all') {\n delete params.p;\n }\n\n return params;\n }\n}\n","export default \".compare-bloc-search-line {\\n font-size: 12px;\\n width: 100%;\\n position: relative;\\n}\\n.compare-bloc-search-line p {\\n margin-bottom: 0;\\n font-size: 12px;\\n}\\n.compare-bloc-search-line input {\\n border-radius: 5px;\\n border: 1px solid rgba(0, 0, 0, 0.15);\\n color: #495057;\\n width: 100%;\\n position: relative;\\n right: 0;\\n padding: 0.5rem 0.75rem;\\n background-color: white;\\n}\\n.compare-bloc-search-line .search-result {\\n position: absolute;\\n font-size: 12px;\\n right: 0;\\n width: 100%;\\n background-color: white;\\n z-index: 2;\\n border: 1px solid #dfdfdf;\\n max-height: 300px;\\n overflow: auto;\\n}\\n.compare-bloc-search-line .search-result .width-full {\\n width: 100%;\\n}\\n.compare-bloc-search-line .search-result .listOption {\\n width: 100%;\\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\\n color: #495057;\\n position: relative;\\n right: 0;\\n padding: 0.5rem 0.75rem;\\n height: 33px;\\n background-color: white;\\n cursor: pointer;\\n}\\n.compare-bloc-search-line .search-result .listOption:last-child {\\n border-bottom: none;\\n}\\n.compare-bloc-search-line .search-result .listOption:hover {\\n background-color: #fafafa;\\n}\\n.compare-bloc-search-line .search-result .listOption:active {\\n background-color: #f0f0f0;\\n}\\n.compare-bloc-search-line .search-result .alone {\\n font-size: 11.5px;\\n padding: 5px;\\n}\\n.compare-bloc-search-line .search-result .lighter {\\n color: #a5b0c0;\\n}\\n.compare-bloc-search-line .text {\\n line-height: 40px;\\n height: 40px;\\n width: 100%;\\n padding-left: 2.5px;\\n cursor: pointer;\\n background-color: white;\\n text-align: left;\\n border: none;\\n padding-top: 0;\\n padding-bottom: 0;\\n padding-right: 0;\\n}\\n.multipleDisplay p {\\n font-size: 11.5px;\\n}\\n.multipleDisplay:last-child {\\n padding: 5px;\\n}\\n.search-item:hover {\\n cursor: pointer;\\n background-color: #f0f0f0;\\n}\\n.search-item:active {\\n background-color: #f0f0f0;\\n}\\n.no-element {\\n padding: 5px;\\n}\\n.no-element p {\\n font-size: 11.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvbXVsdGlwbGUtYXV0b2NvbXBsZXRlLWZpbHRlci9tdWx0aXBsZS1hdXRvY29tcGxldGUtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL211bHRpcGxlLWF1dG9jb21wbGV0ZS1maWx0ZXIvbXVsdGlwbGUtYXV0b2NvbXBsZXRlLWZpbHRlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGVBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7QUNDSjtBRENJO0VBQ0ksZ0JBQUE7RUFDQSxlQUFBO0FDQ1I7QURFSTtFQUNJLGtCQUFBO0VBQ0EscUNBQUE7RUFDQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLHVCQUFBO0VBQ0EsdUJBQUE7QUNBUjtBREdJO0VBQ0ksa0JBQUE7RUFDQSxlQUFBO0VBQ0EsUUFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtBQ0RSO0FERVE7RUFDSSxXQUFBO0FDQVo7QURHUTtFQUNJLFdBQUE7RUFDQSw0Q0FBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLFFBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtFQUNBLGVBQUE7QUNEWjtBREdZO0VBQ0ksbUJBQUE7QUNEaEI7QURJWTtFQUNJLHlCQUFBO0FDRmhCO0FES1k7RUFDSSx5QkFBQTtBQ0hoQjtBRE1RO0VBQ0ksaUJBQUE7RUFDQSxZQUFBO0FDSlo7QURNUTtFQUNJLGNBQUE7QUNKWjtBRFFJO0VBQ0ksaUJBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLHVCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QUNOUjtBRFdJO0VBQ0ksaUJBQUE7QUNSUjtBRGNJO0VBQ0ksWUFBQTtBQ1pSO0FEaUJJO0VBQ0ksZUFBQTtFQUNBLHlCQUFBO0FDZFI7QURpQkk7RUFDSSx5QkFBQTtBQ2ZSO0FEbUJBO0VBQ0ksWUFBQTtBQ2hCSjtBRGlCSTtFQUNJLGlCQUFBO0FDZlIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL211bHRpcGxlLWF1dG9jb21wbGV0ZS1maWx0ZXIvbXVsdGlwbGUtYXV0b2NvbXBsZXRlLWZpbHRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBwIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICBjb2xvcjogIzQ5NTA1NztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLXJlc3VsdCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGZkZmRmO1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIC53aWR0aC1mdWxsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxpc3RPcHRpb24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5hbG9uZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDExLjVweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICAgICAgfVxuICAgICAgICAubGlnaHRlciB7XG4gICAgICAgICAgICBjb2xvcjogI2E1YjBjMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50ZXh0IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMi41cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbn1cblxuLm11bHRpcGxlRGlzcGxheSB7XG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTEuNXB4O1xuICAgIH1cblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICB9XG59XG5cbi5zZWFyY2gtaXRlbSB7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG4gICAgfVxufVxuXG4ubm8tZWxlbWVudCB7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIHAge1xuICAgICAgICBmb250LXNpemU6IDExLjVweDtcbiAgICB9XG59XG4iLCIuY29tcGFyZS1ibG9jLXNlYXJjaC1saW5lIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSBwIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSBpbnB1dCB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uY29tcGFyZS1ibG9jLXNlYXJjaC1saW5lIC5zZWFyY2gtcmVzdWx0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmb250LXNpemU6IDEycHg7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDI7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZmRmZGY7XG4gIG1heC1oZWlnaHQ6IDMwMHB4O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUgLnNlYXJjaC1yZXN1bHQgLndpZHRoLWZ1bGwge1xuICB3aWR0aDogMTAwJTtcbn1cbi5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUgLnNlYXJjaC1yZXN1bHQgLmxpc3RPcHRpb24ge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgaGVpZ2h0OiAzM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSAuc2VhcmNoLXJlc3VsdCAubGlzdE9wdGlvbjpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5jb21wYXJlLWJsb2Mtc2VhcmNoLWxpbmUgLnNlYXJjaC1yZXN1bHQgLmxpc3RPcHRpb246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSAuc2VhcmNoLXJlc3VsdCAubGlzdE9wdGlvbjphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xufVxuLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSAuc2VhcmNoLXJlc3VsdCAuYWxvbmUge1xuICBmb250LXNpemU6IDExLjVweDtcbiAgcGFkZGluZzogNXB4O1xufVxuLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSAuc2VhcmNoLXJlc3VsdCAubGlnaHRlciB7XG4gIGNvbG9yOiAjYTViMGMwO1xufVxuLmNvbXBhcmUtYmxvYy1zZWFyY2gtbGluZSAudGV4dCB7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDIuNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cblxuLm11bHRpcGxlRGlzcGxheSBwIHtcbiAgZm9udC1zaXplOiAxMS41cHg7XG59XG4ubXVsdGlwbGVEaXNwbGF5Omxhc3QtY2hpbGQge1xuICBwYWRkaW5nOiA1cHg7XG59XG5cbi5zZWFyY2gtaXRlbTpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbn1cbi5zZWFyY2gtaXRlbTphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xufVxuXG4ubm8tZWxlbWVudCB7XG4gIHBhZGRpbmc6IDVweDtcbn1cbi5uby1lbGVtZW50IHAge1xuICBmb250LXNpemU6IDExLjVweDtcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { FilterService } from '../../../services/filter/filter.service';\n\n@Component({\n selector: 'ga-multiple-autocomplete-filter',\n templateUrl: './multiple-autocomplete-filter.component.html',\n styleUrls: ['./multiple-autocomplete-filter.component.scss'],\n providers: [],\n})\nexport class MultipleAutocompleteFilterComponent implements OnInit {\n /**\n * MANDATORY PROPERTIES\n */\n\n // Input ('sites', 'categories', 'regions'...)\n @Input() provider: string = null;\n\n // Input : will be the array data-binded containing the elements the parent wants to use\n @Input() currentValuesSelected: any[] = [];\n\n /**\n * OTHER INPUTS\n */\n\n /*\n * If you want the component to have default values like preselected elements coming from parent\n * Different from currentValuesSelected because it takes an array of values like\n * ['gaz', 'elec'] or ['59eafdfd65g4fd8'] instead of [{value: '', displayName: ''}] and [_id: '', name: '' ...]\n */\n @Input() selectedDefaultValues: any[] = [];\n\n // If you want to provide the component its values yourself from parent (for example the list of sites or categories available)\n @Input() values: any[] = [];\n\n // Handles case were ofter the 'name' to display is 'displayName'. But sometimes for sites for example, its 'complement'.\n @Input() private propertiesToDisplay = ['displayName'];\n @Input() private propertyToCompare = 'value';\n\n // If we want to display more than one property of the values. CSS auto handled\n @Input() subPropertyToDisplay: string = null;\n\n // If we want to match with the search more than the main or sub property (value, _id...)\n @Input() propertiesToMatch: string[] = [];\n\n @Input() disabled = false;\n\n @Input() singleSelect = false;\n\n @Input() placeholder = '';\n\n @Input() hideName = false;\n\n // if hasHighlightedItems is true, sort the options into two list from their boolean isHighlighted\n @Input() hasHighlightedItems = false;\n\n // Event emitting the item selected (not the whole selection)\n @Output() itemSelected: EventEmitter = new EventEmitter();\n\n autocompleteBaseClass = 'autocompleteMultiInput';\n\n showOptionsList = false;\n tempSearch: any = [];\n\n constructor(private filterService: FilterService) {}\n\n ngOnInit() {\n this.autocompleteBaseClass += this.provider;\n\n /**\n * Here is how it works. The mandatory provider element is used to get the values in FilterService\n * ONLY IF the component hasn't been provided values from the parent page. You can either specify values\n * or just provider and the values will come from FilterService\n */\n this.checkProvider(() => {\n this.sortValues();\n\n if (this.selectedDefaultValues.length) {\n this.handleSelectedDefaultValues();\n }\n });\n }\n\n /**\n * Empty currentValuesSelected to show them again later\n */\n public resetCurrentValuesSelected() {\n this.currentValuesSelected = [];\n }\n\n sortValues() {\n if (this.values.length > 1) {\n this.values = this.values.sort((optionA, optionB) => {\n let a = this.getItemDisplayName(optionA);\n let b = this.getItemDisplayName(optionB);\n\n // Make comparaison better without accents and majs if the two aren't null\n // We can sometimes have number here btw\n if (typeof a === 'string' && typeof b === 'string') {\n a = this.removeAccentFromString(a).toLowerCase();\n b = this.removeAccentFromString(b).toLowerCase();\n }\n\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n }\n\n checkProvider(callback) {\n if (this.provider && !this.values.length) {\n this.getProvidedValues()\n .then(response => {\n this.values = response.data;\n return callback();\n })\n .catch(error => {\n this.values = [];\n return callback();\n });\n } else {\n return callback();\n }\n }\n\n getProvidedValues() {\n return this.filterService.getQueryResultByProvider(this.provider);\n }\n\n handleSelectedDefaultValues() {\n const currentValuesSelectedLength = Boolean(this.currentValuesSelected.length);\n\n this.values.forEach(element => {\n /* Quite complicated. Do not make duplicate between selectedDefaultValues and currentValuesSelected in case\n currentValuesSelected already has elements */\n if (\n (this.selectedDefaultValues.includes(element[this.propertyToCompare]) &&\n currentValuesSelectedLength &&\n this.selectedDefaultValues[0] !== this.currentValuesSelected[0][this.propertyToCompare]) ||\n (this.selectedDefaultValues.includes(element[this.propertyToCompare]) && !currentValuesSelectedLength)\n ) {\n this.currentValuesSelected.push(element);\n }\n });\n }\n\n public onInputSelected(search: string) {\n if (!this.disabled) {\n this.showOptionsList = true;\n this.tempSearch = [];\n\n if (search === '') {\n this.tempSearch = this.values.slice();\n this.filterTempSearchByCurrentValuesSelected();\n } else {\n this.updateTempSearch(search);\n }\n }\n }\n\n private getPropertiesToMatch() {\n // First obviously we want the property displayed like \"displayName or complement...\"\n let propertiesToMatch = Array.from(this.propertiesToDisplay);\n\n // Then if there exists a subProperty displayed, we want to add it to the matching function\n if (this.subPropertyToDisplay) {\n propertiesToMatch.push(this.subPropertyToDisplay);\n }\n\n // Finally it there are more properties to match provided, we add them to the matching function\n if (this.propertiesToMatch && this.propertiesToMatch.length) {\n propertiesToMatch = propertiesToMatch.concat(this.propertiesToMatch);\n }\n\n return propertiesToMatch;\n }\n\n removeAccentFromString(str) {\n if (typeof str === 'string') {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n\n return str;\n }\n\n private valueMatchesProperties(search, option, propertiesToMatch) {\n let exists = false;\n\n search = this.removeAccentFromString(search.toLowerCase());\n\n propertiesToMatch.forEach(property => {\n if (option[property]) {\n const value = this.removeAccentFromString(option[property].toString().toLowerCase());\n\n if (!exists && value.includes(search)) {\n exists = true;\n }\n }\n });\n\n return exists;\n }\n\n updateTempSearch(search: string) {\n const propertiesToMatch = this.getPropertiesToMatch();\n\n this.tempSearch = this.values.filter(option => {\n return this.valueMatchesProperties(search, option, propertiesToMatch);\n });\n\n this.filterTempSearchByCurrentValuesSelected();\n }\n\n filterTempSearchByCurrentValuesSelected() {\n // propertyToCompare = '_id' for example\n // tagsSelected is an array filled with all the selected items' _id\n const tagsSelected = [];\n this.currentValuesSelected.forEach(element => {\n tagsSelected.push(element[this.propertyToCompare]);\n if (element.items && element.items.length) {\n element.items.forEach(item => {\n if (typeof item === 'string') {\n tagsSelected.push(item);\n } else if (typeof item === 'object' && item[this.propertyToCompare]) {\n tagsSelected.push(item[this.propertyToCompare]);\n }\n });\n }\n });\n\n // Keep in the temp search all the elements that are not selected\n this.tempSearch = this.tempSearch.filter(searchElement => {\n // to remove an element from the list, check its property 'propertyToCompare', ex: '_id'\n // return true if the element isn't selected yet --> the element stays in the search items\n const value = searchElement[this.propertyToCompare];\n return !tagsSelected.includes(value);\n });\n }\n\n public onOptionClicked(optionSelected: any) {\n this.showOptionsList = false;\n if (this.singleSelect) {\n this.currentValuesSelected.splice(0, this.currentValuesSelected.length);\n this.currentValuesSelected.push(optionSelected);\n } else {\n this.currentValuesSelected.push(optionSelected);\n }\n this.itemSelected.emit(optionSelected);\n }\n\n public getItemDisplayName(item: any): string {\n return this.propertiesToDisplay\n .map(property => item[property])\n .filter(value => !!value)\n .join(' - ');\n }\n\n getItemSubDisplayName(item) {\n return item[this.subPropertyToDisplay];\n }\n\n getNameFromProvider() {\n let name = '';\n\n switch (this.provider) {\n case 'energies':\n name = 'Énergies';\n break;\n\n case 'water':\n name = 'Eau';\n break;\n\n case 'sites':\n name = 'Sites';\n break;\n\n case 'categories':\n name = 'Catégories';\n break;\n\n case 'regions':\n name = 'Régions';\n break;\n\n case 'companies':\n name = 'Entreprises';\n break;\n\n case 'contracts':\n name = 'Contrats';\n break;\n\n default:\n break;\n }\n\n return name;\n }\n\n getLighterClass(searchItem) {\n return !this.hasHighlightedItems ? ' ' : searchItem.isHighlighted ? ' ' : 'lighter';\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvbnVtYmVyLWZpbHRlci9udW1iZXItZmlsdGVyLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.scss'],\n})\nexport class NumberFilterComponent implements OnInit {\n @Output() updateElement: EventEmitter = new EventEmitter();\n @Input() currentValue = '';\n\n @Input() minValue = 0;\n @Input() maxValue: number = null;\n @Input() stepValue = 1;\n\n constructor() {}\n\n ngOnInit() {}\n\n updateCurrentValue(value) {\n this.updateElement.emit(value);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Params } from '@angular/router';\n\n// interfaces\nimport { OptionValue } from 'app/shared/models/filter-config.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { FilterAlias } from 'app/shared/services/filter/filter.interface';\nimport { Filter, FiltersOptions, OptionValueGroup, QueryFilterRoutingRef } from '../scope-filter.interface';\n\n// components\nimport { ScopeFilterComponent } from '../scope-filter.component';\n\n// services\nimport { ScopeFilterService } from '../scope-filter.service';\n\nexport interface RoutingReferenceOption extends RoutingReference {\n siteId: string;\n zoneId?: string;\n displayName: string;\n idCompare: string;\n}\n\nexport interface FilterRoutingRef extends Filter {\n energies: OptionValue[];\n categories: OptionValue[];\n zones: string[];\n}\n\ninterface FiltersOptionsRoutingRef extends FiltersOptions {\n categories: OptionValue[];\n}\n\n@Component({\n selector: 'ga-routing-reference-scope-filter',\n templateUrl: '../scope-filter.component.html',\n styleUrls: ['../scope-filter.component.scss'],\n providers: [ScopeFilterService],\n})\nexport class RoutingReferenceScopeFilterComponent\n extends ScopeFilterComponent\n implements OnInit {\n /**\n * @override\n * Name of the entity expected inside the query.\n */\n entityFilterName = 'routingReferences';\n\n /**\n * @override\n * Filter alias for URL of property\n */\n entityPropertyAlias: FilterAlias = 'routingReferencesItems';\n\n /**\n * ------\n * Fluid types\n * ------\n */\n\n /**\n * @override\n * True when a conversion is processed if multiple fuel types are selected.\n */\n hasConversionOnMultipleFluids = true;\n\n /**\n * @override\n * Error message to display when zero enerrgy is selected\n */\n missingFluidTypeMessage = 'Vous devez sélectionner au moins une énergie';\n\n /**\n * @override\n * Message explaning the necessity for a conversion when multiple energies are used\n * */\n multipleFluidTypesMessage =\n 'Afin de comparer deux fluides ayant une unité usuelle différente, nous convertissons les mesures en kWhep (énergie primaire)';\n\n /**\n * @override\n * Name to translate and display above the filter of available fluids */\n fluidTypesName = 'energies';\n\n /**\n * -------\n * Top filter\n * -------\n */\n\n /**\n * @override\n * Elements for the top filter part. Name and value of each filter type. */\n topFilterElements: OptionValueGroup[] = [\n {\n displayName: 'Tous les sites',\n value: 'all',\n },\n {\n displayName: 'Par site ',\n totalGroupName: 'Total du site',\n value: 'sites',\n tags: {\n textProperty: 'complement',\n subTextProperty: 'googleAddress',\n idProperty: '_id',\n },\n },\n {\n displayName: 'Par région',\n totalGroupName: 'Total de la région',\n value: 'regions',\n tags: {\n textProperty: 'displayName',\n idProperty: '_id',\n },\n },\n {\n displayName: 'Par catégorie de sites',\n totalGroupName: 'Total de la catégorie',\n value: 'categories',\n tags: {\n textProperty: 'displayName',\n },\n },\n {\n displayName: 'Par numéro de PDL',\n totalGroupName: 'Total du PDL',\n value: this.entityFilterName,\n tags: {\n textProperty: 'displayName',\n idProperty: 'idCompare',\n },\n },\n {\n displayName: 'Personnalisé',\n totalGroupName: 'Personnalisé',\n value: 'custom-filters',\n },\n ];\n\n /** @override\n * Options available for each top filter element. */\n filtersOptions: FiltersOptionsRoutingRef = {\n sites: [],\n entities: [],\n categories: [],\n regions: [],\n };\n\n /**\n * ------\n * Global filter\n * ------\n */\n\n /** Filter holding the selected values */\n filter: FilterRoutingRef;\n\n /**\n * @override\n * List of permitted url params for RRef\n */\n permittedParams = ['le', 'year', 'ds', 'de', 's', 'a', 'c', 'p', 'ct', 'e', 'r', 'cf'];\n\n /**\n * @override\n * Fluids selected inside the filter. Property depends on the entity. */\n getFilterFluidTypes(): OptionValue[] {\n return this.filter.energies;\n }\n\n /**\n * @override\n * Fluid params to get availble years\n */\n get fluidYearsParams(): Params {\n return { fluids: this.fluidTypesAccepted };\n }\n\n /**\n * @override\n * Reset the filter\n * */\n resetFilter(): void {\n this.filter = {\n sites: [],\n energies: [],\n years: {\n dateStart: '',\n dateEnd: '',\n },\n year: '',\n regions: [],\n categories: [],\n companies: [],\n entities: [],\n zones: [],\n customFilter: null,\n };\n }\n\n /**\n * @override\n * Get perimeter displayed name, depending on the selected filter \"sites\" or \"routing references\"\n * @param {OptionValueGroup} perimeter - perimeter to get the display name of\n * @return {string} full display name of the perimeter\n */\n getPerimeterDisplayName(perimeter: OptionValueGroup): string {\n if (perimeter.value === 'all') {\n return perimeter.displayName;\n }\n\n if (this.mainFilterSelected !== 'routingReferences') {\n return `Sites ${perimeter.displayName}`;\n }\n return `PDLs ${perimeter.displayName}`;\n }\n\n /**\n * ------\n * INIT ROUTING REFERENCES DATA\n * ------\n */\n\n /**\n * @override\n * Init the fluids: must be in the selected companies' contracts + available for this page (energies VS water).\n * Select all fluids by default.\n * @param {Params} params\n */\n async initSelectedItems(selectedItems: string[] = []): Promise {\n // Fluids category prevails on the given accepted fluids to set the accepted fluids\n if (this.fluidsCategory) {\n this.fluidTypesAccepted = this.energyService.getFluidsByCategory(this.fluidsCategory);\n }\n\n // Existing fluids in the selected companies' contracts\n const fluidsFromCompanies = await this.energyService.getFluidsAvailableForCompanies(this.filter.companies);\n\n // Display energies from given companies, included in the accepted energies for the current page.\n // Select all or select the ones on the url params\n const isSingleSelection =\n this.filtersConfig &&\n this.filtersConfig.toggleButtonSelection &&\n this.filtersConfig.toggleButtonSelection.enabled &&\n this.filtersConfig.toggleButtonSelection.selectionType === 'single';\n this.filter.energies = fluidsFromCompanies\n .filter(energy => this.fluidTypesAccepted.includes(energy))\n .map((energy, i) => {\n const energyOption = {\n value: energy,\n displayName: this.energyService.energyFullText(energy),\n selected: false,\n };\n if (isSingleSelection) {\n // If single selection, only select first item\n const itemIndex = selectedItems.length ? selectedItems.indexOf(energyOption.value) : i;\n energyOption.selected = itemIndex === 0;\n return energyOption;\n }\n energyOption.selected = selectedItems.length ? selectedItems.indexOf(energyOption.value) >= 0 : true;\n return energyOption;\n });\n }\n\n /**\n * @override\n * Get sites from companies matching the selected energies\n * Init filter with these values, with clean google address displayed\n */\n async initSites(): Promise {\n // get sites for companies\n const sites = await this.sitesService.getSites({\n companies: this.filter.companies.join(','),\n });\n this.filtersOptions.sites = sites.data;\n\n this.sitesService.createGoogleAddressToDisplay(this.filtersOptions.sites);\n }\n\n /**\n * @override\n * Initialize all filters elements : routing references, sites' categories\n */\n async initEntitiesData(): Promise {\n await Promise.all([this.initRoutingReferences(), this.initCategories()]);\n }\n\n /**\n * Initialize the list of routing references from the populated sites:\n * for each site, add all its routing references and each association routing reference / zone\n */\n initRoutingReferences(): void {\n try {\n const routingReferences = [];\n this.filtersOptions.sites.forEach(site => {\n // Add all PDLs of the site\n site.routingReferences.forEach(routingReference => {\n if (this.fluidTypesAccepted.includes(routingReference.energyType)) {\n const formattedPdl = Object.assign({}, routingReference, {\n siteId: site._id,\n displayName: `${routingReference.reference} - ${site.complement}`,\n idCompare: `${routingReference._id}-${site._id}`,\n });\n routingReferences.push(formattedPdl);\n }\n });\n\n // Add associations PDL-Zone\n if (site.info.diviser) {\n // For each zone\n site.info.batiments.forEach(zone => {\n // For each PDL of the zone\n zone.routingReferences.forEach(routingReference => {\n // Search the PDL object in the site, as zones only contains ID lists\n const search = site.routingReferences.find(x => x._id === routingReference);\n // Add the association if the PDL's energy is accepted\n if (search && this.fluidTypesAccepted.includes(search.energyType)) {\n const formattedPdl = Object.assign({}, search, {\n siteId: site._id,\n zoneId: zone._id,\n displayName: `${search.reference} - ${zone.name} > ${site.complement}`,\n idCompare: `${search._id}-${zone._id}-${site._id}`,\n });\n routingReferences.push(formattedPdl);\n }\n });\n });\n }\n });\n\n // Sort by routing references alphabetical order\n routingReferences.sort((a, b) => {\n if (a.reference < b.reference) {\n return -1;\n }\n if (a.reference > b.reference) {\n return 1;\n }\n return 0;\n });\n\n this.filtersOptions.entities = routingReferences;\n } catch (error) {\n this.filtersOptions.entities = [];\n }\n }\n\n /**\n * Initialize the sites's categories, formated for autocompletion inputs.\n */\n async initCategories(): Promise {\n try {\n const categories = await this.filterService.getCategoriesForAutoCompletionNewFilter(true, {\n companies: this.filter.companies,\n });\n this.filtersOptions.categories = categories.data;\n } catch (error) {\n this.filtersOptions.categories = [];\n }\n }\n\n /**\n * ------\n * COMPONENT INTERACTIONS\n * ------\n */\n\n /**\n * @override\n * Handle params when present.\n * Preselect the site from params.\n * @param {Param} params - router params\n */\n initComponentSetup(params: Params): void {\n this.initComponentCommonSetup(params);\n\n // Energy settings.\n const energies = this.filterService.getParamAliasValues(params, 'energies', this.fluidTypesAccepted);\n this.updateItemsWithTypeFilter('energies', energies);\n\n // RRef\n this.updateFilterByParam(params, 'routingreferences', 'routingReferences', 'entities', 'entities', '_id');\n\n // Categories\n this.updateFilterByParam(params, 'categories', 'categories', 'categories', 'categories', 'value');\n\n // Regions\n this.updateFilterByParam(params, 'regions', 'regions', 'regions', 'regions', 'value');\n\n // Sites\n this.updateFilterByParam(params, 'sites', 'sites', 'sites', 'sites', '_id');\n }\n\n /**\n * @override\n * Create the query from the selected elements inside the filter\n * @returns {QueryFilterRoutingRef} query created\n */\n createQuery(): QueryFilterRoutingRef {\n // empty query filter\n const filter: QueryFilterRoutingRef = this.resetQueryFilter();\n\n // set dates\n this.setFilterDates(filter);\n\n // set energies\n const energiesValues = this.filter.energies.filter(energy => energy.selected).map(energy => energy.value);\n filter.energies = energiesValues.join(',');\n\n // set sites perimeter\n if (!this.disablePerimeter && this.mainFilterSelected !== 'routingreferences') {\n const selectedPerimeter = this.perimeterFilterElements.find(x => x.selected === true);\n if (selectedPerimeter) {\n filter.sitesStatus = selectedPerimeter.value;\n }\n }\n\n // set the query for the current top filter element selected\n switch (this.mainFilterSelected) {\n case 'regions':\n this.mainFilterSelectedValues = this.filter.regions;\n filter.regions = this.filter.regions.map(region => region.value).join(',');\n break;\n\n case 'sites':\n this.mainFilterSelectedValues = this.filter.sites;\n filter.sites = this.filter.sites.map(site => site._id).join(',');\n break;\n\n case 'categories':\n this.mainFilterSelectedValues = this.filter.categories;\n filter.categories = this.filter.categories.map(cat => cat.value).join(',');\n break;\n\n case 'routingReferences':\n const routingReferencesIds = this.filter.entities\n .map(x => {\n if (x.siteId && x.zoneId) {\n return `${x._id}-${x.siteId}-${x.zoneId}`;\n }\n return x._id;\n })\n .join(',');\n\n this.mainFilterSelectedValues = this.filter.entities;\n filter.routingreferences = routingReferencesIds;\n\n if (!this.disablePerimeter) {\n const selectedPerimeter = this.perimeterFilterElements.find(x => x.selected === true);\n if (selectedPerimeter) {\n filter.routingReferencesStatus = selectedPerimeter.value;\n }\n }\n break;\n\n case 'custom-filters':\n if (this.filter.customFilter) {\n this.mainFilterSelectedValues = [this.filter.customFilter];\n }\n\n filter.customFilter =\n (this.filter.customFilter && this.filter.customFilter.value) || this.customFilterId || null;\n\n break;\n\n case 'all':\n default:\n this.mainFilterSelected = 'all';\n this.mainFilterSelectedValues = [this.topFilterElements.find(elem => elem.value === 'all')];\n\n break;\n }\n\n this.filterChange.emit(filter);\n return filter;\n }\n\n /**\n * Reset the query emited to the parent page\n * @returns {QueryFilterRoutingRef} empty query with only companies ids set\n */\n resetQueryFilter(): QueryFilterRoutingRef {\n return {\n dateStart: '',\n dateEnd: '',\n energies: '',\n sites: '',\n regions: '',\n companies: this.filter.companies ? this.filter.companies.join(',') : '',\n sitesStatus: 'all',\n customFilter: '',\n categories: '',\n routingreferences: '',\n routingReferencesStatus: 'all',\n entities: '',\n };\n }\n}\n","export default \".warning-icon {\\n -webkit-box-flex: 0;\\n flex-grow: 0;\\n margin-right: 15px;\\n width: 40px;\\n height: 40px;\\n width: 40px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url('picto_warning.svg');\\n mask-image: url('picto_warning.svg');\\n float: left;\\n}\\n\\n.warning-text {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n font-size: 12px;\\n color: #db4b47;\\n}\\n\\n:host ::ng-deep ga-select-filter .bloc-select {\\n padding-top: 0;\\n}\\n\\n:host ::ng-deep ga-date-filter input {\\n margin-top: 0 !important;\\n}\\n\\n.groups-row {\\n margin-top: 15px;\\n}\\n\\n.groups-row p.autocomplete-title {\\n margin-bottom: 0;\\n font-size: 12px;\\n}\\n\\n.groups-row .form-control {\\n font-size: 12px;\\n}\\n\\n.filter-title {\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n font-weight: bold;\\n}\\n\\n.warning-container {\\n margin-top: 5px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.perimeter__group button {\\n text-transform: none;\\n font-weight: normal;\\n white-space: normal;\\n cursor: pointer;\\n padding-left: 15px;\\n padding-right: 15px;\\n}\\n\\n.perimeter__button--inactive {\\n background-color: white;\\n color: #607188;\\n}\\n\\n.perimeter__button--active {\\n color: white;\\n}\\n\\n.date_label {\\n font-size: 12px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvc2NvcGUtZmlsdGVyL3Njb3BlLWZpbHRlci5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL3Njb3BlLWZpbHRlci9zY29wZS1maWx0ZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxtQkFBQTtVQUFBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUNMQSxZRE1pQjtFQ0xqQixXREt1QjtFQ0p2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkNjQTtFRFZBLDRDQUFBO1VBQUEsb0NBQUE7RURKSixXQUFBO0FHSUo7O0FIREE7RUFDSSxtQkFBQTtVQUFBLFlBQUE7RUFDQSxlQUFBO0VBQ0EsY0VRSTtBQ0pSOztBSERBO0VBQ0ksY0FBQTtBR0lKOztBSERBO0VBQ0ksd0JBQUE7QUdJSjs7QUhEQTtFQUNJLGdCQUFBO0FHSUo7O0FIRkk7RUFDSSxnQkFBQTtFQUNBLGVBQUE7QUdJUjs7QUhESTtFQUNJLGVBQUE7QUdHUjs7QUhDQTtFQUNJLGdEQUFBO0VBQ0EsaUJBQUE7QUdFSjs7QUhDQTtFQUNJLGVBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FHRUo7O0FIRUk7RUFDSSxvQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtBR0NSOztBSEdBO0VBQ0ksdUJBQUE7RUFDQSxjRXBDUztBQ29DYjs7QUhHQTtFQUNJLFlBQUE7QUdBSjs7QUhHQTtFQUNJLGVBQUE7QUdBSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvc2NvcGUtZmlsdGVyL3Njb3BlLWZpbHRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcblxuLndhcm5pbmctaWNvbiB7XG4gICAgZmxleC1ncm93OiAwO1xuICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICB3aWR0aDogNDBweDtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDQwcHgsIDQwcHgsICRlcnJvciwgJy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b193YXJuaW5nLnN2ZycpO1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuXG4ud2FybmluZy10ZXh0IHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkZXJyb3I7XG59XG5cbjpob3N0IDo6bmctZGVlcCBnYS1zZWxlY3QtZmlsdGVyIC5ibG9jLXNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDA7XG59XG5cbjpob3N0IDo6bmctZGVlcCBnYS1kYXRlLWZpbHRlciBpbnB1dCB7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4uZ3JvdXBzLXJvdyB7XG4gICAgbWFyZ2luLXRvcDogMTVweDtcblxuICAgIHAuYXV0b2NvbXBsZXRlLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxufVxuXG4uZmlsdGVyLXRpdGxlIHtcbiAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi53YXJuaW5nLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnBlcmltZXRlcl9fZ3JvdXAge1xuICAgIGJ1dHRvbiB7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICB9XG59XG5cbi5wZXJpbWV0ZXJfX2J1dHRvbi0taW5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbn1cblxuLnBlcmltZXRlcl9fYnV0dG9uLS1hY3RpdmUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmRhdGVfbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbn1cbiIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiLndhcm5pbmctaWNvbiB7XG4gIGZsZXgtZ3JvdzogMDtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogNDBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG4gIG1hc2staW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b193YXJuaW5nLnN2Z1wiKTtcbiAgZmxvYXQ6IGxlZnQ7XG59XG5cbi53YXJuaW5nLXRleHQge1xuICBmbGV4LWdyb3c6IDE7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICNkYjRiNDc7XG59XG5cbjpob3N0IDo6bmctZGVlcCBnYS1zZWxlY3QtZmlsdGVyIC5ibG9jLXNlbGVjdCB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuXG46aG9zdCA6Om5nLWRlZXAgZ2EtZGF0ZS1maWx0ZXIgaW5wdXQge1xuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5ncm91cHMtcm93IHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbn1cbi5ncm91cHMtcm93IHAuYXV0b2NvbXBsZXRlLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmdyb3Vwcy1yb3cgLmZvcm0tY29udHJvbCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmZpbHRlci10aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLndhcm5pbmctY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucGVyaW1ldGVyX19ncm91cCBidXR0b24ge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG59XG5cbi5wZXJpbWV0ZXJfX2J1dHRvbi0taW5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgY29sb3I6ICM2MDcxODg7XG59XG5cbi5wZXJpbWV0ZXJfX2J1dHRvbi0tYWN0aXZlIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uZGF0ZV9sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn0iXX0= */\"","import { EventEmitter, Injectable, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport _ = require('lodash');\nimport * as moment from 'moment';\nimport { combineLatest } from 'rxjs';\nimport Swal from 'sweetalert2';\n\n// interfaces\nimport { Company, CompanyLight } from 'app/shared/models/company.interface';\nimport { OptionValue } from 'app/shared/models/filter-config.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport { AvailableYears, FilterAlias } from 'app/shared/services/filter/filter.interface';\nimport {\n Entity,\n Filter,\n FiltersOptions,\n OptionValueGroup,\n QueryFilter,\n ScopeFilterConfig,\n TagOption,\n} from './scope-filter.interface';\n\n// services\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { FuelCardsService } from 'app/shared/services/vehicles/fuelCards.service';\nimport { VehiclesService } from 'app/shared/services/vehicles/vehicles.service';\nimport { ScopeFilterService } from './scope-filter.service';\n\n@Injectable()\nexport abstract class ScopeFilterComponent>\n implements OnInit {\n /**\n * ------------\n * INPUTS\n * ------------\n */\n\n /** Date method can be either yearly or a custom period with a start and end.*/\n @Input() isDateCustomisable = true;\n\n /** Dates period can be reduced to a maximum range. Eg: maximum 1 year between start and end. */\n @Input() periodRange: {\n amount: number;\n unit: 'month' | 'year';\n } = null;\n\n /** Perimeter can be reduced to the active sites / inactive sites. */\n @Input() disablePerimeter = false;\n\n /** Used to filter the accepted fluids. Eg: 'energy' or 'water'. */\n @Input() fluidsCategory: string;\n\n /** Accepted entity fluid types that can be displayed */\n @Input() fluidTypesAccepted: string[] = [];\n\n /** Filters config */\n @Input() filtersConfig: ScopeFilterConfig = {};\n\n /**\n * ----------\n * OUTPUTS\n * ----------\n */\n\n /**\n * Event emitted each time an element is changed inside the filter\n */\n @Output() filterChange: EventEmitter = new EventEmitter();\n\n /**\n * Event emitted to signal that the page's components need to be refreshed automatically with the new filter selection.\n * So far, called:\n * - after the first initialization\n * - when the companies are updated\n */\n @Output() filterSearch: EventEmitter = new EventEmitter();\n\n /**\n * Event emitted when we want to emit to the parent component\n */\n @Output() filterEmit: EventEmitter = new EventEmitter();\n\n /**\n * ---------\n * Filter Options\n * ---------\n */\n /** List of entities specific to the filter implementation (eg. routing references, vehicles, ...) */\n public entities: T[] = [];\n\n /** Object containing all the filter information for display */\n public filter: F;\n\n /** Dates / period */\n public dateFilterElements: OptionValueGroup[] = [\n {\n displayName: 'Par année',\n value: 'yearly',\n },\n {\n displayName: 'Personnalisée',\n value: 'custom',\n },\n ];\n\n /** Perimeter of activity / inactivity. Used for sites and routing references. */\n public perimeterFilterElements: OptionValueGroup[] = [\n {\n displayName: 'Tous',\n value: 'all',\n selected: true,\n },\n {\n displayName: 'Actifs',\n value: 'enabled',\n selected: false,\n },\n {\n displayName: 'Inactifs',\n value: 'disabled',\n selected: false,\n },\n ];\n\n /** Available years to display for selection. Computed from the bills. */\n public availableYears: AvailableYears = {\n dateStart: '',\n dateEnd: '',\n years: [],\n };\n\n /** List of companies avaible for selection, computed from the user's rights. */\n public companiesList: OptionValue[] = [];\n\n /** Custom filter id for initial filter setting */\n public customFilterId: string;\n /** Custom filter company */\n public customFilterCompany: Company;\n\n /**\n * Last used and valid params\n */\n private params: Params;\n\n /**\n * -----------\n * Value selection\n * -----------\n */\n /** Company ID from the user's session */\n private sessionCompany: Company;\n\n mainFilterSelected = 'all'; // Name of the top filter element which is currenlty selected.\n dateMethodSelected = 'yearly'; // Name of the selected date method selected, 'yearly' or 'custom'\n defaultSiteSelected: SitePopulated; // Preselected site from the url parameter\n defaultEntitySelected: string | T; // Preselected entity from the url parameter\n mainFilterSelectedValues: any[] = []; // Contains the options selected in the main filter\n nbMaxTags = 5; // Maximum number of options selected by the user. Eg: sites, routing references, etc.\n\n /**\n * -----------\n * Abstract variables & functions\n * -----------\n */\n\n /** Variables */\n /** Name of the entity expected inside the query. */\n abstract entityFilterName: string;\n /** Filter alias for URL of property */\n abstract entityPropertyAlias: FilterAlias;\n /** Elments available as filters in the top part. */\n abstract topFilterElements: OptionValueGroup[];\n /** Options available for each top filter element. */\n abstract filtersOptions: FiltersOptions;\n abstract hasConversionOnMultipleFluids: boolean;\n abstract missingFluidTypeMessage: string;\n abstract multipleFluidTypesMessage: string;\n abstract fluidTypesName: string;\n\n /**\n * List of the permitted url params. The content depends on the page scope.\n */\n abstract permittedParams: string[];\n\n // fluid types\n abstract getFilterFluidTypes(): OptionValue[];\n abstract get fluidYearsParams(): Params;\n\n // filter\n abstract resetFilter(): void;\n abstract getPerimeterDisplayName(perimeter: OptionValueGroup): string;\n\n // init data\n abstract initSelectedItems(params: Params): Promise;\n abstract initSites(): Promise;\n abstract initEntitiesData(): Promise;\n\n // component interactions\n abstract initComponentSetup(params: Params): void;\n abstract createQuery(): Q;\n\n constructor(\n public filterService: FilterService,\n private route: ActivatedRoute,\n private sessionService: SessionService,\n public sitesService: SitesService,\n public energyService: EnergyService,\n public vehiclesService: VehiclesService,\n public fuelCardService: FuelCardsService,\n public scopeFilterService: ScopeFilterService,\n public companiesService: CompaniesService\n ) {}\n\n /**\n * Subscribe to any change coming from the url params.\n * Initialize the filter component.\n * Emit signal to update the parent and refresh the page's components with the new filter.\n */\n // tslint:disable-next-line: contextual-lifecycle\n ngOnInit() {\n this.resetFilter();\n if (this.route.queryParams && this.route.params) {\n this.initComponent(this.route.snapshot.queryParams).then(() => {\n /**\n * combineLatest : When any observable emits a value, emit the latest value from each.\n */\n combineLatest([this.route.queryParams, this.route.params]).subscribe({\n next: async ([queryParams]) => {\n if (!_.isEqual(this.params, queryParams)) {\n await this.updateFiltersFromRouteParams(queryParams);\n }\n },\n });\n });\n }\n }\n\n /**\n * It will emit immediately if there any params in the url.\n * In the other case, It will analyze the params and update the filters\n * Called every time url query string params is changed.\n * @param {Params} params\n */\n private async updateFiltersFromRouteParams(params: Params): Promise {\n // If the user tries to change/delete legal entity in query params, it will reset the entire filter instead\n const paramCompaniesIds: string[] = this.filterService.isAvailableAndSetPropertyInParams(params, 'companies')\n ? this.filterService.getParamAliasValues(params, 'companies')\n : this.filter.companies;\n if (this.filter.companies.join(',') !== paramCompaniesIds.join(',')) {\n this.resetFilter();\n this.updateCompaniesFilter(paramCompaniesIds);\n this.resetFilterWithNewCompanies();\n } else {\n const tmpParams = this.cleanParamsForFilters(params);\n await this.createAndEmitQuery(params, tmpParams);\n }\n }\n\n /**\n * It will verify and update the query string params if it need any modification.\n * If everything is correct, it will emit the call for the filter.\n * Called every time url query string params is changed.\n * @param {Params} params\n * @returns {Params} params with cleaned values\n */\n private cleanParamsForFilters(params: Params): Params {\n // We make a copy in order to compare the original params with the updated one\n const tmpParams: Params = { ...params };\n\n // Verify the params integrity, and deleting not valid params\n this.filterService.removeInvalidParams(tmpParams, this.permittedParams);\n\n // DATES PARSING\n if (this.availableYears.years.length) {\n // Verify the dates integrity by parsing them and removing not valid dates\n this.filterService.removeInvalidDatesInParams(tmpParams, this.availableYears);\n\n // Replace missings dates in params\n this.filterService.replaceMissingDatesInParams(tmpParams, this.availableYears);\n\n // Replace dates if they are out of limits\n this.filterService.fixDatesCoherence(tmpParams, this.availableYears);\n }\n\n // Verify fluids of fuels values\n this.removeUnacceptedSelectedItemsInParams(tmpParams);\n\n // Update the perimeter field\n this.scopeFilterService.removeUnacceptedPerimeterInParams(tmpParams, this.perimeterFilterElements);\n\n // Remove invalid companies id.\n this.scopeFilterService.removeInvalidCompaniesIdsInParams(tmpParams, this.companiesList);\n\n return tmpParams;\n }\n\n /**\n * This function will compare the query params and the valid params.\n * The filter will me updated with new values.\n * If there any difference, the page will be reloaded with new values (deactivated).\n * @param {Params} originalParams - original params\n * @param {Params} validParams - valid params with potential corrections from `originalParams`\n */\n private async createAndEmitQuery(originalParams: Params, validParams: Params): Promise {\n this.params = validParams;\n this.initComponentSetup(this.params);\n const filter = this.createQuery();\n this.filterEmit.emit(filter);\n // Update the route only if the valid tmpParams is different from the most recent valid params\n // Disabled because of the following noticed behaviour :\n // Next query params event is the corrected version of query params (expected)\n // Then an another event fired with original version\n // Then an another event fired with corrected version\n // Consequence : call twice `this.filterEmit.emit(filter);` causing troubles\n // if (!_.isEqual(originalParams, validParams)) {\n // await this.filterService.updateRouteParams(validParams, '');\n // }\n }\n\n /**\n * Remove from the param filter wrong energies or fuels filter entries.\n * @param {Params} params\n */\n private removeUnacceptedSelectedItemsInParams(params: Params) {\n // If the property is available for params and set in the query params, it will remove any false values\n if (this.filterService.isAvailableAndSetPropertyInParams(params, this.entityPropertyAlias)) {\n const correctedItemList = _.intersection(\n this.filterService.getParamAliasValue(params, this.entityPropertyAlias).split(','),\n this.fluidTypesAccepted\n ).join(',');\n\n this.filterService.setParamPropertyValue(params, this.entityPropertyAlias, correctedItemList);\n }\n\n return params;\n }\n\n /**\n * Update various filters. It made an intersect between the url params and the actual filter options in order to insert right values.\n * @param {Params} params - URL Query parametters\n * @param {FilterAlias} aliasKey - Denomination of parameters\n * @param {string} filterCat - Filter category, used for selecting graph types (ex : by sites, by categories, etc.)\n * @param {string} filterKey - Key of the filter selected objects.\n * @param {string} filterOptionsKey - Key of the filter options\n * @param {string} filterOptionsValueKey - Options value key for retrieving the corresponding id object. (\"_id\" or \"value\")\n */\n public updateFilterByParam(\n params: Params,\n aliasKey: FilterAlias,\n filterCat: string,\n filterKey: string,\n filterOptionsKey: string,\n filterOptionsValueKey: string\n ) {\n if (this.filterService.isAvailableAndSetPropertyInParams(params, aliasKey)) {\n const values = this.filterService.getParamAliasValue(params, aliasKey).split(',');\n const intersection = this.filtersOptions[filterOptionsKey].filter(filterObject =>\n values.includes(filterObject[filterOptionsValueKey].toString())\n );\n\n if (intersection.length) {\n this.mainFilterSelected = filterCat;\n this.filter[filterKey] = intersection;\n }\n }\n }\n\n /**\n * Update companies filter\n * @param {string[]} companiesIds\n */\n private updateCompaniesFilter(companiesIds: string[]) {\n if (this.filter.companies.join(',') !== companiesIds.join(',')) {\n /** Newly selected companies */\n const newCompanies: string[] = [];\n\n this.companiesList.forEach(company => {\n if (companiesIds.includes(company.value)) {\n newCompanies.push(company.value);\n }\n });\n this.filter.companies = newCompanies.length ? newCompanies : [this.sessionCompany._id];\n }\n }\n\n /**\n * Update custom filters filter\n * @param {string} value\n */\n public updateCustomFilterByParams(params: Params) {\n if (this.filterService.isAvailableAndSetPropertyInParams(params, 'customFilter')) {\n this.mainFilterSelected = 'custom-filters';\n this.customFilterId = this.filterService.getParamAliasValue(params, 'customFilter');\n }\n }\n\n /**\n * Updates perimeter filter\n * @param {string} value\n */\n public updatePerimeterFilter(value: string) {\n this.perimeterFilterElements.forEach(x => {\n x.selected = x.value === value;\n });\n }\n\n /**\n * Verify existence of any dates property in the params and updates period filter\n * @param {Params} params\n */\n public updatePeriodFiltersByParams(params: Params) {\n this.dateMethodSelected = 'yearly';\n\n if (this.filterService.isAvailableAndSetPropertyInParams(params, 'year')) {\n this.filter.year = this.filterService.getParamAliasValue(params, 'year');\n } else if (\n this.filterService.isAvailableAndSetPropertyInParams(params, 'dateStart') &&\n this.filterService.isAvailableAndSetPropertyInParams(params, 'dateEnd')\n ) {\n this.dateMethodSelected = 'custom';\n this.filter.years = {\n dateStart: this.filterService.getMonthUrlIntoInputDateFormat(\n this.filterService.getParamAliasValue(params, 'dateStart')\n ),\n dateEnd: this.filterService.getMonthUrlIntoInputDateFormat(\n this.filterService.getParamAliasValue(params, 'dateEnd')\n ),\n };\n }\n }\n\n /**\n * Aggregate data to initialize each filter element.\n * Select filter element and values from the url params when present.\n * @param {Params} params - can contain several filters to preselect\n */\n async initComponent(params: Params): Promise {\n try {\n this.sessionCompany = this.sessionService.getCompany();\n\n const branches: CompanyLight[] = await this.filterService.getAllVisibleBranches();\n\n // if the company logged in has branches, set the list of branches\n // set the query for companies\n if (branches && branches.length > 0) {\n branches.unshift(this.sessionCompany);\n // Turn companies objects into select options\n this.companiesList = this.formatCompaniesForSelect(branches);\n }\n // Set filter companies list based on params\n if (this.filterService.isAvailableAndSetPropertyInParams(params, 'companies')) {\n const companiesIds = this.filterService.getParamAliasValues(params, 'companies');\n this.updateCompaniesFilter(companiesIds);\n } else if (this.filterService.isAvailableAndSetPropertyInParams(params, 'company')) {\n const companyId = this.filterService.getParamAliasValue(params, 'company');\n this.updateCompaniesFilter([companyId]);\n } else {\n this.filter.companies = [this.sessionCompany._id];\n }\n } catch (err) {\n Swal.fire('Erreur', 'Une erreur est survenue lors de la récupération des filiales', 'error');\n }\n\n /**\n * Select the appropriate filter elements for the current page.\n * Init query and all the data to initialize each filter element.\n */\n await this.initComponentData(params);\n }\n\n /**\n * Init queries & load all data needed to initialize each element:\n * - sites, geographic areas, categories, segments, fuel cards, and custom filters\n * - fuel products & years\n *\n * @param {Params} params - can contain several filters to preselect\n */\n async initComponentData(params: Params = {}): Promise {\n // Change the companies Ids if it's set in params\n const companiesIds: string[] = this.filterService.isAvailableAndSetPropertyInParams(params, 'companies')\n ? this.filterService.getParamAliasValues(params, 'companies')\n : this.filter.companies;\n this.updateCompaniesFilter(companiesIds);\n\n // Init the list of items\n const propertyList = this.filterService.isAvailableAndSetPropertyInParams(params, this.entityPropertyAlias)\n ? this.filterService.getParamAliasValues(params, this.entityPropertyAlias)\n : [];\n await this.initSelectedItems(propertyList);\n\n // Init sites\n try {\n await Promise.all([this.initSites(), this.initRegions()]);\n await this.initEntitiesData();\n } catch (error) {\n this.filtersOptions.sites = [];\n this.filtersOptions.entities = [];\n }\n\n // Init available years\n try {\n await this.initAvailableYearsAndPeriod();\n } catch (e) {\n this.availableYears = { dateStart: '', dateEnd: '', years: [] };\n }\n\n // Init custom filters\n try {\n await this.initCustomFilter();\n } catch (e) {\n this.customFilterCompany = this.sessionCompany;\n }\n }\n\n /**\n * Initialize the regions from the companies' sites.\n */\n async initRegions(): Promise {\n try {\n const regions = await this.filterService.getRegionsForAutoCompletion(true, {\n companies: this.filter.companies,\n });\n this.filtersOptions.regions = regions.data;\n } catch (error) {\n this.filtersOptions.regions = [];\n }\n }\n\n /**\n * Init available period from bills found for the current companies (all energies included).\n * Starts in January of the first year found.\n * Ends in December of the last year found.\n */\n private async initAvailableYearsAndPeriod(): Promise {\n // set available years\n const yearParams: Params = Object.assign({ companies: this.filter.companies.join(',') }, this.fluidYearsParams);\n this.availableYears.years = await this.filterService.getYearsWithData(true, yearParams);\n\n this.availableYears.years.sort((a, b) => {\n return parseInt(b.value, 10) - parseInt(a.value, 10);\n });\n\n // set datePicker default dates (YYYY-MM)\n const nbYears = this.availableYears.years.length;\n if (!nbYears) {\n throw new Error('no_year_available');\n }\n const maxYear = this.availableYears.years[0].value;\n const minYear = this.availableYears.years[nbYears - 1].value;\n this.availableYears.dateStart = minYear.concat('-01');\n this.availableYears.dateEnd = maxYear.concat('-12');\n\n // preselect the years in filter selection\n this.filter.year = maxYear;\n this.filter.years.dateStart = this.availableYears.dateStart;\n this.filter.years.dateEnd = this.availableYears.dateEnd;\n }\n\n /**\n * Init custom filter\n */\n private async initCustomFilter(): Promise {\n // Get first company of selection for custom filters\n // Otherwise raise error\n // Custom filters currently handle one company\n if (!this.filter.companies || !this.filter.companies.length) {\n throw new Error('Custom filters : No company selected');\n }\n const companyId = this.filter.companies[0];\n const company = await this.companiesService.getCompanyById(companyId);\n this.customFilterCompany = company;\n }\n\n /**\n * Initialize commons filters such as dates/period, perimeter and custom filters\n * @param {Params} params\n */\n public initComponentCommonSetup(params: Params) {\n this.mainFilterSelected = 'all';\n\n // Dates settings\n this.updatePeriodFiltersByParams(params);\n\n // Perimeter setting.\n const perimeter = this.filterService.getParamAliasValue(params, 'sitesStatus');\n this.updatePerimeterFilter(perimeter ? perimeter : 'all');\n\n // Custom Filters\n this.updateCustomFilterByParams(params);\n\n return params;\n }\n\n /**\n * Refresh all filters and emit query when companies filter changes value.\n */\n async resetFilterWithNewCompanies() {\n this.mainFilterSelected = 'all'; // reset top main filter on the default position 'all'\n await this.initComponentData(); // init filter component with the new companies data and reset filter selection\n\n this.resetFiltersSearch(); // reset query for the new companies & update parent page to launch research\n }\n\n /**\n * Create query with the selected filter.\n * Emit signal to update the parent and refresh the page's components with the new filter.\n */\n resetFiltersSearch(): void {\n const filter = this.createQuery();\n this.filterSearch.emit(filter);\n }\n\n /**\n * ------\n * CALLED FROM ENTITY FILTER\n * ------\n */\n\n /**\n * Set period inside the query from the filter's selected dates.\n * Set format YYYY-MM.\n */\n setFilterDates(filter: Q): void {\n // Verify if there's any value. It's useful for the case when the company or branch has no data.\n if (!this.filter.year) {\n return;\n }\n\n if (this.dateMethodSelected === 'yearly') {\n const filterYear = parseInt(this.filter.year, 10);\n filter.dateStart = moment({ y: filterYear, M: 0 }).format(this.filterService.inputDateFormat);\n filter.dateEnd = moment({ y: filterYear, M: 11 }).format(this.filterService.inputDateFormat);\n } else {\n filter.dateStart = this.filter.years.dateStart;\n filter.dateEnd = this.filter.years.dateEnd;\n }\n }\n\n /**\n * -------\n * HTML FUNCTIONS\n * Update filter\n * -------\n */\n\n /**\n * Update the filter component & query for the new selected companies.\n * Emit event for the parent page to launch search automatically.\n * @param {string[]} companies - Comma separated companies IDs\n */\n async updateCompanies(companies: string[]): Promise {\n this.resetFilter(); // reset selected values\n this.updateCompaniesFilter(companies);\n this.resetFilterWithNewCompanies();\n }\n\n /**\n * Update the query with the new top filter element selected.\n * @param {string}filterSelectedName - new filter name\n */\n updateSearchMethod(filterSelectedName: string): void {\n this.mainFilterSelected = filterSelectedName;\n this.createQuery();\n }\n\n /**\n * Set the custom filter id selected and update the query.\n * @param {OptionValue} value\n */\n updateCustomFilter(value: OptionValue): void {\n this.filter.customFilter = value ? value : null;\n this.createQuery();\n }\n\n /**\n * Update the date method 'yearly' or 'custom' and the query accordingly.\n * @param {string} method\n */\n updateDateSearchMethod(method: string): void {\n this.dateMethodSelected = method;\n this.createQuery();\n }\n\n /**\n * Update the selected year ('yearly' method), and the query accordingly.\n * @param {string} year\n */\n updateYear(year): void {\n this.filter.year = year;\n this.createQuery();\n }\n\n /**\n * Update the selected start of the period ('custom' method), and the query accordingly.\n * @param {string} date\n */\n updateDateStart(date): void {\n this.filter.years.dateStart = date;\n this.createQuery();\n }\n\n /**\n * Update the selected end of the period ('custom' method), and the query accordingly.\n * @param {string} date\n */\n updateDateEnd(date): void {\n this.filter.years.dateEnd = date;\n this.createQuery();\n }\n\n /**\n * Set the selected perimeter.\n * @param {OptionValueGroup} perimeter - perimeter to set as selected\n */\n updatePerimeter(perimeter: OptionValueGroup) {\n this.updatePerimeterFilter(perimeter.value);\n this.createQuery();\n }\n\n /**\n * Update filter with the given fluidTypes and update the query.\n * @param {OptionValue[]} fluidTypes\n */\n updateQueryFluidTypes(fluidTypes: OptionValue[]) {\n let filterFluidTypes = this.getFilterFluidTypes();\n filterFluidTypes = fluidTypes;\n this.createQuery();\n }\n\n /**\n * @returns {*} Return the selected values of the current filter.\n */\n getCurrentFilterSelected(): any {\n // exception for custom filter & entities\n let filterName = this.mainFilterSelected;\n\n if (this.mainFilterSelected === 'custom-filters') {\n filterName = 'customFilter';\n }\n if (this.isCurrentFilterEntities()) {\n filterName = 'entities';\n }\n return this.filter[filterName];\n }\n\n /**\n * Update the multiple items select\n * @param {string[]} energies\n */\n public updateItemsWithTypeFilter(type: string, items: string[]) {\n if (\n this.filtersConfig &&\n this.filtersConfig.toggleButtonSelection &&\n this.filtersConfig.toggleButtonSelection.enabled === true &&\n this.filtersConfig.toggleButtonSelection.selectionType === 'single'\n ) {\n this.filter[type].forEach(x => {\n x.selected = items.indexOf(x.value) === 0;\n });\n } else {\n this.filter[type].forEach(x => {\n x.selected = items.indexOf(x.value) > -1;\n });\n }\n }\n\n /**\n * -------\n * HTML FUNCTIONS\n * Display, disable & messages\n * -------\n */\n\n /**\n * @returns {boolean} true if the session's company has branches to display for selection.\n */\n hasBranches(): boolean {\n return Boolean(this.companiesList && this.companiesList.length);\n }\n\n /**\n * @returns {boolean} true if the maximum number of selected items is reached.\n */\n hasMaxElementsSelected(): boolean {\n const currentFilter = this.getCurrentFilterSelected();\n return currentFilter && currentFilter.length >= this.nbMaxTags;\n }\n\n /**\n * @returns {boolean} true when the selected filter has available options to display\n */\n hasOptionsAvailable(): boolean {\n const currentFilterOptions = this.isCurrentFilterEntities()\n ? this.filtersOptions.entities\n : this.filtersOptions[this.mainFilterSelected];\n return Boolean(currentFilterOptions && currentFilterOptions.length);\n }\n\n /**\n * @returns {string} message when zero element is selected in the current filter\n * */\n getEmptyFilterMessage(): string {\n return this.filterService.getDisabledErrorMessage(this.mainFilterSelected);\n }\n\n /**\n * @returns {string}  message when the maximum number of selected elements is reached\n * */\n getMaxElementsSelectedErrorMessage(): string {\n return `Vous ne pouvez pas sélectionner plus de ${this.nbMaxTags} `;\n }\n\n /**\n * @returns {string} the bootstrap class giving the percentage to give the energy component\n * */\n get energyWidePercentageClass(): string {\n return this.disablePerimeter ? 'col-lg-6' : 'col-lg-4';\n }\n\n /**\n * @returns {string} the bootstrap class giving the percentage to give the perimeter component\n * */\n get perimeterWidePercentageClass(): string {\n return this.disablePerimeter ? 'col-lg-6' : 'col-lg-3';\n }\n\n /**\n * Get class for a given perimeter, depending if it's selected or not\n * @param {OptionValueGroup} perimeter - perimeter to get the class of\n * @returns {string | string[]} class(es) of the perimeter\n */\n getPerimeterClass(perimeter: OptionValueGroup): string[] {\n if (perimeter.selected) {\n return ['citron-background', 'perimeter__button--active'];\n }\n return ['perimeter__button--inactive'];\n }\n\n /**\n * Get period bounds (min date & max date) for the filter.\n * If a period time range is defined (this.periodRange), set min and max depending on the range.\n * For example, if a period can be max 1 year (amout = 1, unit = \"year\"), will set min and max depending on values available AND selected.\n * @param {\"start\"|\"end\"} bound - period start date or period end date.\n * @returns {{min: string, max: string}} - min & max of the available period\n */\n getPeriodsMinMax(bound: 'start' | 'end'): { min: string; max: string } {\n if (bound === 'start') {\n if (this.periodRange) {\n const a = moment(this.filter.years.dateEnd, 'YYYY-MM').subtract(\n this.periodRange.amount,\n this.periodRange.unit\n );\n const b = moment(this.availableYears.dateStart, 'YYYY-MM');\n const min = moment.max(a, b);\n return {\n min: min.format('YYYY-MM'),\n max: this.filter.years.dateEnd,\n };\n }\n return {\n min: this.availableYears.dateStart,\n max: this.filter.years.dateEnd,\n };\n } else if (bound === 'end') {\n if (this.periodRange) {\n const a = moment(this.filter.years.dateStart, 'YYYY-MM').add(\n this.periodRange.amount,\n this.periodRange.unit\n );\n const b = moment(this.availableYears.dateEnd, 'YYYY-MM');\n const max = moment.min(a, b);\n return {\n min: this.filter.years.dateStart,\n max: max.format('YYYY-MM'),\n };\n }\n return {\n min: this.filter.years.dateStart,\n max: this.availableYears.dateEnd,\n };\n } else {\n return {\n min: null,\n max: null,\n };\n }\n }\n\n /**\n * @returns {boolean} true if the current filter selected is the filter on entities.\n */\n isCurrentFilterEntities(): boolean {\n return this.mainFilterSelected === this.entityFilterName;\n }\n\n /**\n * @returns {boolean} true if at least one fluid type is available for selection\n */\n hasFluidTypesAvailable(): boolean {\n const fluidTypes = this.getFilterFluidTypes();\n return Boolean(fluidTypes && fluidTypes.length);\n }\n\n /**\n * @returns {boolean} true if more than 1 fluid type is selected\n */\n hasMultipleFluidTypesSelected(): boolean {\n const fluidTypes = this.getFilterFluidTypes();\n return fluidTypes && fluidTypes.filter(x => x.selected).length > 1;\n }\n\n /**\n * @returns {boolean} true if at least one fuel type is selected\n */\n hasFluidTypesSelected(): boolean {\n const fluidTypes = this.getFilterFluidTypes();\n return fluidTypes && fluidTypes.some(x => x.selected);\n }\n\n /**\n * @returns {*} the options associated to the selected filter\n */\n getTagOptions(): TagOption {\n return this.getMainFilterSelected() ? this.getMainFilterSelected().tags : null;\n }\n\n /**\n * ---------\n * Used by hosts\n * ---------\n */\n\n /**\n * @returns {OptionValueGroup} the current selected element among the top filter elements.\n */\n getMainFilterSelected(): OptionValueGroup {\n return this.topFilterElements.find(x => x.value === this.mainFilterSelected);\n }\n\n /**\n * Returns true if at least one tag is selected on the current filter.\n * Returns true if a custom filter is selected\n * Returns true for the \"all\" item\n * @return {boolean}\n */\n hasOptionsSelected(): boolean {\n // exceptions for \"All\" - doesn't have any selection\n if (this.mainFilterSelected === 'all') {\n return true;\n }\n\n // exception for custom filters - only one selected, not an array\n if (this.mainFilterSelected === 'custom-filters') {\n return Boolean(this.filter.customFilter);\n }\n\n const currentFilter = this.getCurrentFilterSelected();\n return Boolean(currentFilter && currentFilter.length);\n }\n\n /**\n * Format an array of companies into an array of select options\n * @param companies - Companies list to turn into select options\n * @returns {OptionValue[]} an array of select options\n */\n private formatCompaniesForSelect(companies: CompanyLight[]): OptionValue[] {\n return companies.map(branch => {\n return {\n displayName: branch.name,\n value: branch._id,\n };\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { OptionValue } from 'app/shared/models/filter-config.interface';\nimport _ = require('lodash');\n\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { OptionValueGroup } from './scope-filter.interface';\n\n/**\n * This service is used for any scope filter objects.\n */\n@Injectable()\nexport class ScopeFilterService {\n constructor(public filterService: FilterService) {}\n\n /**\n * Remove any wrong perimeter. If there's several perimeter setted, take the first one.\n * @param {Params} params\n * @returns {Params}\n */\n public removeUnacceptedPerimeterInParams(params: Params, perimeterList: OptionValueGroup[]): Params {\n // For information, sitesStatus is the field name for perimeter in the front\n if (!this.filterService.isAvailableAndSetPropertyInParams(params, 'sitesStatus')) {\n return params;\n }\n\n const perimeter = (this.filterService.getParamAliasValue(params, 'sitesStatus') || '')\n .split(',')\n .filter((x: string) => _.findIndex(perimeterList, p => p.value === x) >= 0);\n\n if (perimeter.length) {\n this.filterService.setParamPropertyValue(params, 'sitesStatus', perimeter[0]);\n } else {\n this.filterService.deleteParamPropertyByAlias(params, 'sitesStatus');\n }\n\n return params;\n }\n\n /**\n * Remove the compagnies ids if it's the same as the parent company or not corresponding to any company\n * @param {Params} params\n * @param {OptionValue[]} companiesList\n * @returns {Params} params\n */\n public removeInvalidCompaniesIdsInParams(params: Params, companiesList: OptionValue[]): Params {\n if (!this.filterService.isAvailableAndSetPropertyInParams(params, 'companies')) {\n this.filterService.deleteParamPropertyByAlias(params, 'companies');\n }\n\n // Remove filter if some of the companies ids don't exist in the list of available companies\n // or if it matches the session company's id\n\n /** Array of companiesIds from query params */\n const companiesIdsInParams: string = this.filterService.getParamAliasValue(params, 'companies');\n /** Array of companiesIds from params */\n let companiesIdsArray: string[] = [];\n\n if (companiesIdsInParams) {\n companiesIdsArray = companiesIdsInParams.split(',');\n }\n // Companies array has only 1 element matching the session company's id\n // One of the companies in the array doesn't match the available companies\n if (\n companiesIdsArray.some(cId => cId === this.filterService.sessionCompany._id) ||\n companiesIdsArray.some(cId => !this.isInCompanyList(companiesList, cId))\n ) {\n this.filterService.deleteParamPropertyByAlias(params, 'companies');\n }\n\n return params;\n }\n\n /**\n * Verify if the companyId corresponds to any company id in list\n * @param {OptionValue[]} companiesList\n * @param {string} companyId\n * @returns {boolean}\n */\n public isInCompanyList(companiesList: OptionValue[], companyId: string): boolean {\n return _.findIndex(companiesList, c => c.value === companyId) < 0;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Params } from '@angular/router';\n\n// components\nimport { ScopeFilterComponent } from '../scope-filter.component';\n\n// interfaces\nimport { OptionValue } from 'app/shared/models/filter-config.interface';\nimport { FuelCard, Vehicle } from 'app/shared/models/vehicle.interface';\nimport { FilterAlias } from 'app/shared/services/filter/filter.interface';\nimport { Filter, FiltersOptions, OptionValueGroup, QueryFilterVeh } from '../scope-filter.interface';\n\n// services\nimport { ScopeFilterService } from '../scope-filter.service';\n\nexport interface FilterVeh extends Filter {\n fuelTypes: OptionValue[];\n vehicleCategories: Array<{ value: string }>;\n fuelCards: Array<{ _id: string; contractId: string }>;\n}\n\nexport interface FiltersOptionsVeh extends FiltersOptions {\n vehicleCategories: OptionValue[];\n fuelCards: FuelCard[];\n}\n\n@Component({\n selector: 'ga-vehicle-scope-filter',\n templateUrl: '../scope-filter.component.html',\n styleUrls: ['../scope-filter.component.scss'],\n providers: [ScopeFilterService],\n})\nexport class VehicleScopeFilterComponent extends ScopeFilterComponent\n implements OnInit {\n /**\n * @override\n * Name of the entity expected inside the query. */\n entityFilterName = 'vehicles';\n\n /**\n * @override\n * Filter alias for URL of property\n */\n entityPropertyAlias: FilterAlias = 'vehiclesItems';\n\n /**\n * ------\n * Fluid types\n * ------\n */\n\n /**\n * @override\n * True when a conversion is processed if multiple fuel types are selected.\n */\n hasConversionOnMultipleFluids = false;\n\n /**\n * @override\n * Error message to display when zero fuel type is selected\n */\n missingFluidTypeMessage = 'Vous devez sélectionner au moins un carburant';\n\n /**\n * @override\n * Returns no message when multiple fuel tyeps are selected as there is no conversion needed.\n * */\n multipleFluidTypesMessage = '';\n\n /**\n * @override\n * Name to translate and display above the filter of available fluids */\n fluidTypesName = 'fuel_p';\n\n /**\n * -------\n * Top filter\n * -------\n */\n\n /**\n * @override\n * Elements for the top filter part. Name and value of each filter type. */\n topFilterElements: OptionValueGroup[] = [\n {\n displayName: 'Tous les véhicules',\n value: 'all',\n },\n {\n displayName: 'Par véhicule ',\n totalGroupName: 'Total du véhicule',\n value: 'vehicles',\n tags: {\n textProperty: 'registrationNumber',\n idProperty: '_id',\n },\n },\n {\n displayName: 'Par site ',\n totalGroupName: 'Total du site',\n value: 'sites',\n tags: {\n textProperty: 'complement',\n subTextProperty: 'googleAddress',\n idProperty: '_id',\n },\n },\n {\n displayName: 'Par région',\n totalGroupName: 'Total de la région',\n value: 'regions',\n tags: {\n textProperty: 'displayName',\n idProperty: '_id',\n },\n },\n {\n displayName: 'Par segment',\n totalGroupName: 'Total du segment',\n value: 'vehicleCategories',\n tags: {\n textProperty: 'displayName',\n },\n },\n {\n displayName: 'Par carte de carburant',\n totalGroupName: 'Total de la carte',\n value: 'fuelCards',\n tags: {\n textProperty: 'reference',\n subTextProperty: 'provider',\n idProperty: '_id',\n },\n },\n {\n displayName: 'Personnalisé',\n totalGroupName: 'Personnalisé',\n value: 'custom-filters',\n },\n ];\n\n /**\n * @override\n * Options available for each top filter element. */\n filtersOptions: FiltersOptionsVeh = {\n sites: [],\n entities: [],\n regions: [],\n vehicleCategories: [],\n fuelCards: [],\n };\n\n /**\n * ------\n * Global filter\n * ------\n */\n\n /** Filter holding the selected values */\n filter: FilterVeh;\n\n /**\n * @override\n * List of permitted url params for RRef\n */\n permittedParams = ['le', 'year', 'ds', 'de', 's', 'a', 'c', 'p', 'ct', 'e', 'v', 'fc', 'f', 'cf'];\n\n /**\n * @override\n * Fluids selected inside the filter. Property depends on the entity. */\n getFilterFluidTypes(): OptionValue[] {\n return this.filter.fuelTypes;\n }\n\n /**\n * @override\n * Fluid params to get availble years\n */\n get fluidYearsParams(): Params {\n return { fluids: ['fuel'] };\n }\n\n /**\n * @override\n * Reset the filter: unselect values */\n resetFilter(): void {\n this.filter = {\n sites: [],\n fuelTypes: [],\n years: {\n dateStart: '',\n dateEnd: '',\n },\n year: '',\n regions: [],\n companies: [],\n customFilter: null,\n entities: [],\n vehicleCategories: [],\n fuelCards: [],\n };\n }\n\n /**\n * @override\n * Get perimeter displayed name\n * @param {OptionValueGroup} perimeter - perimeter to get the display name of\n * @return {string} full display name of the perimeter\n */\n getPerimeterDisplayName(perimeter: OptionValueGroup): string {\n if (perimeter.value === 'all') {\n return perimeter.displayName;\n }\n\n return `Sites ${perimeter.displayName}`;\n }\n\n /**\n * ------\n * INIT VEHICLES DATA\n * ------\n */\n\n /**\n * @override\n * Init the fuel types: must be in the given companies' vehicles + available for this page (no restriction so far)\n * Select all fuel types by default\n */\n async initSelectedItems(selectedItems: string[]): Promise {\n if (!this.fluidTypesAccepted.length) {\n this.fluidTypesAccepted = this.energyService.getAllFuelTypes(); // all existing fuel types\n }\n /** existing products in the given companies' vehicles */\n const fuelTypesFromCompanies = await this.filterService.getFuelTypesFromCompanies(false, this.filter.companies);\n\n // intersection from available products & selected companies products + select all by default\n const isSingleSelection =\n this.filtersConfig &&\n this.filtersConfig.toggleButtonSelection &&\n this.filtersConfig.toggleButtonSelection.enabled &&\n this.filtersConfig.toggleButtonSelection.selectionType === 'single';\n this.filter.fuelTypes = fuelTypesFromCompanies\n .filter(fuelType => this.fluidTypesAccepted.includes(fuelType.value))\n .map((fuelType, i) => {\n let isSelected = false;\n if (isSingleSelection) {\n // If single selection, only select first item\n const itemIndex = selectedItems.length ? selectedItems.indexOf(fuelType.value) : i;\n isSelected = itemIndex === 0;\n } else {\n isSelected = selectedItems.length ? selectedItems.indexOf(fuelType.value) >= 0 : true;\n }\n return Object.assign(fuelType, {\n selected: isSelected,\n });\n });\n }\n\n /**\n * @override\n * Get sites from selected companies matching the selected fuel types\n * Init filter with these values, with clean google address displayed\n */\n async initSites(): Promise {\n // create query to get sites having fuel\n const sites = await this.sitesService.getSites({\n companies: this.filter.companies.join(','),\n energies: 'fuel',\n });\n this.filtersOptions.sites = sites.data;\n\n this.sitesService.createGoogleAddressToDisplay(this.filtersOptions.sites);\n }\n\n /**\n * @override\n * Initilaze all filters elements: vehicles, vehicles' categories, fuel cards.\n */\n async initEntitiesData(): Promise {\n await Promise.all([this.initVehicles(), this.initCategories(), this.initFuelCards()]);\n }\n\n /**\n * Initialize the list of vehicles from the sites's vehicles populated.\n */\n initVehicles(): void {\n this.filtersOptions.sites.forEach(site => {\n this.filtersOptions.entities.push(...site.vehicles);\n });\n }\n\n /**\n * Initialize the vehicles' categories, formated for autocompletion inputs.\n */\n async initCategories(): Promise {\n try {\n const categories = await this.vehiclesService.getAttributesFromCompanies(\n this.filter.companies,\n 'categories'\n );\n\n this.filtersOptions.vehicleCategories = categories.map(category => {\n return {\n displayName: category.name,\n value: category._id,\n };\n });\n } catch (e) {\n this.filtersOptions.vehicleCategories = [];\n }\n }\n\n /**\n * Initialize the fuel cards.\n */\n async initFuelCards() {\n try {\n this.filtersOptions.fuelCards = await this.fuelCardService.getFuelCardsFromCompanies({\n companies: this.filter.companies,\n });\n } catch (e) {\n this.filtersOptions.fuelCards = [];\n }\n }\n\n /**\n * ------\n * COMPONENT INTERACTIONS\n * ------\n */\n\n /**\n * @override\n * Handle params when present.\n * Preselect the every available filters from params.\n * @param {Param} params - router params\n */\n initComponentSetup(params: Params): void {\n this.initComponentCommonSetup(params);\n\n // Energy settings.\n const fuelTypes = this.filterService.getParamAliasValues(params, 'fuelTypes', this.fluidTypesAccepted);\n this.updateItemsWithTypeFilter('fuelTypes', fuelTypes);\n\n // Fuel cards\n this.updateFilterByParam(params, 'fuelCards', 'fuelCards', 'fuelCards', 'fuelCards', '_id');\n\n // Categories\n this.updateFilterByParam(\n params,\n 'vehicleCategories',\n 'vehicleCategories',\n 'vehicleCategories',\n 'vehicleCategories',\n 'value'\n );\n\n // Regions\n this.updateFilterByParam(params, 'regions', 'regions', 'regions', 'regions', 'value');\n\n // Sites\n this.updateFilterByParam(params, 'sites', 'sites', 'sites', 'sites', '_id');\n\n // Vehicles\n this.updateFilterByParam(params, 'vehicles', 'vehicles', 'sites', 'entities', '_id');\n }\n\n /**\n * @override\n * Create the query from the selected elements inside the filter\n * @returns {QueryFilterVeh} query created\n */\n createQuery(): QueryFilterVeh {\n // empty query filter\n const filter: QueryFilterVeh = this.resetQueryFilter();\n\n // set dates\n this.setFilterDates(filter);\n\n // set fuel types\n const fuelTypesValues = this.filter.fuelTypes\n .filter(fuelType => fuelType.selected)\n .map(fuelType => fuelType.value);\n filter.fuelTypes = fuelTypesValues.join(',');\n\n // set sites perimeter\n if (!this.disablePerimeter) {\n const selectedPerimeter = this.perimeterFilterElements.find(x => x.selected === true);\n if (selectedPerimeter) {\n filter.sitesStatus = selectedPerimeter.value;\n }\n }\n\n // set the query for the current top filter element selected\n switch (this.mainFilterSelected) {\n case 'regions':\n this.mainFilterSelectedValues = this.filter.regions;\n filter.regions = this.filter.regions.map(region => region.value).join(',');\n break;\n\n case 'sites':\n this.mainFilterSelectedValues = this.filter.sites;\n filter.sites = this.filter.sites.map(site => site._id).join(',');\n break;\n\n case 'vehicles':\n this.mainFilterSelectedValues = this.filter.entities;\n filter.vehicles = this.filter.entities.map(veh => veh._id).join(',');\n break;\n\n case 'vehicleCategories':\n this.mainFilterSelectedValues = this.filter.vehicleCategories;\n filter.vehicleCategories = this.filter.vehicleCategories.map(cat => cat.value).join(',');\n break;\n\n case 'fuelCards':\n this.mainFilterSelectedValues = this.filter.fuelCards;\n filter.fuelCards = this.filter.fuelCards.map(card => card._id).join(',');\n break;\n\n case 'custom-filters':\n this.mainFilterSelectedValues = [this.filter.customFilter];\n if (this.customFilterId) {\n filter.customFilter = this.customFilterId;\n } else {\n filter.customFilter =\n this.filter.customFilter && this.filter.customFilter.value\n ? this.filter.customFilter.value.toString()\n : null;\n }\n break;\n\n case 'all':\n default:\n this.mainFilterSelected = 'all';\n this.mainFilterSelectedValues = [\n {\n value: 'all',\n displayName: 'Tous les véhicules',\n },\n ];\n break;\n }\n\n this.filterChange.emit(filter);\n return filter;\n }\n\n /**\n * Reset the query emited to the parent page\n * @returns {QueryFilterVeh} empty query with only companies ids set\n */\n resetQueryFilter(): QueryFilterVeh {\n return {\n dateStart: '',\n dateEnd: '',\n fuelTypes: '',\n sites: '',\n vehicles: '',\n regions: '',\n vehicleCategories: '',\n companies: this.filter.companies ? this.filter.companies.join(',') : '',\n fuelCards: '',\n sitesStatus: 'all',\n customFilter: '',\n entities: '',\n energies: 'fuel',\n };\n }\n}\n","export default \".bloc-select {\\n font-size: 12px;\\n width: 100%;\\n position: relative;\\n padding-top: 37px;\\n}\\n.bloc-select select {\\n font-size: 12px;\\n border-radius: 5px;\\n border: 1px solid rgba(0, 0, 0, 0.15);\\n color: #495057;\\n width: 100%;\\n position: relative;\\n right: 0;\\n padding: 0.5rem 0.75rem;\\n height: 33px;\\n background-color: white;\\n}\\n.bloc-select .text {\\n line-height: 40px;\\n height: 40px;\\n width: 100%;\\n padding-left: 2.5px;\\n cursor: pointer;\\n background-color: white;\\n text-align: left;\\n border: none;\\n padding-top: 0;\\n padding-bottom: 0;\\n padding-right: 0;\\n}\\np {\\n margin-bottom: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvc2VsZWN0LWZpbHRlci9zZWxlY3QtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL3NlbGVjdC1maWx0ZXIvc2VsZWN0LWZpbHRlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGVBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtBQ0NKO0FEQUk7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxxQ0FBQTtFQUNBLGNBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUNFUjtBREFJO0VBQ0ksaUJBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLHVCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QUNFUjtBRENBO0VBQ0ksZ0JBQUE7QUNFSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvc2VsZWN0LWZpbHRlci9zZWxlY3QtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmJsb2Mtc2VsZWN0IHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctdG9wOiAzN3B4O1xuICAgIHNlbGVjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICBjb2xvcjogIzQ5NTA1NztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgICAgICBoZWlnaHQ6IDMzcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAudGV4dCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDIuNXB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICB9XG59XG5wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuIiwiLmJsb2Mtc2VsZWN0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXRvcDogMzdweDtcbn1cbi5ibG9jLXNlbGVjdCBzZWxlY3Qge1xuICBmb250LXNpemU6IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgaGVpZ2h0OiAzM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5ibG9jLXNlbGVjdCAudGV4dCB7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDIuNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cblxucCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FilterService } from '../../../services/filter/filter.service';\n\n@Component({\n selector: 'ga-select-filter',\n templateUrl: './select-filter.component.html',\n styleUrls: ['./select-filter.component.scss'],\n providers: [],\n})\nexport class SelectFilterComponent implements OnInit {\n @Output() updateElement: EventEmitter = new EventEmitter();\n\n @Input() provider = 'energies';\n\n @Input() currentValue = '';\n\n @Input() values: any[] = [];\n\n constructor(private filterService: FilterService) {}\n\n ngOnInit() {\n this.checkProvider(() => {\n // If something to do after the values async initialization\n });\n }\n\n checkProvider(callback) {\n // If provider provided and values not provided by parent\n if (this.provider && !this.values.length) {\n this.getProvidedValues().then(response => {\n this.values = response.data;\n return callback();\n });\n } else {\n return callback();\n }\n }\n\n getProvidedValues() {\n return this.filterService.getQueryResultByProvider(this.provider);\n }\n\n updateCurrentValue(value) {\n this.updateElement.emit(value);\n }\n\n getNameFromProvider() {\n let name = ' ';\n\n switch (this.provider) {\n case 'energies':\n name = 'Énergies';\n break;\n\n case 'sites':\n name = 'Sites';\n break;\n\n case 'categories':\n name = 'Catégories';\n break;\n\n case 'regions':\n name = 'Régions';\n break;\n\n default:\n break;\n }\n\n return name;\n }\n}\n","export default \".tag {\\n padding: 5px 10px;\\n font-size: 12px;\\n box-sizing: border-box;\\n color: #607188;\\n display: inline-block;\\n vertical-align: top;\\n border-radius: 2px;\\n position: relative;\\n width: inherit;\\n margin: 4px 10px 0 0;\\n}\\n.tag:first-child {\\n margin-left: 0;\\n}\\n.tag .text {\\n margin-right: 10px;\\n font-size: 12px;\\n font-weight: 600;\\n line-height: 2;\\n}\\n.tag .text-alone {\\n text-transform: uppercase;\\n font-weight: bold;\\n float: left;\\n margin-right: 25px;\\n font-size: 11px;\\n margin-left: 6px;\\n}\\n.tag .subtext {\\n font-size: 12px;\\n line-height: 2;\\n margin-right: 20px;\\n}\\n.tag span.remove {\\n margin-top: 1px;\\n margin-right: 10px;\\n cursor: pointer;\\n display: inline-block;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvc2ltcGxlLXRhZ3Mvc2ltcGxlLXRhZ3MuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL3NpbXBsZS10YWdzL3NpbXBsZS10YWdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0VBQ0Esc0JBQUE7RUFDQSxjQ29CUztFRG5CVCxxQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxvQkFBQTtBRURKO0FGR0k7RUFDSSxjQUFBO0FFRFI7QUZJSTtFQUNJLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTtBRUZSO0FGS0k7RUFDSSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0FFSFI7QUZNSTtFQUNJLGVBQUE7RUFDQSxjQUFBO0VBQ0Esa0JBQUE7QUVKUjtBRk9JO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLHFCQUFBO0FFTFIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL3NpbXBsZS10YWdzL3NpbXBsZS10YWdzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcblxuLnRhZyB7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiA0cHggMTBweCAwIDA7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLnRleHQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDI7XG4gICAgfVxuXG4gICAgLnRleHQtYWxvbmUge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMjVweDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIH1cblxuICAgIC5zdWJ0ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgIH1cblxuICAgIHNwYW4ucmVtb3ZlIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMXB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiLnRhZyB7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGNvbG9yOiAjNjA3MTg4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogaW5oZXJpdDtcbiAgbWFyZ2luOiA0cHggMTBweCAwIDA7XG59XG4udGFnOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG4udGFnIC50ZXh0IHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAyO1xufVxuLnRhZyAudGV4dC1hbG9uZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAyNXB4O1xuICBmb250LXNpemU6IDExcHg7XG4gIG1hcmdpbi1sZWZ0OiA2cHg7XG59XG4udGFnIC5zdWJ0ZXh0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMjtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuLnRhZyBzcGFuLnJlbW92ZSB7XG4gIG1hcmdpbi10b3A6IDFweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-simple-tags',\n templateUrl: './simple-tags.component.html',\n styleUrls: ['./simple-tags.component.scss'],\n providers: [],\n})\nexport class SimpleTagsComponent implements OnInit {\n @Input() elements: any[] = [];\n @Input() textProperty = 'displayName';\n @Input() subTextProperty: string = null;\n @Input() idProperty = 'value';\n // Define bootstrap col width (1-12 or auto)\n @Input() colSize = '4';\n @Output() removeTag: EventEmitter = new EventEmitter();\n @Input() canDelete = true;\n\n constructor() {}\n ngOnInit() {}\n\n removeTagClicked(tag) {\n const id = this.elements.findIndex(element => element[this.idProperty] === tag[this.idProperty]);\n const elementToRemove = this.elements.find(element => element[this.idProperty] === tag[this.idProperty]);\n this.elements.splice(id, 1);\n this.removeTag.emit(elementToRemove);\n }\n\n getElementText(tag) {\n return tag[this.textProperty] ? tag[this.textProperty] : '';\n }\n\n hasElementSubText(tag) {\n return !tag[this.subTextProperty] ? false : true;\n }\n\n getElementSubText(tag) {\n return tag[this.subTextProperty] ? tag[this.subTextProperty] : '';\n }\n\n getClassCol() {\n return 'col-md-' + this.colSize + ' col-sm-' + this.colSize;\n }\n\n getClass(tag) {\n return tag[this.subTextProperty] ? 'text' : 'text text-alone';\n }\n\n getFluidType(tag: any) {\n return tag.value;\n }\n}\n","export default \".switch-bloc-row {\\n font-size: 15px;\\n margin-top: 15px;\\n}\\n\\n.switch-bloc-row .citron-btn {\\n padding: 20px 15px;\\n width: 100%;\\n}\\n\\n.icon-switch-bloc {\\n height: 35px;\\n width: 35px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n width: 100%;\\n}\\n\\n.icon-switch-bloc.icon--default {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_layer.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_layer.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--site {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pin2.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pin2.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--category {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_category.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_category.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--region {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_region.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_region.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--routingreference {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl-filled.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl-filled.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--custom-filters {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_custom-filters.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_custom-filters.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--vehicles {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_vehicle.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_vehicle.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--fuelcards {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_fuelcard.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_fuelcard.svg\\\");\\n}\\n\\n.icon-switch-bloc.icon--vehiclecategories {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_veh_segment.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_veh_segment.svg\\\");\\n}\\n\\n.icon-switch-bloc.active {\\n background-color: white !important;\\n}\\n\\n.inactive {\\n background-color: #ffffff;\\n color: #607188;\\n}\\n\\n.inactive:hover {\\n color: white;\\n}\\n\\n.label-switch-bloc {\\n margin-top: 10px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvc3dpdGNoLWJsb2MtZmlsdGVyL3N3aXRjaC1ibG9jLWZpbHRlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVycy9zd2l0Y2gtYmxvYy1maWx0ZXIvc3dpdGNoLWJsb2MtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7QUNGSjs7QURLQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtBQ0ZKOztBREtBO0VFWkksWUZhaUI7RUVaakIsV0ZZdUI7RUVYdkIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VGc0NBLFdBQUE7QUMxQko7O0FEREk7RUFDSSxpRUFBQTtVQUFBLHlEQUFBO0FDR1I7O0FEREk7RUFDSSxnRUFBQTtVQUFBLHdEQUFBO0FDR1I7O0FEREk7RUFDSSxvRUFBQTtVQUFBLDREQUFBO0FDR1I7O0FEREk7RUFDSSxrRUFBQTtVQUFBLDBEQUFBO0FDR1I7O0FEREk7RUFDSSxzRUFBQTtVQUFBLDhEQUFBO0FDR1I7O0FEREk7RUFDSSwwRUFBQTtVQUFBLGtFQUFBO0FDR1I7O0FEREk7RUFDSSxtRUFBQTtVQUFBLDJEQUFBO0FDR1I7O0FEREk7RUFDSSxvRUFBQTtVQUFBLDREQUFBO0FDR1I7O0FEREk7RUFDSSx1RUFBQTtVQUFBLCtEQUFBO0FDR1I7O0FEQ0k7RUFDSSxrQ0FBQTtBQ0NSOztBREdBO0VBQ0kseUJBQUE7RUFDQSxjRzFCUztBRjBCYjs7QURHQTtFQUNJLFlBQUE7QUNBSjs7QURHQTtFQUNJLGdCQUFBO0FDQUoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL3N3aXRjaC1ibG9jLWZpbHRlci9zd2l0Y2gtYmxvYy1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucy5zY3NzJztcblxuLnN3aXRjaC1ibG9jLXJvdyB7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG59XG5cbi5zd2l0Y2gtYmxvYy1yb3cgLmNpdHJvbi1idG4ge1xuICAgIHBhZGRpbmc6IDIwcHggMTVweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmljb24tc3dpdGNoLWJsb2Mge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMzVweCwgMzVweCk7XG5cbiAgICAmLmljb24tLWRlZmF1bHQge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fbGF5ZXIuc3ZnJyk7XG4gICAgfVxuICAgICYuaWNvbi0tc2l0ZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19waW4yLnN2ZycpO1xuICAgIH1cbiAgICAmLmljb24tLWNhdGVnb3J5IHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2NhdGVnb3J5LnN2ZycpO1xuICAgIH1cbiAgICAmLmljb24tLXJlZ2lvbiB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19yZWdpb24uc3ZnJyk7XG4gICAgfVxuICAgICYuaWNvbi0tcm91dGluZ3JlZmVyZW5jZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19wZGwtZmlsbGVkLnN2ZycpO1xuICAgIH1cbiAgICAmLmljb24tLWN1c3RvbS1maWx0ZXJzIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2N1c3RvbS1maWx0ZXJzLnN2ZycpO1xuICAgIH1cbiAgICAmLmljb24tLXZlaGljbGVzIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3ZlaGljbGUuc3ZnJyk7XG4gICAgfVxuICAgICYuaWNvbi0tZnVlbGNhcmRzIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2Z1ZWxjYXJkLnN2ZycpO1xuICAgIH1cbiAgICAmLmljb24tLXZlaGljbGVjYXRlZ29yaWVzIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3ZlaF9zZWdtZW50LnN2ZycpO1xuICAgIH1cbiAgICB3aWR0aDogMTAwJTtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5pbmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogJHRleHQtY29sb3I7XG59XG5cbi5pbmFjdGl2ZTpob3ZlciB7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4ubGFiZWwtc3dpdGNoLWJsb2Mge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG59XG4iLCIuc3dpdGNoLWJsb2Mtcm93IHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBtYXJnaW4tdG9wOiAxNXB4O1xufVxuXG4uc3dpdGNoLWJsb2Mtcm93IC5jaXRyb24tYnRuIHtcbiAgcGFkZGluZzogMjBweCAxNXB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmljb24tc3dpdGNoLWJsb2Mge1xuICBoZWlnaHQ6IDM1cHg7XG4gIHdpZHRoOiAzNXB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgd2lkdGg6IDEwMCU7XG59XG4uaWNvbi1zd2l0Y2gtYmxvYy5pY29uLS1kZWZhdWx0IHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19sYXllci5zdmdcIik7XG59XG4uaWNvbi1zd2l0Y2gtYmxvYy5pY29uLS1zaXRlIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19waW4yLnN2Z1wiKTtcbn1cbi5pY29uLXN3aXRjaC1ibG9jLmljb24tLWNhdGVnb3J5IHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19jYXRlZ29yeS5zdmdcIik7XG59XG4uaWNvbi1zd2l0Y2gtYmxvYy5pY29uLS1yZWdpb24ge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3JlZ2lvbi5zdmdcIik7XG59XG4uaWNvbi1zd2l0Y2gtYmxvYy5pY29uLS1yb3V0aW5ncmVmZXJlbmNlIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19wZGwtZmlsbGVkLnN2Z1wiKTtcbn1cbi5pY29uLXN3aXRjaC1ibG9jLmljb24tLWN1c3RvbS1maWx0ZXJzIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19jdXN0b20tZmlsdGVycy5zdmdcIik7XG59XG4uaWNvbi1zd2l0Y2gtYmxvYy5pY29uLS12ZWhpY2xlcyB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fdmVoaWNsZS5zdmdcIik7XG59XG4uaWNvbi1zd2l0Y2gtYmxvYy5pY29uLS1mdWVsY2FyZHMge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2Z1ZWxjYXJkLnN2Z1wiKTtcbn1cbi5pY29uLXN3aXRjaC1ibG9jLmljb24tLXZlaGljbGVjYXRlZ29yaWVzIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b192ZWhfc2VnbWVudC5zdmdcIik7XG59XG4uaWNvbi1zd2l0Y2gtYmxvYy5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uaW5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBjb2xvcjogIzYwNzE4ODtcbn1cblxuLmluYWN0aXZlOmhvdmVyIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4ubGFiZWwtc3dpdGNoLWJsb2Mge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xufSIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { OptionValueGroup } from '../scope-filter/scope-filter.interface';\n\n@Component({\n selector: 'ga-switch-bloc-filter',\n templateUrl: './switch-bloc-filter.component.html',\n styleUrls: ['./switch-bloc-filter.component.scss'],\n})\nexport class SwitchBlocFilterComponent implements OnInit {\n /** Selected filter element inside the main filter */\n @Input() method = 'all';\n\n /** Selected set of elements for the top filter */\n @Input() elements: OptionValueGroup[] = [];\n\n @Input() columnsWidth = 0;\n\n /** Emits a new value each time the selected filter element changes */\n @Output() updateFilter: EventEmitter = new EventEmitter();\n\n /** Name if the filter element being hovered - to highlight it */\n mouseover = '';\n\n constructor() {}\n ngOnInit() {}\n\n onRadioFilterChange(value: string) {\n this.method = value;\n this.updateFilter.emit(value);\n }\n\n getColumn() {\n return this.columnsWidth > 0 ? 'col-md-' + this.columnsWidth : 'col';\n }\n\n getClass(elem: OptionValueGroup) {\n return elem.value !== this.method ? ' inactive' : ' active';\n }\n\n getIcon(elem: OptionValueGroup) {\n const color = elem.value === this.method || elem.value === this.mouseover ? ' active' : '';\n let classIcon = '';\n switch (elem.value) {\n case 'all':\n classIcon = 'icon--default';\n break;\n case 'site':\n case 'sites':\n classIcon = 'icon--site';\n break;\n case 'categories':\n classIcon = 'icon--category';\n break;\n case 'regions':\n classIcon = 'icon--region';\n break;\n case 'routingreference':\n case 'routingreferences':\n classIcon = 'icon--routingreference';\n break;\n case 'custom-filters':\n case 'customfilters':\n classIcon = 'icon--custom-filters';\n break;\n case 'vehicles':\n classIcon = 'icon--vehicles';\n break;\n case 'fuelCards':\n classIcon = 'icon--fuelcards';\n break;\n case 'vehicleCategories':\n classIcon = 'icon--vehiclecategories';\n break;\n default:\n classIcon = 'icon--default';\n break;\n }\n\n return classIcon + color;\n }\n\n onMouseOver(value: string) {\n this.mouseover = value;\n }\n\n onMouseOut(value: string) {\n if (this.mouseover === value) {\n this.mouseover = '';\n }\n }\n}\n","export default \"form {\\n display: -webkit-box;\\n display: flex;\\n font-size: 12px;\\n padding-bottom: 0;\\n}\\nform.vertical {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\nform.vertical .form-check label {\\n margin: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvc3dpdGNoLWZpbHRlci9zd2l0Y2gtZmlsdGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXJzL3N3aXRjaC1maWx0ZXIvc3dpdGNoLWZpbHRlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtBQ0NKO0FEQ0k7RUFDSSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7QUNDUjtBRENRO0VBQ0ksU0FBQTtBQ0NaIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVycy9zd2l0Y2gtZmlsdGVyL3N3aXRjaC1maWx0ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgICYudmVydGljYWwge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIC5mb3JtLWNoZWNrIGxhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImZvcm0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmb250LXNpemU6IDEycHg7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xufVxuZm9ybS52ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5mb3JtLnZlcnRpY2FsIC5mb3JtLWNoZWNrIGxhYmVsIHtcbiAgbWFyZ2luOiAwO1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SwitchFilterElement } from './switch-filter-element.interface';\n\n@Component({\n selector: 'ga-switch-filter',\n templateUrl: './switch-filter.component.html',\n styleUrls: ['./switch-filter.component.scss'],\n})\nexport class SwitchFilterComponent implements OnInit {\n @Input() method = 'all';\n @Input() elements: SwitchFilterElement[] = [];\n @Input() columnsWidth = 0;\n @Input() direction = 'horizontal';\n @Input() fullLinear = false;\n @Output() updateFilter: EventEmitter = new EventEmitter();\n\n constructor() {}\n ngOnInit() {}\n\n onRadioFilterChange(value) {\n this.updateFilter.emit(value);\n }\n\n public getClassFormCheck() {\n return this.direction === 'horizontal' ? (this.columnsWidth > 0 ? 'col-md-' + this.columnsWidth : 'col') : '';\n }\n\n public getFormClass() {\n return this.direction === 'vertical' ? 'vertical' : '';\n }\n\n public getColLabelClass() {\n return this.direction === 'vertical' || this.fullLinear ? 'col p-0' : 'col-md-12 p-0';\n }\n\n public getColRadioClass() {\n return this.direction === 'vertical' || this.fullLinear ? 'col-md-auto' : 'col-md-12 p-0';\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlcnMvdGV4dC1maWx0ZXIvdGV4dC1maWx0ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-text-filter',\n templateUrl: './text-filter.component.html',\n styleUrls: ['./text-filter.component.scss'],\n})\nexport class TextFilterComponent implements OnInit {\n @Output() updateElement: EventEmitter = new EventEmitter();\n @Input() currentValue = '';\n\n constructor() {}\n\n ngOnInit() {}\n\n updateCurrentValue(value) {\n this.updateElement.emit(value);\n }\n}\n","export default \".legend-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 0;\\n}\\n.legend-container ul {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 0;\\n margin: 0;\\n}\\n.legend-container ul > li {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n list-style: none;\\n margin-right: 20px;\\n font-size: 13px;\\n}\\n.legend-container ul > li:last-child {\\n margin-right: 0;\\n}\\n.legend-container .legend-icon {\\n margin-right: 5px;\\n}\\n.legend-container .legend-color {\\n border-radius: 50%;\\n width: 10px;\\n min-width: 10px;\\n height: 10px;\\n margin-right: 10px;\\n}\\n.legend-container .legend-text {\\n line-height: 1.25;\\n}\\n.legend-container .center {\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2xlZ2VuZHMvbGVnZW5kLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9sZWdlbmRzL2xlZ2VuZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0EsVUFBQTtBQ0NKO0FEQ0k7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7QUNDUjtBRENRO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0FDQ1o7QURDWTtFQUNJLGVBQUE7QUNDaEI7QURJSTtFQUNJLGlCQUFBO0FDRlI7QURLSTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7QUNIUjtBRE1JO0VBQ0ksaUJBQUE7QUNKUjtBRE9JO0VBQ0ksd0JBQUE7VUFBQSx1QkFBQTtBQ0xSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbGVnZW5kcy9sZWdlbmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubGVnZW5kLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgdWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgJiA+IGxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubGVnZW5kLWljb24ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICB9XG5cbiAgICAubGVnZW5kLWNvbG9yIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgbWluLXdpZHRoOiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB9XG5cbiAgICAubGVnZW5kLXRleHQge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICB9XG5cbiAgICAuY2VudGVyIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxufVxuIiwiLmxlZ2VuZC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDA7XG59XG4ubGVnZW5kLWNvbnRhaW5lciB1bCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cbi5sZWdlbmQtY29udGFpbmVyIHVsID4gbGkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cbi5sZWdlbmQtY29udGFpbmVyIHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cbi5sZWdlbmQtY29udGFpbmVyIC5sZWdlbmQtaWNvbiB7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLmxlZ2VuZC1jb250YWluZXIgLmxlZ2VuZC1jb2xvciB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDEwcHg7XG4gIG1pbi13aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG4ubGVnZW5kLWNvbnRhaW5lciAubGVnZW5kLXRleHQge1xuICBsaW5lLWhlaWdodDogMS4yNTtcbn1cbi5sZWdlbmQtY29udGFpbmVyIC5jZW50ZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Legend, LegendConfig } from './legend.interface';\n\n@Component({\n selector: 'ga-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss'],\n providers: [],\n})\nexport class LegendComponent implements OnInit {\n /**\n * legend items defined by name & color (ex rgb: '255,255,255')\n */\n @Input() legends: Legend[];\n\n /**\n * Get the styles of the legend container defined in the children component\n */\n @Input() legendConfig: LegendConfig;\n\n public containerClasses: string[] = [];\n\n constructor() {}\n\n ngOnInit() {\n this.initConfig();\n }\n\n /**\n * Get the rgb color from by given string (ex '255,255,255')\n * @param {string} color\n */\n getRgbColor(color: string): string {\n return color ? `rgb(${color})` : null;\n }\n\n initConfig() {\n if (_.get(this.legendConfig, 'alignement.enabled')) {\n const value = this.legendConfig.alignement.value;\n this.containerClasses.push(`float-${value}`);\n }\n }\n}\n","export default \".message-display {\\n font-size: 0.875rem;\\n background-color: #fff;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2xvYWQtY3VydmUvbWVzc2FnZS1kaXNwbGF5L21lc3NhZ2UtZGlzcGxheS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbG9hZC1jdXJ2ZS9tZXNzYWdlLWRpc3BsYXkvbWVzc2FnZS1kaXNwbGF5LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksbUJBQUE7RUFDQSxzQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbG9hZC1jdXJ2ZS9tZXNzYWdlLWRpc3BsYXkvbWVzc2FnZS1kaXNwbGF5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm1lc3NhZ2UtZGlzcGxheSB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuIiwiLm1lc3NhZ2UtZGlzcGxheSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59Il19 */\"","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ErrorDisplay } from './message-display.interface';\nimport { MessageDisplayService } from './message-display.service';\n\n@Component({\n selector: 'ga-lc-message-display',\n templateUrl: './message-display.component.html',\n styleUrls: ['./message-display.component.scss'],\n providers: [],\n})\nexport class MessageDisplayComponent implements OnInit, OnDestroy {\n /** String value setting loading text alignment. Possible values are \"center\", \"left\" or \"right\" */\n @Input() align: 'center' | 'left' | 'right' = 'center';\n\n /** Subscriptions */\n private subscriptions: Subscription;\n\n public errors: ErrorDisplay[] = [];\n public get textAlignClass(): string {\n return 'align-' + this.align;\n }\n\n constructor(private service: MessageDisplayService) {}\n\n ngOnInit() {\n this.subscriptions = this.service.$errors.subscribe({\n next: value => {\n this.errors = value;\n },\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.remove(this.subscriptions);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { LoadCurveData, ProviderErrorRecap } from 'app/shared/models/load-curve.interface';\nimport { ErrorDisplay } from './message-display.interface';\n\n@Injectable()\nexport class MessageDisplayService {\n public $errors: BehaviorSubject = new BehaviorSubject([]);\n\n private mapping: { [code: string]: string } = {\n SGT562: 'Problème : le message de demande est malformé',\n SGT4K4: 'La date de début doit être antérieure à la date de fin.',\n SGT4H2:\n 'La demande ne peut pas aboutir, les données de mesures ne sont pas corrigées pour un point du segment C5.',\n SGT4L8: 'La durée demandée n’est pas compatible avec le type de mesure demandé',\n SGT441: 'Les pas de puissances demandés sont incorrects.',\n SGT583: 'La demande ne peut pas aboutir, le sens de la mesure ne correspond pas.',\n SGT4N5: \"Une opposition à l'enregistrement de la courbe de charge est déjà active ou demandée sur ce point\",\n SGT4K2: 'Le client doit avoir donné son accord pour la transmission de ses données de mesure.',\n SGT473: \"Le contrat n'est pas actif à la date souhaitée.\",\n SGT500: 'Une erreur technique est survenue',\n SGT4G3: 'Aucune mesure trouvée sur ce point',\n SGT4K1: 'La date de fin doit être antérieure ou égale à la date du jour',\n SGT4M7: \"La consultation des données de mesure n'est pas possible pour un point de regroupement TURPE\",\n SGT4M2: \"Demande non recevable : Le point n'a jamais été mis en service\",\n SGT400: 'Une erreur fonctionnelle est survenue',\n SGT4L1: 'Il n’existe aucun contrat actif sur le point à la date de la demande',\n SGT587: 'La demande ne peut pas aboutir, le client ne dispose pas d’un contrat en soutirage sur ce point',\n SGT588: 'La demande ne peut pas aboutir, le client ne dispose pas d’un contrat en injection sur ce point',\n SGT4N8: \"La demande ne peut pas aboutir, le segment du point n'est pas compatible avec la demande\",\n SGT401: 'Demande non recevable : point inexistant',\n SGT477: 'Une mise en service est en cours sur le point',\n SGT478: 'Un changement de fournisseur est en cours sur le point',\n SGT480: 'Une modification contractuelle est en cours sur le point',\n SGT4H9: \"La demande ne porte pas sur un point équipé d'un compteur communicant ouvert aux services niveau 2\",\n SGT4M1: 'Demande non recevable : Le point est résilié',\n SGT4M3: 'Demande non recevable : la situation du point nécessite un nouveau raccordement',\n SGT589: 'La demande ne peut pas aboutir car le compteur n’est actuellement pas téléopérable',\n SGT422: 'La situation du point ne permet pas de répondre à la demande',\n SGT4N1:\n 'La consultation de données de mesures n’est autorisée que sur la période sur laquelle le client est détenteur du point',\n };\n\n private getMessage(code: string): string {\n const message = this.mapping[code];\n if (message) {\n return message;\n }\n return `Erreur inconnue (${code})`;\n }\n\n /**\n * Set errors from load curve data\n * @param data - load curve data for routing references\n */\n public setErrors(data: LoadCurveData[]) {\n // Get all errors from all sources\n this.$errors.next(\n data.reduce((m: ErrorDisplay[], a) => m.concat(a.providersErrors.map(e => this.getErrorDisplay(e, a))), [])\n );\n }\n\n /**\n * Get error display.\n * If error min date is before data start date, then set error min date to data start date and substract one count.\n * it's because error min date is at the beggining of the day (errors concern full days)\n * while data can be at anytime (a measure be set at any time)\n * This is specific to Enedis but our only provider with errors for now (and will be for this app)\n * @example\n * \"minDate\": \"2021-09-30T00:00:00.000Z\" -> Displayed 30/09/2021 in France timezone\n * \"start\": \"2021-09-30T22:00:00.000Z\" -> Displayed 01/10/2021 in France timezone\n * @param error\n * @param data\n */\n private getErrorDisplay(error: ProviderErrorRecap, data: LoadCurveData): ErrorDisplay {\n const display: ErrorDisplay = {\n ...error,\n name: data.name.replace(' - Enedis', ''),\n message: this.getMessage(error.providerErrorCode),\n };\n if (display.minDate < data.start) {\n display.minDate = data.start;\n display.count--;\n }\n return display;\n }\n}\n","export default \".modal-content {\\n margin-top: 25px;\\n padding: 12px;\\n}\\n\\n.error {\\n font-size: 14px;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n color: #db4b47;\\n line-height: 1.3;\\n text-align: left;\\n margin-top: 6px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy9pbnB1dC1tb2RhbC9pbnB1dC1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2lucHV0LW1vZGFsL2lucHV0LW1vZGFsLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLGdCQUFBO0VBQ0EsYUFBQTtBQ0RKOztBRElBO0VBQ0ksZUFBQTtFQUNBLHFDQUFBO0VBQ0EsY0VZSTtFRlhKLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0FDREoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9tb2RhbHMvaW5wdXQtbW9kYWwvaW5wdXQtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLm1vZGFsLWNvbnRlbnQge1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgcGFkZGluZzogMTJweDtcbn1cblxuLmVycm9yIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICBjb2xvcjogJGVycm9yO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG59XG4iLCIubW9kYWwtY29udGVudCB7XG4gIG1hcmdpbi10b3A6IDI1cHg7XG4gIHBhZGRpbmc6IDEycHg7XG59XG5cbi5lcnJvciB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogI2RiNGI0NztcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogNnB4O1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { SwalComponent, SwalPortalTargets } from '@sweetalert2/ngx-sweetalert2';\nimport { modalConfigDefaults } from 'ngx-bootstrap/modal/modal-options.class';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-input-modal',\n templateUrl: './input-modal.component.html',\n styleUrls: ['./input-modal.component.scss'],\n})\nexport class InputModalComponent implements OnInit {\n inputModel: string;\n swalOptions: any = {\n text: 'will be replaced with content in swal component', // THIS IS IMPORTANT KEEP IT AS IT OR CONTENT WONT BE SHOWN\n showCancelButton: true,\n };\n\n @Input() value: any;\n @Input() error: string;\n @Input() title: string;\n @Input() text: string;\n @Input() inputType = 'text';\n @Input() placeholder: string;\n @Input() cancelBtnText = 'Annuler';\n @Input() confirmBtnText = 'Enregistrer';\n\n @Output() confirm: EventEmitter = new EventEmitter();\n @Output() close: EventEmitter = new EventEmitter();\n @Output() open: EventEmitter = new EventEmitter();\n\n @ViewChild('modal', { static: true }) private modal: SwalComponent;\n @ViewChild('inputTextGroupName', { static: false }) el: ElementRef;\n\n constructor(public readonly swalTargets: SwalPortalTargets) {}\n\n ngOnInit() {}\n\n onKeyPressed(event) {\n // If key pressed is \"Enter\", confirm\n if (event && event.keyCode === 13) {\n this.sendValue();\n Swal.close();\n this.emitCloseEvent(event);\n }\n }\n\n show() {\n this.modal.fire();\n }\n\n emitOpenEvent(event) {\n this.el.nativeElement.focus();\n this.open.emit(event);\n }\n\n emitCloseEvent(event) {\n this.close.emit(event);\n }\n\n sendValue() {\n this.confirm.emit(this.inputModel);\n this.inputModel = '';\n }\n}\n","export default \".modal-content {\\n margin-top: 25px;\\n padding: 12px;\\n}\\n\\n.error {\\n font-size: 14px;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n color: #db4b47;\\n line-height: 1.3;\\n text-align: left;\\n margin-top: 6px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy95ZXMtbm8tbW9kYWwveWVzLW5vLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9tb2RhbHMveWVzLW5vLW1vZGFsL3llcy1uby1tb2RhbC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxnQkFBQTtFQUNBLGFBQUE7QUNESjs7QURJQTtFQUNJLGVBQUE7RUFDQSxxQ0FBQTtFQUNBLGNFWUk7RUZYSixnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZUFBQTtBQ0RKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL3llcy1uby1tb2RhbC95ZXMtbm8tbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLm1vZGFsLWNvbnRlbnQge1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgcGFkZGluZzogMTJweDtcbn1cblxuLmVycm9yIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICBjb2xvcjogJGVycm9yO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG59XG4iLCIubW9kYWwtY29udGVudCB7XG4gIG1hcmdpbi10b3A6IDI1cHg7XG4gIHBhZGRpbmc6IDEycHg7XG59XG5cbi5lcnJvciB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogI2RiNGI0NztcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogNnB4O1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { SwalComponent } from '@sweetalert2/ngx-sweetalert2';\nimport { SwalPortalTargets } from '@sweetalert2/ngx-sweetalert2';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-yes-no-modal',\n templateUrl: './yes-no-modal.component.html',\n styleUrls: ['./yes-no-modal.component.scss'],\n})\nexport class YesNoModalComponent implements OnInit {\n swalOptions: any = {\n text: 'will be replaced with content in swal component', // THIS IS IMPORTANT KEEP IT AS IT OR CONTENT WONT BE SHOWN\n showCancelButton: true,\n };\n\n @Input() value: any;\n @Input() error: string;\n @Input() title: string;\n @Input() text: string;\n @Input() cancelBtnText = 'Annuler';\n @Input() confirmBtnText = 'Enregistrer';\n\n @Output() confirm: EventEmitter = new EventEmitter();\n @Output() close: EventEmitter = new EventEmitter();\n @Output() open: EventEmitter = new EventEmitter();\n\n @ViewChild('modal', { static: true }) private modal: SwalComponent;\n\n constructor(public readonly swalTargets: SwalPortalTargets) {}\n\n ngOnInit() {}\n\n show() {\n this.modal.fire();\n }\n\n dismiss() {\n Swal.close();\n }\n\n emitOpenEvent(event) {\n this.open.emit(event);\n }\n\n emitCloseEvent(event) {\n this.close.emit(event);\n }\n\n send() {\n this.confirm.emit();\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport * as pluginAnnotations from 'chartjs-plugin-annotation';\nimport { BaseChartDirective } from 'ng2-charts';\n\n@Component({\n selector: 'ng2-charts-bar',\n templateUrl: './ng2-charts-bar.component.html',\n})\nexport class Ng2BarChartDemoComponent implements OnInit {\n @ViewChild(BaseChartDirective, { static: true }) chart: BaseChartDirective;\n\n @Input() barChartData: any[];\n @Input() barChartDataset: any[];\n @Input() barChartColors: any[];\n @Input() barChartLabels: string[];\n @Input() barChartStacked = false;\n @Input() barChartWidth = 900;\n @Input() barChartMaxHeight: number = null;\n @Input() barChartMinHeight: number = null;\n @Input() barChartLegend = false;\n @Input() barChartGrid = true;\n @Input() barChartOptions: any = {};\n\n @Output() chartInit: EventEmitter = new EventEmitter();\n @Output() emitChartClick = new EventEmitter();\n\n @Input() public barChartType = 'bar';\n\n public chartPlugins = [pluginAnnotations];\n\n constructor() {}\n ngOnInit() {\n this.chartInit.emit(this.chart);\n }\n\n // events\n public chartClicked(e: any): void {\n this.emitChartClick.emit(e);\n }\n\n public chartHovered(e: any): void {\n // console.log(e);\n }\n\n public setMinHeight() {\n return this.barChartMinHeight ? this.barChartMinHeight + 'px' : 'none';\n }\n\n public setMaxHeight() {\n return this.barChartMaxHeight ? this.barChartMaxHeight + 'px' : 'none';\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { BaseChartDirective } from 'ng2-charts';\n\n@Component({\n selector: 'ng2-charts-doughnut',\n templateUrl: './ng2-charts-doughnut.component.html',\n})\nexport class Ng2DoughnutChartComponent implements OnInit {\n @ViewChild(BaseChartDirective, { static: true }) chart: BaseChartDirective;\n\n @Input() doughnutChartWidth = 900;\n @Input() doughnutChartHeight = 340;\n @Input() doughnutChartData: number[];\n @Input() doughnutChartDataset: any[];\n @Input() doughnutChartLabels: string[];\n @Input() doughnutChartOptions: any = {};\n @Input() doughnutChartColors: any[];\n @Input() doughnutChartLegend: any;\n\n @Output() chartInit: EventEmitter = new EventEmitter();\n @Output() emitChartClick = new EventEmitter();\n\n public doughnutChartType = 'doughnut';\n\n public constructor() {}\n\n ngOnInit() {\n this.chartInit.emit(this.chart);\n }\n\n public chartClicked(e: any): void {\n this.emitChartClick.emit(e);\n }\n\n // events\n public chartHovered(e: any): void {}\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { BaseChartDirective } from 'ng2-charts';\n\n/* Exemple de data\n\nconst allData = {\n lineChartData: [\n {data: [36, 36, 36, 36], label: 'power_subscribe'},\n {data: [28, 35, 26, 33], label: 'power_max'},\n ],\n lineChartColors: [\n {\n backgroundColor: \"rgba(223,124,58, 1)\",\n borderColor: \"rgba(223,124,58, 1)\",\n fill: false,\n pointBackgroundColor: \"rgba(223,124,58, 1)\",\n pointBorderColor: \"rgba(223,124,58, 1)\",\n pointHoverBackgroundColor: \"rgba(223,124,58, 1)\",\n pointHoverBorderColor: \"rgba(223,124,58, 0.8)\",\n },\n {\n backgroundColor: \"rgba(223,124,58, 1)\",\n borderColor: \"rgba(223,124,58, 1)\",\n fill: false,\n pointBackgroundColor: \"rgba(223,124,58, 1)\",\n pointBorderColor: \"rgba(223,124,58, 1)\",\n pointHoverBackgroundColor: \"rgba(223,124,58, 1)\",\n pointHoverBorderColor: \"rgba(223,124,58, 0.8)\",\n },\n ],\n lineChartLabels: [\n \"HPH\",\n \"HCH\",\n \"HPE\",\n \"HCE\"\n ],\n lineChartOptions: {\n responsive: true,\n legend: {\n display: false\n },\n layout: {\n padding: {\n left: 0,\n right: 0,\n top: 24,\n bottom: 24\n },\n },\n scales: {\n yAxes: [{\n scaleLabel: {\n display: true,\n labelString: 'kVA'\n },\n gridLines: {\n display: true,\n borderDashOffset: 2,\n borderDash: [2],\n lineHeight: 5,\n drawBorder: false,\n drawTicks: false,\n },\n ticks: {\n min: 0,\n max: 40\n }\n }],\n xAxes: [{\n ticks: {\n display: false\n },\n gridLines: {\n display: true,\n borderDashOffset: 2,\n borderDash: [2],\n lineHeight: 5,\n drawBorder: false,\n drawTicks: false,\n }\n }]\n },\n tooltips: {\n yPadding: 10,\n xPadding: 10,\n caretPadding: 26,\n callbacks: {\n title(tooltipItem, data) {\n const index = tooltipItem[0].index;\n return [data.labels[index]]\n },\n footer(tooltipItem, data) {\n return [tooltipItem[0].yLabel + ' kVA']\n },\n label(tooltipItem, data) {\n return '';\n }\n }\n },\n },\n lineChartLegend: [\n {name: \"Puissance souscrite\", color: \"rgb(223,124,58)\"},\n {name: \"Puissance maximale atteinte\", color: \"rgb(253,204,45)\"}\n ],\n lineChartWidth: 900,\n lineChartHeight: 400,\n};\n\n */\n\n@Component({\n selector: 'ng2-charts-line',\n templateUrl: './ng2-charts-line.component.html',\n})\nexport class Ng2LineChartComponent implements OnInit {\n @ViewChild(BaseChartDirective, { static: true }) chart: BaseChartDirective;\n\n @Input() lineChartData: any[];\n @Input() lineChartDataset: any[];\n @Input() lineChartColors: any[];\n @Input() lineChartLabels: string[];\n @Input() lineChartWidth = 900;\n @Input() lineChartMinHeight: number;\n @Input() lineChartMaxHeight: number;\n @Input() lineChartLegend: any;\n @Input() lineChartOptions: any = {};\n\n @Output() chartInit: EventEmitter = new EventEmitter();\n @Output() emitChartClick = new EventEmitter();\n\n public lineChartType = 'line';\n\n public constructor() {}\n\n ngOnInit() {\n this.chartInit.emit(this.chart);\n }\n\n // events\n public chartClicked(e: any): void {\n this.emitChartClick.emit(e);\n }\n\n public chartHovered(e: any): void {}\n\n public setMinHeight() {\n return this.lineChartMinHeight ? this.lineChartMinHeight + 'px' : 'none';\n }\n public setMaxHeight() {\n return this.lineChartMaxHeight ? this.lineChartMaxHeight + 'px' : 'none';\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctY29tcGFuaWVzLXNlbGVjdC9tb25pdG9yaW5nLWNvbXBhbmllcy1zZWxlY3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { MonitoringFilters } from '../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\n\n@Component({\n selector: 'ga-monitoring-companies-select',\n templateUrl: './monitoring-companies-select.component.html',\n styleUrls: ['./monitoring-companies-select.component.scss'],\n})\nexport class MonitoringCompaniesSelectComponent implements OnInit {\n /**\n * Current filters selected\n */\n public filters: MonitoringFilters;\n /**\n * List of all the companies available\n */\n public companies: Array<{ displayName: string; value: string }> = [];\n\n constructor(private filterService: FilterService, private operatingMonitoringService: OperatingMonitoringService) {}\n\n ngOnInit() {\n this.operatingMonitoringService.filters$.subscribe({\n next: value => (this.filters = value),\n });\n\n this.initCompanies();\n }\n\n private async initCompanies() {\n this.companies = await this.filterService.getCompanyAndAllBranchesForFilter();\n }\n\n /**\n * Select new company from branches\n * @param {string[]} values - companyIds\n */\n public setSelectedCompanies(values: string[]) {\n // Set new filter if companies selected. At least one company must be selected.\n if (values && values.length) {\n const newFilter = { ...this.filters, companies: values };\n this.operatingMonitoringService.filters$.next(newFilter);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport Swal from 'sweetalert2';\n\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\ninterface TreeConfig {\n name: string;\n children?: TreeConfig[];\n value?: string;\n}\n\n@Injectable()\nexport class MonitoringCostsService extends PageService {\n /** Default tree-view config */\n public static DEFAULT_CONFIG: Array<{ value: string; key: string }> = [];\n\n private static readonly DEFAULT_SELECTED_BY_FLUID = {\n elec: ['bill.billAmount.HTVA'],\n gaz: ['bill.billAmount.HTVA'],\n heating: ['totalHT.amount'],\n cooling: ['totalHT.amount'],\n water: ['totalHT.amount'],\n };\n\n /** The configs for each fluid */\n private costsConfigs = {};\n\n constructor(public apiService: ApiService, private translateService: TranslateService) {\n super(apiService);\n }\n\n /** Default selected costs */\n public static getDefaultSelected(fluid: string): string[] {\n if (this.DEFAULT_SELECTED_BY_FLUID[fluid]) {\n return [...this.DEFAULT_SELECTED_BY_FLUID[fluid]];\n }\n return [];\n }\n\n /** Transform config to a tree-view config */\n public formatConfig(config: TreeConfig, level: number = 0): Array<{ value: any; key: string }> {\n let options: Array<{ value: any; key: string }> = [];\n const namePrefix = '-'.repeat(level);\n options.push({ value: config.value || '', key: `${namePrefix} ${config.name}` });\n\n if (Array.isArray(config.children)) {\n const children = config.children;\n for (let i = 0, len = children.length; i < len; i++) {\n options = options.concat(this.formatConfig(children[i], level + 1));\n }\n }\n\n return options;\n }\n\n /** Get costs tree-view config for a given fluid */\n public async getCostsConfig(fluid: string): Promise> {\n if (!fluid) {\n return MonitoringCostsService.DEFAULT_CONFIG;\n }\n\n if (!this.costsConfigs[fluid]) {\n await this.getCostsProperties(fluid);\n }\n\n return this.costsConfigs[fluid] || MonitoringCostsService.DEFAULT_CONFIG;\n }\n\n /** Retrieve costs config for a given fluid */\n private async getCostsProperties(fluid: string): Promise {\n try {\n const costsResult = await this.get(`/api/common/cost-properties/${fluid}`);\n this.costsConfigs[fluid] = this.formatConfig({ name: 'Tous', children: costsResult.data }, 0);\n } catch (err) {\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_monitoring_config'),\n icon: 'error',\n });\n }\n }\n}\n","export default \".justify-content-none {\\n -webkit-box-pack: initial;\\n justify-content: initial;\\n}\\n\\n:host ::ng-deep .daterange-picker {\\n width: 100%;\\n}\\n\\n::ng-deep .mat-slider.mat-slider-horizontal .mat-slider-wrapper {\\n top: 9px;\\n}\\n\\n::ng-deep .mat-slider.mat-slider-horizontal .mat-slider-track-wrapper {\\n height: 4px;\\n border-radius: 3px;\\n}\\n\\n::ng-deep .mat-slider.mat-slider-horizontal .mat-slider-track-background,\\n::ng-deep .mat-slider.mat-slider-horizontal .mat-slider-track-fill {\\n height: 100%;\\n}\\n\\n::ng-deep .mat-slider.mat-slider-horizontal {\\n height: 2em;\\n}\\n\\n::ng-deep .mat-slider.mat-slider-horizontal .mat-slider-track-fill,\\n::ng-deep .mat-slider.mat-slider-horizontal .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.13);\\n -webkit-transform: none !important;\\n transform: none !important;\\n}\\n\\n::ng-deep .mat-accent .mat-slider-thumb {\\n height: 10px;\\n width: 10px;\\n background-color: #516073;\\n border-color: #516073;\\n bottom: -6px;\\n right: -6px;\\n}\\n\\n::ng-deep .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n background-color: #516073;\\n border: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctZWRpdGlvbi9tb25pdG9yaW5nLWVkaXRpb24tY29udHJhY3QvbW9uaXRvcmluZy1lZGl0aW9uLWNvbnRyYWN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWVkaXRpb24vbW9uaXRvcmluZy1lZGl0aW9uLWNvbnRyYWN0L21vbml0b3JpbmctZWRpdGlvbi1jb250cmFjdC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSx5QkFBQTtVQUFBLHdCQUFBO0FDRko7O0FES0E7RUFDSSxXQUFBO0FDRko7O0FET0k7RUFDSSxRQUFBO0FDSlI7O0FETUk7RUFDSSxXQUFBO0VBQ0Esa0JBQUE7QUNKUjs7QURNSTs7RUFFSSxZQUFBO0FDSlI7O0FETUk7RUFDSSxXQUFBO0FDSlI7O0FETUk7O0VBRUkscUNBQUE7RUFDQSxrQ0FBQTtVQUFBLDBCQUFBO0FDSlI7O0FETUk7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLHlCRUtHO0VGSkgscUJFSUc7RUZISCxZQUFBO0VBQ0EsV0FBQTtBQ0pSOztBRE1JO0VBQ0kseUJFREc7RUZFSCxZQUFBO0FDSlIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWVkaXRpb24vbW9uaXRvcmluZy1lZGl0aW9uLWNvbnRyYWN0L21vbml0b3JpbmctZWRpdGlvbi1jb250cmFjdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbi5qdXN0aWZ5LWNvbnRlbnQtbm9uZSB7XG4gICAganVzdGlmeS1jb250ZW50OiBpbml0aWFsO1xufVxuXG46aG9zdCA6Om5nLWRlZXAgLmRhdGVyYW5nZS1waWNrZXIge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vLyBPdmVycmlkZSBtYXQtc2xpZGVyIGRlc2lnblxuOjpuZy1kZWVwIHtcbiAgICAubWF0LXNsaWRlci5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlciB7XG4gICAgICAgIHRvcDogOXB4O1xuICAgIH1cbiAgICAubWF0LXNsaWRlci5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlciB7XG4gICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgfVxuICAgIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuICAgIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxsIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgICAubWF0LXNsaWRlci5tYXQtc2xpZGVyLWhvcml6b250YWwge1xuICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICB9XG4gICAgLm1hdC1zbGlkZXIubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gICAgLm1hdC1zbGlkZXIubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTMpO1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFya2dyZXk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGRhcmtncmV5O1xuICAgICAgICBib3R0b206IC02cHg7XG4gICAgICAgIHJpZ2h0OiAtNnB4O1xuICAgIH1cbiAgICAubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmtncmV5O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxufVxuIiwiLmp1c3RpZnktY29udGVudC1ub25lIHtcbiAganVzdGlmeS1jb250ZW50OiBpbml0aWFsO1xufVxuXG46aG9zdCA6Om5nLWRlZXAgLmRhdGVyYW5nZS1waWNrZXIge1xuICB3aWR0aDogMTAwJTtcbn1cblxuOjpuZy1kZWVwIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVyIHtcbiAgdG9wOiA5cHg7XG59XG46Om5nLWRlZXAgLm1hdC1zbGlkZXIubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXIge1xuICBoZWlnaHQ6IDRweDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuOjpuZy1kZWVwIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuOjpuZy1kZWVwIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxsIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuOjpuZy1kZWVwIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCB7XG4gIGhlaWdodDogMmVtO1xufVxuOjpuZy1kZWVwIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxsLFxuOjpuZy1kZWVwIC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEzKTtcbiAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG59XG46Om5nLWRlZXAgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIge1xuICBoZWlnaHQ6IDEwcHg7XG4gIHdpZHRoOiAxMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTE2MDczO1xuICBib3JkZXItY29sb3I6ICM1MTYwNzM7XG4gIGJvdHRvbTogLTZweDtcbiAgcmlnaHQ6IC02cHg7XG59XG46Om5nLWRlZXAgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAubWF0LXNsaWRlci10aHVtYiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTYwNzM7XG4gIGJvcmRlcjogbm9uZTtcbn0iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport { Subscription } from 'rxjs';\n\nimport { DateRange, DateRangeLimit } from 'app/shared/components/common/date-range-picker/date-range-picker.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\n\nimport { ExclusionTypes, Monitoring } from '../../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../../operating-monitoring.service';\nimport { ContractDataFieldKey, FieldConfig } from '../monitoring-edition.interface';\nimport { MonitoringEditionService } from '../monitoring-edition.service';\nimport { MonitoringCostsService } from './monitoring-costs.service';\n\n/**\n * Monitoring creation contractual data management\n */\n@Component({\n selector: 'ga-monitoring-edition-contract',\n templateUrl: './monitoring-edition-contract.component.html',\n styleUrls: ['../monitoring-edition.component.scss', './monitoring-edition-contract.component.scss'],\n providers: [MonitoringCostsService],\n})\nexport class MonitoringEditionContractComponent implements OnInit, OnDestroy {\n /**\n * Fields config\n */\n private configs: Array> = [\n {\n key: 'contractStart',\n displayKey: '',\n deps: [],\n defaultValue: null,\n required: true,\n },\n {\n key: 'contractEnd',\n displayKey: '',\n deps: [],\n defaultValue: null,\n required: true,\n },\n {\n key: 'perfFormulaGradient',\n displayKey: '',\n deps: [{ key: 'ecsUse', value: true }, { key: 'linearModeling', value: true }],\n defaultValue: null,\n // disabled: true,\n min: 0,\n required: true,\n },\n {\n key: 'perfFormulaYIntercept',\n displayKey: '',\n deps: [{ key: 'ecsUse', value: true }, { key: 'linearModeling', value: true }],\n defaultValue: null,\n // disabled: true,\n min: 0,\n required: true,\n },\n {\n key: 'monitoringDJUs',\n displayKey: 'djus_short',\n placeholder: 'djus_short',\n deps: [],\n defaultValue: null,\n min: 0,\n required: true,\n },\n {\n key: 'monitoringNB',\n displayKey: 'monitoring_nb',\n placeholder: 'kwh',\n deps: [],\n defaultValue: null,\n min: 0,\n required: true,\n },\n {\n key: 'qHighSeason',\n displayKey: 'monitoring_q_highSeason',\n placeholder: 'kwh_per_m3',\n deps: [\n { key: 'ecsUse', value: true },\n { key: 'linearModeling', value: false },\n { key: 'subtractECS', value: true },\n ],\n defaultValue: null,\n required: true,\n },\n {\n key: 'qLowSeason',\n displayKey: 'monitoring_q_lowSeason',\n placeholder: 'kwh_per_m3',\n deps: [\n { key: 'ecsUse', value: true },\n { key: 'linearModeling', value: false },\n { key: 'subtractECS', value: true },\n ],\n defaultValue: null,\n },\n {\n key: 'nHousing',\n displayKey: 'monitoring_n_housing',\n deps: [\n { key: 'ecsUse', value: true },\n { key: 'linearModeling', value: false },\n { key: 'subtractECS', value: true },\n { key: 'subtractMethod', value: ExclusionTypes.HOUSING_THEORETICAL },\n ],\n placeholder: '0',\n defaultValue: null,\n required: true,\n },\n {\n key: 'avgVolume',\n displayKey: 'monitoring_avg_volume',\n deps: [\n { key: 'ecsUse', value: true },\n { key: 'linearModeling', value: false },\n { key: 'subtractECS', value: true },\n { key: 'subtractMethod', value: ExclusionTypes.HOUSING_THEORETICAL },\n ],\n placeholder: 'm3_per_month',\n defaultValue: null,\n required: true,\n },\n {\n key: 'deltaTolerancePercentage',\n displayKey: 'monitoring_delta_tolerance_percentage',\n placeholder: '%',\n deps: [],\n defaultValue: null,\n min: 0,\n max: 100,\n step: 0.1,\n required: true,\n },\n {\n key: 'profitSharingPercentage',\n displayKey: 'monitoring_profit_sharing_percentage',\n placeholder: '%',\n deps: [],\n defaultValue: 50,\n min: 0,\n max: 100,\n step: 0.1,\n required: true,\n },\n {\n key: 'penaltiesPercentage',\n displayKey: 'monitoring_penalties_percentage',\n placeholder: '%',\n deps: [],\n defaultValue: 100,\n min: 0,\n max: 100,\n step: 0.1,\n required: true,\n },\n {\n key: 'includedCosts',\n displayKey: 'monitoring_included_costs',\n deps: [],\n defaultValue: [],\n options: MonitoringCostsService.DEFAULT_CONFIG,\n minLength: 1,\n required: true,\n },\n ];\n /** Fields form group. Initiated dynamically */\n get form() {\n return this.monitoringEditionService.form;\n }\n /** Subscription */\n private subscription: Subscription;\n /** date limit for the date range picker */\n public dateRangeLimit: DateRangeLimit = { minDate: null, maxDate: null };\n /** Data for the date range (start date and end date) */\n public dateRange: DateRange = {\n fromDate: {\n date: null,\n utcDate: null,\n },\n toDate: {\n date: null,\n utcDate: null,\n },\n };\n /** The energy type of the currently selected routing reference */\n private currentEnergyType: string;\n\n get contractStartField() {\n return this.configs.find(c => c.key === 'contractStart');\n }\n get contractEndField() {\n return this.configs.find(c => c.key === 'contractEnd');\n }\n get perfFormulaGradientField() {\n return this.configs.find(c => c.key === 'perfFormulaGradient');\n }\n get perfFormulaInterceptField() {\n return this.configs.find(c => c.key === 'perfFormulaYIntercept');\n }\n get monitoringDJUsField() {\n return this.configs.find(c => c.key === 'monitoringDJUs');\n }\n get monitoringNBField() {\n return this.configs.find(c => c.key === 'monitoringNB');\n }\n get qHighSeasonField() {\n return this.configs.find(c => c.key === 'qHighSeason');\n }\n get qLowSeasonField() {\n return this.configs.find(c => c.key === 'qLowSeason');\n }\n get nHousingField() {\n return this.configs.find(c => c.key === 'nHousing');\n }\n get avgVolumeField() {\n return this.configs.find(c => c.key === 'avgVolume');\n }\n get deltaTolerancePercentageField() {\n return this.configs.find(c => c.key === 'deltaTolerancePercentage');\n }\n get profitSharingPercentageField() {\n return this.configs.find(c => c.key === 'profitSharingPercentage');\n }\n /** Get value of profit sharing percentage for slider */\n get profitSharingPercentage(): number {\n return this.form.get(this.profitSharingPercentageField.key).value;\n }\n /** Set value of profit sharing percentage for slider */\n set profitSharingPercentage(value: number) {\n this.form.get(this.profitSharingPercentageField.key).setValue(value);\n }\n get penaltiesPercentageField() {\n return this.configs.find(c => c.key === 'penaltiesPercentage');\n }\n /** Get value of penalties percentage for slider */\n get penaltiesPercentage(): number {\n return this.form.get(this.penaltiesPercentageField.key).value;\n }\n /** Set value of penalties percentage for slider */\n set penaltiesPercentage(value: number) {\n this.form.get(this.penaltiesPercentageField.key).setValue(value);\n }\n get includedCostsField() {\n return this.configs.find(c => c.key === 'includedCosts');\n }\n get includedCosts(): string[] {\n return this.form.get(this.includedCostsField.key).value;\n }\n set includedCosts(value: string[]) {\n this.form.get(this.includedCostsField.key).setValue(value);\n }\n\n constructor(\n private operatingMonitoringService: OperatingMonitoringService,\n private monitoringEditionService: MonitoringEditionService,\n private monitoringCostsService: MonitoringCostsService\n ) {}\n\n ngOnInit() {\n this.monitoringEditionService.addToControlGroup(this.configs);\n\n this.subscription = this.form.get('monitoringRref').valueChanges.subscribe({\n next: value => this.onRRefChange(value),\n });\n this.subscription.add(\n this.operatingMonitoringService.editedMonitoring$.subscribe({\n next: value => this.prefillForm(value),\n })\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * Display or not field\n * @param item\n */\n public displayField(item: FieldConfig): boolean {\n if (!item.deps || !item.deps.length) {\n return true;\n }\n return item.deps.every(dep => this.form.get(dep.key).value === dep.value);\n }\n\n public onDateRangeChange(value: DateRange) {\n this.form.get('contractStart').setValue(value.fromDate.utcDate);\n this.form.get('contractEnd').setValue(value.toDate.utcDate);\n }\n\n public onIncludedCostsChange(costs: string[]): void {\n this.includedCosts = costs;\n }\n\n private async onRRefChange(newRRef: RoutingReference) {\n if (newRRef) {\n // If same energy type, change nothing\n if (\n (this.currentEnergyType && this.currentEnergyType !== newRRef.energyType) ||\n !this.includedCosts.length\n ) {\n // previously energy type is not the same\n this.includedCosts = MonitoringCostsService.getDefaultSelected(newRRef.energyType);\n }\n\n this.includedCostsField.options = await this.monitoringCostsService.getCostsConfig(newRRef.energyType);\n this.currentEnergyType = newRRef.energyType;\n }\n }\n\n private async prefillForm(monitoring: Monitoring) {\n if (!monitoring) {\n return;\n }\n const { uses, contractStart, contractEnd } = monitoring;\n\n const rangeDateStart = moment.utc(contractStart).toDate();\n // Tweak to display end of contract as real ending day of the contract\n const rangeDateEnd = moment\n .utc(contractEnd)\n .startOf('day')\n .toDate();\n\n this.form.get(this.contractStartField.key).setValue(contractStart);\n this.form.get(this.contractEndField.key).setValue(contractEnd);\n this.dateRange = {\n fromDate: { date: rangeDateStart, utcDate: rangeDateStart },\n toDate: { date: rangeDateEnd, utcDate: rangeDateEnd },\n };\n\n this.form.get(this.perfFormulaGradientField.key).setValue(_.get(uses, '0.perfFormula.gradient', null));\n this.form.get(this.perfFormulaInterceptField.key).setValue(_.get(uses, '0.perfFormula.yIntercept', null));\n this.form.get(this.monitoringDJUsField.key).setValue(monitoring.modulatorBase);\n this.form.get(this.monitoringNBField.key).setValue(monitoring.valueCommitted);\n this.form.get(this.qHighSeasonField.key).setValue(_.get(uses, '0.q.highSeason', null));\n this.form.get(this.qLowSeasonField.key).setValue(_.get(uses, '0.q.highSeason', null));\n this.form.get(this.nHousingField.key).setValue(_.get(uses, '0.nHousing', null));\n this.form.get(this.avgVolumeField.key).setValue(_.get(uses, '0.avgVolume', null));\n this.form.get(this.deltaTolerancePercentageField.key).setValue(monitoring.deltaTolerancePercentage);\n this.form.get(this.profitSharingPercentageField.key).setValue(monitoring.profitSharingPercentage);\n this.form.get(this.penaltiesPercentageField.key).setValue(monitoring.penaltiesPercentage);\n this.form.get(this.includedCostsField.key).setValue(monitoring.includedCosts);\n }\n}\n","export default \"input[required] + label:after {\\n content: \\\"*\\\";\\n color: red;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctZWRpdGlvbi9tb25pdG9yaW5nLWVkaXRpb24tc2NvcGUvbW9uaXRvcmluZy1lZGl0aW9uLXNjb3BlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWVkaXRpb24vbW9uaXRvcmluZy1lZGl0aW9uLXNjb3BlL21vbml0b3JpbmctZWRpdGlvbi1zY29wZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFlBQUE7RUFDQSxVQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWVkaXRpb24vbW9uaXRvcmluZy1lZGl0aW9uLXNjb3BlL21vbml0b3JpbmctZWRpdGlvbi1zY29wZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImlucHV0W3JlcXVpcmVkXSArIGxhYmVsOmFmdGVyIHtcbiAgICBjb250ZW50OiAnKic7XG4gICAgY29sb3I6IHJlZDtcbn1cbiIsImlucHV0W3JlcXVpcmVkXSArIGxhYmVsOmFmdGVyIHtcbiAgY29udGVudDogXCIqXCI7XG4gIGNvbG9yOiByZWQ7XG59Il19 */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { CompanyLight } from 'app/shared/models/company.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { Site } from 'app/shared/models/site.interface';\nimport { CompaniesService } from 'app/shared/services/companies/companies.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { SortService } from 'app/shared/services/sort/sort.service';\n\nimport { Monitoring, Types } from '../../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../../operating-monitoring.service';\nimport { CommonDataFieldKey, FieldConfig } from '../monitoring-edition.interface';\nimport { MonitoringEditionService } from '../monitoring-edition.service';\n\n/**\n * Scope of monitoring creation\n */\n@Component({\n selector: 'ga-monitoring-edition-scope',\n templateUrl: './monitoring-edition-scope.component.html',\n styleUrls: ['../monitoring-edition.component.scss', './monitoring-edition-scope.component.scss'],\n})\nexport class MonitoringEditionScopeComponent implements OnInit, OnDestroy {\n private prefillMonitoring: Monitoring;\n\n private configs: Array> = [\n {\n key: 'monitoringType',\n displayKey: 'monitoring_type',\n deps: [],\n defaultValue: Types.BOILER_ROOM,\n options: Object.values(Types).map(type => ({ value: type, key: `monitoring_type_${type}` })),\n disabled: true,\n required: true,\n },\n {\n key: 'monitoringName',\n displayKey: 'monitoring_name',\n deps: [],\n defaultValue: null,\n required: true,\n },\n {\n key: 'monitoringCompany',\n displayKey: 'entity',\n deps: [],\n defaultValue: null,\n required: true,\n },\n {\n key: 'monitoringSite',\n displayKey: 'site',\n deps: [],\n defaultValue: null,\n options: [],\n disabled: true,\n required: true,\n },\n {\n key: 'monitoringRref',\n displayKey: 'routingReference',\n deps: [],\n defaultValue: null,\n options: [],\n disabled: true,\n required: true,\n },\n ];\n /** Fields form group. Initiated dynamically */\n get form() {\n return this.monitoringEditionService.form;\n }\n /** Subscription */\n private subscription: Subscription;\n /** List of companies IDs in the filter */\n private companies: string[];\n /** Show the companies select if it does have branches */\n public displaySelectCompany = true;\n\n get monitoringTypeField() {\n return this.configs.find(c => c.key === 'monitoringType');\n }\n get monitoringNameField() {\n return this.configs.find(c => c.key === 'monitoringName');\n }\n get monitoringCompanyField() {\n return this.configs.find(c => c.key === 'monitoringCompany');\n }\n get monitoringSiteField() {\n return this.configs.find(c => c.key === 'monitoringSite');\n }\n get monitoringRRefField() {\n return this.configs.find(c => c.key === 'monitoringRref');\n }\n\n /** List of sites for the current company */\n private sites: Site[] = [];\n /** For spinner to wait end of site loading */\n public siteIsLoading = false;\n /** List of routing references for the current site */\n private routingReferences: RoutingReference[] = [];\n get monitoringSite(): { value: any; key: string } {\n const site = this.form.get(this.monitoringSiteField.key).value;\n if (site) {\n return this.monitoringSiteField.options.find(x => x.value === site._id);\n }\n return null;\n }\n /** For site autocomplete to fill up the form */\n set monitoringSiteValue(value: string) {\n this.form.get(this.monitoringSiteField.key).setValue(this.getSite(value));\n }\n /** For routing reference autocomplete to fill up the form */\n get monitoringRRef(): { value: any; key: string } {\n const value = this.form.get(this.monitoringRRefField.key).value;\n if (value) {\n return this.monitoringRRefField.options.find(x => x.value === value._id);\n }\n return null;\n }\n set monitoringRRefValue(value: string) {\n this.form.get(this.monitoringRRefField.key).setValue(this.getRoutingReference(value));\n }\n\n constructor(\n private companiesService: CompaniesService,\n private monitoringEditionService: MonitoringEditionService,\n private operatingMonitoringService: OperatingMonitoringService,\n private sessionService: SessionService,\n private siteService: SitesService,\n private sortService: SortService\n ) {}\n\n ngOnInit() {\n this.monitoringEditionService.addToControlGroup(this.configs);\n this.subscription = this.operatingMonitoringService.filters$.subscribe({\n next: value => this.getFilteredCompanies(value.companies),\n });\n this.subscription.add(\n this.form.get(this.monitoringCompanyField.key).valueChanges.subscribe({\n next: value => this.getCompanySites(value),\n })\n );\n this.subscription.add(\n this.form.get(this.monitoringSiteField.key).valueChanges.subscribe({\n next: value => this.getSiteRoutingReferences(value),\n })\n );\n this.subscription.add(\n this.operatingMonitoringService.editedMonitoring$.subscribe({\n next: value => {\n this.prefillMonitoring = value;\n if (this.prefillMonitoring) {\n this.form.get(this.monitoringTypeField.key).setValue(this.prefillMonitoring.monitoringType);\n this.form.get(this.monitoringNameField.key).setValue(this.prefillMonitoring.name);\n this.getCompanySites(this.prefillMonitoring.companyId);\n }\n },\n })\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * Check if the given companies ids list is different from the previous one\n *\n * @param {string[]} companiesIds\n */\n private differentToCompanies(companiesIds: string[]): boolean {\n if (!this.companies || this.companies.length !== companiesIds.length) {\n return true;\n }\n for (const companyId of companiesIds) {\n if (!this.companies.includes(companyId)) {\n return true;\n }\n }\n\n return false;\n }\n\n private async getFilteredCompanies(filterCompaniesIds: string[]) {\n if (this.differentToCompanies(filterCompaniesIds)) {\n const monitoringCompanyControl = this.form.get(this.monitoringCompanyField.key);\n const company = this.sessionService.getCompany();\n const companiesLight: CompanyLight[] = [{ _id: company._id, name: company.name }].concat(\n (await this.companiesService.getBranches(company._id, true)).data\n );\n // If company has no branches\n if (companiesLight.length === 1) {\n this.displaySelectCompany = false;\n }\n const companies = companiesLight\n .concat()\n .filter(c => filterCompaniesIds.includes(c._id))\n .sort((compA, compB) => this.sortService.compareStrings(compA.name, compB.name));\n\n this.monitoringCompanyField.options = companies.map(c => ({ value: c._id, key: c.name }));\n this.monitoringCompanyField.defaultValue = this.prefillMonitoring\n ? this.prefillMonitoring.companyId\n : companies.length\n ? companies[0]._id\n : null;\n monitoringCompanyControl.setValue(this.monitoringCompanyField.defaultValue);\n this.companies = filterCompaniesIds;\n }\n }\n\n private async getCompanySites(companyId: string) {\n const monitoringSiteControl = this.form.get(this.monitoringSiteField.key);\n // Reset the field\n this.monitoringSiteField.disabled = true;\n monitoringSiteControl.disable();\n monitoringSiteControl.setValue(null);\n this.siteIsLoading = true;\n this.sites = [];\n\n // Retrieve infos if company is provided\n if (companyId) {\n this.sites = (await this.siteService.getSites({ companies: companyId })).data;\n this.monitoringSiteField.disabled = false;\n monitoringSiteControl.enable();\n }\n\n this.monitoringSiteField.options = []\n .concat(this.sites)\n .map(s => ({\n value: s._id,\n key: s.code ? `${s.code} - ${s.complement || 'NC'}` : s.complement || 'NC',\n }))\n .sort((siteA, siteB) => this.sortService.compareStrings(siteA.key, siteB.key));\n\n if (this.prefillMonitoring && this.prefillMonitoring.companyId === companyId) {\n this.monitoringSiteField.defaultValue = this.prefillMonitoring.site;\n monitoringSiteControl.setValue(this.monitoringSiteField.defaultValue);\n }\n this.siteIsLoading = false;\n }\n\n private getSiteRoutingReferences(site: Site) {\n const monitoringRRefControl = this.form.get(this.monitoringRRefField.key);\n // Reset the field\n this.monitoringRRefField.disabled = true;\n monitoringRRefControl.disable();\n monitoringRRefControl.setValue(null);\n\n // Retrieve routing references if site is provided\n if (site && site._id) {\n this.routingReferences = this.getSite(site._id).routingReferences as RoutingReference[];\n this.monitoringRRefField.disabled = false;\n monitoringRRefControl.enable();\n }\n\n this.monitoringRRefField.options = this.routingReferences\n .concat()\n .sort((refA, refB) => this.sortService.compareStrings(refA.reference, refB.reference))\n .map(r => ({ value: r._id, key: r.reference }));\n\n this.monitoringRRefField.defaultValue = null;\n\n // Preselect routing reference :\n // - if site is already prefilled and user did not select a new one yet\n // - else if site has only one routing reference\n if (site && this.prefillMonitoring && this.prefillMonitoring.site._id === site._id) {\n this.monitoringRRefField.defaultValue = this.getRoutingReference(this.prefillMonitoring.scope.rRefId);\n } else if (this.monitoringRRefField.options.length === 1) {\n this.monitoringRRefField.defaultValue = this.monitoringRRefField.options[0].value;\n }\n\n monitoringRRefControl.setValue(this.monitoringRRefField.defaultValue);\n }\n\n /** Return the Site object of the selected site */\n private getSite(siteId: string): Site {\n return this.sites.find(s => s._id === siteId);\n }\n\n /** Return the Routing reference object of the selected site */\n private getRoutingReference(rRefId: string): RoutingReference {\n return this.routingReferences.find(r => r._id === rRefId);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctZWRpdGlvbi9tb25pdG9yaW5nLWVkaXRpb24tc291cmNlL21vbml0b3JpbmctZWRpdGlvbi1zb3VyY2UuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Subscription } from 'rxjs';\n\nimport { MeteoStation } from '../../../../models/meteo-station.interface';\nimport { Site } from '../../../../models/site.interface';\nimport { MeteoService } from '../../../../services/meteo/meteo.service';\nimport {\n BRExclusibleUses,\n DataSource,\n DjuType,\n ExclusionTypes,\n Monitoring,\n} from '../../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../../operating-monitoring.service';\nimport { DataSourceFieldKey, FieldConfig } from '../monitoring-edition.interface';\nimport { MonitoringEditionService } from '../monitoring-edition.service';\n\n/**\n * Monitoring creation data source selection\n */\n@Component({\n selector: 'ga-monitoring-edition-source',\n templateUrl: './monitoring-edition-source.component.html',\n styleUrls: ['../monitoring-edition.component.scss', './monitoring-edition-source.component.scss'],\n})\nexport class MonitoringEditionSourceComponent implements OnInit, OnDestroy {\n /** Subscription */\n private subscription: Subscription;\n\n public djuSiteDisplayValue: number;\n\n /**\n * Fields config\n */\n private configs: Array> = [\n {\n key: 'datasource',\n displayKey: 'monitoring_datasource',\n deps: [],\n defaultValue: DataSource.BILLING,\n options: [{ value: DataSource.BILLING, key: `monitoring_datasource_${DataSource.BILLING}` }],\n disabled: true,\n required: true,\n },\n {\n key: 'djuType',\n displayKey: 'unified_degree_days',\n deps: [],\n defaultValue: DjuType.HOT,\n options: [\n { key: 'unified_degree_days_' + DjuType.HOT, value: DjuType.HOT },\n { key: 'unified_degree_days_' + DjuType.COLD, value: DjuType.COLD },\n ],\n required: true,\n },\n {\n key: 'heatingUse',\n displayKey: 'monitoring_hvc',\n deps: [],\n defaultValue: true,\n disabled: true,\n },\n {\n key: 'ecsUse',\n displayKey: 'monitoring_ecs_other',\n deps: [],\n defaultValue: false,\n },\n {\n key: 'linearModeling',\n displayKey: 'monitoring_linear_modeling',\n deps: [{ key: 'ecsUse', value: true }],\n defaultValue: false,\n options: [{ value: true, key: 'yes' }, { value: false, key: 'no' }],\n },\n {\n key: 'subtractECS',\n displayKey: 'monitoring_substract_ecs_other',\n deps: [{ key: 'ecsUse', value: true }],\n defaultValue: true,\n options: [{ value: true, key: 'yes' }, { value: false, key: 'no' }],\n },\n {\n key: 'subtractMethod',\n displayKey: 'monitoring_substract_method',\n deps: [\n { key: 'ecsUse', value: true },\n { key: 'linearModeling', value: false },\n { key: 'subtractECS', value: true },\n ],\n defaultValue: ExclusionTypes.INDEX_READING,\n options: [\n { value: ExclusionTypes.INDEX_READING, key: `monitoring_datasource_${ExclusionTypes.INDEX_READING}` },\n {\n value: ExclusionTypes.HOUSING_THEORETICAL,\n key: `monitoring_datasource_${ExclusionTypes.HOUSING_THEORETICAL}`,\n },\n ],\n },\n ];\n\n /** The monitoring's site info */\n public site: Site;\n /** The monitoring's meteo station info */\n public meteoStation: MeteoStation;\n\n /** Fields form group. Initiated dynamically */\n get form() {\n return this.monitoringEditionService.form;\n }\n\n constructor(\n private operatingMonitoringService: OperatingMonitoringService,\n private monitoringEditionService: MonitoringEditionService,\n private meteoService: MeteoService\n ) {}\n\n ngOnInit() {\n this.monitoringEditionService.addToControlGroup(this.configs);\n // Throw an event to init data\n this.form.updateValueAndValidity();\n\n this.subscription = this.operatingMonitoringService.editedMonitoring$.subscribe({\n next: value => this.prefillForm(value),\n });\n\n this.subscription.add(\n this.form.get('monitoringSite').valueChanges.subscribe({\n next: value => this.onSiteChange(value),\n })\n );\n this.subscription.add(\n this.form.get('djuType').valueChanges.subscribe({\n next: value => this.setDjuSiteValue(this.site, value),\n })\n );\n }\n /** Get data source field config */\n public get dataSourceField(): FieldConfig {\n return this.configs.find(x => x.key === 'datasource');\n }\n\n /** Get DJU radio buttons fields in the correct order */\n public get djuTypeFields(): Array> {\n return ['djuType'].map(x => this.configs.find(y => y.key === x));\n }\n\n /** Get uses config fields */\n public get usesFields(): Array> {\n return ['heatingUse', 'ecsUse'].map(x => this.configs.find(y => y.key === x));\n }\n /** Get calculatioon config radio buttons fields in the correct order */\n public get calculationConfigFields(): Array> {\n return ['linearModeling', 'subtractECS', 'subtractMethod'].map(x => this.configs.find(y => y.key === x));\n }\n\n /**\n * Display or not field\n * @param item\n */\n public displayField(item: FieldConfig): boolean {\n if (!item.deps || !item.deps.length) {\n return true;\n }\n return item.deps.every(dep => this.form.get(dep.key).value === dep.value);\n }\n\n private prefillForm(monitoring: Monitoring) {\n if (!monitoring) {\n return;\n }\n const uses = monitoring.uses;\n const hotWaterUse = uses.find(x => x.use === BRExclusibleUses.HOT_WATER);\n const exclusionType = hotWaterUse ? hotWaterUse.exclusionType : null;\n const useLinearModeling = Boolean(hotWaterUse && hotWaterUse.perfFormula);\n this.form.get('djuType').setValue(monitoring.djuType);\n this.form.get('ecsUse').setValue(Boolean(hotWaterUse));\n this.form.get('linearModeling').setValue(useLinearModeling);\n this.form.get('subtractECS').setValue(!hotWaterUse || exclusionType !== null);\n this.form\n .get('subtractMethod')\n .setValue(!useLinearModeling && exclusionType ? exclusionType : ExclusionTypes.INDEX_READING);\n }\n\n private async onSiteChange(newSite: Site) {\n if (this.site !== newSite) {\n this.site = null;\n this.meteoStation = null;\n }\n this.site = newSite;\n if (newSite && (!this.site || !this.meteoStation)) {\n this.meteoStation = await this.meteoService.getMeteoStation(this.site.meteoStation);\n }\n this.setDjuSiteValue(this.site, this.form.controls.djuType.value);\n }\n\n private setDjuSiteValue(site: Site, djuType: DjuType): void {\n if (site) {\n this.djuSiteDisplayValue =\n djuType === DjuType.COLD ? site.dju.temperatureReferenceCold : site.dju.temperatureReference;\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","export default \".section__row {\\n width: 100%;\\n border-radius: 5px;\\n padding: 9px 14px;\\n}\\n.section__row .section__title {\\n font-size: 15px;\\n font-weight: bold;\\n}\\n.monitoring-edition-section {\\n padding: 0.5em;\\n}\\n.form-inline {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n height: 3.2em;\\n margin: 0.5em 0;\\n font-size: 12px;\\n}\\n.form-inline .input-side {\\n height: -webkit-fill-available;\\n width: 70%;\\n}\\n.form-inline .input-side .form-control {\\n width: 100%;\\n}\\n.form-inline .form-control {\\n height: 100%;\\n font-size: inherit;\\n color: inherit;\\n}\\n.form-inline .required::after {\\n content: \\\"*\\\";\\n color: #db4b47;\\n margin-left: 0.5em;\\n}\\n.form-inline.disabled {\\n color: lightgrey;\\n}\\n.btn {\\n text-transform: none;\\n}\\n.btn.btn-disabled {\\n cursor: not-allowed;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctZWRpdGlvbi9tb25pdG9yaW5nLWVkaXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctZWRpdGlvbi9tb25pdG9yaW5nLWVkaXRpb24uY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BO0VBQ0ksV0FBQTtFQUNBLGtCQUxXO0VBTVgsaUJBQUE7QUNMSjtBRE1JO0VBQ0ksZUFUQTtFQVVBLGlCQUFBO0FDSlI7QURRQTtFQUNJLGNBYk07QUNRVjtBRFFBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtBQ0xKO0FET0k7RUFDSSw4QkFBQTtFQUNBLFVBQUE7QUNMUjtBRE9RO0VBQ0ksV0FBQTtBQ0xaO0FEU0k7RUFDSSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0FDUFI7QURVSTtFQUNJLFlBQUE7RUFDQSxjRXRCQTtFRnVCQSxrQkFBQTtBQ1JSO0FEV0k7RUFDSSxnQkFBQTtBQ1RSO0FEYUE7RUFDSSxvQkFBQTtBQ1ZKO0FEWUk7RUFDSSxtQkFBQTtBQ1ZSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3BlcmF0aW5nLW1vbml0b3JpbmcvbW9uaXRvcmluZy1lZGl0aW9uL21vbml0b3JpbmctZWRpdGlvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbiRzaXplMDogMTVweDtcbiRib3JkZXJSYWRpdXM6IDVweDtcbiRzcGFjaW5nOiAwLjVlbTtcblxuLnNlY3Rpb25fX3JvdyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlclJhZGl1cztcbiAgICBwYWRkaW5nOiA5cHggMTRweDtcbiAgICAuc2VjdGlvbl9fdGl0bGUge1xuICAgICAgICBmb250LXNpemU6ICRzaXplMDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxufVxuXG4ubW9uaXRvcmluZy1lZGl0aW9uLXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nO1xufVxuXG4uZm9ybS1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGhlaWdodDogMy4yZW07XG4gICAgbWFyZ2luOiAkc3BhY2luZyAwO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcblxuICAgIC5pbnB1dC1zaWRlIHtcbiAgICAgICAgaGVpZ2h0OiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO1xuICAgICAgICB3aWR0aDogNzAlO1xuXG4gICAgICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cblxuICAgIC5yZXF1aXJlZDo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnKic7XG4gICAgICAgIGNvbG9yOiAkZXJyb3I7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgY29sb3I6IGxpZ2h0Z3JleTtcbiAgICB9XG59XG5cbi5idG4ge1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuXG4gICAgJi5idG4tZGlzYWJsZWQge1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbn1cbiIsIi5zZWN0aW9uX19yb3cge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwYWRkaW5nOiA5cHggMTRweDtcbn1cbi5zZWN0aW9uX19yb3cgLnNlY3Rpb25fX3RpdGxlIHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLm1vbml0b3JpbmctZWRpdGlvbi1zZWN0aW9uIHtcbiAgcGFkZGluZzogMC41ZW07XG59XG5cbi5mb3JtLWlubGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgaGVpZ2h0OiAzLjJlbTtcbiAgbWFyZ2luOiAwLjVlbSAwO1xuICBmb250LXNpemU6IDEycHg7XG59XG4uZm9ybS1pbmxpbmUgLmlucHV0LXNpZGUge1xuICBoZWlnaHQ6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XG4gIHdpZHRoOiA3MCU7XG59XG4uZm9ybS1pbmxpbmUgLmlucHV0LXNpZGUgLmZvcm0tY29udHJvbCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uZm9ybS1pbmxpbmUgLnJlcXVpcmVkOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiKlwiO1xuICBjb2xvcjogI2RiNGI0NztcbiAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xufVxuLmZvcm0taW5saW5lLmRpc2FibGVkIHtcbiAgY29sb3I6IGxpZ2h0Z3JleTtcbn1cblxuLmJ0biB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuLmJ0bi5idG4tZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport { Monitoring } from '../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\nimport { MonitoringUpdate } from '../operating-monitoring.update.interface';\nimport { MonitoringEditionService } from './monitoring-edition.service';\n\n@Component({\n selector: 'ga-monitoring-edition',\n templateUrl: './monitoring-edition.component.html',\n styleUrls: ['./monitoring-edition.component.scss'],\n providers: [MonitoringEditionService],\n})\nexport class MonitoringEditionComponent implements OnInit, OnDestroy {\n /** The created or updated monitoring */\n private monitoring: MonitoringUpdate;\n /** Subscription */\n private subscription: Subscription;\n /** The new monitoring form */\n get form() {\n return this.monitoringEditionService.form;\n }\n get isEditing(): boolean {\n return Boolean(this.monitoring._id);\n }\n\n @Output() monitoringSaved: EventEmitter = new EventEmitter();\n\n constructor(\n private translateService: TranslateService,\n private operatingMonitoringService: OperatingMonitoringService,\n private monitoringEditionService: MonitoringEditionService\n ) {}\n\n ngOnInit() {\n this.subscription = this.monitoringEditionService.subscription;\n this.subscription.add(\n this.monitoringEditionService.monitoring$.subscribe({\n next: value => (this.monitoring = value),\n })\n );\n this.subscription.add(\n this.operatingMonitoringService.editedMonitoring$.subscribe({\n next: value => (this.monitoring._id = value && value._id),\n })\n );\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public async actionButton(): Promise {\n if (this.isEditing) {\n const confirm = await Swal.fire({\n title: this.translateService._('monitoring_edit'),\n text: this.translateService._('monitoring_edit_warning_msg'),\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: this.translateService._('yes_edit'),\n cancelButtonText: this.translateService._('cancel'),\n });\n\n if (confirm.value) {\n await this.operatingMonitoringService.updateMonitoring(this.monitoring);\n this.monitoringSaved.next(null);\n }\n } else {\n await this.operatingMonitoringService.createMonitoring(this.monitoring);\n this.monitoringSaved.next(null);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport * as moment from 'moment';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { Validators as GAValidators } from 'app/shared/services/forms/validators';\nimport { PageService } from 'app/shared/services/page/page.service';\n\nimport { BRExclusibleUses, DjuType, ExclusionTypes, Status } from '../operating-monitoring.interface';\nimport { MonitoringUpdate } from '../operating-monitoring.update.interface';\nimport { FieldConfig, MonitoringFormData } from './monitoring-edition.interface';\n\n@Injectable()\nexport class MonitoringEditionService extends PageService {\n /** New monitoring subject with values */\n public monitoring$: BehaviorSubject = new BehaviorSubject(null);\n /** The form used to create or update a new monitoring */\n public form = new FormGroup({});\n /** Subscription */\n public subscription: Subscription;\n\n constructor(public apiService: ApiService) {\n super(apiService);\n // Init monitoring with empty values\n this.monitoring$.next({\n companyId: null,\n monitoringType: null,\n name: '',\n scope: null,\n modulatorBase: null,\n valueCommitted: null,\n contractStart: null,\n contractEnd: null,\n deltaTolerancePercentage: null,\n profitSharingPercentage: null,\n penaltiesPercentage: null,\n dataSourceType: null,\n includedCosts: [],\n uses: [],\n djuType: DjuType.HOT,\n });\n\n this.subscription = this.form.valueChanges.subscribe({\n next: value => this.updateMonitoring(value),\n });\n }\n\n public addToControlGroup(configs: Array>) {\n // Build control group based on config\n for (const item of configs) {\n const controlFormState = {\n value: item.defaultValue,\n disabled: false,\n };\n const validators = [];\n\n // Set up disabled state for form control\n if (item.disabled) {\n controlFormState.disabled = true;\n }\n const control = new FormControl(controlFormState);\n\n // Set up validators for form control\n if (item.required) {\n validators.push(Validators.required);\n }\n if (typeof item.min === 'number') {\n validators.push(Validators.min(item.min));\n }\n if (typeof item.max === 'number') {\n validators.push(Validators.max(item.max));\n }\n if (typeof item.minLength === 'number') {\n validators.push(Validators.minLength(item.minLength));\n }\n control.setValidators(validators);\n\n this.form.addControl(item.key, control);\n }\n }\n\n private updateMonitoring(value: MonitoringFormData) {\n const monitoring = this.monitoring$.getValue();\n // Raw value includes disabled fields (while value doesn't)\n const rawValue: MonitoringFormData = this.form.getRawValue();\n\n // Format contract dates\n const utcContractStart = moment\n .utc(value.contractStart)\n .startOf('day')\n .toDate();\n\n const utcContractEnd = moment\n .utc(value.contractEnd)\n .endOf('day')\n .toDate();\n\n const newMonitoring = {\n ...monitoring,\n monitoringType: rawValue.monitoringType,\n name: value.monitoringName,\n companyId: rawValue.monitoringCompany,\n site: value.monitoringSite,\n scope: { rRefId: value.monitoringRref && value.monitoringRref._id },\n dataSourceType: rawValue.datasource,\n uses: [],\n contractStart: utcContractStart,\n contractEnd: utcContractEnd,\n modulatorBase: value.monitoringDJUs,\n valueCommitted: value.monitoringNB,\n deltaTolerancePercentage: value.deltaTolerancePercentage,\n profitSharingPercentage: value.profitSharingPercentage,\n penaltiesPercentage: value.penaltiesPercentage,\n includedCosts: value.includedCosts,\n status: Status.IDLE,\n djuType: rawValue.djuType,\n };\n let subtractMethod = null;\n if (value.subtractECS) {\n subtractMethod = value.linearModeling ? ExclusionTypes.PERF_FORMULA : value.subtractMethod;\n }\n const useIndexReading = subtractMethod === ExclusionTypes.INDEX_READING && !value.linearModeling;\n const useTheoretical = subtractMethod === ExclusionTypes.HOUSING_THEORETICAL && !value.linearModeling;\n const areQValuesNeeded = useIndexReading || useTheoretical;\n\n // Create ECS use\n if (value.ecsUse) {\n newMonitoring.uses.push({\n use: BRExclusibleUses.HOT_WATER,\n exclusionType: subtractMethod,\n perfFormula: value.linearModeling\n ? { gradient: value.perfFormulaGradient, yIntercept: value.perfFormulaYIntercept }\n : null,\n q: areQValuesNeeded ? { highSeason: value.qHighSeason, lowSeason: value.qLowSeason } : null,\n nHousing: useTheoretical ? rawValue.nHousing : null,\n avgVolume: useTheoretical ? rawValue.avgVolume : null,\n });\n }\n // Enable or disable validators for performance formula\n const perfFormulaGradientControl = this.form.get('perfFormulaGradient');\n const perfFormulaYInterceptControl = this.form.get('perfFormulaYIntercept');\n if (perfFormulaGradientControl && this.form.get('perfFormulaYIntercept')) {\n if (value.ecsUse && value.linearModeling) {\n perfFormulaGradientControl.setValidators([Validators.required, Validators.min(0)]);\n perfFormulaYInterceptControl.setValidators([Validators.required, Validators.min(0)]);\n } else {\n perfFormulaGradientControl.clearValidators();\n perfFormulaYInterceptControl.clearValidators();\n }\n perfFormulaGradientControl.updateValueAndValidity({ emitEvent: false });\n perfFormulaYInterceptControl.updateValueAndValidity({ emitEvent: false });\n }\n\n // Enable or disable validators for q values\n const qHighSeasonControl = this.form.get('qHighSeason');\n const qLowSeasonControl = this.form.get('qLowSeason');\n if (qHighSeasonControl && qLowSeasonControl) {\n if (value.ecsUse && areQValuesNeeded) {\n qHighSeasonControl.setValidators([Validators.required, GAValidators.hasMaxNDecimals(1)]);\n qLowSeasonControl.setValidators([GAValidators.hasMaxNDecimals(1)]);\n } else {\n qHighSeasonControl.clearValidators();\n qLowSeasonControl.clearValidators();\n }\n qHighSeasonControl.updateValueAndValidity({ emitEvent: false });\n qLowSeasonControl.updateValueAndValidity({ emitEvent: false });\n }\n\n // Enable or disable validators for theoretical water use\n const nHousingControl = this.form.get('nHousing');\n const avgVolumeControl = this.form.get('avgVolume');\n if (nHousingControl && avgVolumeControl) {\n if (value.ecsUse && useTheoretical) {\n nHousingControl.setValidators([Validators.required, GAValidators.isInteger]);\n avgVolumeControl.setValidators([Validators.required, GAValidators.hasMaxNDecimals(1)]);\n } else {\n nHousingControl.clearValidators();\n avgVolumeControl.clearValidators();\n }\n nHousingControl.updateValueAndValidity({ emitEvent: false });\n avgVolumeControl.updateValueAndValidity({ emitEvent: false });\n }\n\n // Enable or disable validators for DJU/NB contract\n const monitoringDJUsControl = this.form.get('monitoringDJUs');\n const monitoringNBControl = this.form.get('monitoringNB');\n if (monitoringDJUsControl && monitoringNBControl) {\n if (!value.ecsUse || !value.linearModeling) {\n monitoringDJUsControl.setValidators([Validators.required, Validators.min(0)]);\n monitoringNBControl.setValidators([Validators.required, Validators.min(0)]);\n } else {\n monitoringDJUsControl.clearValidators();\n monitoringNBControl.clearValidators();\n }\n monitoringDJUsControl.updateValueAndValidity({ emitEvent: false });\n monitoringNBControl.updateValueAndValidity({ emitEvent: false });\n }\n this.monitoring$.next(newMonitoring);\n }\n}\n","export default \".graphs__title {\\n font-weight: bold;\\n font-size: 1.1em;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctZ3JhcGhzL21vbml0b3JpbmctZ3JhcGhzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWdyYXBocy9tb25pdG9yaW5nLWdyYXBocy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGlCQUFBO0VBQ0EsZ0JBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctZ3JhcGhzL21vbml0b3JpbmctZ3JhcGhzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmdyYXBoc19fdGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG4iLCIuZ3JhcGhzX190aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDEuMWVtO1xufSJdfQ== */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport moment = require('moment');\nimport { Subscription } from 'rxjs';\n\nimport { BarChartProperties, ChartProperties, ColorGA } from 'app/shared/models/charts/charts.interface';\nimport { ChartService } from 'app/shared/services/chart/chart.service';\n\nimport { HeatingPeriod, Monitoring, MonthlyAggregated } from '../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\nimport { ChartConfig, ChartDatasetConfig } from './monitoring-graphs.interface';\n\n@Component({\n selector: 'ga-monitoring-graphs',\n templateUrl: './monitoring-graphs.component.html',\n styleUrls: ['./monitoring-graphs.component.scss'],\n})\nexport class MonitoringGraphsComponent implements OnInit, OnDestroy {\n private dateLabelFormat = 'MM/YYYY';\n\n /** Selected monitoring */\n public selectedMonitoring: Monitoring;\n\n /** Subcription */\n private subscription: Subscription;\n\n /** Consumption chart properties */\n public consumptionProperties: BarChartProperties = null;\n /** Consumption chart data config */\n private consumptionConfig: ChartConfig = {\n getLabel: (month: MonthlyAggregated) => month.monthStart,\n datasets: [\n {\n data: [],\n label: 'djus',\n yAxisID: 'y-axis-1',\n stack: '0',\n type: 'line',\n getX: item => item.monthStart,\n getY: item => item.modulatorReal,\n },\n {\n data: [],\n label: 'monitoring_conso_noticed',\n yAxisID: 'y-axis-0',\n stack: '1',\n getX: item => item.monthStart,\n getY: item => item.consumptionHeating,\n },\n {\n data: [],\n label: 'monitoring_conso_expected',\n yAxisID: 'y-axis-0',\n stack: '2',\n getX: item => item.monthStart,\n getY: item => item.valueRevaluedOnBillsPeriod,\n },\n {\n data: [],\n label: 'monitoring_conso_remaining',\n yAxisID: 'y-axis-0',\n stack: '2',\n getX: item => item.monthStart,\n getY: item => item.valueRevalued - item.valueRevaluedOnBillsPeriod,\n },\n ],\n };\n\n /** Objective gap chart properties */\n public objectiveGapProperties: BarChartProperties = null;\n /** Objective gap chart data config */\n private objectiveGapConfig: ChartConfig = {\n getLabel: item => item.monthStart,\n datasets: [\n {\n data: [],\n label: 'monitoring_deviation_formula',\n yAxisID: 'y-axis-0',\n stack: '1',\n getX: item => item.monthStart,\n getY: item => item.deviation,\n getColor: p =>\n p.y >= 0\n ? this.chartService.getColor('monitoring_deviation_positive')\n : this.chartService.getColor('monitoring_deviation_negative'),\n legendOptions: {\n colors: ['monitoring_deviation_positive', 'monitoring_deviation_negative'],\n },\n },\n ],\n };\n\n constructor(private operatingMonitoringService: OperatingMonitoringService, private chartService: ChartService) {}\n\n ngOnInit() {\n this.subscription = this.operatingMonitoringService.selectedPeriod$.subscribe({\n next: period => {\n this.selectedMonitoring = this.operatingMonitoringService.selectedMonitoring$.getValue();\n if (this.selectedMonitoring) {\n this.resetChartsProperties();\n this.setChartsData(this.selectedMonitoring, period);\n }\n },\n });\n }\n\n /**\n * Returns true if at least one dataset of the consumption graph has data.\n */\n public hasConsumptionGraphData(): boolean {\n if (\n this.consumptionProperties &&\n this.consumptionProperties.datasets &&\n this.consumptionProperties.datasets.length\n ) {\n return this.consumptionProperties.datasets.some(dataset => dataset.data.length);\n }\n return false;\n }\n\n /**\n * Returns true if the dataset of the objective gap graph has data.\n */\n public hasObjectiveGapGraphData(): boolean {\n if (\n this.objectiveGapProperties &&\n this.objectiveGapProperties.datasets &&\n this.objectiveGapProperties.datasets.length\n ) {\n const [dataset] = this.objectiveGapProperties.datasets;\n\n // Verify if dataset is not empty nor filled with null values on y axis\n return dataset.data.length && dataset.data.some(point => point.y !== null);\n }\n return false;\n }\n\n /**\n * Reset chart properties\n */\n private resetChartsProperties() {\n // Consumption chart\n this.consumptionProperties = {\n datasets: [],\n labels: [],\n colors: [],\n options: this.chartService.getConfig('mixed-groupable-stacked-bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('default', ['DJU', 'kWh', 'kWh', 'kWh']),\n }),\n minHeight: 250,\n maxHeight: 300,\n width: 10000, // Set very large width to adapt large screens. Won't overflow\n };\n this.consumptionProperties.options.scales.yAxes[0].scaleLabel = {\n display: true,\n labelString: 'kWh',\n };\n this.consumptionProperties.options.scales.yAxes[1].scaleLabel = {\n display: true,\n labelString: 'DJU',\n };\n // Objective chart\n this.objectiveGapProperties = {\n datasets: [],\n labels: [],\n colors: [],\n options: this.chartService.getConfig('bar', {\n tooltips: this.chartService.getTooltipHTMLConfig('default', ['%']),\n }),\n minHeight: 250,\n maxHeight: 300,\n width: 10000, // Set very large width to adapt large screens. Won't overflow\n };\n this.objectiveGapProperties.options.scales.yAxes[0].scaleLabel = {\n display: true,\n labelString: '%',\n };\n }\n\n /**\n * Set chart data for given montoring and period\n * @param period - if `null` or `undefined`, consider that all periods to display\n */\n private setChartsData(monitoring: Monitoring, period: HeatingPeriod) {\n // Get months items related to period\n let months = [].concat(monitoring.monthlyAggregated);\n months.sort((a, b) => moment(a.monthStart).diff(b.monthStart));\n if (period) {\n months = months.filter(x => {\n if (period.periodEnd !== null) {\n return moment.utc(x.monthStart).isBetween(period.periodStart, period.periodEnd, 'day', '[]');\n }\n return moment.utc(x.monthStart).isSameOrAfter(period.periodStart, 'day');\n });\n }\n // Compute chart data\n this.computeChartData(this.consumptionConfig, months, this.consumptionProperties);\n this.consumptionProperties.options = this.chartService.getSeriesAxesOptions(\n this.consumptionProperties.datasets,\n this.consumptionProperties.options\n );\n\n this.computeChartData(this.objectiveGapConfig, months, this.objectiveGapProperties);\n this.drawPeriodZones(period, monitoring, this.consumptionProperties);\n this.drawPeriodZones(period, monitoring, this.objectiveGapProperties);\n }\n\n private computeChartData(config: ChartConfig, arr: T[], chartProperties: ChartProperties) {\n // Reset config datasets data\n for (const c of config.datasets) {\n c.data = [];\n }\n // Compute datasets values for each array item\n const labels: string[] = [];\n for (const item of arr) {\n for (const c of config.datasets) {\n c.data.push({ x: c.getX(item), y: c.getY(item) });\n }\n labels.push(config.getLabel(item));\n }\n\n chartProperties.datasets = config.datasets.map(c => ({\n data: c.data,\n label: c.label,\n yAxisID: c.yAxisID,\n stack: c.stack,\n type: c.type,\n ...this.handleDatasetColor(c),\n }));\n\n // Compute labels (x axis)\n chartProperties.labels = labels.map(x => moment.utc(x).format(this.dateLabelFormat));\n // Compute legends\n chartProperties.legends = config.datasets.map(x => this.chartService.getLegend(x.label, x.legendOptions || {}));\n }\n\n /**\n * Handle dataset color\n * Same for all point (string) or specific for each point (string[])\n */\n private handleDatasetColor(c: ChartDatasetConfig) {\n const color = c.getColor ? c.data.map(x => c.getColor(x)) : this.chartService.getColor(c.label);\n const isArray = Array.isArray(color);\n const getProp: (prop: string) => string | string[] = (prop: string) =>\n isArray ? (color as ColorGA[]).map(x => x[prop]) : color[prop];\n return {\n backgroundColor: getProp('backgroundColor'),\n borderColor: getProp('borderColor'),\n hoverBackgroundColor: getProp('backgroundColor'), // Not in ColorGA so keep same color on hover\n hoverBorderColor: getProp('borderColor'), // Not in ColorGA so keep same color on hover\n pointBackgroundColor: getProp('pointBackgroundColor'),\n pointBorderColor: getProp('pointBorderColor'),\n pointHoverBackgroundColor: getProp('pointHoverBackgroundColor'),\n pointHoverBorderColor: getProp('pointHoverBorderColor'),\n };\n }\n\n private drawPeriodZones(period: HeatingPeriod, monitoring: Monitoring, chartProperties: ChartProperties) {\n // Clean previous zones\n chartProperties.options.annotation.annotations = [];\n\n // Draw only for all periods selected\n if (period) {\n return;\n }\n\n for (let i = 0, len = monitoring.periods.length; i < len; i++) {\n const p = monitoring.periods[i];\n if (i % 2 === 0) {\n const iStart = chartProperties.labels.indexOf(moment.utc(p.periodStart).format(this.dateLabelFormat));\n const iEnd = chartProperties.labels.indexOf(moment.utc(p.periodEnd).format(this.dateLabelFormat));\n chartProperties.options.annotation.annotations.push({\n type: 'box',\n drawTime: 'beforeDatasetsDraw',\n xScaleID: 'x-axis-0',\n xMin: iStart > 0 ? iStart - 0.5 : null,\n xMax: iEnd > 0 ? iEnd + 0.5 : null,\n borderColor: '#00000010',\n backgroundColor: '#00000010',\n });\n }\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","export default \".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n background: none;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n text-transform: none;\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n.discreet-button:focus {\\n box-shadow: none;\\n}\\n\\n.discreet-button .icon {\\n height: 2em;\\n width: 2em;\\n margin-right: 0.5em;\\n}\\n\\n.flex-grow-1 {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n}\\n\\n.periods-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.periods-bloc .list-periods {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.periods-bloc .list-periods i {\\n padding: 0;\\n}\\n\\n.periods-bloc .list-periods i::before {\\n font-size: 1.5em;\\n}\\n\\n.periods-bloc .list-periods .notif {\\n position: absolute;\\n top: -1em;\\n right: -1em;\\n background-color: #db4b47;\\n width: 2em;\\n height: 2em;\\n border-radius: 50%;\\n color: white;\\n font-size: calc(1em - 4px);\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.periods-bloc .list-periods .notif span {\\n color: white;\\n top: 0.2em;\\n position: relative;\\n}\\n\\n.periods-bloc .select-periods {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n padding: 0;\\n margin: 0 2em;\\n font-weight: initial;\\n font-size: inherit;\\n background-color: #f5f5f5;\\n}\\n\\n.periods-bloc .select-periods .dates-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n flex-flow: row-reverse;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0.5em 1em;\\n height: 2em;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span {\\n width: 100%;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span.text-noperiod {\\n text-transform: none;\\n}\\n\\n.periods-bloc .select-periods .quick-modal {\\n width: 100%;\\n}\\n\\n.periods-bloc .quick-modal {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n margin: 1em 0;\\n z-index: 1;\\n border: 1px solid #f8f8f8;\\n border-radius: 5px;\\n background: white;\\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\\n cursor: initial;\\n font-size: calc(1em - 2px);\\n text-transform: none;\\n font-weight: initial;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div {\\n padding: 1em;\\n margin: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n border-radius: 0;\\n max-height: 30vh;\\n overflow-y: auto;\\n cursor: pointer;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div:hover {\\n background: lightgrey;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div.active {\\n box-shadow: 0px 3px 6px #00000029;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal {\\n margin-left: 2.2em;\\n width: 60%;\\n min-width: 35em;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group,\\n.periods-bloc .quick-modal.select-period-modal .form-inline {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group .form-control,\\n.periods-bloc .quick-modal.select-period-modal .form-inline .form-control {\\n font-size: inherit;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .fa {\\n font-size: 2.5em;\\n font-weight: normal;\\n}\\n\\n.checkmark-icon {\\n cursor: pointer;\\n}\\n\\n.checkmark-icon.disabled {\\n background-color: #a5b5cb;\\n cursor: initial;\\n}\\n\\n.monitoring-header {\\n display: -webkit-box;\\n display: flex;\\n margin: auto;\\n max-width: 70%;\\n}\\n\\n@media (max-width: 1700px) {\\n .monitoring-header {\\n max-width: 100%;\\n }\\n}\\n\\n.monitoring-header .image-column {\\n background-size: cover;\\n background-position: center;\\n width: 35%;\\n}\\n\\n.monitoring-header .image-column .ratio-keeper {\\n padding-top: 61.8%;\\n}\\n\\n.monitoring-header .monitoring-info {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-flow: column;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n width: 100%;\\n margin-left: 2em;\\n}\\n\\n.monitoring-header .monitoring-info .address-djus {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: start;\\n align-items: flex-start;\\n font-size: calc(1em - 1px);\\n}\\n\\n.monitoring-header .monitoring-info .address-djus .info-line {\\n display: -webkit-box;\\n display: flex;\\n padding: 0.3em 0;\\n}\\n\\n.monitoring-header .monitoring-info .address-djus .info-line.monitoring-name {\\n font-size: 15px;\\n}\\n\\n.monitoring-header .monitoring-info .address-djus .info-line.monitoring-name .fa {\\n line-height: inherit;\\n}\\n\\n.monitoring-header .monitoring-info .address-djus .info-line .icon {\\n margin-right: 1em;\\n}\\n\\n.monitoring-header .monitoring-info .address-djus .buttons-div {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-flow: column;\\n}\\n\\n.monitoring-header .monitoring-info .address-djus .export-button {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0;\\n margin-left: auto;\\n margin-bottom: 10px;\\n cursor: pointer;\\n}\\n\\n.monitoring-header .monitoring-info .address-djus .readings-button {\\n padding: 0.5em 1em;\\n margin: 0;\\n margin-left: auto;\\n color: white;\\n text-transform: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctaGVhZGVyL21vbml0b3JpbmctaGVhZGVyLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3BlcmF0aW5nLW1vbml0b3JpbmcvbW9uaXRvcmluZy1oZWFkZXIvbW9uaXRvcmluZy1oZWFkZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7RUNOSSxjRE9pQjtFQ05qQixhRE15QjtFQ0x6Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkNrQks7QUNuQmI7O0FISUE7RUFDSSxVQUFBO0VBQ0EsU0FBQTtFQUNBLGdCQUFBO0VBQ0EsMkJBQUE7RUFBQSxvQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0Esb0JBQUE7QUdESjs7QUhHSTtFQUNJLGdCQUFBO0FHRFI7O0FIR0k7RUFDSSxXQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0FHRFI7O0FIS0E7RUFDSSxtQkFBQTtVQUFBLFlBQUE7QUdGSjs7QUhLQTtFQUdJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7QUdKSjs7QUhNSTtFQUNJLFVBQUE7RUFDQSxTQUFBO0FHSlI7O0FIS1E7RUFDSSxVQUFBO0FHSFo7O0FISVk7RUFDSSxnQkFBQTtBR0ZoQjs7QUhNUTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSx5QkU5Qko7RUYrQkksVUFwQkU7RUFxQkYsV0FyQkU7RUFzQkYsa0JBQUE7RUFDQSxZQUFBO0VBQ0EsMEJBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FHSlo7O0FITVk7RUFDSSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0FHSmhCOztBSFNJO0VBQ0ksbUJBQUE7VUFBQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBMUVTO0FHbUVqQjs7QUhTUTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDhCQUFBO0VBQUEsOEJBQUE7VUFBQSxzQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7QUdQWjs7QUhTWTtFQUNJLFdBQUE7QUdQaEI7O0FIU2dCO0VBQ0ksb0JBQUE7QUdQcEI7O0FIWVE7RUFDSSxXQUFBO0FHVlo7O0FIY0k7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsYUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpREFBQTtFQUNBLGVBQUE7RUFDQSwwQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7QUdaUjs7QUhjUTtFQUNJLFlBQUE7RUFDQSxTQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7QUdaWjs7QUhjWTtFQUNJLHFCQUFBO0FHWmhCOztBSGNZO0VBQ0ksaUNBQUE7QUdaaEI7O0FIZ0JRO0VBQ0ksa0JBQUE7RUFDQSxVQUFBO0VBQ0EsZUFBQTtBR2RaOztBSGdCWTs7RUFFSSx5QkFBQTtVQUFBLDhCQUFBO0FHZGhCOztBSGVnQjs7RUFDSSxrQkFBQTtBR1pwQjs7QUhnQlk7RUFDSSxnQkFBQTtFQUNBLG1CQUFBO0FHZGhCOztBQ3JJQTtFQUNJLGVBQUE7QUR3SUo7O0FDdElJO0VBQ0kseUJGd0NJO0VFdkNKLGVBQUE7QUR3SVI7O0FDcElBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7QUR1SUo7O0FDdElJO0VBSko7SUFLUSxlQUFBO0VEeUlOO0FBQ0Y7O0FDdklJO0VBQ0ksc0JBQUE7RUFDQSwyQkFBQTtFQUNBLFVBQUE7QUR5SVI7O0FDdElRO0VBQ0ksa0JBQUE7QUR3SVo7O0FDcElJO0VBRUksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLGlCQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLFdBQUE7RUFDQSxnQkFMVTtBRDBJbEI7O0FDbklRO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtFQUNBLDBCQUFBO0FEcUlaOztBQ25JWTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGdCQUFBO0FEcUloQjs7QUNuSWdCO0VBQ0ksZUFBQTtBRHFJcEI7O0FDbklvQjtFQUNJLG9CQUFBO0FEcUl4Qjs7QUNqSWdCO0VBQ0ksaUJBQUE7QURtSXBCOztBQy9IWTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxpQkFBQTtBRGlJaEI7O0FDOUhZO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLFNBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtBRGdJaEI7O0FDN0hZO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7QUQrSGhCIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3BlcmF0aW5nLW1vbml0b3JpbmcvbW9uaXRvcmluZy1oZWFkZXIvbW9uaXRvcmluZy1oZWFkZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vc3R5bGVzL21peGlucy5zY3NzJztcblxuJGZvbnRTaXplOiAxM3B4O1xuJGJhY2tncm91bmRHcmV5OiAjZjVmNWY1O1xuJGJvcmRlclJhZGl1czogNXB4O1xuXG4uaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigxLjVyZW0sIDEuNXJlbSwgJHRleHQtY29sb3IpO1xufVxuXG4uZGlzY3JlZXQtYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuICAgIC5pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgIHdpZHRoOiAyZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gICAgfVxufVxuXG4uZmxleC1ncm93LTEge1xuICAgIGZsZXgtZ3JvdzogMTtcbn1cblxuLnBlcmlvZHMtYmxvYyB7XG4gICAgJHNwYWNpbmc6IDJlbTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5saXN0LXBlcmlvZHMge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGkge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RpZiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IC0oMC41ICogJHNwYWNpbmcpO1xuICAgICAgICAgICAgcmlnaHQ6IC0oMC41ICogJHNwYWNpbmcpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFkbWluO1xuICAgICAgICAgICAgd2lkdGg6ICRzcGFjaW5nO1xuICAgICAgICAgICAgaGVpZ2h0OiAkc3BhY2luZztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2FsYygxZW0gLSA0cHgpO1xuICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHg7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHdoaXRlO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwLjEgKiAkc3BhY2luZztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VsZWN0LXBlcmlvZHMge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMCAkc3BhY2luZztcbiAgICAgICAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmRHcmV5O1xuXG4gICAgICAgIC5kYXRlcy1iYXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgbWFyZ2luOiAoMC4yNSAqICRzcGFjaW5nKSAoMC41ICogJHNwYWNpbmcpO1xuICAgICAgICAgICAgaGVpZ2h0OiAyZW07XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgJi50ZXh0LW5vcGVyaW9kIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnF1aWNrLW1vZGFsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnF1aWNrLW1vZGFsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbjogKDAuNSAqICRzcGFjaW5nKSAwO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjhmOGY4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3gtc2hhZG93OiByZ2JhKDk5LCA5OSwgOTksIDAuMikgMHB4IDJweCA4cHggMHB4O1xuICAgICAgICBjdXJzb3I6IGluaXRpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogY2FsYygxZW0gLSAycHgpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG5cbiAgICAgICAgJi5saXN0LXBlcmlvZHMtbW9kYWwgZGl2IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNSAqICRzcGFjaW5nO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAzMHZoO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGlnaHRncmV5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggNnB4ICMwMDAwMDAyOTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuc2VsZWN0LXBlcmlvZC1tb2RhbCB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMi4yZW07XG4gICAgICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAzNWVtO1xuXG4gICAgICAgICAgICAuZm9ybS1ncm91cCxcbiAgICAgICAgICAgIC5mb3JtLWlubGluZSB7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZmEge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41ZW07XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiLmljb24ge1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDcxODg7XG59XG5cbi5kaXNjcmVldC1idXR0b24ge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cbi5kaXNjcmVldC1idXR0b246Zm9jdXMge1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLmRpc2NyZWV0LWJ1dHRvbiAuaWNvbiB7XG4gIGhlaWdodDogMmVtO1xuICB3aWR0aDogMmVtO1xuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xufVxuXG4uZmxleC1ncm93LTEge1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi5wZXJpb2RzLWJsb2Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIGkge1xuICBwYWRkaW5nOiAwO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIGk6OmJlZm9yZSB7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgLm5vdGlmIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0xZW07XG4gIHJpZ2h0OiAtMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICB3aWR0aDogMmVtO1xuICBoZWlnaHQ6IDJlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogY2FsYygxZW0gLSA0cHgpO1xuICBib3JkZXI6IHNvbGlkIDFweDtcbiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyAubm90aWYgc3BhbiB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdG9wOiAwLjJlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMge1xuICBmbGV4LWdyb3c6IDE7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMCAyZW07XG4gIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAuZGF0ZXMtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3ctcmV2ZXJzZTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiAwLjVlbSAxZW07XG4gIGhlaWdodDogMmVtO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciBzcGFuIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAuZGF0ZXMtYmFyIHNwYW4udGV4dC1ub3BlcmlvZCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLnF1aWNrLW1vZGFsIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xuICBtYXJnaW46IDFlbSAwO1xuICB6LWluZGV4OiAxO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZjhmOGY4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3gtc2hhZG93OiByZ2JhKDk5LCA5OSwgOTksIDAuMikgMHB4IDJweCA4cHggMHB4O1xuICBjdXJzb3I6IGluaXRpYWw7XG4gIGZvbnQtc2l6ZTogY2FsYygxZW0gLSAycHgpO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5saXN0LXBlcmlvZHMtbW9kYWwgZGl2IHtcbiAgcGFkZGluZzogMWVtO1xuICBtYXJnaW46IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgbWF4LWhlaWdodDogMzB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwubGlzdC1wZXJpb2RzLW1vZGFsIGRpdjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXYuYWN0aXZlIHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCA2cHggIzAwMDAwMDI5O1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCB7XG4gIG1hcmdpbi1sZWZ0OiAyLjJlbTtcbiAgd2lkdGg6IDYwJTtcbiAgbWluLXdpZHRoOiAzNWVtO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1ncm91cCxcbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0taW5saW5lIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1ncm91cCAuZm9ybS1jb250cm9sLFxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCB7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZhIHtcbiAgZm9udC1zaXplOiAyLjVlbTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuLmNoZWNrbWFyay1pY29uIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNoZWNrbWFyay1pY29uLmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E1YjVjYjtcbiAgY3Vyc29yOiBpbml0aWFsO1xufVxuXG4ubW9uaXRvcmluZy1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW46IGF1dG87XG4gIG1heC13aWR0aDogNzAlO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDE3MDBweCkge1xuICAubW9uaXRvcmluZy1oZWFkZXIge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxufVxuLm1vbml0b3JpbmctaGVhZGVyIC5pbWFnZS1jb2x1bW4ge1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIHdpZHRoOiAzNSU7XG59XG4ubW9uaXRvcmluZy1oZWFkZXIgLmltYWdlLWNvbHVtbiAucmF0aW8ta2VlcGVyIHtcbiAgcGFkZGluZy10b3A6IDYxLjglO1xufVxuLm1vbml0b3JpbmctaGVhZGVyIC5tb25pdG9yaW5nLWluZm8ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWxlZnQ6IDJlbTtcbn1cbi5tb25pdG9yaW5nLWhlYWRlciAubW9uaXRvcmluZy1pbmZvIC5hZGRyZXNzLWRqdXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDFweCk7XG59XG4ubW9uaXRvcmluZy1oZWFkZXIgLm1vbml0b3JpbmctaW5mbyAuYWRkcmVzcy1kanVzIC5pbmZvLWxpbmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwLjNlbSAwO1xufVxuLm1vbml0b3JpbmctaGVhZGVyIC5tb25pdG9yaW5nLWluZm8gLmFkZHJlc3MtZGp1cyAuaW5mby1saW5lLm1vbml0b3JpbmctbmFtZSB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbn1cbi5tb25pdG9yaW5nLWhlYWRlciAubW9uaXRvcmluZy1pbmZvIC5hZGRyZXNzLWRqdXMgLmluZm8tbGluZS5tb25pdG9yaW5nLW5hbWUgLmZhIHtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG4ubW9uaXRvcmluZy1oZWFkZXIgLm1vbml0b3JpbmctaW5mbyAuYWRkcmVzcy1kanVzIC5pbmZvLWxpbmUgLmljb24ge1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbn1cbi5tb25pdG9yaW5nLWhlYWRlciAubW9uaXRvcmluZy1pbmZvIC5hZGRyZXNzLWRqdXMgLmJ1dHRvbnMtZGl2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4ubW9uaXRvcmluZy1oZWFkZXIgLm1vbml0b3JpbmctaW5mbyAuYWRkcmVzcy1kanVzIC5leHBvcnQtYnV0dG9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLm1vbml0b3JpbmctaGVhZGVyIC5tb25pdG9yaW5nLWluZm8gLmFkZHJlc3MtZGp1cyAucmVhZGluZ3MtYnV0dG9uIHtcbiAgcGFkZGluZzogMC41ZW0gMWVtO1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBjb2xvcjogd2hpdGU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufSIsIkBpbXBvcnQgJy4uL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzJztcblxuLmNoZWNrbWFyay1pY29uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0Z3JleTtcbiAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xuICAgIH1cbn1cblxuLm1vbml0b3JpbmctaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBtYXgtd2lkdGg6IDcwJTtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTcwMHB4KSB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuaW1hZ2UtY29sdW1uIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzUlO1xuXG4gICAgICAgIC8vIEtlZXAgYSBtaW5pbXVtIGhlaWdodCBlcXVpdmFsZW50IHRvIDYxLjglIG9mIHdpZHRoXG4gICAgICAgIC5yYXRpby1rZWVwZXIge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDYxLjglO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm1vbml0b3JpbmctaW5mbyB7XG4gICAgICAgICRzcGFjaW5nOiAyZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmc7XG5cbiAgICAgICAgLmFkZHJlc3MtZGp1cyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IGNhbGMoMWVtIC0gMXB4KTtcblxuICAgICAgICAgICAgLmluZm8tbGluZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjNlbSAwO1xuXG4gICAgICAgICAgICAgICAgJi5tb25pdG9yaW5nLW5hbWUge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250U2l6ZSArIDJweDtcblxuICAgICAgICAgICAgICAgICAgICAuZmEge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmcgLyAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ1dHRvbnMtZGl2IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZXhwb3J0LWJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnJlYWRpbmdzLWJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMC41ZW0gMWVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0= */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { saveAs } from 'file-saver';\nimport * as moment from 'moment';\nimport { Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { MeteoStation } from 'app/shared/models/meteo-station.interface';\nimport { Site } from 'app/shared/models/site.interface';\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { MeteoService } from 'app/shared/services/meteo/meteo.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport {\n BRExclusibleUses,\n DjuType,\n ExclusionTypes,\n HeatingPeriod,\n Monitoring,\n} from '../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\nimport { HeatingPeriodUpdate, MonitoringUpdate } from '../operating-monitoring.update.interface';\n\n@Component({\n selector: 'ga-monitoring-header',\n templateUrl: './monitoring-header.component.html',\n styleUrls: ['./monitoring-header.component.scss'],\n})\nexport class MonitoringHeaderComponent implements OnInit, OnDestroy {\n /** The monitoring actually selected */\n public monitoring: Monitoring;\n /** The monitoring's site info */\n public site: Site;\n /** The monitoring's meteo station info */\n public meteoStation: MeteoStation;\n /** The monitoring's period filters */\n public selectedPeriod: HeatingPeriod;\n /** The selected period new values */\n public editedPeriod: HeatingPeriodUpdate = {\n periodStart: null,\n periodEnd: null,\n };\n /** Period dates selection form */\n public editedPeriodForm: FormGroup;\n /** Period format */\n private readonly periodFormat = 'DD/MM/YYYY';\n /** Subscription to events */\n private subscription: Subscription;\n /** Get the start of first period to end of last one */\n get globalDates(): { periodStart: string; periodEnd?: string } {\n return {\n periodStart: this.monitoring.periods[this.monitoring.periods.length - 1].periodStart,\n periodEnd: this.monitoring.periods[0].periodEnd,\n };\n }\n /** Select the modal to show */\n public displayModalKey: 'add' | 'edit' | 'list' | null = null;\n\n /** Error messages to display if an heating period is not valid */\n public messagesInvalidPeriod: string[] = [];\n\n /** Track if user is exporting a monitoring */\n public isExporting = false;\n\n public djuSiteDisplayValue: number;\n\n constructor(\n private translateService: TranslateService,\n private mapService: MapService,\n private meteoService: MeteoService,\n private operatingMonitoringService: OperatingMonitoringService,\n private sitesService: SitesService,\n private exportService: ExportService\n ) {}\n\n ngOnInit() {\n this.editedPeriodForm = new FormGroup({\n start: new FormControl(''),\n end: new FormControl(''),\n });\n this.subscription = this.operatingMonitoringService.selectedMonitoring$.subscribe({\n next: value => this.setMonitoring(value),\n });\n this.subscription.add(\n this.operatingMonitoringService.selectedPeriod$.subscribe({\n next: value => (this.selectedPeriod = value),\n })\n );\n this.subscription.add(\n this.editedPeriodForm.valueChanges.subscribe({\n next: values => {\n this.setEditedPeriod(values);\n this.messagesInvalidPeriod = this.validatePeriod(this.editedPeriod);\n },\n })\n );\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public getSitePictureAsBackground() {\n return this.mapService.getSitePictureAsBackground(this.site ? this.site : {});\n }\n\n public setSelectedPeriod(period: HeatingPeriod) {\n // Need to copy object to avoid changes somewhere else\n this.operatingMonitoringService.setSelectedPeriod(period ? { ...period } : null);\n this.displayModalKey = null;\n }\n\n public updatePeriodDates() {\n if (!this.invalidEditedPeriod) {\n const updateMonitoring: MonitoringUpdate = this.monitoring;\n this.displayModalKey = null;\n\n if (this.editedPeriod._id) {\n updateMonitoring.periods = updateMonitoring.periods.map(period => {\n if (period._id === this.editedPeriod._id) {\n return this.editedPeriod;\n }\n return period;\n });\n } else {\n updateMonitoring.periods.push(this.editedPeriod);\n }\n\n this.operatingMonitoringService.updateMonitoring(updateMonitoring);\n }\n }\n\n public addPeriod() {\n this.displayModalKey = this.displayModalKey === 'add' ? null : 'add';\n this.editedPeriod = { periodStart: null, periodEnd: null }; // reset last edited period before creating a new one\n this.setEditedPeriodForm(this.editedPeriod);\n }\n\n public editPeriod() {\n if (this.selectedPeriod) {\n this.displayModalKey = this.displayModalKey === 'edit' ? null : 'edit';\n this.editedPeriod = { ...this.selectedPeriod };\n this.setEditedPeriodForm(this.editedPeriod);\n }\n }\n\n private setEditedPeriodForm(editedPeriod: HeatingPeriodUpdate) {\n this.editedPeriodForm.patchValue({\n start: editedPeriod.periodStart ? moment.utc(editedPeriod.periodStart).format('YYYY-MM-DD') : '',\n end: editedPeriod.periodEnd ? moment.utc(editedPeriod.periodEnd).format('YYYY-MM-DD') : '',\n });\n }\n\n /**\n * Set edited period start and end.\n * Input values must be at format YYYY-MM-DD\n */\n private setEditedPeriod({ start, end }: { start: string; end: string }) {\n this.editedPeriod.periodStart = this.operatingMonitoringService.getPeriodDateISOString(start, 'start');\n this.editedPeriod.periodEnd = this.operatingMonitoringService.getPeriodDateISOString(end, 'end');\n }\n\n /**\n * Call monitoring service to validate the given period.\n * @param period Period to validate\n */\n public validatePeriod(period: HeatingPeriodUpdate): string[] {\n const messages: string[] = [];\n\n if (!this.operatingMonitoringService.isPeriodValid(period)) {\n messages.push(this.translateService._('monitoring_invalid_period'));\n }\n\n if (!this.operatingMonitoringService.isPeriodInContract(period, this.monitoring)) {\n const start = moment.utc(this.monitoring.contractStart).format(this.periodFormat);\n const end = moment.utc(this.monitoring.contractEnd).format(this.periodFormat);\n\n const messagePeriodOutsideContract = `${this.translateService._(\n 'monitoring_period_must_be_inside_contract'\n )} : ${start} - ${end}`;\n\n messages.push(messagePeriodOutsideContract);\n }\n\n return messages;\n }\n\n /**\n * Returns true if the edited period has any validation error message\n */\n public get invalidEditedPeriod(): boolean {\n return Boolean(this.messagesInvalidPeriod.length);\n }\n\n private async setMonitoring(monitoring: Monitoring) {\n if (monitoring) {\n /** Period from the monitoring object to display */\n let monitoringPeriod: HeatingPeriod = null;\n\n // Fetch monitoring info for the first time or if a new one is loaded\n if (\n !this.monitoring ||\n this.monitoring._id !== monitoring._id ||\n this.monitoring.site._id !== monitoring.site._id\n ) {\n this.site = await this.sitesService.getSite(monitoring.site._id);\n this.meteoStation = await this.meteoService.getMeteoStation(this.site.meteoStation);\n }\n\n // Set new monitoring as the current one\n this.monitoring = monitoring;\n this.setDjuSiteValue(this.monitoring);\n // Select edited period from the monitoring object\n if (this.editedPeriod && this.editedPeriod.periodStart) {\n if (this.editedPeriod._id) {\n monitoringPeriod = this.monitoring.periods.find(period => period._id === this.editedPeriod._id);\n } else {\n const editedPeriodStart = new Date(this.editedPeriod.periodStart).toISOString();\n // periodEnd can be null\n const editedPeriodEnd = this.editedPeriod.periodEnd\n ? new Date(this.editedPeriod.periodEnd).toISOString()\n : null;\n\n monitoringPeriod = this.monitoring.periods.find(\n period => period.periodStart === editedPeriodStart && period.periodEnd === editedPeriodEnd\n );\n }\n this.setSelectedPeriod(monitoringPeriod);\n }\n\n // Reset edited period to prevent it selecting a non existant period when loading a new monitoring\n this.editedPeriod = { periodStart: null, periodEnd: null };\n\n // Sort current monitoring periods in case order has changed\n this.monitoring.periods.sort((a, b) => b.periodStart.localeCompare(a.periodStart));\n } else if (this.operatingMonitoringService.isLastActionDelete) {\n this.monitoring = null;\n this.site = null;\n this.selectedPeriod = null;\n }\n }\n\n public openReadings() {\n this.operatingMonitoringService.toggleEditReadingsModal(true);\n }\n\n public editMonitoring() {\n this.operatingMonitoringService.editedMonitoring$.next(this.monitoring);\n this.operatingMonitoringService.toggleEditionMonitoringModal(true);\n }\n\n public async deleteMonitoring() {\n const confirm = await Swal.fire({\n title: this.translateService._('monitoring_deletion') + this.monitoring.name,\n text: this.translateService._('monitoring_delete_monitoring'),\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: this.translateService._('yes_delete'),\n cancelButtonText: this.translateService._('cancel'),\n });\n\n if (confirm.value) {\n this.operatingMonitoringService.deleteMonitoring(this.monitoring);\n }\n }\n\n /** Indicates if reading btn must be displayed or not */\n public get displayReadingBtn(): boolean {\n const hotWaterUse = this.monitoring.uses.find(x => x.use === BRExclusibleUses.HOT_WATER);\n if (!hotWaterUse) {\n return false;\n }\n return hotWaterUse.exclusionType === ExclusionTypes.INDEX_READING;\n }\n\n /************************\n * Excel export methods *\n ************************/\n\n get exportIconClass() {\n return this.isExporting ? 'citron-icon rotating' : 'excel-icon';\n }\n\n /**\n * Get and save export file of given monitoring.\n * @param monitoring Monitoring to export\n */\n public getExportFile(monitoring: Monitoring): void {\n const exportFilename = this.getExportFilename(monitoring.name);\n const exportUrl = this.getExportUrl(monitoring._id);\n\n this.isExporting = true;\n\n this.exportService.getFile(exportUrl).subscribe({\n next: file => {\n saveAs(file, exportFilename);\n this.isExporting = false;\n },\n error: err => {\n this.isExporting = false;\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_monitoring_while_exporting'),\n icon: 'error',\n });\n },\n });\n }\n\n /**\n * Get export URL with monitoring ID.\n * @param monitoringId ID of the monitoring to export/\n */\n private getExportUrl(monitoringId: string): string {\n return `/api/operating-monitoring/export/excel/${monitoringId}`;\n }\n\n /**\n * Get export filename with monitoring name and today date.\n * @param monitoringName Name of the monitoring to export\n */\n private getExportFilename(monitoringName: string): string {\n const date = moment()\n .format('DDMMYYYY')\n .toString();\n\n return `suivi d'exploitation - ${monitoringName} - ${date}.xlsx`;\n }\n\n private setDjuSiteValue(monitoring): void {\n this.djuSiteDisplayValue =\n monitoring.djuType === DjuType.COLD\n ? this.site.dju.temperatureReferenceCold\n : this.site.dju.temperatureReference;\n }\n}\n","export default \".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n background: none;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n text-transform: none;\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n.discreet-button:focus {\\n box-shadow: none;\\n}\\n\\n.discreet-button .icon {\\n height: 2em;\\n width: 2em;\\n margin-right: 0.5em;\\n}\\n\\n.flex-grow-1 {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n}\\n\\n.periods-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.periods-bloc .list-periods {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.periods-bloc .list-periods i {\\n padding: 0;\\n}\\n\\n.periods-bloc .list-periods i::before {\\n font-size: 1.5em;\\n}\\n\\n.periods-bloc .list-periods .notif {\\n position: absolute;\\n top: -1em;\\n right: -1em;\\n background-color: #db4b47;\\n width: 2em;\\n height: 2em;\\n border-radius: 50%;\\n color: white;\\n font-size: calc(1em - 4px);\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.periods-bloc .list-periods .notif span {\\n color: white;\\n top: 0.2em;\\n position: relative;\\n}\\n\\n.periods-bloc .select-periods {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n padding: 0;\\n margin: 0 2em;\\n font-weight: initial;\\n font-size: inherit;\\n background-color: #f5f5f5;\\n}\\n\\n.periods-bloc .select-periods .dates-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n flex-flow: row-reverse;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0.5em 1em;\\n height: 2em;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span {\\n width: 100%;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span.text-noperiod {\\n text-transform: none;\\n}\\n\\n.periods-bloc .select-periods .quick-modal {\\n width: 100%;\\n}\\n\\n.periods-bloc .quick-modal {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n margin: 1em 0;\\n z-index: 1;\\n border: 1px solid #f8f8f8;\\n border-radius: 5px;\\n background: white;\\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\\n cursor: initial;\\n font-size: calc(1em - 2px);\\n text-transform: none;\\n font-weight: initial;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div {\\n padding: 1em;\\n margin: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n border-radius: 0;\\n max-height: 30vh;\\n overflow-y: auto;\\n cursor: pointer;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div:hover {\\n background: lightgrey;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div.active {\\n box-shadow: 0px 3px 6px #00000029;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal {\\n margin-left: 2.2em;\\n width: 60%;\\n min-width: 35em;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group,\\n.periods-bloc .quick-modal.select-period-modal .form-inline {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group .form-control,\\n.periods-bloc .quick-modal.select-period-modal .form-inline .form-control {\\n font-size: inherit;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .fa {\\n font-size: 2.5em;\\n font-weight: normal;\\n}\\n\\n.keyfigures__alert {\\n position: absolute;\\n top: 55%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n text-align: center;\\n font-size: 1.5em;\\n font-weight: bold;\\n}\\n\\n.keyfigures__container {\\n background-color: #f5f5f5;\\n border-radius: 5px;\\n}\\n\\n.keyfigures__col {\\n padding-top: 5px;\\n padding-bottom: 15px;\\n}\\n\\n.keyfigures__title {\\n font-size: 1.1em;\\n font-weight: bold;\\n padding-top: 10px;\\n}\\n\\n.keyfigures__wrapper {\\n margin: -5px;\\n}\\n\\n.keyfigure__container {\\n margin: 5px;\\n}\\n\\n.keyfigure__container.w-min-30p {\\n -webkit-box-flex: 1;\\n flex: 1 1 30%;\\n}\\n\\n.keyfigure__container.w-min-100p {\\n -webkit-box-flex: 1;\\n flex: 1 1 100%;\\n}\\n\\n.keyfigure-tile {\\n width: 100%;\\n background-color: white;\\n border-radius: 5px;\\n padding: 5px 13px 11px 7px;\\n}\\n\\n.keyfigure-tile .keyfigure__value {\\n font-size: 1.1em;\\n font-weight: bold;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3Jpbmcta2V5ZmlndXJlcy9tb25pdG9yaW5nLWtleWZpZ3VyZXMuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWtleWZpZ3VyZXMvbW9uaXRvcmluZy1rZXlmaWd1cmVzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BO0VDTkksY0RPaUI7RUNOakIsYURNeUI7RUNMekIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDa0JLO0FDbkJiOztBSElBO0VBQ0ksVUFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTtFQUNBLDJCQUFBO0VBQUEsb0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0FHREo7O0FIR0k7RUFDSSxnQkFBQTtBR0RSOztBSEdJO0VBQ0ksV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtBR0RSOztBSEtBO0VBQ0ksbUJBQUE7VUFBQSxZQUFBO0FHRko7O0FIS0E7RUFHSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FHSko7O0FITUk7RUFDSSxVQUFBO0VBQ0EsU0FBQTtBR0pSOztBSEtRO0VBQ0ksVUFBQTtBR0haOztBSElZO0VBQ0ksZ0JBQUE7QUdGaEI7O0FITVE7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EseUJFOUJKO0VGK0JJLFVBcEJFO0VBcUJGLFdBckJFO0VBc0JGLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLDBCQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtBR0paOztBSE1ZO0VBQ0ksWUFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtBR0poQjs7QUhTSTtFQUNJLG1CQUFBO1VBQUEsWUFBQTtFQUNBLFVBQUE7RUFDQSxhQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQTFFUztBR21FakI7O0FIU1E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0FHUFo7O0FIU1k7RUFDSSxXQUFBO0FHUGhCOztBSFNnQjtFQUNJLG9CQUFBO0FHUHBCOztBSFlRO0VBQ0ksV0FBQTtBR1ZaOztBSGNJO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFQUNBLGFBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaURBQUE7RUFDQSxlQUFBO0VBQ0EsMEJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0FHWlI7O0FIY1E7RUFDSSxZQUFBO0VBQ0EsU0FBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0FHWlo7O0FIY1k7RUFDSSxxQkFBQTtBR1poQjs7QUhjWTtFQUNJLGlDQUFBO0FHWmhCOztBSGdCUTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7QUdkWjs7QUhnQlk7O0VBRUkseUJBQUE7VUFBQSw4QkFBQTtBR2RoQjs7QUhlZ0I7O0VBQ0ksa0JBQUE7QUdacEI7O0FIZ0JZO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtBR2RoQjs7QUNsSUE7RUFDSSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0Esd0NBQUE7VUFBQSxnQ0FBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtBRHFJSjs7QUNsSUE7RUFDSSx5QkpaYTtFSWFiLGtCQWZLO0FEb0pUOztBQ2xJQTtFQUNJLGdCQUFBO0VBQ0Esb0JBQUE7QURxSUo7O0FDbElBO0VBQ0ksZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0FEcUlKOztBQ2xJQTtFQUNJLFlBQUE7QURxSUo7O0FDbElBO0VBQ0ksV0FqQ1U7QURzS2Q7O0FDcElJO0VBQ0ksbUJBQUE7VUFBQSxhQUFBO0FEc0lSOztBQ3BJSTtFQUNJLG1CQUFBO1VBQUEsY0FBQTtBRHNJUjs7QUNsSUE7RUFDSSxXQUFBO0VBQ0EsdUJBQUE7RUFDQSxrQkE5Q0s7RUErQ0wsMEJBQUE7QURxSUo7O0FDcElJO0VBQ0ksZ0JBQUE7RUFDQSxpQkFBQTtBRHNJUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3Jpbmcta2V5ZmlndXJlcy9tb25pdG9yaW5nLWtleWZpZ3VyZXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vc3R5bGVzL21peGlucy5zY3NzJztcblxuJGZvbnRTaXplOiAxM3B4O1xuJGJhY2tncm91bmRHcmV5OiAjZjVmNWY1O1xuJGJvcmRlclJhZGl1czogNXB4O1xuXG4uaWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigxLjVyZW0sIDEuNXJlbSwgJHRleHQtY29sb3IpO1xufVxuXG4uZGlzY3JlZXQtYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuICAgIC5pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgIHdpZHRoOiAyZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gICAgfVxufVxuXG4uZmxleC1ncm93LTEge1xuICAgIGZsZXgtZ3JvdzogMTtcbn1cblxuLnBlcmlvZHMtYmxvYyB7XG4gICAgJHNwYWNpbmc6IDJlbTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5saXN0LXBlcmlvZHMge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGkge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RpZiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IC0oMC41ICogJHNwYWNpbmcpO1xuICAgICAgICAgICAgcmlnaHQ6IC0oMC41ICogJHNwYWNpbmcpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFkbWluO1xuICAgICAgICAgICAgd2lkdGg6ICRzcGFjaW5nO1xuICAgICAgICAgICAgaGVpZ2h0OiAkc3BhY2luZztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2FsYygxZW0gLSA0cHgpO1xuICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHg7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHdoaXRlO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwLjEgKiAkc3BhY2luZztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VsZWN0LXBlcmlvZHMge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMCAkc3BhY2luZztcbiAgICAgICAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmRHcmV5O1xuXG4gICAgICAgIC5kYXRlcy1iYXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgbWFyZ2luOiAoMC4yNSAqICRzcGFjaW5nKSAoMC41ICogJHNwYWNpbmcpO1xuICAgICAgICAgICAgaGVpZ2h0OiAyZW07XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgJi50ZXh0LW5vcGVyaW9kIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnF1aWNrLW1vZGFsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnF1aWNrLW1vZGFsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbjogKDAuNSAqICRzcGFjaW5nKSAwO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjhmOGY4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3gtc2hhZG93OiByZ2JhKDk5LCA5OSwgOTksIDAuMikgMHB4IDJweCA4cHggMHB4O1xuICAgICAgICBjdXJzb3I6IGluaXRpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogY2FsYygxZW0gLSAycHgpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG5cbiAgICAgICAgJi5saXN0LXBlcmlvZHMtbW9kYWwgZGl2IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNSAqICRzcGFjaW5nO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAzMHZoO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGlnaHRncmV5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggNnB4ICMwMDAwMDAyOTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuc2VsZWN0LXBlcmlvZC1tb2RhbCB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMi4yZW07XG4gICAgICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAzNWVtO1xuXG4gICAgICAgICAgICAuZm9ybS1ncm91cCxcbiAgICAgICAgICAgIC5mb3JtLWlubGluZSB7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZmEge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41ZW07XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIiwiLmljb24ge1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDcxODg7XG59XG5cbi5kaXNjcmVldC1idXR0b24ge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cbi5kaXNjcmVldC1idXR0b246Zm9jdXMge1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLmRpc2NyZWV0LWJ1dHRvbiAuaWNvbiB7XG4gIGhlaWdodDogMmVtO1xuICB3aWR0aDogMmVtO1xuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xufVxuXG4uZmxleC1ncm93LTEge1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi5wZXJpb2RzLWJsb2Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIGkge1xuICBwYWRkaW5nOiAwO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIGk6OmJlZm9yZSB7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgLm5vdGlmIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0xZW07XG4gIHJpZ2h0OiAtMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xuICB3aWR0aDogMmVtO1xuICBoZWlnaHQ6IDJlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogY2FsYygxZW0gLSA0cHgpO1xuICBib3JkZXI6IHNvbGlkIDFweDtcbiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyAubm90aWYgc3BhbiB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdG9wOiAwLjJlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMge1xuICBmbGV4LWdyb3c6IDE7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMCAyZW07XG4gIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAuZGF0ZXMtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3ctcmV2ZXJzZTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiAwLjVlbSAxZW07XG4gIGhlaWdodDogMmVtO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciBzcGFuIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAuZGF0ZXMtYmFyIHNwYW4udGV4dC1ub3BlcmlvZCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLnF1aWNrLW1vZGFsIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xuICBtYXJnaW46IDFlbSAwO1xuICB6LWluZGV4OiAxO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZjhmOGY4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3gtc2hhZG93OiByZ2JhKDk5LCA5OSwgOTksIDAuMikgMHB4IDJweCA4cHggMHB4O1xuICBjdXJzb3I6IGluaXRpYWw7XG4gIGZvbnQtc2l6ZTogY2FsYygxZW0gLSAycHgpO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5saXN0LXBlcmlvZHMtbW9kYWwgZGl2IHtcbiAgcGFkZGluZzogMWVtO1xuICBtYXJnaW46IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgbWF4LWhlaWdodDogMzB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwubGlzdC1wZXJpb2RzLW1vZGFsIGRpdjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXYuYWN0aXZlIHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCA2cHggIzAwMDAwMDI5O1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCB7XG4gIG1hcmdpbi1sZWZ0OiAyLjJlbTtcbiAgd2lkdGg6IDYwJTtcbiAgbWluLXdpZHRoOiAzNWVtO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1ncm91cCxcbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0taW5saW5lIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1ncm91cCAuZm9ybS1jb250cm9sLFxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCB7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZhIHtcbiAgZm9udC1zaXplOiAyLjVlbTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuLmtleWZpZ3VyZXNfX2FsZXJ0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDU1JTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEuNWVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmtleWZpZ3VyZXNfX2NvbnRhaW5lciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cblxuLmtleWZpZ3VyZXNfX2NvbCB7XG4gIHBhZGRpbmctdG9wOiA1cHg7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xufVxuXG4ua2V5ZmlndXJlc19fdGl0bGUge1xuICBmb250LXNpemU6IDEuMWVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG59XG5cbi5rZXlmaWd1cmVzX193cmFwcGVyIHtcbiAgbWFyZ2luOiAtNXB4O1xufVxuXG4ua2V5ZmlndXJlX19jb250YWluZXIge1xuICBtYXJnaW46IDVweDtcbn1cbi5rZXlmaWd1cmVfX2NvbnRhaW5lci53LW1pbi0zMHAge1xuICBmbGV4OiAxIDEgMzAlO1xufVxuLmtleWZpZ3VyZV9fY29udGFpbmVyLnctbWluLTEwMHAge1xuICBmbGV4OiAxIDEgMTAwJTtcbn1cblxuLmtleWZpZ3VyZS10aWxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHBhZGRpbmc6IDVweCAxM3B4IDExcHggN3B4O1xufVxuLmtleWZpZ3VyZS10aWxlIC5rZXlmaWd1cmVfX3ZhbHVlIHtcbiAgZm9udC1zaXplOiAxLjFlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59IiwiQGltcG9ydCAnLi4vb3BlcmF0aW5nLW1vbml0b3JpbmcuY29tcG9uZW50LnNjc3MnO1xuXG4kcmFkaXVzOiA1cHg7XG4kdGlsZXNNYXJnaW46IDVweDtcblxuLmtleWZpZ3VyZXNfX2FsZXJ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1NSU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ua2V5ZmlndXJlc19fY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZEdyZXk7XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbn1cblxuLmtleWZpZ3VyZXNfX2NvbCB7XG4gICAgcGFkZGluZy10b3A6IDVweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbn1cblxuLmtleWZpZ3VyZXNfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmctdG9wOiAxMHB4O1xufVxuXG4ua2V5ZmlndXJlc19fd3JhcHBlciB7XG4gICAgbWFyZ2luOiAtJHRpbGVzTWFyZ2luO1xufVxuXG4ua2V5ZmlndXJlX19jb250YWluZXIge1xuICAgIG1hcmdpbjogJHRpbGVzTWFyZ2luO1xuICAgICYudy1taW4tMzBwIHtcbiAgICAgICAgZmxleDogMSAxIDMwJTtcbiAgICB9XG4gICAgJi53LW1pbi0xMDBwIHtcbiAgICAgICAgZmxleDogMSAxIDEwMCU7XG4gICAgfVxufVxuXG4ua2V5ZmlndXJlLXRpbGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgcGFkZGluZzogNXB4IDEzcHggMTFweCA3cHg7XG4gICAgLmtleWZpZ3VyZV9fdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG59XG4iXX0= */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\nimport { HeatingPeriod, Monitoring } from '../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\nimport { KeyfigureTile } from './monitoring-keyfigures.interface';\n\n@Component({\n selector: 'ga-monitoring-keyfigures',\n templateUrl: './monitoring-keyfigures.component.html',\n styleUrls: ['./monitoring-keyfigures.component.scss'],\n})\nexport class MonitoringKeyfiguresComponent implements OnInit, OnDestroy {\n /** Subcription */\n private subscription: Subscription;\n /** Selected monitoring */\n private monitoring: Monitoring;\n\n /** Keyfigures title */\n public title = {\n displayKey: 'monitoring_title_short',\n color: 'inherit',\n };\n\n /** Tiles list */\n public tiles: Array> = [\n {\n key: 'monitoring_profits',\n displayKey: 'monitoring_deviations_positive',\n getValue: (period: HeatingPeriod) => period.profits,\n unit: '€',\n displayValue: '-',\n isRecap: true,\n getRgbColorKey: (v: number) => {\n if (typeof v !== 'number' || v === 0) {\n return null;\n }\n return v > 0 ? 'monitoring_deviation_positive' : 'monitoring_deviation_negative';\n },\n getDisplayKey: (v: number) => {\n if (typeof v !== 'number' || v === 0) {\n return 'monitoring_deviations_positive';\n }\n return v > 0 ? 'monitoring_deviations_positive' : 'monitoring_deviations_negative';\n },\n },\n {\n key: 'monitoring_deviation',\n displayKey: 'monitoring_deviation',\n getValue: (period: HeatingPeriod) => period.deviation,\n unit: '%',\n displayValue: '-',\n isRecap: true,\n getRgbColorKey: (v: number) => {\n if (typeof v !== 'number' || v === 0) {\n return null;\n }\n return v > 0 ? 'monitoring_deviation_positive' : 'monitoring_deviation_negative';\n },\n },\n {\n key: 'conso_noticed',\n displayKey: 'monitoring_conso_noticed',\n getValue: (period: HeatingPeriod) => period.consumptionHeating,\n unit: 'kWh',\n displayValue: '-',\n },\n {\n key: 'conso_expected',\n displayKey: 'monitoring_conso_expected',\n getValue: (period: HeatingPeriod) => period.valueRevaluedOnBillsPeriod,\n unit: 'kWh',\n displayValue: '-',\n },\n {\n key: 'djus',\n displayKey: 'djus_short',\n getValue: (period: HeatingPeriod) => period.modulatorRealOnBillsPeriod,\n unit: '',\n displayValue: '-',\n },\n {\n key: 'conso_noticed_per_dju',\n displayKey: 'monitoring_conso_noticed_per_dju',\n getValue: (period: HeatingPeriod) => period.consumptionHeatingPerModulatorReal,\n unit: 'kWh / DJU',\n displayValue: '-',\n },\n {\n key: 'conso_expected_per_dju',\n displayKey: 'monitoring_conso_expected_per_dju',\n getValue: (period: HeatingPeriod) => period.valueRevaluedOnBillsPeriod / period.modulatorRealOnBillsPeriod,\n unit: 'kWh / DJU',\n displayValue: '-',\n },\n ];\n\n constructor(\n private operatingMonitoringService: OperatingMonitoringService,\n private utilsService: UtilsService,\n private colorService: ColorService\n ) {}\n\n ngOnInit() {\n this.subscription = this.operatingMonitoringService.selectedPeriod$.subscribe({\n next: period => {\n this.monitoring = this.operatingMonitoringService.selectedMonitoring$.getValue();\n\n if (!period && this.monitoring) {\n period = this.operatingMonitoringService.getSumAllPeriods(this.monitoring);\n }\n this.refreshTiles(period);\n this.refreshTitle(period);\n },\n });\n\n this.subscription.add(\n this.operatingMonitoringService.selectedMonitoring$.subscribe({\n next: monitoring => {\n if (this.operatingMonitoringService.hasMonitorings) {\n this.monitoring = monitoring;\n } else if (this.operatingMonitoringService.isLastActionDelete) {\n this.monitoring = null;\n }\n },\n })\n );\n }\n\n public get keyfiguresTiles(): Array> {\n return this.tiles.filter(x => !x.isRecap);\n }\n\n public get recapTiles(): Array> {\n return this.tiles.filter(x => x.isRecap);\n }\n\n public hasSelectedMonitoring(): boolean {\n return !!this.monitoring;\n }\n\n private refreshTiles(period: HeatingPeriod) {\n const options = {\n defaultNotFinite: '-',\n defaultDisplayUnit: true,\n };\n this.tiles.forEach(tile => {\n const value = period ? tile.getValue(period) : null;\n tile.displayValue = this.utilsService.getNumberPretty(value, tile.unit, options);\n tile.color =\n tile.getRgbColorKey && period ? this.colorService.getRgbColor(tile.getRgbColorKey(value)) : null;\n if (tile.getDisplayKey) {\n tile.displayKey = tile.getDisplayKey(value);\n }\n });\n }\n\n private refreshTitle(period: HeatingPeriod) {\n const t = this.tiles.find(x => x.key === 'monitoring_profits');\n const titleValue = period ? t.getValue(period) : null;\n this.title.displayKey = 'monitoring_title_short';\n if (titleValue < 0) {\n this.title.displayKey = 'monitoring_drifting_long';\n } else if (titleValue > 0) {\n this.title.displayKey = 'monitoring_efficient_long';\n }\n this.title.color = t.color;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","export default \".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n background: none;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n text-transform: none;\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n.discreet-button:focus {\\n box-shadow: none;\\n}\\n\\n.discreet-button .icon {\\n height: 2em;\\n width: 2em;\\n margin-right: 0.5em;\\n}\\n\\n.flex-grow-1 {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n}\\n\\n.periods-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.periods-bloc .list-periods {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.periods-bloc .list-periods i {\\n padding: 0;\\n}\\n\\n.periods-bloc .list-periods i::before {\\n font-size: 1.5em;\\n}\\n\\n.periods-bloc .list-periods .notif {\\n position: absolute;\\n top: -1em;\\n right: -1em;\\n background-color: #db4b47;\\n width: 2em;\\n height: 2em;\\n border-radius: 50%;\\n color: white;\\n font-size: calc(1em - 4px);\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.periods-bloc .list-periods .notif span {\\n color: white;\\n top: 0.2em;\\n position: relative;\\n}\\n\\n.periods-bloc .select-periods {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n padding: 0;\\n margin: 0 2em;\\n font-weight: initial;\\n font-size: inherit;\\n background-color: #f5f5f5;\\n}\\n\\n.periods-bloc .select-periods .dates-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n flex-flow: row-reverse;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0.5em 1em;\\n height: 2em;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span {\\n width: 100%;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span.text-noperiod {\\n text-transform: none;\\n}\\n\\n.periods-bloc .select-periods .quick-modal {\\n width: 100%;\\n}\\n\\n.periods-bloc .quick-modal {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n margin: 1em 0;\\n z-index: 1;\\n border: 1px solid #f8f8f8;\\n border-radius: 5px;\\n background: white;\\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\\n cursor: initial;\\n font-size: calc(1em - 2px);\\n text-transform: none;\\n font-weight: initial;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div {\\n padding: 1em;\\n margin: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n border-radius: 0;\\n max-height: 30vh;\\n overflow-y: auto;\\n cursor: pointer;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div:hover {\\n background: lightgrey;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div.active {\\n box-shadow: 0px 3px 6px #00000029;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal {\\n margin-left: 2.2em;\\n width: 60%;\\n min-width: 35em;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group,\\n.periods-bloc .quick-modal.select-period-modal .form-inline {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group .form-control,\\n.periods-bloc .quick-modal.select-period-modal .form-inline .form-control {\\n font-size: inherit;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .fa {\\n font-size: 2.5em;\\n font-weight: normal;\\n}\\n\\n.form-control {\\n font-size: inherit;\\n}\\n\\n.dot {\\n display: inline-block;\\n border-radius: 50%;\\n background-color: #516073;\\n height: 1em;\\n width: 1em;\\n min-width: 1em;\\n margin: 0 1em;\\n}\\n\\n.dot.dot-success {\\n background-color: green;\\n}\\n\\n.dot.dot-danger {\\n background-color: #db4b47;\\n}\\n\\n.monitoring-card {\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n font-size: 12px;\\n color: #a5b5cb;\\n}\\n\\n.monitoring-card .dot {\\n opacity: 0.3;\\n}\\n\\n.monitoring-card.galp-active .dot {\\n opacity: 1;\\n}\\n\\n.monitoring-card.galp-active .monitoring-site {\\n color: #607188;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctbGlzdC9tb25pdG9yaW5nLWxpc3QuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWxpc3QvbW9uaXRvcmluZy1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BO0VDTkksY0RPaUI7RUNOakIsYURNeUI7RUNMekIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDa0JLO0FDbkJiOztBSElBO0VBQ0ksVUFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTtFQUNBLDJCQUFBO0VBQUEsb0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0FHREo7O0FIR0k7RUFDSSxnQkFBQTtBR0RSOztBSEdJO0VBQ0ksV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtBR0RSOztBSEtBO0VBQ0ksbUJBQUE7VUFBQSxZQUFBO0FHRko7O0FIS0E7RUFHSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FHSko7O0FITUk7RUFDSSxVQUFBO0VBQ0EsU0FBQTtBR0pSOztBSEtRO0VBQ0ksVUFBQTtBR0haOztBSElZO0VBQ0ksZ0JBQUE7QUdGaEI7O0FITVE7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EseUJFOUJKO0VGK0JJLFVBcEJFO0VBcUJGLFdBckJFO0VBc0JGLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLDBCQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtBR0paOztBSE1ZO0VBQ0ksWUFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtBR0poQjs7QUhTSTtFQUNJLG1CQUFBO1VBQUEsWUFBQTtFQUNBLFVBQUE7RUFDQSxhQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQTFFUztBR21FakI7O0FIU1E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0FHUFo7O0FIU1k7RUFDSSxXQUFBO0FHUGhCOztBSFNnQjtFQUNJLG9CQUFBO0FHUHBCOztBSFlRO0VBQ0ksV0FBQTtBR1ZaOztBSGNJO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFQUNBLGFBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaURBQUE7RUFDQSxlQUFBO0VBQ0EsMEJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0FHWlI7O0FIY1E7RUFDSSxZQUFBO0VBQ0EsU0FBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0FHWlo7O0FIY1k7RUFDSSxxQkFBQTtBR1poQjs7QUhjWTtFQUNJLGlDQUFBO0FHWmhCOztBSGdCUTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7QUdkWjs7QUhnQlk7O0VBRUkseUJBQUE7VUFBQSw4QkFBQTtBR2RoQjs7QUhlZ0I7O0VBQ0ksa0JBQUE7QUdacEI7O0FIZ0JZO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtBR2RoQjs7QUNySUE7RUFDSSxrQkFBQTtBRHdJSjs7QUNySUE7RUFFSSxxQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJGOEJPO0VFN0JQLFdBSk87RUFLUCxVQUxPO0VBTVAsY0FOTztFQU9QLGFBQUE7QUR1SUo7O0FDcklJO0VBQ0ksdUJGTUU7QUNpSVY7O0FDcklJO0VBQ0kseUJGRUE7QUNxSVI7O0FDbklBO0VBQ0ksMkJBQUE7RUFBQSxvQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0ZrQlE7QUNvSFo7O0FDcElJO0VBQ0ksWUFBQTtBRHNJUjs7QUNsSVE7RUFDSSxVQUFBO0FEb0laOztBQ2pJUTtFQUNJLGNGZEM7QUNpSmIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLWxpc3QvbW9uaXRvcmluZy1saXN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbiRmb250U2l6ZTogMTNweDtcbiRiYWNrZ3JvdW5kR3JleTogI2Y1ZjVmNTtcbiRib3JkZXJSYWRpdXM6IDVweDtcblxuLmljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMS41cmVtLCAxLjVyZW0sICR0ZXh0LWNvbG9yKTtcbn1cblxuLmRpc2NyZWV0LWJ1dHRvbiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cbiAgICAuaWNvbiB7XG4gICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgIH1cbn1cblxuLmZsZXgtZ3Jvdy0xIHtcbiAgICBmbGV4LWdyb3c6IDE7XG59XG5cbi5wZXJpb2RzLWJsb2Mge1xuICAgICRzcGFjaW5nOiAyZW07XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAubGlzdC1wZXJpb2RzIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubm90aWYge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAtKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIHJpZ2h0OiAtKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhZG1pbjtcbiAgICAgICAgICAgIHdpZHRoOiAkc3BhY2luZztcbiAgICAgICAgICAgIGhlaWdodDogJHNwYWNpbmc7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IGNhbGMoMWVtIC0gNHB4KTtcbiAgICAgICAgICAgIGJvcmRlcjogc29saWQgMXB4O1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMC4xICogJHNwYWNpbmc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNlbGVjdC1wZXJpb2RzIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmc7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kR3JleTtcblxuICAgICAgICAuZGF0ZXMtYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWZsb3c6IHJvdy1yZXZlcnNlO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbjogKDAuMjUgKiAkc3BhY2luZykgKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIGhlaWdodDogMmVtO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgICYudGV4dC1ub3BlcmlvZCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5xdWljay1tb2RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5xdWljay1tb2RhbCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBtYXJnaW46ICgwLjUgKiAkc3BhY2luZykgMDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Y4ZjhmODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm94LXNoYWRvdzogcmdiYSg5OSwgOTksIDk5LCAwLjIpIDBweCAycHggOHB4IDBweDtcbiAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xuICAgICAgICBmb250LXNpemU6IGNhbGMoMWVtIC0gMnB4KTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuXG4gICAgICAgICYubGlzdC1wZXJpb2RzLW1vZGFsIGRpdiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjUgKiAkc3BhY2luZztcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMzB2aDtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDZweCAjMDAwMDAwMjk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnNlbGVjdC1wZXJpb2QtbW9kYWwge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIuMmVtO1xuICAgICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMzVlbTtcblxuICAgICAgICAgICAgLmZvcm0tZ3JvdXAsXG4gICAgICAgICAgICAuZm9ybS1pbmxpbmUge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmZhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuNWVtO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiIsIi5pY29uIHtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIHdpZHRoOiAxLjVyZW07XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3MTg4O1xufVxuXG4uZGlzY3JlZXQtYnV0dG9uIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG4uZGlzY3JlZXQtYnV0dG9uOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5kaXNjcmVldC1idXR0b24gLmljb24ge1xuICBoZWlnaHQ6IDJlbTtcbiAgd2lkdGg6IDJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbn1cblxuLmZsZXgtZ3Jvdy0xIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4ucGVyaW9kcy1ibG9jIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyBpIHtcbiAgcGFkZGluZzogMDtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyBpOjpiZWZvcmUge1xuICBmb250LXNpemU6IDEuNWVtO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIC5ub3RpZiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMWVtO1xuICByaWdodDogLTFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgd2lkdGg6IDJlbTtcbiAgaGVpZ2h0OiAyZW07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IGNhbGMoMWVtIC0gNHB4KTtcbiAgYm9yZGVyOiBzb2xpZCAxcHg7XG4gIGJvcmRlci1jb2xvcjogd2hpdGU7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgLm5vdGlmIHNwYW4ge1xuICBjb2xvcjogd2hpdGU7XG4gIHRvcDogMC4yZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIHtcbiAgZmxleC1ncm93OiAxO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDAgMmVtO1xuICBmb250LXdlaWdodDogaW5pdGlhbDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogMC41ZW0gMWVtO1xuICBoZWlnaHQ6IDJlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5kYXRlcy1iYXIgc3BhbiB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciBzcGFuLnRleHQtbm9wZXJpb2Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5xdWljay1tb2RhbCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAxZW0gMDtcbiAgei1pbmRleDogMTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y4ZjhmODtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogcmdiYSg5OSwgOTksIDk5LCAwLjIpIDBweCAycHggOHB4IDBweDtcbiAgY3Vyc29yOiBpbml0aWFsO1xuICBmb250LXNpemU6IGNhbGMoMWVtIC0gMnB4KTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwubGlzdC1wZXJpb2RzLW1vZGFsIGRpdiB7XG4gIHBhZGRpbmc6IDFlbTtcbiAgbWFyZ2luOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIG1heC1oZWlnaHQ6IDMwdmg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXY6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaWdodGdyZXk7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5saXN0LXBlcmlvZHMtbW9kYWwgZGl2LmFjdGl2ZSB7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggNnB4ICMwMDAwMDAyOTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwge1xuICBtYXJnaW4tbGVmdDogMi4yZW07XG4gIHdpZHRoOiA2MCU7XG4gIG1pbi13aWR0aDogMzVlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0tZ3JvdXAsXG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWlubGluZSB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0tZ3JvdXAgLmZvcm0tY29udHJvbCxcbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mYSB7XG4gIGZvbnQtc2l6ZTogMi41ZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5mb3JtLWNvbnRyb2wge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG5cbi5kb3Qge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxNjA3MztcbiAgaGVpZ2h0OiAxZW07XG4gIHdpZHRoOiAxZW07XG4gIG1pbi13aWR0aDogMWVtO1xuICBtYXJnaW46IDAgMWVtO1xufVxuLmRvdC5kb3Qtc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xufVxuLmRvdC5kb3QtZGFuZ2VyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0Nztcbn1cblxuLm1vbml0b3JpbmctY2FyZCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAjYTViNWNiO1xufVxuLm1vbml0b3JpbmctY2FyZCAuZG90IHtcbiAgb3BhY2l0eTogMC4zO1xufVxuLm1vbml0b3JpbmctY2FyZC5nYWxwLWFjdGl2ZSAuZG90IHtcbiAgb3BhY2l0eTogMTtcbn1cbi5tb25pdG9yaW5nLWNhcmQuZ2FscC1hY3RpdmUgLm1vbml0b3Jpbmctc2l0ZSB7XG4gIGNvbG9yOiAjNjA3MTg4O1xufSIsIkBpbXBvcnQgJy4uL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzJztcblxuLmZvcm0tY29udHJvbCB7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG4uZG90IHtcbiAgICAkc2l6ZTogMWVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmtncmV5O1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIG1pbi13aWR0aDogJHNpemU7XG4gICAgbWFyZ2luOiAwICRzaXplO1xuXG4gICAgJi5kb3Qtc3VjY2VzcyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzdWNjZXNzO1xuICAgIH1cbiAgICAmLmRvdC1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XG4gICAgfVxufVxuXG4ubW9uaXRvcmluZy1jYXJkIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogJGxpZ2h0Z3JleTtcblxuICAgIC5kb3Qge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgfVxuXG4gICAgJi5nYWxwLWFjdGl2ZSB7XG4gICAgICAgIC5kb3Qge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tb25pdG9yaW5nLXNpdGUge1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19 */\"","import { Component, OnInit } from '@angular/core';\nimport { Monitoring, MonitoringFilters, Status } from '../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\n\n@Component({\n selector: 'ga-monitoring-list',\n templateUrl: './monitoring-list.component.html',\n styleUrls: ['./monitoring-list.component.scss'],\n})\nexport class MonitoringListComponent implements OnInit {\n /**\n * The monitoring filters actually applied\n */\n public filters: MonitoringFilters;\n /**\n * The list of all the monitorings\n */\n public monitorings: Monitoring[];\n /**\n * The currently selected monitoring\n */\n public selectedMonitoring: Monitoring;\n /**\n * Return existings status for HTML\n */\n get STATUS() {\n return Status;\n }\n\n constructor(private operatingMonitoringService: OperatingMonitoringService) {}\n\n ngOnInit() {\n this.operatingMonitoringService.filters$.subscribe({\n next: value => (this.filters = value),\n });\n this.operatingMonitoringService.monitoringsFiltered$.subscribe({\n next: value => (this.monitorings = value),\n });\n this.operatingMonitoringService.selectedMonitoring$.subscribe({\n next: value => (this.selectedMonitoring = value),\n });\n }\n\n public getMessageNoMonitorings(): string {\n const hasSelectedStatusFilter = this.filters.status && Object.values(Status).includes(this.filters.status);\n\n return hasSelectedStatusFilter\n ? 'monitoring_no_corresponding_monitorings'\n : 'monitoring_no_existing_monitorings';\n }\n\n public showEditionMonitoringModal() {\n this.operatingMonitoringService.editedMonitoring$.next(null);\n this.operatingMonitoringService.toggleEditionMonitoringModal(true);\n }\n\n public onStatusChange(value: Status) {\n const newFilters: MonitoringFilters = { ...this.filters, status: value };\n this.operatingMonitoringService.setFilters(newFilters);\n }\n\n public onClickMonitoring(monitoring: Monitoring) {\n // Throw only if value have changed\n if (!this.selectedMonitoring || this.selectedMonitoring._id !== monitoring._id) {\n this.operatingMonitoringService.selectedMonitoring$.next(monitoring);\n }\n }\n}\n","export default \".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n background: none;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n text-transform: none;\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n.discreet-button:focus {\\n box-shadow: none;\\n}\\n\\n.discreet-button .icon {\\n height: 2em;\\n width: 2em;\\n margin-right: 0.5em;\\n}\\n\\n.flex-grow-1 {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n}\\n\\n.periods-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.periods-bloc .list-periods {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.periods-bloc .list-periods i {\\n padding: 0;\\n}\\n\\n.periods-bloc .list-periods i::before {\\n font-size: 1.5em;\\n}\\n\\n.periods-bloc .list-periods .notif {\\n position: absolute;\\n top: -1em;\\n right: -1em;\\n background-color: #db4b47;\\n width: 2em;\\n height: 2em;\\n border-radius: 50%;\\n color: white;\\n font-size: calc(1em - 4px);\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.periods-bloc .list-periods .notif span {\\n color: white;\\n top: 0.2em;\\n position: relative;\\n}\\n\\n.periods-bloc .select-periods {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n padding: 0;\\n margin: 0 2em;\\n font-weight: initial;\\n font-size: inherit;\\n background-color: #f5f5f5;\\n}\\n\\n.periods-bloc .select-periods .dates-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n flex-flow: row-reverse;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0.5em 1em;\\n height: 2em;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span {\\n width: 100%;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span.text-noperiod {\\n text-transform: none;\\n}\\n\\n.periods-bloc .select-periods .quick-modal {\\n width: 100%;\\n}\\n\\n.periods-bloc .quick-modal {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n margin: 1em 0;\\n z-index: 1;\\n border: 1px solid #f8f8f8;\\n border-radius: 5px;\\n background: white;\\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\\n cursor: initial;\\n font-size: calc(1em - 2px);\\n text-transform: none;\\n font-weight: initial;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div {\\n padding: 1em;\\n margin: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n border-radius: 0;\\n max-height: 30vh;\\n overflow-y: auto;\\n cursor: pointer;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div:hover {\\n background: lightgrey;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div.active {\\n box-shadow: 0px 3px 6px #00000029;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal {\\n margin-left: 2.2em;\\n width: 60%;\\n min-width: 35em;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group,\\n.periods-bloc .quick-modal.select-period-modal .form-inline {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group .form-control,\\n.periods-bloc .quick-modal.select-period-modal .form-inline .form-control {\\n font-size: inherit;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .fa {\\n font-size: 2.5em;\\n font-weight: normal;\\n}\\n\\n.container {\\n font-size: 13px;\\n}\\n\\n.keep-height {\\n height: 2em;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n font-weight: inherit;\\n}\\n\\n.measuring-points > :nth-last-child(2n) {\\n background-color: #00000007;\\n}\\n\\n.measuring-point {\\n padding: 1em;\\n color: #607188;\\n border-radius: 5px;\\n}\\n\\n.measuring-point .counter {\\n border-radius: 50%;\\n background-color: white;\\n width: 2em;\\n height: 2em;\\n line-height: 2em;\\n text-align: center;\\n vertical-align: middle;\\n}\\n\\n.measuring-point .fa {\\n font-size: 1.5em;\\n font-weight: normal;\\n background: none;\\n color: inherit;\\n}\\n\\n.measuring-point .action_buttons {\\n visibility: hidden;\\n}\\n\\n.measuring-point:hover .action_buttons {\\n visibility: initial;\\n}\\n\\n.form-control {\\n color: inherit;\\n font-size: inherit;\\n height: 3em !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctcmVhZGluZ3MvbW9uaXRvcmluZy1hZGQtbWV0ZXIvbW9uaXRvcmluZy1hZGQtbWV0ZXIuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLXJlYWRpbmdzL21vbml0b3JpbmctYWRkLW1ldGVyL21vbml0b3JpbmctYWRkLW1ldGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BO0VDTkksY0RPaUI7RUNOakIsYURNeUI7RUNMekIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0kseUJDa0JLO0FDbkJiOztBSElBO0VBQ0ksVUFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTtFQUNBLDJCQUFBO0VBQUEsb0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0FHREo7O0FIR0k7RUFDSSxnQkFBQTtBR0RSOztBSEdJO0VBQ0ksV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtBR0RSOztBSEtBO0VBQ0ksbUJBQUE7VUFBQSxZQUFBO0FHRko7O0FIS0E7RUFHSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FHSko7O0FITUk7RUFDSSxVQUFBO0VBQ0EsU0FBQTtBR0pSOztBSEtRO0VBQ0ksVUFBQTtBR0haOztBSElZO0VBQ0ksZ0JBQUE7QUdGaEI7O0FITVE7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EseUJFOUJKO0VGK0JJLFVBcEJFO0VBcUJGLFdBckJFO0VBc0JGLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLDBCQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtBR0paOztBSE1ZO0VBQ0ksWUFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtBR0poQjs7QUhTSTtFQUNJLG1CQUFBO1VBQUEsWUFBQTtFQUNBLFVBQUE7RUFDQSxhQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQTFFUztBR21FakI7O0FIU1E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw4QkFBQTtFQUFBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0FHUFo7O0FIU1k7RUFDSSxXQUFBO0FHUGhCOztBSFNnQjtFQUNJLG9CQUFBO0FHUHBCOztBSFlRO0VBQ0ksV0FBQTtBR1ZaOztBSGNJO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFQUNBLGFBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaURBQUE7RUFDQSxlQUFBO0VBQ0EsMEJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0FHWlI7O0FIY1E7RUFDSSxZQUFBO0VBQ0EsU0FBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0FHWlo7O0FIY1k7RUFDSSxxQkFBQTtBR1poQjs7QUhjWTtFQUNJLGlDQUFBO0FHWmhCOztBSGdCUTtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7QUdkWjs7QUhnQlk7O0VBRUkseUJBQUE7VUFBQSw4QkFBQTtBR2RoQjs7QUhlZ0I7O0VBQ0ksa0JBQUE7QUdacEI7O0FIZ0JZO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtBR2RoQjs7QUNwSUE7RUFDSSxlSkRPO0FHd0lYOztBQ3BJQTtFQUNJLFdBQUE7QUR1SUo7O0FDcElBO0VBQ0ksVUFBQTtFQUNBLFNBQUE7RUFDQSxvQkFBQTtBRHVJSjs7QUNwSUE7RUFDSSwyQkFBQTtBRHVJSjs7QUNySUE7RUFDSSxZQUFBO0VBQ0EsY0ZJUztFRUhULGtCQUFBO0FEd0lKOztBQ3RJSTtFQUdJLGtCQUFBO0VBQ0EsdUJBQUE7RUFDQSxVQUpPO0VBS1AsV0FMTztFQU1QLGdCQU5PO0VBT1Asa0JBQUE7RUFDQSxzQkFBQTtBRHNJUjs7QUNuSUk7RUFDSSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBO0FEcUlSOztBQ2xJSTtFQUNJLGtCQUFBO0FEb0lSOztBQ2pJSTtFQUNJLG1CQUFBO0FEbUlSOztBQy9IQTtFQUNJLGNBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0FEa0lKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3BlcmF0aW5nLW1vbml0b3JpbmcvbW9uaXRvcmluZy1yZWFkaW5ncy9tb25pdG9yaW5nLWFkZC1tZXRlci9tb25pdG9yaW5nLWFkZC1tZXRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MnO1xuXG4kZm9udFNpemU6IDEzcHg7XG4kYmFja2dyb3VuZEdyZXk6ICNmNWY1ZjU7XG4kYm9yZGVyUmFkaXVzOiA1cHg7XG5cbi5pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDEuNXJlbSwgMS41cmVtLCAkdGV4dC1jb2xvcik7XG59XG5cbi5kaXNjcmVldC1idXR0b24ge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG4gICAgLmljb24ge1xuICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbiAgICB9XG59XG5cbi5mbGV4LWdyb3ctMSB7XG4gICAgZmxleC1ncm93OiAxO1xufVxuXG4ucGVyaW9kcy1ibG9jIHtcbiAgICAkc3BhY2luZzogMmVtO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgLmxpc3QtcGVyaW9kcyB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgaSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm5vdGlmIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLSgwLjUgKiAkc3BhY2luZyk7XG4gICAgICAgICAgICByaWdodDogLSgwLjUgKiAkc3BhY2luZyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWRtaW47XG4gICAgICAgICAgICB3aWR0aDogJHNwYWNpbmc7XG4gICAgICAgICAgICBoZWlnaHQ6ICRzcGFjaW5nO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDRweCk7XG4gICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDAuMSAqICRzcGFjaW5nO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWxlY3QtcGVyaW9kcyB7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwICRzcGFjaW5nO1xuICAgICAgICBmb250LXdlaWdodDogaW5pdGlhbDtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZEdyZXk7XG5cbiAgICAgICAgLmRhdGVzLWJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1mbG93OiByb3ctcmV2ZXJzZTtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXJnaW46ICgwLjI1ICogJHNwYWNpbmcpICgwLjUgKiAkc3BhY2luZyk7XG4gICAgICAgICAgICBoZWlnaHQ6IDJlbTtcblxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAmLnRleHQtbm9wZXJpb2Qge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucXVpY2stbW9kYWwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucXVpY2stbW9kYWwge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luOiAoMC41ICogJHNwYWNpbmcpIDA7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmOGY4Zjg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGJveC1zaGFkb3c6IHJnYmEoOTksIDk5LCA5OSwgMC4yKSAwcHggMnB4IDhweCAwcHg7XG4gICAgICAgIGN1cnNvcjogaW5pdGlhbDtcbiAgICAgICAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDJweCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogaW5pdGlhbDtcblxuICAgICAgICAmLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXYge1xuICAgICAgICAgICAgcGFkZGluZzogMC41ICogJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDMwdmg7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaWdodGdyZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCA2cHggIzAwMDAwMDI5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5zZWxlY3QtcGVyaW9kLW1vZGFsIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyLjJlbTtcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDM1ZW07XG5cbiAgICAgICAgICAgIC5mb3JtLWdyb3VwLFxuICAgICAgICAgICAgLmZvcm0taW5saW5lIHtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5mYSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjVlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCIuaWNvbiB7XG4gIGhlaWdodDogMS41cmVtO1xuICB3aWR0aDogMS41cmVtO1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwNzE4ODtcbn1cblxuLmRpc2NyZWV0LWJ1dHRvbiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuLmRpc2NyZWV0LWJ1dHRvbjpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4uZGlzY3JlZXQtYnV0dG9uIC5pY29uIHtcbiAgaGVpZ2h0OiAyZW07XG4gIHdpZHRoOiAyZW07XG4gIG1hcmdpbi1yaWdodDogMC41ZW07XG59XG5cbi5mbGV4LWdyb3ctMSB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLnBlcmlvZHMtYmxvYyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgaSB7XG4gIHBhZGRpbmc6IDA7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgaTo6YmVmb3JlIHtcbiAgZm9udC1zaXplOiAxLjVlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyAubm90aWYge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTFlbTtcbiAgcmlnaHQ6IC0xZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG4gIHdpZHRoOiAyZW07XG4gIGhlaWdodDogMmVtO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDRweCk7XG4gIGJvcmRlcjogc29saWQgMXB4O1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIC5ub3RpZiBzcGFuIHtcbiAgY29sb3I6IHdoaXRlO1xuICB0b3A6IDAuMmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwIDJlbTtcbiAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5kYXRlcy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdy1yZXZlcnNlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDAuNWVtIDFlbTtcbiAgaGVpZ2h0OiAyZW07XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAuZGF0ZXMtYmFyIHNwYW4ge1xuICB3aWR0aDogMTAwJTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5kYXRlcy1iYXIgc3Bhbi50ZXh0LW5vcGVyaW9kIHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAucXVpY2stbW9kYWwge1xuICB3aWR0aDogMTAwJTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMWVtIDA7XG4gIHotaW5kZXg6IDE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmOGY4Zjg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJveC1zaGFkb3c6IHJnYmEoOTksIDk5LCA5OSwgMC4yKSAwcHggMnB4IDhweCAwcHg7XG4gIGN1cnNvcjogaW5pdGlhbDtcbiAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDJweCk7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBmb250LXdlaWdodDogaW5pdGlhbDtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXYge1xuICBwYWRkaW5nOiAxZW07XG4gIG1hcmdpbjogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBtYXgtaGVpZ2h0OiAzMHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5saXN0LXBlcmlvZHMtbW9kYWwgZGl2OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGlnaHRncmV5O1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwubGlzdC1wZXJpb2RzLW1vZGFsIGRpdi5hY3RpdmUge1xuICBib3gtc2hhZG93OiAwcHggM3B4IDZweCAjMDAwMDAwMjk7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIHtcbiAgbWFyZ2luLWxlZnQ6IDIuMmVtO1xuICB3aWR0aDogNjAlO1xuICBtaW4td2lkdGg6IDM1ZW07XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWdyb3VwLFxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1pbmxpbmUge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWdyb3VwIC5mb3JtLWNvbnRyb2wsXG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZmEge1xuICBmb250LXNpemU6IDIuNWVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4uY29udGFpbmVyIHtcbiAgZm9udC1zaXplOiAxM3B4O1xufVxuXG4ua2VlcC1oZWlnaHQge1xuICBoZWlnaHQ6IDJlbTtcbn1cblxuLmRpc2NyZWV0LWJ1dHRvbiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi5tZWFzdXJpbmctcG9pbnRzID4gOm50aC1sYXN0LWNoaWxkKDJuKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAwNztcbn1cblxuLm1lYXN1cmluZy1wb2ludCB7XG4gIHBhZGRpbmc6IDFlbTtcbiAgY29sb3I6ICM2MDcxODg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cbi5tZWFzdXJpbmctcG9pbnQgLmNvdW50ZXIge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB3aWR0aDogMmVtO1xuICBoZWlnaHQ6IDJlbTtcbiAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm1lYXN1cmluZy1wb2ludCAuZmEge1xuICBmb250LXNpemU6IDEuNWVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cbi5tZWFzdXJpbmctcG9pbnQgLmFjdGlvbl9idXR0b25zIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLm1lYXN1cmluZy1wb2ludDpob3ZlciAuYWN0aW9uX2J1dHRvbnMge1xuICB2aXNpYmlsaXR5OiBpbml0aWFsO1xufVxuXG4uZm9ybS1jb250cm9sIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgaGVpZ2h0OiAzZW0gIWltcG9ydGFudDtcbn0iLCJAaW1wb3J0ICcuLi8uLi9vcGVyYXRpbmctbW9uaXRvcmluZy5jb21wb25lbnQuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4uY29udGFpbmVyIHtcbiAgICBmb250LXNpemU6ICRmb250U2l6ZTtcbn1cblxuLmtlZXAtaGVpZ2h0IHtcbiAgICBoZWlnaHQ6IDJlbTtcbn1cblxuLmRpc2NyZWV0LWJ1dHRvbiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi5tZWFzdXJpbmctcG9pbnRzID4gOm50aC1sYXN0LWNoaWxkKDJuKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDA3O1xufVxuLm1lYXN1cmluZy1wb2ludCB7XG4gICAgcGFkZGluZzogMWVtO1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG5cbiAgICAuY291bnRlciB7XG4gICAgICAgICRzaXplOiAyZW07XG5cbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICBsaW5lLWhlaWdodDogJHNpemU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAuZmEge1xuICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAuYWN0aW9uX2J1dHRvbnMge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgJjpob3ZlciAuYWN0aW9uX2J1dHRvbnMge1xuICAgICAgICB2aXNpYmlsaXR5OiBpbml0aWFsO1xuICAgIH1cbn1cblxuLmZvcm0tY29udHJvbCB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGhlaWdodDogM2VtICFpbXBvcnRhbnQ7XG59XG4iXX0= */\"","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport { BRExclusibleUses, VolumeUnits } from '../../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../../operating-monitoring.service';\nimport { MeasuringPointUpdate, MonitoringUpdate } from '../../operating-monitoring.update.interface';\n\n@Component({\n selector: 'ga-monitoring-add-meter',\n templateUrl: './monitoring-add-meter.component.html',\n styleUrls: ['./monitoring-add-meter.component.scss'],\n})\nexport class MonitoringAddMeterComponent implements OnInit, OnDestroy {\n /** Subscriptions */\n private subscription: Subscription;\n\n /** The monitoring actually selected */\n public monitoring: MonitoringUpdate;\n /** Copy of the original value of the currently edited reading point */\n public originalMeasuringPoint: MeasuringPointUpdate;\n\n constructor(\n private translateService: TranslateService,\n private operatingMonitoringService: OperatingMonitoringService\n ) {}\n\n ngOnInit() {\n this.subscription = this.operatingMonitoringService.selectedMonitoring$.subscribe({\n next: value => (this.monitoring = value),\n });\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n if (this.originalMeasuringPoint) {\n this.cancelEdit();\n }\n }\n\n public startEditingMeasuringPoint(measuringPoint: MeasuringPointUpdate) {\n if (!measuringPoint) {\n // Create a new measuring point\n measuringPoint = {\n name: null,\n uses: BRExclusibleUses.HOT_WATER,\n volumeUnit: VolumeUnits.M3,\n };\n this.monitoring.measuringPoints.unshift(measuringPoint);\n }\n\n this.originalMeasuringPoint = { ...measuringPoint };\n }\n\n public cancelEdit() {\n if (!this.originalMeasuringPoint._id) {\n const itemIndex = this.monitoring.measuringPoints.findIndex(measuring => !measuring._id);\n this.monitoring.measuringPoints.splice(itemIndex, 1);\n } else {\n this.monitoring.measuringPoints = this.monitoring.measuringPoints.map(measuring =>\n measuring._id === this.originalMeasuringPoint._id ? this.originalMeasuringPoint : measuring\n );\n }\n this.originalMeasuringPoint = null;\n }\n\n public updateMeasuringPoints(measuringPoint: MeasuringPointUpdate) {\n if (measuringPoint && !this.isValid(measuringPoint)) {\n return;\n }\n\n this.operatingMonitoringService.updateMonitoring(this.monitoring);\n this.originalMeasuringPoint = null;\n }\n\n public isValid(measuringPoint: MeasuringPointUpdate) {\n if (!measuringPoint.name || !measuringPoint.volumeUnit || !measuringPoint.uses) {\n return false;\n }\n\n return true;\n }\n\n public isEditingEnabled(measuringPoint: MeasuringPointUpdate) {\n return this.originalMeasuringPoint && this.originalMeasuringPoint._id === measuringPoint._id;\n }\n\n public async deleteMeasuringPoint(measuringPoint: MeasuringPointUpdate) {\n const confirm = await Swal.fire({\n title: this.translateService._('deletion_of') + measuringPoint.name,\n text: this.translateService._('monitoring_delete_measuring_message'),\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: this.translateService._('yes_delete'),\n cancelButtonText: this.translateService._('cancel'),\n });\n\n if (confirm.value) {\n this.monitoring.measuringPoints = this.monitoring.measuringPoints.filter(\n measuring => measuring._id !== measuringPoint._id\n );\n this.monitoring.indexReadings = this.monitoring.indexReadings.filter(\n reading => reading.measuringPointId !== measuringPoint._id\n );\n this.updateMeasuringPoints(null);\n }\n }\n}\n","export default \".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n background: none;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n text-transform: none;\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n.discreet-button:focus {\\n box-shadow: none;\\n}\\n\\n.discreet-button .icon {\\n height: 2em;\\n width: 2em;\\n margin-right: 0.5em;\\n}\\n\\n.flex-grow-1 {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n}\\n\\n.periods-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.periods-bloc .list-periods {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.periods-bloc .list-periods i {\\n padding: 0;\\n}\\n\\n.periods-bloc .list-periods i::before {\\n font-size: 1.5em;\\n}\\n\\n.periods-bloc .list-periods .notif {\\n position: absolute;\\n top: -1em;\\n right: -1em;\\n background-color: #db4b47;\\n width: 2em;\\n height: 2em;\\n border-radius: 50%;\\n color: white;\\n font-size: calc(1em - 4px);\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.periods-bloc .list-periods .notif span {\\n color: white;\\n top: 0.2em;\\n position: relative;\\n}\\n\\n.periods-bloc .select-periods {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n padding: 0;\\n margin: 0 2em;\\n font-weight: initial;\\n font-size: inherit;\\n background-color: #f5f5f5;\\n}\\n\\n.periods-bloc .select-periods .dates-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n flex-flow: row-reverse;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0.5em 1em;\\n height: 2em;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span {\\n width: 100%;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span.text-noperiod {\\n text-transform: none;\\n}\\n\\n.periods-bloc .select-periods .quick-modal {\\n width: 100%;\\n}\\n\\n.periods-bloc .quick-modal {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n margin: 1em 0;\\n z-index: 1;\\n border: 1px solid #f8f8f8;\\n border-radius: 5px;\\n background: white;\\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\\n cursor: initial;\\n font-size: calc(1em - 2px);\\n text-transform: none;\\n font-weight: initial;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div {\\n padding: 1em;\\n margin: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n border-radius: 0;\\n max-height: 30vh;\\n overflow-y: auto;\\n cursor: pointer;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div:hover {\\n background: lightgrey;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div.active {\\n box-shadow: 0px 3px 6px #00000029;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal {\\n margin-left: 2.2em;\\n width: 60%;\\n min-width: 35em;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group,\\n.periods-bloc .quick-modal.select-period-modal .form-inline {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group .form-control,\\n.periods-bloc .quick-modal.select-period-modal .form-inline .form-control {\\n font-size: inherit;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .fa {\\n font-size: 2.5em;\\n font-weight: normal;\\n}\\n\\n.container {\\n font-size: 13px;\\n}\\n\\n.keep-height {\\n height: 2em;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n font-weight: inherit;\\n}\\n\\n.index-readings > :nth-last-child(2n) {\\n background-color: #00000007;\\n}\\n\\n.index-reading {\\n padding: 1em;\\n color: #607188;\\n border-radius: 5px;\\n}\\n\\n.index-reading .fa {\\n font-size: 1.5em;\\n font-weight: normal;\\n background: none;\\n color: inherit;\\n}\\n\\n.index-reading .action_buttons {\\n visibility: hidden;\\n}\\n\\n.index-reading:hover .action_buttons {\\n visibility: initial;\\n}\\n\\n.form-control {\\n color: inherit;\\n font-size: inherit;\\n height: 3em !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctcmVhZGluZ3MvbW9uaXRvcmluZy1hZGQtcmVhZGluZy9tb25pdG9yaW5nLWFkZC1yZWFkaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3BlcmF0aW5nLW1vbml0b3JpbmcvbW9uaXRvcmluZy1yZWFkaW5ncy9tb25pdG9yaW5nLWFkZC1yZWFkaW5nL21vbml0b3JpbmctYWRkLXJlYWRpbmcuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7RUNOSSxjRE9pQjtFQ05qQixhRE15QjtFQ0x6Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkNrQks7QUNuQmI7O0FISUE7RUFDSSxVQUFBO0VBQ0EsU0FBQTtFQUNBLGdCQUFBO0VBQ0EsMkJBQUE7RUFBQSxvQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0Esb0JBQUE7QUdESjs7QUhHSTtFQUNJLGdCQUFBO0FHRFI7O0FIR0k7RUFDSSxXQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0FHRFI7O0FIS0E7RUFDSSxtQkFBQTtVQUFBLFlBQUE7QUdGSjs7QUhLQTtFQUdJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7QUdKSjs7QUhNSTtFQUNJLFVBQUE7RUFDQSxTQUFBO0FHSlI7O0FIS1E7RUFDSSxVQUFBO0FHSFo7O0FISVk7RUFDSSxnQkFBQTtBR0ZoQjs7QUhNUTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSx5QkU5Qko7RUYrQkksVUFwQkU7RUFxQkYsV0FyQkU7RUFzQkYsa0JBQUE7RUFDQSxZQUFBO0VBQ0EsMEJBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FHSlo7O0FITVk7RUFDSSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0FHSmhCOztBSFNJO0VBQ0ksbUJBQUE7VUFBQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBMUVTO0FHbUVqQjs7QUhTUTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDhCQUFBO0VBQUEsOEJBQUE7VUFBQSxzQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7QUdQWjs7QUhTWTtFQUNJLFdBQUE7QUdQaEI7O0FIU2dCO0VBQ0ksb0JBQUE7QUdQcEI7O0FIWVE7RUFDSSxXQUFBO0FHVlo7O0FIY0k7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsYUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpREFBQTtFQUNBLGVBQUE7RUFDQSwwQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7QUdaUjs7QUhjUTtFQUNJLFlBQUE7RUFDQSxTQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7QUdaWjs7QUhjWTtFQUNJLHFCQUFBO0FHWmhCOztBSGNZO0VBQ0ksaUNBQUE7QUdaaEI7O0FIZ0JRO0VBQ0ksa0JBQUE7RUFDQSxVQUFBO0VBQ0EsZUFBQTtBR2RaOztBSGdCWTs7RUFFSSx5QkFBQTtVQUFBLDhCQUFBO0FHZGhCOztBSGVnQjs7RUFDSSxrQkFBQTtBR1pwQjs7QUhnQlk7RUFDSSxnQkFBQTtFQUNBLG1CQUFBO0FHZGhCOztBQ3BJQTtFQUNJLGVKRE87QUd3SVg7O0FDcElBO0VBQ0ksV0FBQTtBRHVJSjs7QUNwSUE7RUFDSSxVQUFBO0VBQ0EsU0FBQTtFQUNBLG9CQUFBO0FEdUlKOztBQ3BJQTtFQUNJLDJCQUFBO0FEdUlKOztBQ3BJQTtFQUNJLFlBQUE7RUFDQSxjRkdTO0VFRlQsa0JBQUE7QUR1SUo7O0FDcklJO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTtBRHVJUjs7QUNwSUk7RUFDSSxrQkFBQTtBRHNJUjs7QUNuSUk7RUFDSSxtQkFBQTtBRHFJUjs7QUNqSUE7RUFDSSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtBRG9JSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctcmVhZGluZ3MvbW9uaXRvcmluZy1hZGQtcmVhZGluZy9tb25pdG9yaW5nLWFkZC1yZWFkaW5nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vc3R5bGVzL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9taXhpbnMuc2Nzcyc7XG5cbiRmb250U2l6ZTogMTNweDtcbiRiYWNrZ3JvdW5kR3JleTogI2Y1ZjVmNTtcbiRib3JkZXJSYWRpdXM6IDVweDtcblxuLmljb24ge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMS41cmVtLCAxLjVyZW0sICR0ZXh0LWNvbG9yKTtcbn1cblxuLmRpc2NyZWV0LWJ1dHRvbiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cbiAgICAuaWNvbiB7XG4gICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgIH1cbn1cblxuLmZsZXgtZ3Jvdy0xIHtcbiAgICBmbGV4LWdyb3c6IDE7XG59XG5cbi5wZXJpb2RzLWJsb2Mge1xuICAgICRzcGFjaW5nOiAyZW07XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAubGlzdC1wZXJpb2RzIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubm90aWYge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAtKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIHJpZ2h0OiAtKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhZG1pbjtcbiAgICAgICAgICAgIHdpZHRoOiAkc3BhY2luZztcbiAgICAgICAgICAgIGhlaWdodDogJHNwYWNpbmc7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IGNhbGMoMWVtIC0gNHB4KTtcbiAgICAgICAgICAgIGJvcmRlcjogc29saWQgMXB4O1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMC4xICogJHNwYWNpbmc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNlbGVjdC1wZXJpb2RzIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmc7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kR3JleTtcblxuICAgICAgICAuZGF0ZXMtYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWZsb3c6IHJvdy1yZXZlcnNlO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbjogKDAuMjUgKiAkc3BhY2luZykgKDAuNSAqICRzcGFjaW5nKTtcbiAgICAgICAgICAgIGhlaWdodDogMmVtO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgICYudGV4dC1ub3BlcmlvZCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5xdWljay1tb2RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5xdWljay1tb2RhbCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBtYXJnaW46ICgwLjUgKiAkc3BhY2luZykgMDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Y4ZjhmODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm94LXNoYWRvdzogcmdiYSg5OSwgOTksIDk5LCAwLjIpIDBweCAycHggOHB4IDBweDtcbiAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xuICAgICAgICBmb250LXNpemU6IGNhbGMoMWVtIC0gMnB4KTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuXG4gICAgICAgICYubGlzdC1wZXJpb2RzLW1vZGFsIGRpdiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjUgKiAkc3BhY2luZztcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMzB2aDtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDZweCAjMDAwMDAwMjk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnNlbGVjdC1wZXJpb2QtbW9kYWwge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIuMmVtO1xuICAgICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMzVlbTtcblxuICAgICAgICAgICAgLmZvcm0tZ3JvdXAsXG4gICAgICAgICAgICAuZm9ybS1pbmxpbmUge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmZhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuNWVtO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiIsIi5pY29uIHtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIHdpZHRoOiAxLjVyZW07XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3MTg4O1xufVxuXG4uZGlzY3JlZXQtYnV0dG9uIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG4uZGlzY3JlZXQtYnV0dG9uOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5kaXNjcmVldC1idXR0b24gLmljb24ge1xuICBoZWlnaHQ6IDJlbTtcbiAgd2lkdGg6IDJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbn1cblxuLmZsZXgtZ3Jvdy0xIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4ucGVyaW9kcy1ibG9jIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyBpIHtcbiAgcGFkZGluZzogMDtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyBpOjpiZWZvcmUge1xuICBmb250LXNpemU6IDEuNWVtO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIC5ub3RpZiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMWVtO1xuICByaWdodDogLTFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgd2lkdGg6IDJlbTtcbiAgaGVpZ2h0OiAyZW07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IGNhbGMoMWVtIC0gNHB4KTtcbiAgYm9yZGVyOiBzb2xpZCAxcHg7XG4gIGJvcmRlci1jb2xvcjogd2hpdGU7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgLm5vdGlmIHNwYW4ge1xuICBjb2xvcjogd2hpdGU7XG4gIHRvcDogMC4yZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIHtcbiAgZmxleC1ncm93OiAxO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDAgMmVtO1xuICBmb250LXdlaWdodDogaW5pdGlhbDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogMC41ZW0gMWVtO1xuICBoZWlnaHQ6IDJlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5kYXRlcy1iYXIgc3BhbiB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnBlcmlvZHMtYmxvYyAuc2VsZWN0LXBlcmlvZHMgLmRhdGVzLWJhciBzcGFuLnRleHQtbm9wZXJpb2Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5xdWljay1tb2RhbCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAxZW0gMDtcbiAgei1pbmRleDogMTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y4ZjhmODtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogcmdiYSg5OSwgOTksIDk5LCAwLjIpIDBweCAycHggOHB4IDBweDtcbiAgY3Vyc29yOiBpbml0aWFsO1xuICBmb250LXNpemU6IGNhbGMoMWVtIC0gMnB4KTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwubGlzdC1wZXJpb2RzLW1vZGFsIGRpdiB7XG4gIHBhZGRpbmc6IDFlbTtcbiAgbWFyZ2luOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIG1heC1oZWlnaHQ6IDMwdmg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXY6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaWdodGdyZXk7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5saXN0LXBlcmlvZHMtbW9kYWwgZGl2LmFjdGl2ZSB7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggNnB4ICMwMDAwMDAyOTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwge1xuICBtYXJnaW4tbGVmdDogMi4yZW07XG4gIHdpZHRoOiA2MCU7XG4gIG1pbi13aWR0aDogMzVlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0tZ3JvdXAsXG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWlubGluZSB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0tZ3JvdXAgLmZvcm0tY29udHJvbCxcbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLnNlbGVjdC1wZXJpb2QtbW9kYWwgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mYSB7XG4gIGZvbnQtc2l6ZTogMi41ZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5jb250YWluZXIge1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5rZWVwLWhlaWdodCB7XG4gIGhlaWdodDogMmVtO1xufVxuXG4uZGlzY3JlZXQtYnV0dG9uIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cblxuLmluZGV4LXJlYWRpbmdzID4gOm50aC1sYXN0LWNoaWxkKDJuKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAwNztcbn1cblxuLmluZGV4LXJlYWRpbmcge1xuICBwYWRkaW5nOiAxZW07XG4gIGNvbG9yOiAjNjA3MTg4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG4uaW5kZXgtcmVhZGluZyAuZmEge1xuICBmb250LXNpemU6IDEuNWVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cbi5pbmRleC1yZWFkaW5nIC5hY3Rpb25fYnV0dG9ucyB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5pbmRleC1yZWFkaW5nOmhvdmVyIC5hY3Rpb25fYnV0dG9ucyB7XG4gIHZpc2liaWxpdHk6IGluaXRpYWw7XG59XG5cbi5mb3JtLWNvbnRyb2wge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBoZWlnaHQ6IDNlbSAhaW1wb3J0YW50O1xufSIsIkBpbXBvcnQgJy4uLy4uL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzJztcbkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5jb250YWluZXIge1xuICAgIGZvbnQtc2l6ZTogJGZvbnRTaXplO1xufVxuXG4ua2VlcC1oZWlnaHQge1xuICAgIGhlaWdodDogMmVtO1xufVxuXG4uZGlzY3JlZXQtYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cblxuLmluZGV4LXJlYWRpbmdzID4gOm50aC1sYXN0LWNoaWxkKDJuKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDA3O1xufVxuXG4uaW5kZXgtcmVhZGluZyB7XG4gICAgcGFkZGluZzogMWVtO1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG5cbiAgICAuZmEge1xuICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAuYWN0aW9uX2J1dHRvbnMge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgJjpob3ZlciAuYWN0aW9uX2J1dHRvbnMge1xuICAgICAgICB2aXNpYmlsaXR5OiBpbml0aWFsO1xuICAgIH1cbn1cblxuLmZvcm0tY29udHJvbCB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGhlaWdodDogM2VtICFpbXBvcnRhbnQ7XG59XG4iXX0= */\"","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport { HeatingPeriod, VolumeUnits } from '../../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../../operating-monitoring.service';\nimport {\n IndexReadingUpdate,\n MeasuringPointUpdate,\n MonitoringUpdate,\n} from '../../operating-monitoring.update.interface';\nimport { OperatingReadingsService } from '../monitoring-readings.service';\n\n@Component({\n selector: 'ga-monitoring-add-reading',\n templateUrl: './monitoring-add-reading.component.html',\n styleUrls: ['./monitoring-add-reading.component.scss'],\n})\nexport class MonitoringAddReadingComponent implements OnInit, OnDestroy {\n /** Subscription */\n private subscription: Subscription;\n\n /** The monitoring actually selected */\n public monitoring: MonitoringUpdate;\n /** Copy of the original value of the currently edited reading */\n public originalReading: IndexReadingUpdate = null;\n /** The measuring point on which we should filter */\n public selectedMeasuringPoint = '';\n /** The period selected to filter index readings */\n public selectedPeriod: HeatingPeriod;\n /** Show the listPeriods quick modal */\n public displayListPeriods = false;\n\n get filteredIndexReadings(): IndexReadingUpdate[] {\n if (!this.monitoring) {\n return [];\n }\n return (\n this.monitoring.indexReadings\n .filter(i => {\n // Format date to be usable by the input\n i.date = i.date ? i.date.slice(0, 10) : null;\n\n // If new index reading, always keep him\n if (!i._id) {\n return true;\n }\n // Filter on selected measuring point if set\n if (this.selectedMeasuringPoint && i.measuringPointId !== this.selectedMeasuringPoint) {\n return false;\n }\n // Filter on selected period if set\n if (this.selectedPeriod && !this.dateIsInPeriod(i.date, this.selectedPeriod)) {\n return false;\n }\n\n return true;\n })\n // Sort by date, keep new index first\n .sort((a, b) => (b._id ? b.date.localeCompare(a.date) : 1))\n );\n }\n\n /** Get the start of first period to end of last one */\n get globalDates(): { periodStart: string; periodEnd?: string } {\n const sorted = this.monitoring.periods\n .concat()\n .sort((a: HeatingPeriod, b: HeatingPeriod) => a.periodStart.localeCompare(b.periodStart));\n return {\n periodStart: sorted[0].periodStart,\n periodEnd: sorted[sorted.length - 1].periodEnd,\n };\n }\n\n constructor(\n private translateService: TranslateService,\n private operatingMonitoringService: OperatingMonitoringService,\n private operatingReadingService: OperatingReadingsService\n ) {}\n\n ngOnInit(): void {\n this.subscription = this.operatingMonitoringService.selectedMonitoring$.subscribe({\n next: value => (this.monitoring = value),\n });\n\n this.subscription.add(\n this.operatingMonitoringService.selectedPeriod$.subscribe({\n next: period => (this.selectedPeriod = period),\n })\n );\n }\n\n ngOnDestroy(): void {\n // ngOnDestroy is triggered if the user leaves the modal or switch tab\n this.subscription.unsubscribe();\n if (this.originalReading) {\n this.cancelEdit();\n }\n }\n\n /**\n * Returns true if given index reading is currently being edited\n */\n public isEditingIndexReading(indexReading: IndexReadingUpdate): boolean {\n return this.originalReading && this.originalReading._id === indexReading._id;\n }\n\n /**\n * Set given index reading as currently edited\n */\n public startEditingIndexReading(indexReading: IndexReadingUpdate): void {\n if (indexReading !== null) {\n this.originalReading = { ...indexReading };\n } else {\n this.originalReading = { date: null, measuringPointId: null, volume: null };\n this.monitoring.indexReadings.unshift({ ...this.originalReading });\n }\n }\n\n public cancelEdit() {\n if (!this.originalReading._id) {\n const itemIndex = this.monitoring.indexReadings.findIndex(reading => !reading._id);\n this.monitoring.indexReadings.splice(itemIndex, 1);\n } else {\n this.monitoring.indexReadings = this.monitoring.indexReadings.map(reading =>\n reading._id === this.originalReading._id ? this.originalReading : reading\n );\n }\n this.originalReading = null;\n }\n\n /**\n * Update currently edited index reading\n */\n public updateIndexReading(indexReading: IndexReadingUpdate): void {\n if (indexReading && this.getErrors(indexReading).length) {\n return;\n }\n\n // Partial update\n this.operatingMonitoringService.updateMonitoring({\n _id: this.monitoring._id,\n indexReadings: this.monitoring.indexReadings.map(reading => {\n // Put back date to ISO string\n reading.date = new Date(reading.date).toISOString();\n return reading;\n }),\n });\n\n this.originalReading = null;\n }\n\n public getVolumeUnitDisplayKey(measuringPointId: string): string {\n const measuringPoint: MeasuringPointUpdate = this.monitoring.measuringPoints.find(\n m => m._id === measuringPointId\n );\n\n if (!measuringPoint) {\n return '';\n }\n\n switch (measuringPoint.volumeUnit) {\n case VolumeUnits.L:\n return 'liters_long';\n case VolumeUnits.M3:\n return 'm3';\n default:\n return '';\n }\n }\n\n public setSelectedPeriod(period: HeatingPeriod) {\n this.selectedPeriod = period;\n this.displayListPeriods = false;\n }\n\n /**\n * Validate inputs of given reading or create error object otherwise\n */\n public getErrors(indexReading: IndexReadingUpdate): string[] {\n return this.operatingReadingService.validateReading(indexReading);\n }\n\n public async deleteIndexReading(indexReading: IndexReadingUpdate) {\n const confirm = await Swal.fire({\n title: this.translateService._('monitoring_delete_index_title'),\n text: this.translateService._('monitoring_delete_index_message'),\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: this.translateService._('yes_delete'),\n cancelButtonText: this.translateService._('cancel'),\n });\n\n if (confirm.value) {\n this.monitoring.indexReadings = this.monitoring.indexReadings.filter(\n reading => reading._id !== indexReading._id\n );\n this.updateIndexReading(null);\n }\n }\n\n private dateIsInPeriod(date: string, period: HeatingPeriod) {\n if (date < period.periodStart) {\n return false;\n }\n if (period.periodEnd && date > period.periodEnd) {\n return false;\n }\n\n return true;\n }\n}\n","export default \".monitoring_edit_readings_title {\\n border-bottom: 1px solid lightgray;\\n padding: 1rem 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctcmVhZGluZ3MvbW9uaXRvcmluZy1yZWFkaW5ncy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3BlcmF0aW5nLW1vbml0b3JpbmcvbW9uaXRvcmluZy1yZWFkaW5ncy9tb25pdG9yaW5nLXJlYWRpbmdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksa0NBQUE7RUFDQSxlQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLXJlYWRpbmdzL21vbml0b3JpbmctcmVhZGluZ3MuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubW9uaXRvcmluZ19lZGl0X3JlYWRpbmdzX3RpdGxlIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRncmF5O1xuICAgIHBhZGRpbmc6IDFyZW0gMDtcbn1cbiIsIi5tb25pdG9yaW5nX2VkaXRfcmVhZGluZ3NfdGl0bGUge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRncmF5O1xuICBwYWRkaW5nOiAxcmVtIDA7XG59Il19 */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ReadingsTab } from './monitoring-readings.interface';\nimport { OperatingReadingsService } from './monitoring-readings.service';\n\n@Component({\n selector: 'ga-monitoring-readings',\n templateUrl: './monitoring-readings.component.html',\n styleUrls: ['../../../styles/navigation.scss', './monitoring-readings.component.scss'],\n providers: [OperatingReadingsService],\n})\nexport class MonitoringReadingsComponent implements OnInit, OnDestroy {\n /** Tabs list */\n public tabs: ReadingsTab[] = [\n {\n key: 'measuringPoints',\n displayKey: 'monitoring_measuring_points',\n },\n {\n key: 'indexReadings',\n displayKey: 'monitoring_reading',\n },\n ];\n /** Selected tab */\n public selectedTab: ReadingsTab = null;\n\n ngOnInit(): void {\n this.selectedTab = this.tabs[0];\n }\n ngOnDestroy(): void {}\n\n isTabActive(key: string): boolean {\n return this.selectedTab.key === key;\n }\n\n getTabClasses(key: string): string[] {\n if (this.isTabActive(key)) {\n return ['citron-border-bottom', 'citron-color', 'tab-active'];\n }\n return [];\n }\n\n get hasMultipleTabsAllowed(): boolean {\n return this.tabs.filter(x => !x.hidden).length > 1;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport * as moment from 'moment';\n\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\n\nimport { IndexReading } from '../operating-monitoring.interface';\nimport { IndexReadingUpdate } from '../operating-monitoring.update.interface';\n\n@Injectable()\nexport class OperatingReadingsService {\n monitoringReadings: IndexReading[];\n\n private readonly dateFormat = 'DD/MM/YYYY';\n\n constructor(private operatingMonitoringService: OperatingMonitoringService) {\n // Fetch readings of the selected monitoring\n this.operatingMonitoringService.selectedMonitoring$.subscribe(\n monitoring => (this.monitoringReadings = monitoring.indexReadings)\n );\n }\n\n /**\n * Validate if index reading inputs are valid\n * @returns List containing error messages (list is empty if all inputs are valid)\n */\n public validateReading(reading: IndexReadingUpdate): string[] {\n const messages: string[] = [];\n\n if (reading.date === null || reading.measuringPointId === null || reading.volume === null) {\n messages.push(\"Veuillez remplir l'ensemble des champs du relevé d'index.\");\n }\n\n // Only apply this validation part if reading has a measuring point\n if (reading.measuringPointId && reading.date) {\n const readings = this.getFilteredReadings(this.monitoringReadings.concat(), reading.measuringPointId);\n\n const readingWithSameDate = readings.find(\n filteredReading =>\n moment.utc(filteredReading.date).isSame(moment.utc(reading.date), 'day') &&\n ((!reading._id && filteredReading._id) || reading._id !== filteredReading._id)\n );\n\n if (readingWithSameDate) {\n const dateString = moment.utc(readingWithSameDate.date).format(this.dateFormat);\n messages.push(`Un relevé existe déjà à la date ${dateString}.`);\n return messages;\n }\n\n const { previousReading, nextReading } = this.fetchAdjacentReadings(reading, readings);\n\n // Validate reading new inputs\n if (previousReading && nextReading) {\n // Check if new volume is in between previous and next volume\n if (reading.volume < previousReading.volume || reading.volume > nextReading.volume) {\n messages.push(\n `Le volume doit être compris entre ${previousReading.volume} et ${nextReading.volume}.`\n );\n }\n } else if (previousReading) {\n // Check if new volume is superior to previous volume\n if (reading.volume < previousReading.volume) {\n messages.push(`Le volume doit être supérieur ou égal à ${previousReading.volume}`);\n }\n } else if (nextReading) {\n // Check if new volume is inferior to previous volume\n if (reading.volume > nextReading.volume) {\n messages.push(`Le volume doit être inférieur ou égal à ${nextReading.volume}`);\n }\n } else {\n // We have to check if volume is not inferior to 0\n if (reading.volume < 0) {\n messages.push('Le volume doit être supérieur à 0');\n }\n }\n }\n\n return messages;\n }\n\n /**\n * Filter readings on given measure point and sort by descending date\n * @returns Filtered and sorted list\n */\n private getFilteredReadings(readings: IndexReading[], measuringPointId: string): IndexReading[] {\n return readings\n .concat()\n .filter(indexReading => indexReading.measuringPointId === measuringPointId)\n .sort((a, b) => b.date.localeCompare(a.date));\n }\n\n /**\n * Find adjacent readings of given reading in filtered list of readings\n * @returns Previous reading or null if not found\n */\n private fetchAdjacentReadings(\n reading: IndexReadingUpdate,\n filteredReadings: IndexReading[]\n ): { nextReading: IndexReading; previousReading: IndexReading } {\n const adjacentReadings: {\n previousReading: IndexReading;\n nextReading: IndexReading;\n } = {\n previousReading: null,\n nextReading: null,\n };\n\n const indexOfReading = filteredReadings.findIndex(r => r._id === reading._id);\n\n if (filteredReadings[indexOfReading + 1]) {\n adjacentReadings.previousReading = filteredReadings[indexOfReading + 1];\n }\n if (filteredReadings[indexOfReading - 1]) {\n adjacentReadings.nextReading = filteredReadings[indexOfReading - 1];\n }\n\n return adjacentReadings;\n }\n}\n","export default \".icon {\\n height: 1.5rem;\\n width: 1.5rem;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #607188;\\n}\\n\\n.discreet-button {\\n padding: 0;\\n margin: 0;\\n background: none;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n text-transform: none;\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n.discreet-button:focus {\\n box-shadow: none;\\n}\\n\\n.discreet-button .icon {\\n height: 2em;\\n width: 2em;\\n margin-right: 0.5em;\\n}\\n\\n.flex-grow-1 {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n}\\n\\n.periods-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.periods-bloc .list-periods {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.periods-bloc .list-periods i {\\n padding: 0;\\n}\\n\\n.periods-bloc .list-periods i::before {\\n font-size: 1.5em;\\n}\\n\\n.periods-bloc .list-periods .notif {\\n position: absolute;\\n top: -1em;\\n right: -1em;\\n background-color: #db4b47;\\n width: 2em;\\n height: 2em;\\n border-radius: 50%;\\n color: white;\\n font-size: calc(1em - 4px);\\n border: solid 1px;\\n border-color: white;\\n}\\n\\n.periods-bloc .list-periods .notif span {\\n color: white;\\n top: 0.2em;\\n position: relative;\\n}\\n\\n.periods-bloc .select-periods {\\n -webkit-box-flex: 1;\\n flex-grow: 1;\\n padding: 0;\\n margin: 0 2em;\\n font-weight: initial;\\n font-size: inherit;\\n background-color: #f5f5f5;\\n}\\n\\n.periods-bloc .select-periods .dates-bar {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n flex-flow: row-reverse;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 0.5em 1em;\\n height: 2em;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span {\\n width: 100%;\\n}\\n\\n.periods-bloc .select-periods .dates-bar span.text-noperiod {\\n text-transform: none;\\n}\\n\\n.periods-bloc .select-periods .quick-modal {\\n width: 100%;\\n}\\n\\n.periods-bloc .quick-modal {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n margin: 1em 0;\\n z-index: 1;\\n border: 1px solid #f8f8f8;\\n border-radius: 5px;\\n background: white;\\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\\n cursor: initial;\\n font-size: calc(1em - 2px);\\n text-transform: none;\\n font-weight: initial;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div {\\n padding: 1em;\\n margin: 0;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n border-radius: 0;\\n max-height: 30vh;\\n overflow-y: auto;\\n cursor: pointer;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div:hover {\\n background: lightgrey;\\n}\\n\\n.periods-bloc .quick-modal.list-periods-modal div.active {\\n box-shadow: 0px 3px 6px #00000029;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal {\\n margin-left: 2.2em;\\n width: 60%;\\n min-width: 35em;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group,\\n.periods-bloc .quick-modal.select-period-modal .form-inline {\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .form-group .form-control,\\n.periods-bloc .quick-modal.select-period-modal .form-inline .form-control {\\n font-size: inherit;\\n}\\n\\n.periods-bloc .quick-modal.select-period-modal .fa {\\n font-size: 2.5em;\\n font-weight: normal;\\n}\\n\\n.keyfigures__row {\\n padding-right: 15px;\\n padding-left: 15px;\\n}\\n\\n.keyfigures__row .keyfigure__col {\\n padding-right: 15px;\\n min-width: 30%;\\n}\\n\\n@media (max-width: 1700px) {\\n .keyfigures__row .keyfigure__col {\\n min-width: 50%;\\n }\\n}\\n\\n.keyfigures__row .keyfigure__bloc {\\n background-color: #f5f5f5;\\n border-radius: 5px;\\n padding: 15px;\\n}\\n\\n.keyfigures__row .keyfigure__title {\\n font-size: 15px;\\n}\\n\\n.keyfigures__row .keyfigure__tile {\\n background-color: white;\\n border-radius: 5px;\\n padding: 5px 11px;\\n}\\n\\n.keyfigures__row .keyfigure__tile .keyfigure__value {\\n font-size: inherit;\\n font-weight: bold;\\n}\\n\\n.keyfigures__row .keyfigure__emphase {\\n font-weight: bold;\\n font-size: 15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL29wZXJhdGluZy1tb25pdG9yaW5nLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL29wZXJhdGluZy1tb25pdG9yaW5nL21vbml0b3JpbmctcmVzdW1lL21vbml0b3JpbmctcmVzdW1lLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3BlcmF0aW5nLW1vbml0b3JpbmcvbW9uaXRvcmluZy1yZXN1bWUvbW9uaXRvcmluZy1yZXN1bWUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7RUNOSSxjRE9pQjtFQ05qQixhRE15QjtFQ0x6Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx5QkNrQks7QUNuQmI7O0FISUE7RUFDSSxVQUFBO0VBQ0EsU0FBQTtFQUNBLGdCQUFBO0VBQ0EsMkJBQUE7RUFBQSxvQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0Esb0JBQUE7QUdESjs7QUhHSTtFQUNJLGdCQUFBO0FHRFI7O0FIR0k7RUFDSSxXQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0FHRFI7O0FIS0E7RUFDSSxtQkFBQTtVQUFBLFlBQUE7QUdGSjs7QUhLQTtFQUdJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7QUdKSjs7QUhNSTtFQUNJLFVBQUE7RUFDQSxTQUFBO0FHSlI7O0FIS1E7RUFDSSxVQUFBO0FHSFo7O0FISVk7RUFDSSxnQkFBQTtBR0ZoQjs7QUhNUTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSx5QkU5Qko7RUYrQkksVUFwQkU7RUFxQkYsV0FyQkU7RUFzQkYsa0JBQUE7RUFDQSxZQUFBO0VBQ0EsMEJBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FHSlo7O0FITVk7RUFDSSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0FHSmhCOztBSFNJO0VBQ0ksbUJBQUE7VUFBQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBMUVTO0FHbUVqQjs7QUhTUTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDhCQUFBO0VBQUEsOEJBQUE7VUFBQSxzQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7QUdQWjs7QUhTWTtFQUNJLFdBQUE7QUdQaEI7O0FIU2dCO0VBQ0ksb0JBQUE7QUdQcEI7O0FIWVE7RUFDSSxXQUFBO0FHVlo7O0FIY0k7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsYUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpREFBQTtFQUNBLGVBQUE7RUFDQSwwQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7QUdaUjs7QUhjUTtFQUNJLFlBQUE7RUFDQSxTQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7QUdaWjs7QUhjWTtFQUNJLHFCQUFBO0FHWmhCOztBSGNZO0VBQ0ksaUNBQUE7QUdaaEI7O0FIZ0JRO0VBQ0ksa0JBQUE7RUFDQSxVQUFBO0VBQ0EsZUFBQTtBR2RaOztBSGdCWTs7RUFFSSx5QkFBQTtVQUFBLDhCQUFBO0FHZGhCOztBSGVnQjs7RUFDSSxrQkFBQTtBR1pwQjs7QUhnQlk7RUFDSSxnQkFBQTtFQUNBLG1CQUFBO0FHZGhCOztBQ3JJQTtFQUNJLG1CQUFBO0VBQ0Esa0JBQUE7QUR3SUo7O0FDdElJO0VBQ0ksbUJBQUE7RUFDQSxjQUFBO0FEd0lSOztBQ3ZJUTtFQUhKO0lBSVEsY0FBQTtFRDBJVjtBQUNGOztBQ3ZJSTtFQUNJLHlCSlhTO0VJWVQsa0JKWE87RUlZUCxhQUFBO0FEeUlSOztBQ3RJSTtFQUNJLGVBQUE7QUR3SVI7O0FDcklJO0VBQ0ksdUJBQUE7RUFDQSxrQkpyQk87RUlzQlAsaUJBQUE7QUR1SVI7O0FDdElRO0VBQ0ksa0JBQUE7RUFDQSxpQkFBQTtBRHdJWjs7QUNwSUk7RUFDSSxpQkFBQTtFQUNBLGVBQUE7QURzSVIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vcGVyYXRpbmctbW9uaXRvcmluZy9tb25pdG9yaW5nLXJlc3VtZS9tb25pdG9yaW5nLXJlc3VtZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MnO1xuXG4kZm9udFNpemU6IDEzcHg7XG4kYmFja2dyb3VuZEdyZXk6ICNmNWY1ZjU7XG4kYm9yZGVyUmFkaXVzOiA1cHg7XG5cbi5pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDEuNXJlbSwgMS41cmVtLCAkdGV4dC1jb2xvcik7XG59XG5cbi5kaXNjcmVldC1idXR0b24ge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG4gICAgLmljb24ge1xuICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbiAgICB9XG59XG5cbi5mbGV4LWdyb3ctMSB7XG4gICAgZmxleC1ncm93OiAxO1xufVxuXG4ucGVyaW9kcy1ibG9jIHtcbiAgICAkc3BhY2luZzogMmVtO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgLmxpc3QtcGVyaW9kcyB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgaSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm5vdGlmIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLSgwLjUgKiAkc3BhY2luZyk7XG4gICAgICAgICAgICByaWdodDogLSgwLjUgKiAkc3BhY2luZyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWRtaW47XG4gICAgICAgICAgICB3aWR0aDogJHNwYWNpbmc7XG4gICAgICAgICAgICBoZWlnaHQ6ICRzcGFjaW5nO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDRweCk7XG4gICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDAuMSAqICRzcGFjaW5nO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWxlY3QtcGVyaW9kcyB7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwICRzcGFjaW5nO1xuICAgICAgICBmb250LXdlaWdodDogaW5pdGlhbDtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZEdyZXk7XG5cbiAgICAgICAgLmRhdGVzLWJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1mbG93OiByb3ctcmV2ZXJzZTtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXJnaW46ICgwLjI1ICogJHNwYWNpbmcpICgwLjUgKiAkc3BhY2luZyk7XG4gICAgICAgICAgICBoZWlnaHQ6IDJlbTtcblxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAmLnRleHQtbm9wZXJpb2Qge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucXVpY2stbW9kYWwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucXVpY2stbW9kYWwge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luOiAoMC41ICogJHNwYWNpbmcpIDA7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmOGY4Zjg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGJveC1zaGFkb3c6IHJnYmEoOTksIDk5LCA5OSwgMC4yKSAwcHggMnB4IDhweCAwcHg7XG4gICAgICAgIGN1cnNvcjogaW5pdGlhbDtcbiAgICAgICAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDJweCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogaW5pdGlhbDtcblxuICAgICAgICAmLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXYge1xuICAgICAgICAgICAgcGFkZGluZzogMC41ICogJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDMwdmg7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaWdodGdyZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCA2cHggIzAwMDAwMDI5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5zZWxlY3QtcGVyaW9kLW1vZGFsIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyLjJlbTtcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDM1ZW07XG5cbiAgICAgICAgICAgIC5mb3JtLWdyb3VwLFxuICAgICAgICAgICAgLmZvcm0taW5saW5lIHtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5mYSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjVlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCIuaWNvbiB7XG4gIGhlaWdodDogMS41cmVtO1xuICB3aWR0aDogMS41cmVtO1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwNzE4ODtcbn1cblxuLmRpc2NyZWV0LWJ1dHRvbiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuLmRpc2NyZWV0LWJ1dHRvbjpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4uZGlzY3JlZXQtYnV0dG9uIC5pY29uIHtcbiAgaGVpZ2h0OiAyZW07XG4gIHdpZHRoOiAyZW07XG4gIG1hcmdpbi1yaWdodDogMC41ZW07XG59XG5cbi5mbGV4LWdyb3ctMSB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLnBlcmlvZHMtYmxvYyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgaSB7XG4gIHBhZGRpbmc6IDA7XG59XG4ucGVyaW9kcy1ibG9jIC5saXN0LXBlcmlvZHMgaTo6YmVmb3JlIHtcbiAgZm9udC1zaXplOiAxLjVlbTtcbn1cbi5wZXJpb2RzLWJsb2MgLmxpc3QtcGVyaW9kcyAubm90aWYge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTFlbTtcbiAgcmlnaHQ6IC0xZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG4gIHdpZHRoOiAyZW07XG4gIGhlaWdodDogMmVtO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDRweCk7XG4gIGJvcmRlcjogc29saWQgMXB4O1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xufVxuLnBlcmlvZHMtYmxvYyAubGlzdC1wZXJpb2RzIC5ub3RpZiBzcGFuIHtcbiAgY29sb3I6IHdoaXRlO1xuICB0b3A6IDAuMmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwIDJlbTtcbiAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5kYXRlcy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdy1yZXZlcnNlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDAuNWVtIDFlbTtcbiAgaGVpZ2h0OiAyZW07XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAuZGF0ZXMtYmFyIHNwYW4ge1xuICB3aWR0aDogMTAwJTtcbn1cbi5wZXJpb2RzLWJsb2MgLnNlbGVjdC1wZXJpb2RzIC5kYXRlcy1iYXIgc3Bhbi50ZXh0LW5vcGVyaW9kIHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG4ucGVyaW9kcy1ibG9jIC5zZWxlY3QtcGVyaW9kcyAucXVpY2stbW9kYWwge1xuICB3aWR0aDogMTAwJTtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMWVtIDA7XG4gIHotaW5kZXg6IDE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmOGY4Zjg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJveC1zaGFkb3c6IHJnYmEoOTksIDk5LCA5OSwgMC4yKSAwcHggMnB4IDhweCAwcHg7XG4gIGN1cnNvcjogaW5pdGlhbDtcbiAgZm9udC1zaXplOiBjYWxjKDFlbSAtIDJweCk7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBmb250LXdlaWdodDogaW5pdGlhbDtcbn1cbi5wZXJpb2RzLWJsb2MgLnF1aWNrLW1vZGFsLmxpc3QtcGVyaW9kcy1tb2RhbCBkaXYge1xuICBwYWRkaW5nOiAxZW07XG4gIG1hcmdpbjogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBtYXgtaGVpZ2h0OiAzMHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5saXN0LXBlcmlvZHMtbW9kYWwgZGl2OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGlnaHRncmV5O1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwubGlzdC1wZXJpb2RzLW1vZGFsIGRpdi5hY3RpdmUge1xuICBib3gtc2hhZG93OiAwcHggM3B4IDZweCAjMDAwMDAwMjk7XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIHtcbiAgbWFyZ2luLWxlZnQ6IDIuMmVtO1xuICB3aWR0aDogNjAlO1xuICBtaW4td2lkdGg6IDM1ZW07XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWdyb3VwLFxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZm9ybS1pbmxpbmUge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWdyb3VwIC5mb3JtLWNvbnRyb2wsXG4ucGVyaW9kcy1ibG9jIC5xdWljay1tb2RhbC5zZWxlY3QtcGVyaW9kLW1vZGFsIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuLnBlcmlvZHMtYmxvYyAucXVpY2stbW9kYWwuc2VsZWN0LXBlcmlvZC1tb2RhbCAuZmEge1xuICBmb250LXNpemU6IDIuNWVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4ua2V5ZmlndXJlc19fcm93IHtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xufVxuLmtleWZpZ3VyZXNfX3JvdyAua2V5ZmlndXJlX19jb2wge1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBtaW4td2lkdGg6IDMwJTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiAxNzAwcHgpIHtcbiAgLmtleWZpZ3VyZXNfX3JvdyAua2V5ZmlndXJlX19jb2wge1xuICAgIG1pbi13aWR0aDogNTAlO1xuICB9XG59XG4ua2V5ZmlndXJlc19fcm93IC5rZXlmaWd1cmVfX2Jsb2Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHBhZGRpbmc6IDE1cHg7XG59XG4ua2V5ZmlndXJlc19fcm93IC5rZXlmaWd1cmVfX3RpdGxlIHtcbiAgZm9udC1zaXplOiAxNXB4O1xufVxuLmtleWZpZ3VyZXNfX3JvdyAua2V5ZmlndXJlX190aWxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcGFkZGluZzogNXB4IDExcHg7XG59XG4ua2V5ZmlndXJlc19fcm93IC5rZXlmaWd1cmVfX3RpbGUgLmtleWZpZ3VyZV9fdmFsdWUge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmtleWZpZ3VyZXNfX3JvdyAua2V5ZmlndXJlX19lbXBoYXNlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTVweDtcbn0iLCJAaW1wb3J0ICcuLi9vcGVyYXRpbmctbW9uaXRvcmluZy5jb21wb25lbnQuc2Nzcyc7XG5cbi5rZXlmaWd1cmVzX19yb3cge1xuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuXG4gICAgLmtleWZpZ3VyZV9fY29sIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgICAgbWluLXdpZHRoOiAzMCU7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxNzAwcHgpIHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogNTAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmtleWZpZ3VyZV9fYmxvYyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kR3JleTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGJvcmRlclJhZGl1cztcbiAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICB9XG5cbiAgICAua2V5ZmlndXJlX190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnRTaXplICsgMjtcbiAgICB9XG5cbiAgICAua2V5ZmlndXJlX190aWxlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG4gICAgICAgIHBhZGRpbmc6IDVweCAxMXB4O1xuICAgICAgICAua2V5ZmlndXJlX192YWx1ZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5rZXlmaWd1cmVfX2VtcGhhc2Uge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udFNpemUgKyAyO1xuICAgIH1cbn1cbiJdfQ== */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\nimport { SeasonKeyfigures } from '../operating-monitoring.interface';\nimport { OperatingMonitoringService } from '../operating-monitoring.service';\n\n@Component({\n selector: 'ga-monitoring-resume',\n templateUrl: './monitoring-resume.component.html',\n styleUrls: ['./monitoring-resume.component.scss'],\n})\nexport class MonitoringResumeComponent implements OnInit, OnDestroy {\n /** Subscription */\n private subscription: Subscription;\n\n /** Seasons keyfigures */\n public keyfigures: SeasonKeyfigures[] = [];\n\n constructor(\n private colorService: ColorService,\n private operatingMonitoringService: OperatingMonitoringService,\n private utilsService: UtilsService\n ) {}\n\n ngOnInit() {\n this.subscription = this.operatingMonitoringService.seasonsKeyfigures$.subscribe({\n next: values => {\n this.keyfigures = values;\n },\n });\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public getSeasonDate(date: string): string {\n const year = new Date(date).getUTCFullYear();\n return `${year} - ${year + 1}`;\n }\n\n public formatDevation(value: number): string {\n return this.utilsService.getNumberPretty(value, '%', { defaultNotFinite: '-' });\n }\n\n public formatProfit(value: number): string {\n return this.utilsService.getNumberPretty(value, '€', { defaultNotFinite: '-' });\n }\n\n public formatConsumption(value: number): string {\n return this.utilsService.getNumberPretty(value, 'kWh', { defaultNotFinite: '-' });\n }\n\n public getColor(key: string): string {\n return this.colorService.getRgbColor(key);\n }\n\n public getKeyFigureColor(keyfigure: SeasonKeyfigures) {\n if (keyfigure.deviation < 0) {\n return this.colorService.getRgbColor('monitoring_deviation_negative');\n }\n return this.colorService.getRgbColor('monitoring_deviation_positive');\n }\n\n public getEfficientPeriodsText(count) {\n if (!count || count < 2) {\n return 'monitoring_efficient_period';\n }\n return 'monitoring_efficient_periods';\n }\n\n public getDriftingPeriodsText(count) {\n if (!count || count < 2) {\n return 'monitoring_drifting_period';\n }\n return 'monitoring_drifting_periods';\n }\n}\n","/**\n * Monitoring interface used to retrieve a monitoring from back\n */\nexport interface Monitoring {\n _id: string;\n companyId: string;\n monitoringType: Types;\n status: Status;\n name: string;\n scope: Scope;\n modulatorBase: number;\n valueCommitted: number;\n valuePerModulatorBase: number;\n contractStart: Date;\n contractEnd: Date;\n deltaTolerancePercentage: number;\n profitSharingPercentage: number;\n penaltiesPercentage: number;\n dataSourceType: DataSource;\n includedCosts: string[];\n uses: Uses[];\n periods: HeatingPeriod[];\n monthlyAggregated: MonthlyAggregated[];\n indexReadings: IndexReading[];\n measuringPoints: MeasuringPoint[];\n djuType: DjuType;\n site: {\n _id: string;\n name: string;\n complement: string;\n };\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Scope {\n rRefId: string;\n}\n\nexport interface Uses {\n use: BRExclusibleUses;\n exclusionType?: ExclusionTypes;\n perfFormula?: {\n gradient: number;\n yIntercept: number;\n };\n q?: {\n highSeason: number;\n lowSeason: number;\n };\n nHousing?: number;\n avgVolume?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface IndexReading {\n _id: string;\n volume: number;\n date: string;\n consumptionDelta?: number;\n measuringPointId: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface MeasuringPoint {\n _id: string;\n name: string;\n description?: string;\n uses: BRExclusibleUses;\n volumeUnit: VolumeUnits;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface MonitoringFilters {\n companies: string[];\n readonly itemsPerPage: number;\n itemsToDisplay: number;\n status?: Status;\n}\n\nexport interface HeatingPeriod {\n _id: string;\n periodStart: string;\n periodEnd: string;\n consumption?: number;\n consumptionHeating?: number;\n costs?: number;\n modulatorReal?: number;\n modulatorRealOnBillsPeriod?: number;\n valueRevalued?: number;\n valueRevaluedOnBillsPeriod?: number;\n consumptionHeatingPerValueRevalued?: number;\n valuePerModulatorBase?: number;\n consumptionHeatingPerModulatorReal?: number;\n deviation?: number;\n profits?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface MonthlyAggregated {\n _id: string;\n monthStart: string;\n monthEnd: string;\n consumption: number;\n consumptionHeating: number;\n costs: number;\n modulatorReal: number;\n modulatorRealOnBillsPeriod: number;\n valueRevalued: number;\n valueRevaluedOnBillsPeriod: number;\n consumptionHeatingPerValueRevalued: number;\n deviation: number;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * The current status of the monitoring:\n * - efficient: lower than expectations\n * - drifting: higher than expectations\n * - idle: not in an active period currently\n */\nexport enum Status {\n EFFICIENT = 'efficient',\n DRIFTING = 'drifting',\n IDLE = 'idle',\n}\n\n/**\n * Type of the monitoring:\n * - boilerRoom: A boiler room for heating\n */\nexport enum Types {\n BOILER_ROOM = 'boilerRoom',\n}\n\nexport enum DataSource {\n BILLING = 'billing',\n}\n\nexport enum ExclusionTypes {\n INDEX_READING = 'indexReading',\n PERF_FORMULA = 'perfFormula',\n HOUSING_THEORETICAL = 'housingTheoretical',\n}\n\nexport enum BRExclusibleUses {\n HEATING = 'heating',\n HOT_WATER = 'hotWater',\n}\n\nexport enum VolumeUnits {\n M3 = 'm3',\n L = 'L',\n}\n\nexport enum DjuType {\n HOT = 'hot',\n COLD = 'cold',\n}\n\n/**\n * Monitoring periods season keyfigures\n */\nexport interface SeasonKeyfigures {\n /** Start date of season at ISO string format */\n startDate: string;\n /** Number of efficient heating periods */\n countEfficient: number;\n /** Number of drifting heating periods */\n countDrifting: number;\n /** Profit of efficient periods */\n profitsEfficient: number;\n /** Profit of drifting periods */\n profitsDrifting: number;\n /** Sum of consumption heating of periods (NC) */\n consumptionHeating: number;\n /** Sum of consumption heating of efficient periods (NC) */\n consumptionHeatingEfficient: number;\n /** Sum of consumption heating of drifting periods (NC) */\n consumptionHeatingDrifting: number;\n /** Sum of values revalued on bills period of periods (N'B) */\n valueRevaluedOnBillsPeriod: number;\n /** Deviation of all periods */\n deviation: number;\n}\n","import { Injectable } from '@angular/core';\nimport * as moment from 'moment';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport Swal from 'sweetalert2';\n\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SpinnerService } from 'app/shared/services/spinner/spinner.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport {\n HeatingPeriod,\n Monitoring,\n MonitoringFilters,\n SeasonKeyfigures,\n Status,\n} from './operating-monitoring.interface';\nimport { HeatingPeriodUpdate, MonitoringUpdate } from './operating-monitoring.update.interface';\n\n@Injectable()\nexport class OperatingMonitoringService extends PageService {\n /**\n * Subject to subscribe to changes of filter\n */\n public filters$: BehaviorSubject = new BehaviorSubject({\n companies: [this.sessionService.getCompanyId()],\n itemsPerPage: 10,\n itemsToDisplay: 10,\n });\n\n /**\n * Subject to subscribe to changes of seasons keyfigures\n */\n public seasonsKeyfigures$: BehaviorSubject = new BehaviorSubject([]);\n\n /**\n * Subject to subscribe to changes of monitorings list\n */\n private monitorings$: BehaviorSubject = new BehaviorSubject([]);\n\n /**\n * Subject to subscribe to changes of monitorings list (only those filtered and displayed in pagination)\n */\n public monitoringsFiltered$: BehaviorSubject = new BehaviorSubject([]);\n\n /**\n * Subject to subscribe to changes of selected monitoring\n */\n public selectedMonitoring$: BehaviorSubject = new BehaviorSubject(null);\n\n /**\n * Subject to subscribe to the monitoring being edited\n */\n public editedMonitoring$: BehaviorSubject = new BehaviorSubject(null);\n\n /**\n * Event to toggle modal to create or update a monitoring.\n * True to open, false to close\n */\n public toggleEditionMonitoringModal$: Subject = new Subject();\n /**\n * Event to toggle modal to edit readings.\n * True to open, false to close\n */\n public toggleEditReadingsModal$: Subject = new Subject();\n\n /**\n * Subject to subscribe to changes of selected period of monitoring\n */\n public selectedPeriod$: BehaviorSubject = new BehaviorSubject(null);\n\n public isLastActionDelete = false;\n\n constructor(\n public apiService: ApiService,\n private sessionService: SessionService,\n private translateService: TranslateService,\n private _spinner: SpinnerService\n ) {\n super(apiService);\n\n this.filters$.subscribe({\n next: () => this.refreshMonitorings(),\n });\n this.monitorings$.subscribe({\n next: value => this.refreshFilteredMonitorings(this.filters$.getValue(), value),\n });\n this.monitoringsFiltered$.subscribe({\n next: value => this.setSelectedMonitoring(value),\n });\n this.selectedMonitoring$.subscribe({\n next: monitoring => {\n if (monitoring) {\n // Populate empty site for new monitoring\n if (!monitoring.site) {\n monitoring.site = {\n _id: null,\n name: null,\n complement: null,\n };\n }\n\n // Select last selected monitoring period or the latest period of the new selected monitoring\n let period = this.getLatestPeriod(monitoring);\n\n const lastSelectedPeriod = this.selectedPeriod$.getValue();\n\n if (lastSelectedPeriod && monitoring.periods && monitoring.periods.length) {\n const periodInMonitoring = monitoring.periods.find(p => p._id === lastSelectedPeriod._id);\n if (periodInMonitoring) {\n period = periodInMonitoring;\n }\n }\n this.setSelectedPeriod(period);\n } else if (this.isLastActionDelete) {\n this.setSelectedPeriod(null);\n }\n },\n });\n }\n\n public setFilters(filters: MonitoringFilters): void {\n this.filters$.next(filters);\n }\n\n /**\n * Set the selected periode, null if none is selected\n */\n public setSelectedPeriod(period: HeatingPeriod): void {\n this.selectedPeriod$.next(period);\n }\n\n /**\n * Create the monitoring.\n * @param monitoring\n * @returns Newly created monitoring or null.\n */\n public async createMonitoring(monitoring: MonitoringUpdate): Promise {\n try {\n const newMonitoring = (await this.post('/api/operating-monitoring', { data: monitoring })).data;\n\n this.selectedMonitoring$.next(newMonitoring);\n\n this.refreshMonitorings();\n this.isLastActionDelete = false;\n } catch (error) {\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_monitoring_while_creating'),\n icon: 'error',\n });\n }\n }\n\n /**\n * Update the monitoring\n */\n public async updateMonitoring(monitoring: MonitoringUpdate): Promise {\n try {\n const newMonitoring: Monitoring = (await this.patch(`/api/operating-monitoring/${monitoring._id}`, {\n data: monitoring,\n })).data;\n\n this.selectedMonitoring$.next(newMonitoring);\n\n // Update the monitoring in list\n this._spinner.show({ transparent: true });\n setTimeout(() => {\n this.refreshMonitorings();\n this._spinner.hide();\n this.isLastActionDelete = false;\n }, 2500);\n } catch (error) {\n this.refreshMonitorings();\n\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_monitoring_while_updating'),\n icon: 'error',\n });\n }\n }\n\n /**\n * Delete the monitoring\n */\n public async deleteMonitoring(monitoring: Monitoring): Promise {\n try {\n await this.delete(`/api/operating-monitoring/${monitoring._id}`);\n this.isLastActionDelete = true;\n } catch (error) {\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_monitoring_while_updating'),\n icon: 'error',\n });\n } finally {\n this.refreshMonitorings();\n }\n }\n\n private async refreshMonitorings() {\n const filters = this.filters$.getValue();\n this.getMonitorings(filters);\n this.refreshSeasonsKeyfigures(filters);\n }\n\n /**\n * Retrieve full list of monitorings\n */\n private async getMonitorings(filters: MonitoringFilters): Promise {\n let monitorings: Monitoring[] = [];\n const params: { companies: string; status?: Status } = { companies: filters.companies.join(',') };\n if (filters.status) {\n params.status = filters.status;\n }\n\n try {\n monitorings = (await this.get('/api/operating-monitoring', null, params)).data;\n } catch (error) {\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_monitoring_while_loading'),\n icon: 'error',\n });\n }\n\n monitorings = monitorings\n .filter(m => Boolean(m.site))\n .sort((a: Monitoring, b: Monitoring) => {\n const siteNameA = a.site.complement && a.site.complement !== 'NC' ? a.site.complement : a.site.name;\n const siteNameB = b.site.complement && b.site.complement !== 'NC' ? b.site.complement : b.site.name;\n const compareSite = siteNameA.localeCompare(siteNameB);\n const compareName = a.name.localeCompare(b.name);\n\n return compareSite || compareName;\n });\n\n this.monitorings$.next(monitorings);\n }\n\n /**\n * Filter the currently retrieved monitorings with the current filters\n */\n private refreshFilteredMonitorings(filters: MonitoringFilters, monitorings: Monitoring[]): void {\n let monitoringsFiltered = monitorings;\n if (filters.status) {\n monitoringsFiltered = monitorings.filter(monitoring => monitoring.status === filters.status);\n }\n\n this.monitoringsFiltered$.next(monitoringsFiltered);\n }\n\n /**\n * Set the selected monitoring to the first of given filtered if no one is already set\n */\n private setSelectedMonitoring(monitoringsFiltered: Monitoring[]): void {\n const selectedMonitoring = this.selectedMonitoring$.getValue();\n\n if (selectedMonitoring) {\n const selected = monitoringsFiltered.find(m => m._id === selectedMonitoring._id);\n if (selected) {\n this.selectedMonitoring$.next(selected);\n return;\n } else if (!this.isLastActionDelete) {\n // No change in monitoring\n this.selectedMonitoring$.next(selectedMonitoring);\n return;\n }\n }\n // If no selected, select first one\n this.selectedMonitoring$.next(monitoringsFiltered[0]);\n }\n\n /**\n * Display or hide edition monitoring modal\n */\n public toggleEditionMonitoringModal(value: boolean) {\n this.toggleEditionMonitoringModal$.next(value);\n }\n /**\n * Display or hide edit readings modal\n */\n public toggleEditReadingsModal(value: boolean) {\n this.toggleEditReadingsModal$.next(value);\n }\n\n /**\n * Verify if the given period is inside monitoring contract boundaries\n */\n public isPeriodInContract(period: HeatingPeriodUpdate, monitoring: Monitoring): boolean {\n const periodStart = moment.utc(period.periodStart);\n const periodEnd = moment.utc(period.periodEnd);\n const contractStart = moment.utc(monitoring.contractStart);\n const contractEnd = moment.utc(monitoring.contractEnd);\n\n if (\n periodStart.isBefore(contractStart, 'day') ||\n periodStart.isAfter(contractEnd, 'day') ||\n (periodEnd.isValid() && periodEnd.isAfter(contractEnd, 'day'))\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validate the new date of the selected period\n */\n public isPeriodValid(checkPeriod: HeatingPeriodUpdate): boolean {\n // If all dates are not in the same format (ISO string), compares should be false\n const periodStart = moment.utc(checkPeriod.periodStart).toISOString();\n const periodEnd = moment.utc(checkPeriod.periodEnd).toISOString();\n\n // If not a valid date unvalidate the period\n if (!periodStart || (checkPeriod.periodEnd && !periodEnd)) {\n return false;\n }\n\n if (checkPeriod) {\n // If start date after end date\n if (periodEnd && periodStart > periodEnd) {\n return false;\n }\n // If start/end date is in range of another periods (superposition)\n for (const period of this.selectedMonitoring$.getValue().periods as HeatingPeriod[]) {\n if (checkPeriod._id && period._id === checkPeriod._id) {\n continue;\n }\n // End of selected is in middle of period\n if (periodEnd && periodEnd <= period.periodStart && periodStart >= period.periodEnd) {\n return false;\n }\n // Period ends is in middle of new period, which doesn't have end\n if (!periodEnd && period.periodStart && periodStart <= period.periodStart) {\n return false;\n }\n // Period ends in middle of the new period\n if (period.periodStart && periodStart <= period.periodStart && period.periodEnd <= periodEnd) {\n return false;\n }\n // Period starts is in middle of new period, which doesn't have end\n if (!periodEnd && periodStart <= period.periodEnd) {\n return false;\n }\n // Period is contained in the new period\n if (period.periodStart && periodStart <= period.periodEnd && periodEnd >= period.periodStart) {\n return false;\n }\n // The new period starts after a period, which doesn't have end\n if (!period.periodStart && periodStart >= period.periodEnd) {\n return false;\n }\n // Period starts in middle of the new period\n if (periodEnd >= period.periodEnd && periodStart <= period.periodEnd) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Get latest period of monitoring\n * @param monitoring\n */\n private getLatestPeriod(monitoring: Monitoring): HeatingPeriod {\n if (!monitoring || !monitoring.periods || !monitoring.periods.length) {\n return null;\n }\n // Sort periods from latest to oldest\n const periods = monitoring.periods.concat().sort((a, b) => b.periodStart.localeCompare(a.periodStart));\n\n return periods[0];\n }\n\n public get hasMonitorings(): boolean {\n return this.monitorings$.getValue().length > 0;\n }\n\n /**\n * Get period date ISO string tranformed if needed.\n * Period start is start of day\n * Period end is end of day\n * @param date - date at format YYYY-MM-DD\n * @param type - period date type (start or end of period)\n */\n public getPeriodDateISOString(date: string, type: 'start' | 'end'): string {\n if (!date) {\n return null;\n }\n if (type === 'start') {\n return moment\n .utc(date)\n .startOf('day')\n .toISOString();\n }\n if (type === 'end') {\n return moment\n .utc(date)\n .endOf('day')\n .toISOString();\n }\n throw new Error('unknown type');\n }\n\n /**\n * Refresh seasons keyfigures and returns keyfigures\n */\n private async refreshSeasonsKeyfigures(filters: MonitoringFilters): Promise {\n const params: { companies: string; status?: Status } = { companies: filters.companies.join(',') };\n if (filters.status) {\n params.status = filters.status;\n }\n\n try {\n const res = await this.get('/api/operating-monitoring/seasons', null, params);\n this.seasonsKeyfigures$.next(res.data);\n } catch (err) {\n Swal.fire({\n title: this.translateService._('error_we_are_sorry'),\n text: this.translateService._('error_monitoring_retrieve_seasons'),\n icon: 'error',\n });\n }\n }\n\n /** Sum consumption, valueRevalued, modulator and profits of all periods in a monitoring and calculate the deviation for it */\n public getSumAllPeriods(monitoring: Monitoring): HeatingPeriod {\n return monitoring.periods.reduce(\n (acc, p) => {\n if (Number.isFinite(p.consumptionHeating)) {\n acc.consumptionHeating += p.consumptionHeating;\n }\n\n if (Number.isFinite(p.valueRevaluedOnBillsPeriod)) {\n acc.valueRevaluedOnBillsPeriod += p.valueRevaluedOnBillsPeriod;\n }\n\n if (Number.isFinite(p.modulatorRealOnBillsPeriod)) {\n acc.modulatorRealOnBillsPeriod += p.modulatorRealOnBillsPeriod;\n }\n\n if (acc.consumptionHeating !== null && acc.modulatorRealOnBillsPeriod) {\n acc.consumptionHeatingPerModulatorReal = acc.consumptionHeating / acc.modulatorRealOnBillsPeriod;\n }\n\n if (Number.isFinite(p.profits)) {\n acc.profits += p.profits;\n }\n\n if (acc.consumptionHeating !== null && acc.valueRevaluedOnBillsPeriod) {\n acc.deviation = (1 - acc.consumptionHeating / acc.valueRevaluedOnBillsPeriod) * 100;\n }\n\n return acc;\n },\n {\n _id: null,\n periodStart: null,\n periodEnd: null,\n createdAt: null,\n updatedAt: null,\n consumptionHeating: null,\n valueRevaluedOnBillsPeriod: null,\n modulatorRealOnBillsPeriod: null,\n consumptionHeatingPerModulatorReal: null,\n profits: null,\n deviation: null,\n }\n );\n }\n}\n","export default \".grid-key-figures {\\n padding: 12px;\\n}\\n\\n.no-padding {\\n padding: 0;\\n}\\n\\n.key-figure-container {\\n display: -webkit-box;\\n display: flex;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL290aGVyL2NhcmQta2V5LWZpZ3VyZXMvZ3JpZC1rZXktZmlndXJlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3RoZXIvY2FyZC1rZXktZmlndXJlcy9ncmlkLWtleS1maWd1cmVzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksYUFBQTtBQ0NKOztBREVBO0VBQ0ksVUFBQTtBQ0NKOztBREVBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vdGhlci9jYXJkLWtleS1maWd1cmVzL2dyaWQta2V5LWZpZ3VyZXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZ3JpZC1rZXktZmlndXJlcyB7XG4gICAgcGFkZGluZzogMTJweDtcbn1cblxuLm5vLXBhZGRpbmcge1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi5rZXktZmlndXJlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbn1cbiIsIi5ncmlkLWtleS1maWd1cmVzIHtcbiAgcGFkZGluZzogMTJweDtcbn1cblxuLm5vLXBhZGRpbmcge1xuICBwYWRkaW5nOiAwO1xufVxuXG4ua2V5LWZpZ3VyZS1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { KeyFigures } from '../../../models/key-figure.interface';\nimport { KeyFigureModel } from './key-figure.model';\n@Component({\n selector: 'ga-grid-key-figures',\n templateUrl: './grid-key-figures.component.html',\n styleUrls: ['./grid-key-figures.component.scss'],\n providers: [],\n})\nexport class GridKeyFiguresComponent implements OnInit {\n @Input() keyFigures: KeyFigures;\n color = '#5BAF4D';\n mode: string;\n value: number;\n bufferValue: number;\n list_keyfigures: Array<{ left: KeyFigureModel; right: KeyFigureModel }>;\n\n constructor() {}\n\n ngOnInit(): void {\n this.setKeyValues();\n }\n\n private setKeyValues() {\n const pdlsActive = new KeyFigureModel(\n 'picto_pdl',\n this.keyFigures.pdlActive,\n 'Point de livraison (PDL)',\n 'Points de livraison (PDL)',\n this.keyFigures.pdl - this.keyFigures.pdlActive\n );\n const sitesActive = new KeyFigureModel(\n 'picto_pin',\n this.keyFigures.sitesActive,\n 'Site',\n 'Sites',\n this.keyFigures.sites - this.keyFigures.sitesActive\n );\n\n const surface = new KeyFigureModel(\n 'picto_ruler',\n this.keyFigures.surface,\n 'Surface totale (m²)',\n 'Surface totale (m²)'\n );\n const bat_tertiaires = new KeyFigureModel(\n 'picto_building_2',\n this.keyFigures.bat_tertiaires,\n 'Bâtiment tertiaire',\n 'Bâtiments tertiaires'\n );\n\n const bat_industriels = new KeyFigureModel(\n 'picto_industry',\n this.keyFigures.bat_industriels,\n 'Bâtiment industriel',\n 'Bâtiments industriels'\n );\n const bat_residentiels = new KeyFigureModel(\n 'picto_home',\n this.keyFigures.bat_residentiels,\n 'Bâtiment résidentiel',\n 'Bâtiments résidentiels'\n );\n\n const veh_fonction = new KeyFigureModel(\n 'picto_car',\n this.keyFigures.veh_fonction,\n 'Véhicule de fonction',\n 'Véhicules de fonction'\n );\n const veh_utilitaires = new KeyFigureModel(\n 'picto_truck',\n this.keyFigures.veh_utilitaires,\n 'Véhicule utilitaire',\n 'Véhicules utilitaires'\n );\n\n const veh_electriques = new KeyFigureModel(\n 'picto_electriccar',\n this.keyFigures.veh_electriques,\n 'Véhicule électrique',\n 'Véhicules écletriques'\n );\n const espaces_verts = new KeyFigureModel(\n 'picto_park',\n this.keyFigures.espaces_verts,\n 'Espace vert',\n 'Espaces verts'\n );\n\n const feux_tricolores = new KeyFigureModel(\n 'picto_trafficlight',\n this.keyFigures.feux_tricolores,\n 'Feu tricolore',\n 'Feux tricolores'\n );\n const eclairages_urbains = new KeyFigureModel(\n 'picto_streetlight',\n this.keyFigures.eclairages_urbains,\n 'Éclairage urbain',\n 'Eclairages urbains'\n );\n\n this.list_keyfigures = [\n {\n left: pdlsActive,\n right: sitesActive,\n },\n {\n left: surface,\n right: bat_tertiaires,\n },\n {\n left: bat_industriels,\n right: bat_residentiels,\n },\n {\n left: veh_fonction,\n right: veh_utilitaires,\n },\n {\n left: veh_electriques,\n right: espaces_verts,\n },\n {\n left: feux_tricolores,\n right: eclairages_urbains,\n },\n ];\n\n this.value = 40;\n this.bufferValue = 0;\n this.mode = 'determinate';\n }\n}\n","export default \".key-figure {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 10px;\\n}\\n\\n.key-figure-icon-container {\\n margin-right: 10px;\\n width: 40px;\\n min-width: 40px;\\n}\\n\\n.key-figure-text {\\n font-family: Montserrat, sans-serif;\\n font-size: 12px;\\n line-height: 1.3;\\n}\\n\\n.key-figure-value {\\n font-weight: bold;\\n font-size: 15px;\\n font-family: \\\"Montserrat\\\", sans-serif !important;\\n line-height: 1.4;\\n}\\n\\n.icone {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-position: center;\\n mask-position: center;\\n background-color: grey;\\n}\\n\\n.picto_pdl {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl-filled.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pdl-filled.svg\\\");\\n}\\n\\n.picto_ruler {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_ruler.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_ruler.svg\\\");\\n}\\n\\n.picto_building_2 {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_building_2.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_building_2.svg\\\");\\n}\\n\\n.picto_industry {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_industry.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_industry.svg\\\");\\n}\\n\\n.picto_home {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_home.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_home.svg\\\");\\n}\\n\\n.picto_pin {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pin2.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pin2.svg\\\");\\n}\\n\\n.picto_car {\\n height: 25px;\\n width: 25px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_car.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_car.svg\\\");\\n}\\n\\n.picto_truck {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_truck.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_truck.svg\\\");\\n}\\n\\n.picto_electriccar {\\n height: 40px;\\n width: 40px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_electriccar.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_electriccar.svg\\\");\\n}\\n\\n.picto_park {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_park.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_park.svg\\\");\\n}\\n\\n.picto_trafficlight {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_trafficlight.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_trafficlight.svg\\\");\\n}\\n\\n.picto_streetlight {\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_streetlight.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_streetlight.svg\\\");\\n}\\n\\n.value--inactive {\\n font-weight: normal;\\n font-size: 13px;\\n white-space: nowrap;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL290aGVyL2NhcmQta2V5LWZpZ3VyZXMva2V5LWZpZ3VyZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3RoZXIvY2FyZC1rZXktZmlndXJlcy9rZXktZmlndXJlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGFBQUE7QUNESjs7QURJQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7QUNESjs7QURJQTtFQUNJLG1DQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0FDREo7O0FESUE7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxnREFBQTtFQUNBLGdCQUFBO0FDREo7O0FESUE7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLHNCQUFBO0FDREo7O0FESUE7RUFDSSxzRUFBQTtVQUFBLDhEQUFBO0FDREo7O0FER0E7RUFDSSxpRUFBQTtVQUFBLHlEQUFBO0FDQUo7O0FERUE7RUFDSSxzRUFBQTtVQUFBLDhEQUFBO0FDQ0o7O0FEQ0E7RUFDSSxvRUFBQTtVQUFBLDREQUFBO0FDRUo7O0FEQUE7RUFDSSxnRUFBQTtVQUFBLHdEQUFBO0FDR0o7O0FEREE7RUFDSSxnRUFBQTtVQUFBLHdEQUFBO0FDSUo7O0FERkE7RUFDSSxZQUFBO0VBQ0EsV0FBQTtFQUNBLCtEQUFBO1VBQUEsdURBQUE7QUNLSjs7QURIQTtFQUNJLGlFQUFBO1VBQUEseURBQUE7QUNNSjs7QURKQTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0EsdUVBQUE7VUFBQSwrREFBQTtBQ09KOztBRExBO0VBQ0ksZ0VBQUE7VUFBQSx3REFBQTtBQ1FKOztBRE5BO0VBQ0ksd0VBQUE7VUFBQSxnRUFBQTtBQ1NKOztBRFBBO0VBQ0ksdUVBQUE7VUFBQSwrREFBQTtBQ1VKOztBRFBBO0VBQ0ksbUJBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7QUNVSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL290aGVyL2NhcmQta2V5LWZpZ3VyZXMva2V5LWZpZ3VyZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5rZXktZmlndXJlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTBweDtcbn1cblxuLmtleS1maWd1cmUtaWNvbi1jb250YWluZXIge1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB3aWR0aDogNDBweDtcbiAgICBtaW4td2lkdGg6IDQwcHg7XG59XG5cbi5rZXktZmlndXJlLXRleHQge1xuICAgIGZvbnQtZmFtaWx5OiBNb250c2VycmF0LCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4ua2V5LWZpZ3VyZS12YWx1ZSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4uaWNvbmUge1xuICAgIGhlaWdodDogMzBweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbn1cblxuLnBpY3RvX3BkbCB7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3BkbC1maWxsZWQuc3ZnJyk7XG59XG4ucGljdG9fcnVsZXIge1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19ydWxlci5zdmcnKTtcbn1cbi5waWN0b19idWlsZGluZ18yIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fYnVpbGRpbmdfMi5zdmcnKTtcbn1cbi5waWN0b19pbmR1c3RyeSB7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2luZHVzdHJ5LnN2ZycpO1xufVxuLnBpY3RvX2hvbWUge1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19ob21lLnN2ZycpO1xufVxuLnBpY3RvX3BpbiB7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3BpbjIuc3ZnJyk7XG59XG4ucGljdG9fY2FyIHtcbiAgICBoZWlnaHQ6IDI1cHg7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2Nhci5zdmcnKTtcbn1cbi5waWN0b190cnVjayB7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3RydWNrLnN2ZycpO1xufVxuLnBpY3RvX2VsZWN0cmljY2FyIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2VsZWN0cmljY2FyLnN2ZycpO1xufVxuLnBpY3RvX3Bhcmsge1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19wYXJrLnN2ZycpO1xufVxuLnBpY3RvX3RyYWZmaWNsaWdodCB7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3RyYWZmaWNsaWdodC5zdmcnKTtcbn1cbi5waWN0b19zdHJlZXRsaWdodCB7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3N0cmVldGxpZ2h0LnN2ZycpO1xufVxuXG4udmFsdWUtLWluYWN0aXZlIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiLmtleS1maWd1cmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4ua2V5LWZpZ3VyZS1pY29uLWNvbnRhaW5lciB7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgd2lkdGg6IDQwcHg7XG4gIG1pbi13aWR0aDogNDBweDtcbn1cblxuLmtleS1maWd1cmUtdGV4dCB7XG4gIGZvbnQtZmFtaWx5OiBNb250c2VycmF0LCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi5rZXktZmlndXJlLXZhbHVlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5pY29uZSB7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xufVxuXG4ucGljdG9fcGRsIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19wZGwtZmlsbGVkLnN2Z1wiKTtcbn1cblxuLnBpY3RvX3J1bGVyIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19ydWxlci5zdmdcIik7XG59XG5cbi5waWN0b19idWlsZGluZ18yIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19idWlsZGluZ18yLnN2Z1wiKTtcbn1cblxuLnBpY3RvX2luZHVzdHJ5IHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19pbmR1c3RyeS5zdmdcIik7XG59XG5cbi5waWN0b19ob21lIHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19ob21lLnN2Z1wiKTtcbn1cblxuLnBpY3RvX3BpbiB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fcGluMi5zdmdcIik7XG59XG5cbi5waWN0b19jYXIge1xuICBoZWlnaHQ6IDI1cHg7XG4gIHdpZHRoOiAyNXB4O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2Nhci5zdmdcIik7XG59XG5cbi5waWN0b190cnVjayB7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fdHJ1Y2suc3ZnXCIpO1xufVxuXG4ucGljdG9fZWxlY3RyaWNjYXIge1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2VsZWN0cmljY2FyLnN2Z1wiKTtcbn1cblxuLnBpY3RvX3Bhcmsge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3Bhcmsuc3ZnXCIpO1xufVxuXG4ucGljdG9fdHJhZmZpY2xpZ2h0IHtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b190cmFmZmljbGlnaHQuc3ZnXCIpO1xufVxuXG4ucGljdG9fc3RyZWV0bGlnaHQge1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3N0cmVldGxpZ2h0LnN2Z1wiKTtcbn1cblxuLnZhbHVlLS1pbmFjdGl2ZSB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-key-figure',\n templateUrl: './key-figure.component.html',\n styleUrls: ['./key-figure.component.scss'],\n})\nexport class KeyFigureComponent implements OnInit {\n @Input() valueKey: number;\n @Input() textSingular: string;\n @Input() textPlural: string;\n @Input() iconePath: string;\n @Input() valueKeyInactive: number = null;\n\n text: string;\n\n constructor() {}\n\n ngOnInit(): void {\n this.setText();\n }\n\n setText() {\n this.text = this.valueKey < 2 ? this.textSingular : this.textPlural;\n }\n\n get valueActiveText() {\n return this.valueKey > 1 ? 'actifs' : 'actif';\n }\n\n get valueInactiveText() {\n return !this.isValueInactiveDefined ? '' : this.valueKeyInactive > 1 ? 'inactifs' : 'inactif';\n }\n\n get isValueInactiveDefined() {\n return typeof this.valueKeyInactive === 'number';\n }\n}\n","export class KeyFigureModel {\n constructor(\n public iconeKey: string,\n public valueKey: number,\n public textSing: string,\n public textPlural: string,\n public valueKeyInactive?: number\n ) {}\n}\n","export default \".elec-background-80p {\\n background-color: #f2bf04;\\n /* The Fallback */\\n background-color: rgba(242, 191, 4, 0.8);\\n}\\n\\n.fuel-background-80p {\\n background-color: #df7c3a;\\n /* The Fallback */\\n background-color: rgba(223, 124, 58, 0.8);\\n}\\n\\n.gaz-background-80p {\\n background-color: #5ac6bc;\\n /* The Fallback */\\n background-color: rgba(90, 198, 188, 0.8);\\n}\\n\\n.water-background-80p {\\n background-color: #4281b8;\\n /* The Fallback */\\n background-color: rgba(66, 129, 184, 0.8);\\n}\\n\\n.heating-background-80p {\\n background-color: #ab2f52;\\n /* The Fallback */\\n background-color: rgba(171, 47, 82, 0.8);\\n}\\n\\n.cooling-background-80p {\\n background-color: #28bae1;\\n /* The Fallback */\\n background-color: rgba(40, 186, 225, 0.8);\\n}\\n\\n.citron-timeline {\\n padding: 16px;\\n height: auto;\\n width: 100%;\\n}\\n\\n.timeline-unit {\\n margin-bottom: 25px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.timeline-unit:last-child {\\n margin-bottom: 0;\\n}\\n\\n.timeline-unit .last {\\n display: none;\\n}\\n\\n.timeline-unit .grey-border-left {\\n height: 25px;\\n width: calc(35% - 5px);\\n border-right: 1px solid #e8e8e8;\\n position: absolute;\\n left: 18px;\\n bottom: -25px;\\n}\\n\\n.timeline-unit .grey-border-right {\\n height: 25px;\\n width: calc(65% + 5px);\\n position: absolute;\\n right: -18px;\\n bottom: -25px;\\n border-left: 1px solid #e8e8e8;\\n}\\n\\n.timeline-unit-date {\\n font-style: italic;\\n font-size: 11px;\\n color: grey;\\n background-color: white;\\n min-width: 80px;\\n margin-right: 6px;\\n}\\n\\n@media screen and (max-width: 1360px) {\\n .timeline-unit-date {\\n display: none;\\n }\\n}\\n\\n.timeline-content {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n cursor: pointer;\\n width: 100%;\\n}\\n\\n.timeline-unit-image {\\n height: 90px;\\n min-width: 90px;\\n background-color: #f7f7f7;\\n position: relative;\\n}\\n\\n.timeline-unit-image:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 40px;\\n background-color: #fff;\\n z-index: 2;\\n height: 90px;\\n}\\n\\n.timeline-unit-image-circle {\\n height: 90px;\\n width: 90px;\\n position: absolute;\\n z-index: 2;\\n border-radius: 50%;\\n border: 1px solid #8fc3e6;\\n padding-top: 4px;\\n padding-left: 4px;\\n background-color: white;\\n}\\n\\n.timeline-unit-image-circle-little {\\n height: 80px;\\n width: 80px;\\n position: absolute;\\n z-index: 2;\\n line-height: 60px;\\n border-radius: 50%;\\n border: 1px solid #8fc3e6;\\n background-color: transparent;\\n overflow: hidden;\\n}\\n\\n.timeline-unit-image-circle-little img {\\n height: 90px;\\n max-width: none;\\n}\\n\\n.timeline-unit-text-bloc {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n color: darkgrey;\\n padding: 10px;\\n background-color: #f7f7f7;\\n border-bottom-right-radius: 4px;\\n border-top-right-radius: 4px;\\n box-sizing: border-box;\\n width: 100%;\\n height: 90px;\\n}\\n\\n.timeline-unit-text-name {\\n font-size: 12px;\\n font-weight: 600;\\n line-height: 1.25;\\n color: #303030;\\n}\\n\\n.timeline-unit-text-address,\\n.timeline-unit-text-cp {\\n font-size: 11px;\\n line-height: 1.5;\\n color: #3a3a3a;\\n}\\n\\n@media screen and (max-width: 1150px) {\\n .timeline-unit-text-address,\\n.timeline-unit-text-cp {\\n display: none;\\n }\\n}\\n\\n.accueil .timeline-content .timeline-unit-image-circle,\\n.accueil .timeline-content .timeline-unit-image-circle-little {\\n border-color: #f0a62a;\\n}\\n\\n.accueil .timeline-content:hover .timeline-unit-text-bloc,\\n.accueil .timeline-content:hover .timeline-unit-image {\\n background-color: #f0a62a;\\n}\\n\\n.cartographie .timeline-content .timeline-unit-image-circle,\\n.cartographie .timeline-content .timeline-unit-image-circle-little {\\n border-color: #89a630;\\n}\\n\\n.cartographie .timeline-content:hover .timeline-unit-text-bloc,\\n.cartographie .timeline-content:hover .timeline-unit-image {\\n background-color: #89a630;\\n}\\n\\n.collecte .timeline-content .timeline-unit-image-circle,\\n.collecte .timeline-content .timeline-unit-image-circle-little {\\n border-color: #8dbe4a;\\n}\\n\\n.collecte .timeline-content:hover .timeline-unit-text-bloc,\\n.collecte .timeline-content:hover .timeline-unit-image {\\n background-color: #8dbe4a;\\n}\\n\\n.energie .timeline-content .timeline-unit-image-circle,\\n.energie .timeline-content .timeline-unit-image-circle-little {\\n border-color: #d3bf96;\\n}\\n\\n.energie .timeline-content:hover .timeline-unit-text-bloc,\\n.energie .timeline-content:hover .timeline-unit-image {\\n background-color: #d3bf96;\\n}\\n\\n.eau .timeline-content .timeline-unit-image-circle,\\n.eau .timeline-content .timeline-unit-image-circle-little {\\n border-color: #4281b8;\\n}\\n\\n.eau .timeline-content:hover .timeline-unit-text-bloc,\\n.eau .timeline-content:hover .timeline-unit-image {\\n background-color: #4281b8;\\n}\\n\\n.vehicules .timeline-content .timeline-unit-image-circle,\\n.vehicules .timeline-content .timeline-unit-image-circle-little {\\n border-color: #df7c3a;\\n}\\n\\n.vehicules .timeline-content:hover .timeline-unit-text-bloc,\\n.vehicules .timeline-content:hover .timeline-unit-image {\\n background-color: #df7c3a;\\n}\\n\\n.rse .timeline-content .timeline-unit-image-circle,\\n.rse .timeline-content .timeline-unit-image-circle-little {\\n border-color: #449d84;\\n}\\n\\n.rse .timeline-content:hover .timeline-unit-text-bloc,\\n.rse .timeline-content:hover .timeline-unit-image {\\n background-color: #449d84;\\n}\\n\\n.veille .timeline-content .timeline-unit-image-circle,\\n.veille .timeline-content .timeline-unit-image-circle-little {\\n border-color: #b53731;\\n}\\n\\n.veille .timeline-content:hover .timeline-unit-text-bloc,\\n.veille .timeline-content:hover .timeline-unit-image {\\n background-color: #b53731;\\n}\\n\\n.veille .timeline-content .timeline-unit-image-circle,\\n.veille .timeline-content .timeline-unit-image-circle-little {\\n border-color: #b53731;\\n}\\n\\n.veille .timeline-content:hover .timeline-unit-text-bloc,\\n.veille .timeline-content:hover .timeline-unit-image {\\n background-color: #b53731;\\n}\\n\\n.managers .timeline-content .timeline-unit-image-circle,\\n.managers .timeline-content .timeline-unit-image-circle-little {\\n border-color: #d05319;\\n}\\n\\n.managers .timeline-content:hover .timeline-unit-text-bloc,\\n.managers .timeline-content:hover .timeline-unit-image {\\n background-color: #d05319;\\n}\\n\\n.profil .timeline-content .timeline-unit-image-circle,\\n.profil .timeline-content .timeline-unit-image-circle-little {\\n border-color: #cc5157;\\n}\\n\\n.profil .timeline-content:hover .timeline-unit-text-bloc,\\n.profil .timeline-content:hover .timeline-unit-image {\\n background-color: #cc5157;\\n}\\n\\n.no-sites {\\n padding: 20px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvZmx1aWRzLnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL21peGlucy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9vdGhlci90aW1lbGluZS90aW1lbGluZS5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL290aGVyL3RpbWVsaW5lL3RpbWVsaW5lLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhSTtFQ0lBLHlCRGRXO0VDY2UsaUJBQUE7RUFDMUIsd0NBQUE7QUNkSjs7QUZTSTtFQ0lBLHlCRGRXO0VDY2UsaUJBQUE7RUFDMUIseUNBQUE7QUNSSjs7QUZHSTtFQ0lBLHlCRGRXO0VDY2UsaUJBQUE7RUFDMUIseUNBQUE7QUNGSjs7QUZISTtFQ0lBLHlCRGRXO0VDY2UsaUJBQUE7RUFDMUIseUNBQUE7QUNJSjs7QUZUSTtFQ0lBLHlCRGRXO0VDY2UsaUJBQUE7RUFDMUIsd0NBQUE7QUNVSjs7QUZmSTtFQ0lBLHlCRGRXO0VDY2UsaUJBQUE7RUFDMUIseUNBQUE7QUNnQko7O0FDYkE7RUFDSSxhQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7QURnQko7O0FDYkE7RUFDSSxtQkFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7QURnQko7O0FDZEk7RUFDSSxnQkFBQTtBRGdCUjs7QUNiSTtFQUNJLGFBQUE7QURlUjs7QUNaSTtFQUNJLFlBQUE7RUFDQSxzQkFBQTtFQUNBLCtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBQ0EsYUFBQTtBRGNSOztBQ1hJO0VBQ0ksWUFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLDhCQUFBO0FEYVI7O0FDVEE7RUFDSSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxXQUFBO0VBQ0EsdUJBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7QURZSjs7QUNWSTtFQVJKO0lBU1EsYUFBQTtFRGFOO0FBQ0Y7O0FDVkE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLFdBQUE7QURhSjs7QUNWQTtFQUNJLFlBN0VPO0VBOEVQLGVBOUVPO0VBK0VQLHlCQUFBO0VBQ0Esa0JBQUE7QURhSjs7QUNYSTtFQUNJLFdBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLHNCQUFBO0VBQ0EsVUFBQTtFQUNBLFlBMUZHO0FEdUdYOztBQ1RBO0VBQ0ksWUEvRk87RUFnR1AsV0FoR087RUFpR1Asa0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSx1QkFBQTtBRFlKOztBQ1RBO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSw2QkFBQTtFQUNBLGdCQUFBO0FEWUo7O0FDVkk7RUFDSSxZQXRIRztFQXVISCxlQUFBO0FEWVI7O0FDUkE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO1VBQUEsc0JBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7RUFDQSx5QkFBQTtFQUNBLCtCQUFBO0VBQ0EsNEJBQUE7RUFDQSxzQkFBQTtFQUNBLFdBQUE7RUFDQSxZQXRJTztBRGlKWDs7QUNSQTtFQUNJLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtBRFdKOztBQ1JBOztFQUVJLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QURXSjs7QUNUSTtFQU5KOztJQU9RLGFBQUE7RURhTjtBQUNGOztBQ2pLUTs7RUFFSSxxQkNURjtBRjZLVjs7QUNoS1k7O0VBRUkseUJDZk47QUZpTFY7O0FDMUtROztFQUVJLHFCQ1JHO0FGcUxmOztBQ3pLWTs7RUFFSSx5QkNkRDtBRnlMZjs7QUNuTFE7O0VBRUkscUJDUEQ7QUY2TFg7O0FDbExZOztFQUVJLHlCQ2JMO0FGaU1YOztBQzVMUTs7RUFFSSxxQkNMRjtBRm9NVjs7QUMzTFk7O0VBRUkseUJDWE47QUZ3TVY7O0FDck1ROztFQUVJLHFCQ09OO0FGaU1OOztBQ3BNWTs7RUFFSSx5QkNDVjtBRnFNTjs7QUM5TVE7O0VBRUkscUJDSEE7QUZvTlo7O0FDN01ZOztFQUVJLHlCQ1RKO0FGd05aOztBQ3ZOUTs7RUFFSSxxQkFBQTtBRDBOWjs7QUN0Tlk7O0VBRUkseUJDTlY7QUY4Tk47O0FDaE9ROztFQUVJLHFCQ0NIO0FGa09UOztBQy9OWTs7RUFFSSx5QkNMUDtBRnNPVDs7QUN6T1E7O0VBRUkscUJDQ0g7QUYyT1Q7O0FDeE9ZOztFQUVJLHlCQ0xQO0FGK09UOztBQ2xQUTs7RUFFSSxxQkNFRDtBRm1QWDs7QUNqUFk7O0VBRUkseUJDSkw7QUZ1UFg7O0FDM1BROztFQUVJLHFCQ0dIO0FGMlBUOztBQzFQWTs7RUFFSSx5QkNIUDtBRitQVDs7QUNqR0E7RUFDSSxhQUFBO0FEb0dKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3RoZXIvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuL2NvbG9ycy5zY3NzJztcbkBpbXBvcnQgJy4vbWl4aW5zLnNjc3MnO1xuXG4kZmx1aWQtY29sb3JzOiAoXG4gICAgJ2VsZWMnOiAkZWxlY3RyaWNpdGUsXG4gICAgJ2Z1ZWwnOiAkZnVlbCxcbiAgICAnZ2F6JzogJGdheixcbiAgICAnd2F0ZXInOiAkZWF1LFxuICAgICdoZWF0aW5nJzogJGhlYXRpbmcsXG4gICAgJ2Nvb2xpbmcnOiAkY29vbGluZyxcbik7XG5cbkBlYWNoICR0eXBlLCAkY29sb3IgaW4gJGZsdWlkLWNvbG9ycyB7XG4gICAgLiN7JHR5cGV9LWJhY2tncm91bmQtODBwIHtcbiAgICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgMC44KTtcbiAgICB9XG59XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIuZWxlYy1iYWNrZ3JvdW5kLTgwcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMmJmMDQ7XG4gIC8qIFRoZSBGYWxsYmFjayAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MiwgMTkxLCA0LCAwLjgpO1xufVxuXG4uZnVlbC1iYWNrZ3JvdW5kLTgwcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZjdjM2E7XG4gIC8qIFRoZSBGYWxsYmFjayAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyMywgMTI0LCA1OCwgMC44KTtcbn1cblxuLmdhei1iYWNrZ3JvdW5kLTgwcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1YWM2YmM7XG4gIC8qIFRoZSBGYWxsYmFjayAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDkwLCAxOTgsIDE4OCwgMC44KTtcbn1cblxuLndhdGVyLWJhY2tncm91bmQtODBwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyODFiODtcbiAgLyogVGhlIEZhbGxiYWNrICovXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNjYsIDEyOSwgMTg0LCAwLjgpO1xufVxuXG4uaGVhdGluZy1iYWNrZ3JvdW5kLTgwcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhYjJmNTI7XG4gIC8qIFRoZSBGYWxsYmFjayAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE3MSwgNDcsIDgyLCAwLjgpO1xufVxuXG4uY29vbGluZy1iYWNrZ3JvdW5kLTgwcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGJhZTE7XG4gIC8qIFRoZSBGYWxsYmFjayAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQwLCAxODYsIDIyNSwgMC44KTtcbn1cblxuLmNpdHJvbi10aW1lbGluZSB7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50aW1lbGluZS11bml0IHtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi50aW1lbGluZS11bml0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLnRpbWVsaW5lLXVuaXQgLmxhc3Qge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnRpbWVsaW5lLXVuaXQgLmdyZXktYm9yZGVyLWxlZnQge1xuICBoZWlnaHQ6IDI1cHg7XG4gIHdpZHRoOiBjYWxjKDM1JSAtIDVweCk7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlOGU4ZTg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMThweDtcbiAgYm90dG9tOiAtMjVweDtcbn1cbi50aW1lbGluZS11bml0IC5ncmV5LWJvcmRlci1yaWdodCB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IGNhbGMoNjUlICsgNXB4KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogLTE4cHg7XG4gIGJvdHRvbTogLTI1cHg7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2U4ZThlODtcbn1cblxuLnRpbWVsaW5lLXVuaXQtZGF0ZSB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogZ3JleTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG1pbi13aWR0aDogODBweDtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMzYwcHgpIHtcbiAgLnRpbWVsaW5lLXVuaXQtZGF0ZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4udGltZWxpbmUtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50aW1lbGluZS11bml0LWltYWdlIHtcbiAgaGVpZ2h0OiA5MHB4O1xuICBtaW4td2lkdGg6IDkwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi50aW1lbGluZS11bml0LWltYWdlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogNDBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgei1pbmRleDogMjtcbiAgaGVpZ2h0OiA5MHB4O1xufVxuXG4udGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUge1xuICBoZWlnaHQ6IDkwcHg7XG4gIHdpZHRoOiA5MHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgIzhmYzNlNjtcbiAgcGFkZGluZy10b3A6IDRweDtcbiAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4udGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUtbGl0dGxlIHtcbiAgaGVpZ2h0OiA4MHB4O1xuICB3aWR0aDogODBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICBsaW5lLWhlaWdodDogNjBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjOGZjM2U2O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZS1saXR0bGUgaW1nIHtcbiAgaGVpZ2h0OiA5MHB4O1xuICBtYXgtd2lkdGg6IG5vbmU7XG59XG5cbi50aW1lbGluZS11bml0LXRleHQtYmxvYyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgY29sb3I6IGRhcmtncmV5O1xuICBwYWRkaW5nOiAxMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA5MHB4O1xufVxuXG4udGltZWxpbmUtdW5pdC10ZXh0LW5hbWUge1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBjb2xvcjogIzMwMzAzMDtcbn1cblxuLnRpbWVsaW5lLXVuaXQtdGV4dC1hZGRyZXNzLFxuLnRpbWVsaW5lLXVuaXQtdGV4dC1jcCB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICMzYTNhM2E7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTUwcHgpIHtcbiAgLnRpbWVsaW5lLXVuaXQtdGV4dC1hZGRyZXNzLFxuLnRpbWVsaW5lLXVuaXQtdGV4dC1jcCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uYWNjdWVpbCAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUsXG4uYWNjdWVpbCAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUtbGl0dGxlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZjBhNjJhO1xufVxuLmFjY3VlaWwgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtdGV4dC1ibG9jLFxuLmFjY3VlaWwgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtaW1hZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhNjJhO1xufVxuXG4uY2FydG9ncmFwaGllIC50aW1lbGluZS1jb250ZW50IC50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZSxcbi5jYXJ0b2dyYXBoaWUgLnRpbWVsaW5lLWNvbnRlbnQgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLWxpdHRsZSB7XG4gIGJvcmRlci1jb2xvcjogIzg5YTYzMDtcbn1cbi5jYXJ0b2dyYXBoaWUgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtdGV4dC1ibG9jLFxuLmNhcnRvZ3JhcGhpZSAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC1pbWFnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4OWE2MzA7XG59XG5cbi5jb2xsZWN0ZSAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUsXG4uY29sbGVjdGUgLnRpbWVsaW5lLWNvbnRlbnQgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLWxpdHRsZSB7XG4gIGJvcmRlci1jb2xvcjogIzhkYmU0YTtcbn1cbi5jb2xsZWN0ZSAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC10ZXh0LWJsb2MsXG4uY29sbGVjdGUgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtaW1hZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGRiZTRhO1xufVxuXG4uZW5lcmdpZSAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUsXG4uZW5lcmdpZSAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUtbGl0dGxlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDNiZjk2O1xufVxuLmVuZXJnaWUgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtdGV4dC1ibG9jLFxuLmVuZXJnaWUgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtaW1hZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDNiZjk2O1xufVxuXG4uZWF1IC50aW1lbGluZS1jb250ZW50IC50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZSxcbi5lYXUgLnRpbWVsaW5lLWNvbnRlbnQgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLWxpdHRsZSB7XG4gIGJvcmRlci1jb2xvcjogIzQyODFiODtcbn1cbi5lYXUgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtdGV4dC1ibG9jLFxuLmVhdSAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC1pbWFnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MjgxYjg7XG59XG5cbi52ZWhpY3VsZXMgLnRpbWVsaW5lLWNvbnRlbnQgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLFxuLnZlaGljdWxlcyAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUtbGl0dGxlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGY3YzNhO1xufVxuLnZlaGljdWxlcyAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC10ZXh0LWJsb2MsXG4udmVoaWN1bGVzIC50aW1lbGluZS1jb250ZW50OmhvdmVyIC50aW1lbGluZS11bml0LWltYWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RmN2MzYTtcbn1cblxuLnJzZSAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUsXG4ucnNlIC50aW1lbGluZS1jb250ZW50IC50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZS1saXR0bGUge1xuICBib3JkZXItY29sb3I6ICM0NDlkODQ7XG59XG4ucnNlIC50aW1lbGluZS1jb250ZW50OmhvdmVyIC50aW1lbGluZS11bml0LXRleHQtYmxvYyxcbi5yc2UgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtaW1hZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ5ZDg0O1xufVxuXG4udmVpbGxlIC50aW1lbGluZS1jb250ZW50IC50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZSxcbi52ZWlsbGUgLnRpbWVsaW5lLWNvbnRlbnQgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLWxpdHRsZSB7XG4gIGJvcmRlci1jb2xvcjogI2I1MzczMTtcbn1cbi52ZWlsbGUgLnRpbWVsaW5lLWNvbnRlbnQ6aG92ZXIgLnRpbWVsaW5lLXVuaXQtdGV4dC1ibG9jLFxuLnZlaWxsZSAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC1pbWFnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiNTM3MzE7XG59XG5cbi52ZWlsbGUgLnRpbWVsaW5lLWNvbnRlbnQgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLFxuLnZlaWxsZSAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUtbGl0dGxlIHtcbiAgYm9yZGVyLWNvbG9yOiAjYjUzNzMxO1xufVxuLnZlaWxsZSAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC10ZXh0LWJsb2MsXG4udmVpbGxlIC50aW1lbGluZS1jb250ZW50OmhvdmVyIC50aW1lbGluZS11bml0LWltYWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I1MzczMTtcbn1cblxuLm1hbmFnZXJzIC50aW1lbGluZS1jb250ZW50IC50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZSxcbi5tYW5hZ2VycyAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUtbGl0dGxlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDA1MzE5O1xufVxuLm1hbmFnZXJzIC50aW1lbGluZS1jb250ZW50OmhvdmVyIC50aW1lbGluZS11bml0LXRleHQtYmxvYyxcbi5tYW5hZ2VycyAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC1pbWFnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMDUzMTk7XG59XG5cbi5wcm9maWwgLnRpbWVsaW5lLWNvbnRlbnQgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLFxuLnByb2ZpbCAudGltZWxpbmUtY29udGVudCAudGltZWxpbmUtdW5pdC1pbWFnZS1jaXJjbGUtbGl0dGxlIHtcbiAgYm9yZGVyLWNvbG9yOiAjY2M1MTU3O1xufVxuLnByb2ZpbCAudGltZWxpbmUtY29udGVudDpob3ZlciAudGltZWxpbmUtdW5pdC10ZXh0LWJsb2MsXG4ucHJvZmlsIC50aW1lbGluZS1jb250ZW50OmhvdmVyIC50aW1lbGluZS11bml0LWltYWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNTE1Nztcbn1cblxuLm5vLXNpdGVzIHtcbiAgcGFkZGluZzogMjBweDtcbn0iLCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9mbHVpZHMnO1xuXG4kcGljX3NpemU6IDkwcHg7XG5cbkBtaXhpbiBob3ZlckNvbG9yKCRjb2xvciwgJGxhYmVsKSB7XG4gICAgLiN7JGxhYmVsfSAudGltZWxpbmUtY29udGVudCB7XG4gICAgICAgIC50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZSxcbiAgICAgICAgLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlLWxpdHRsZSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgLnRpbWVsaW5lLXVuaXQtdGV4dC1ibG9jLFxuICAgICAgICAgICAgLnRpbWVsaW5lLXVuaXQtaW1hZ2Uge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNpdHJvbi10aW1lbGluZSB7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi50aW1lbGluZS11bml0IHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmxhc3Qge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5ncmV5LWJvcmRlci1sZWZ0IHtcbiAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICB3aWR0aDogY2FsYygzNSUgLSA1cHgpO1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZThlOGU4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDE4cHg7XG4gICAgICAgIGJvdHRvbTogLTI1cHg7XG4gICAgfVxuXG4gICAgLmdyZXktYm9yZGVyLXJpZ2h0IHtcbiAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICB3aWR0aDogY2FsYyg2NSUgKyA1cHgpO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAtMThweDtcbiAgICAgICAgYm90dG9tOiAtMjVweDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZThlOGU4O1xuICAgIH1cbn1cblxuLnRpbWVsaW5lLXVuaXQtZGF0ZSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogZ3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBtaW4td2lkdGg6IDgwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMzYwcHgpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi50aW1lbGluZS1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4udGltZWxpbmUtdW5pdC1pbWFnZSB7XG4gICAgaGVpZ2h0OiAkcGljX3NpemU7XG4gICAgbWluLXdpZHRoOiAkcGljX3NpemU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGhlaWdodDogJHBpY19zaXplO1xuICAgIH1cbn1cblxuLnRpbWVsaW5lLXVuaXQtaW1hZ2UtY2lyY2xlIHtcbiAgICBoZWlnaHQ6ICRwaWNfc2l6ZTtcbiAgICB3aWR0aDogJHBpY19zaXplO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjOGZjM2U2O1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbi50aW1lbGluZS11bml0LWltYWdlLWNpcmNsZS1saXR0bGUge1xuICAgIGhlaWdodDogJHBpY19zaXplIC0gMTBweDtcbiAgICB3aWR0aDogJHBpY19zaXplIC0gMTBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMjtcbiAgICBsaW5lLWhlaWdodDogNjBweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzhmYzNlNjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgaW1nIHtcbiAgICAgICAgaGVpZ2h0OiAkcGljX3NpemU7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG59XG5cbi50aW1lbGluZS11bml0LXRleHQtYmxvYyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBjb2xvcjogZGFya2dyZXk7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHBpY19zaXplO1xufVxuXG4udGltZWxpbmUtdW5pdC10ZXh0LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIGNvbG9yOiAjMzAzMDMwO1xufVxuXG4udGltZWxpbmUtdW5pdC10ZXh0LWFkZHJlc3MsXG4udGltZWxpbmUtdW5pdC10ZXh0LWNwIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBjb2xvcjogIzNhM2EzYTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExNTBweCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgaG92ZXJDb2xvcigkYWNjdWVpbCwgJ2FjY3VlaWwnKTtcbkBpbmNsdWRlIGhvdmVyQ29sb3IoJGNhcnRvZ3JhcGhpZSwgJ2NhcnRvZ3JhcGhpZScpO1xuQGluY2x1ZGUgaG92ZXJDb2xvcigkY29sbGVjdGUsICdjb2xsZWN0ZScpO1xuQGluY2x1ZGUgaG92ZXJDb2xvcigkZW5lcmdpZSwgJ2VuZXJnaWUnKTtcbkBpbmNsdWRlIGhvdmVyQ29sb3IoJGVhdSwgJ2VhdScpO1xuQGluY2x1ZGUgaG92ZXJDb2xvcigkdmVoaWN1bGVzLCAndmVoaWN1bGVzJyk7XG5AaW5jbHVkZSBob3ZlckNvbG9yKCRyc2UsICdyc2UnKTtcbkBpbmNsdWRlIGhvdmVyQ29sb3IoJHZlaWxsZSwgJ3ZlaWxsZScpO1xuQGluY2x1ZGUgaG92ZXJDb2xvcigkdmVpbGxlLCAndmVpbGxlJyk7XG5AaW5jbHVkZSBob3ZlckNvbG9yKCRtYW5hZ2VycywgJ21hbmFnZXJzJyk7XG5AaW5jbHVkZSBob3ZlckNvbG9yKCRwcm9maWwsICdwcm9maWwnKTtcblxuLm5vLXNpdGVzIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'ga-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n})\nexport class TimelineComponent implements OnInit {\n @Input() sites: any[];\n\n constructor(private router: Router) {}\n ngOnInit() {}\n\n getBorderClass(last) {\n return last ? 'last' : '';\n }\n\n getColorClass() {\n let className = '';\n\n if (this.router.url.split('/').length - 1 > 1) {\n className = this.router.url.split('/')[1];\n } else {\n className = this.router.url.replace('/', '');\n }\n\n return className;\n }\n}\n","export default \".container-em {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n padding-top: 16px;\\n}\\n\\n.container-img {\\n height: 80px;\\n min-width: 80px;\\n position: relative;\\n}\\n\\n.container-img.analyse {\\n background-color: #70c283;\\n}\\n\\n.container-img:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 40px;\\n background-color: #fff;\\n z-index: 2;\\n height: 80px;\\n}\\n\\n.container-img .circle {\\n position: absolute;\\n z-index: 2;\\n border-radius: 50%;\\n}\\n\\n.container-img .circle.analyse {\\n border: 1px solid #70c283;\\n}\\n\\n.container-img .outer {\\n height: 80px;\\n width: 80px;\\n background-color: white;\\n padding-top: 4px;\\n padding-left: 4px;\\n}\\n\\n.container-img .inner {\\n height: 70px;\\n width: 70px;\\n line-height: 60px;\\n overflow: hidden;\\n background-color: transparent;\\n}\\n\\n.container-img .inner img {\\n width: 80px;\\n}\\n\\n.container-text {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n justify-content: space-around;\\n color: darkgrey;\\n padding: 10px;\\n border-bottom-right-radius: 4px;\\n border-top-right-radius: 4px;\\n box-sizing: border-box;\\n height: 80px;\\n}\\n\\n.container-text.analyse {\\n background-color: #70c283;\\n}\\n\\n.container-text .title {\\n font-size: 12px;\\n font-weight: 600;\\n line-height: 1.25;\\n color: #303030;\\n padding-bottom: 4px;\\n}\\n\\n.container-text .info-contact {\\n font-size: 11px;\\n line-height: 1.5;\\n color: #3a3a3a;\\n}\\n\\n.container-text .info-contact .user-mail-link,\\n.container-text .info-contact .user-mail-link:visited {\\n color: inherit;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL290aGVyL3VzZXItdGlsZS91c2VyLXRpbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL290aGVyL3VzZXItdGlsZS91c2VyLXRpbGUuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7RUFDQSxpQkFBQTtBQ0ZKOztBREtBO0VBQ0ksWUFWTztFQVdQLGVBWE87RUFZUCxrQkFBQTtBQ0ZKOztBRElJO0VBQ0kseUJFYkU7QURXVjs7QURLSTtFQUNJLFdBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLHNCQUFBO0VBQ0EsVUFBQTtFQUNBLFlBMUJHO0FDdUJYOztBRE1JO0VBQ0ksa0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7QUNKUjs7QURNUTtFQUNJLHlCQUFBO0FDSlo7O0FEUUk7RUFDSSxZQXhDRztFQXlDSCxXQXpDRztFQTBDSCx1QkFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7QUNOUjs7QURTSTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLDZCQUFBO0FDUFI7O0FEUVE7RUFDSSxXQXRERDtBQ2dEWDs7QURXQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtFQUNBLDZCQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7RUFNQSwrQkFBQTtFQUNBLDRCQUFBO0VBQ0Esc0JBQUE7RUFDQSxZQXpFTztBQzREWDs7QURNSTtFQUNJLHlCRWpFRTtBRDZEVjs7QURZSTtFQUNJLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLG1CQUFBO0FDVlI7O0FEYUk7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBO0FDWFI7O0FEYVE7O0VBRUksY0FBQTtBQ1haIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvb3RoZXIvdXNlci10aWxlL3VzZXItdGlsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMnO1xuJHBpY19zaXplOiA4MHB4O1xuXG4uY29udGFpbmVyLWVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IDE2cHg7XG59XG5cbi5jb250YWluZXItaW1nIHtcbiAgICBoZWlnaHQ6ICRwaWNfc2l6ZTtcbiAgICBtaW4td2lkdGg6ICRwaWNfc2l6ZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmLmFuYWx5c2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYW5hbHlzZTtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGhlaWdodDogJHBpY19zaXplO1xuICAgIH1cblxuICAgIC5jaXJjbGUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICAgICAgICAmLmFuYWx5c2Uge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGFuYWx5c2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3V0ZXIge1xuICAgICAgICBoZWlnaHQ6ICRwaWNfc2l6ZTtcbiAgICAgICAgd2lkdGg6ICRwaWNfc2l6ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNHB4O1xuICAgIH1cblxuICAgIC5pbm5lciB7XG4gICAgICAgIGhlaWdodDogJHBpY19zaXplIC0gMTBweDtcbiAgICAgICAgd2lkdGg6ICRwaWNfc2l6ZSAtIDEwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAkcGljX3NpemU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jb250YWluZXItdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAgIGNvbG9yOiBkYXJrZ3JleTtcbiAgICBwYWRkaW5nOiAxMHB4O1xuXG4gICAgJi5hbmFseXNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFuYWx5c2U7XG4gICAgfVxuXG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgaGVpZ2h0OiAkcGljX3NpemU7XG5cbiAgICAudGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICBjb2xvcjogIzMwMzAzMDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDRweDtcbiAgICB9XG5cbiAgICAuaW5mby1jb250YWN0IHtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogIzNhM2EzYTtcblxuICAgICAgICAudXNlci1tYWlsLWxpbmssXG4gICAgICAgIC51c2VyLW1haWwtbGluazp2aXNpdGVkIHtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmNvbnRhaW5lci1lbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogMTZweDtcbn1cblxuLmNvbnRhaW5lci1pbWcge1xuICBoZWlnaHQ6IDgwcHg7XG4gIG1pbi13aWR0aDogODBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNvbnRhaW5lci1pbWcuYW5hbHlzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3MGMyODM7XG59XG4uY29udGFpbmVyLWltZzpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDQwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHotaW5kZXg6IDI7XG4gIGhlaWdodDogODBweDtcbn1cbi5jb250YWluZXItaW1nIC5jaXJjbGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cbi5jb250YWluZXItaW1nIC5jaXJjbGUuYW5hbHlzZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM3MGMyODM7XG59XG4uY29udGFpbmVyLWltZyAub3V0ZXIge1xuICBoZWlnaHQ6IDgwcHg7XG4gIHdpZHRoOiA4MHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZy10b3A6IDRweDtcbiAgcGFkZGluZy1sZWZ0OiA0cHg7XG59XG4uY29udGFpbmVyLWltZyAuaW5uZXIge1xuICBoZWlnaHQ6IDcwcHg7XG4gIHdpZHRoOiA3MHB4O1xuICBsaW5lLWhlaWdodDogNjBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uY29udGFpbmVyLWltZyAuaW5uZXIgaW1nIHtcbiAgd2lkdGg6IDgwcHg7XG59XG5cbi5jb250YWluZXItdGV4dCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBjb2xvcjogZGFya2dyZXk7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGhlaWdodDogODBweDtcbn1cbi5jb250YWluZXItdGV4dC5hbmFseXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzcwYzI4Mztcbn1cbi5jb250YWluZXItdGV4dCAudGl0bGUge1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBjb2xvcjogIzMwMzAzMDtcbiAgcGFkZGluZy1ib3R0b206IDRweDtcbn1cbi5jb250YWluZXItdGV4dCAuaW5mby1jb250YWN0IHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzNhM2EzYTtcbn1cbi5jb250YWluZXItdGV4dCAuaW5mby1jb250YWN0IC51c2VyLW1haWwtbGluayxcbi5jb250YWluZXItdGV4dCAuaW5mby1jb250YWN0IC51c2VyLW1haWwtbGluazp2aXNpdGVkIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'user-tile',\n templateUrl: './user-tile.component.html',\n styleUrls: ['./user-tile.component.scss'],\n})\nexport class UserTileComponent implements OnInit {\n @Input() energyManager: any;\n @Input() color: string;\n defaultPicture = 'assets/img/backgrounds/default-avatar.jpg';\n\n constructor() {}\n\n ngOnInit() {}\n\n getImg() {\n return this.energyManager.logoUrl ? this.energyManager.logoUrl : this.defaultPicture;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PaginationNavigation, PaginationNavigationLight } from 'app/shared/models/pagination.interface';\nimport { Page } from '../pagination.interface';\nimport { PaginationBackService } from './pagination-back.service';\n\n@Component({\n selector: 'ga-pagination-back',\n templateUrl: './pagination-back.component.html',\n styleUrls: ['./../pagination.component.scss'],\n})\nexport class PaginationBackComponent implements OnInit {\n /**\n * Set a new value inside the root pagination value in pagination's service.\n * @param value\n */\n @Input()\n set pagination(value: PaginationNavigation) {\n this.paginationService.pagination = value;\n }\n\n /**\n * Navigation properties set a page level\n */\n @Input() navigation: PaginationNavigationLight = {\n nbItemsPerPage: 10,\n canDisplayAll: false,\n };\n\n /**\n * Array of available pages.\n */\n arrayPagesDisplayed: Page[];\n\n @Output() paginationChanged: EventEmitter<{ resetLastItem: boolean }> = new EventEmitter<{\n resetLastItem: boolean;\n }>();\n\n /**\n * Selected value for the number of items displayed per page.\n * @todo: remove and use only the value inside the pagination\n */\n nbItemsPerPageSelected: number;\n\n constructor(private paginationService: PaginationBackService) {}\n\n ngOnInit(): void {\n this.initPagination();\n this.initPaginationSubscription();\n this.nbItemsPerPageSelected = this.paginationService.pagination.nbItemsPerPage;\n this.initArrayPagination();\n }\n\n /**\n * Initialize the pagination value.\n */\n private initPagination() {\n this.pagination = {\n currentPageIndex: 0,\n selectedPageIndex: 0,\n nbItemsPerPage: this.navigation.nbItemsPerPage,\n canDisplayAll: this.navigation.canDisplayAll,\n nbItems: 1,\n nbPages: 1,\n };\n }\n\n /**\n * Subscribe to the modification of the number of items.\n */\n private initPaginationSubscription() {\n this.paginationService.pagination$.subscribe({\n next: () => {\n this.onNbItemsChanged();\n },\n });\n }\n\n /**\n * Elements have changed. The array of available pages needs to be reset.\n */\n onNbItemsChanged() {\n this.initArrayPagination();\n this.changePaginationColor();\n }\n\n /**\n * Initialise the array of available pages (arrayPagination).\n */\n initArrayPagination() {\n this.arrayPagesDisplayed = [];\n\n for (let i = 0; i < this.paginationService.pagination.nbPages; i++) {\n this.arrayPagesDisplayed.push({\n page: i,\n usage: false,\n class: 'unused-button citron-color',\n display: false,\n displaySeparator: false,\n });\n }\n }\n\n /**\n * Update the pagination color of the selected page.\n * Set to white all the others.\n */\n changePaginationColor() {\n this.arrayPagesDisplayed.forEach(x => {\n const { selectedPageIndex, nbPages } = this.paginationService.pagination;\n const differenceWithCurrentIndex = Math.abs(x.page - selectedPageIndex);\n\n // We display the first and last item, plus the ones beside the active one\n x.display = x.page === 0 || x.page === nbPages - 1 || differenceWithCurrentIndex <= 1;\n\n // We display \"...\" beside the visible buttons\n x.displaySeparator = differenceWithCurrentIndex <= 2;\n\n // Set all other pages to unused\n if (x.page !== selectedPageIndex) {\n x.usage = false;\n x.class = 'unused-button citron-color';\n } else {\n x.usage = true;\n x.class = 'used-button citron-color citron-background-50';\n }\n });\n }\n\n /**\n * Called when a new range of items to display is selected (10 || 20 || Tous)\n * Select the first page.\n * Update the pagination array (compute new nb of pages available) & its colors\n * Emit an event to update the table.\n * @param {number|'Tous'} e - index of the range selected or \"Tous\"\n */\n onRangeSelected(e) {\n // update the range of items to display\n if (e.target.value === 'Tous') {\n this.paginationService.pagination.nbItemsPerPage = 0; // no limit\n } else {\n this.paginationService.pagination.nbItemsPerPage = Number(e.target.value);\n }\n\n // select the first page\n this.paginationService.pagination.selectedPageIndex = 0;\n this.paginationService.pagination.currentPageIndex = 0;\n\n // update the pagination array (compute new nb of pages available) & its colors\n this.initArrayPagination();\n this.changePaginationColor();\n\n this.paginationChanged.emit({ resetLastItem: true });\n }\n\n /**\n * Called when a new page is selected.\n * Update the selected page index + update the pagination array's colors.\n * Emit an event to update the table.\n * @param {number} index - index of the page selected\n */\n onIndexSelected(index: number) {\n if (this.paginationService.pagination.currentPageIndex !== index) {\n this.paginationService.pagination.selectedPageIndex = index;\n this.changePaginationColor();\n this.paginationChanged.emit();\n }\n }\n\n /**\n * @returns {boolean} true when \"All\" option is available\n */\n canDisplayAll() {\n return this.paginationService.pagination.canDisplayAll;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n PaginationItem,\n PaginationNavigation,\n PaginationUser,\n QueryPagination,\n QueryPaginationUser,\n} from 'app/shared/models/pagination.interface';\nimport { QuerySort } from 'app/shared/models/pagination.interface';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class PaginationBackService {\n /**\n * Pagination element holding the last version, used by component pagination-back and the pages using it.\n */\n private _pagination: PaginationNavigation;\n private _defaultSortAsc = true;\n private _sort = {\n asc: false,\n field: 'dates.billDate',\n };\n\n /**\n * Getters and setters used by component pagination-back\n */\n get pagination() {\n return this._pagination;\n }\n set pagination(value: PaginationNavigation) {\n this._pagination = value;\n }\n\n get defaultSortAsc() {\n return this._defaultSortAsc;\n }\n set defaultSortAsc(value: boolean) {\n this._defaultSortAsc = value;\n }\n\n get sort() {\n return this._sort;\n }\n set sort(value: QuerySort) {\n this._sort = value;\n }\n\n /**\n * Behavior subject: emits an event when the number of input items is changed.\n */\n private paginationChanged: BehaviorSubject = new BehaviorSubject(\n this.pagination\n );\n public get pagination$(): Observable {\n return this.paginationChanged.asObservable();\n }\n\n /**\n * Update pagination when input items have changed.\n * - Update the new number of items\n * - Compute the number of pages.\n * - Update the current page.\n * Emits an event in order to reload the pagination component.\n * @param {number} newItemsNb updated number of input elements (in the overall pages)\n */\n updateAfterSearch(newItemsNb: number): void {\n this.pagination.nbItems = newItemsNb;\n this.pagination.nbPages = this.pagination.nbItemsPerPage\n ? Math.ceil(this.pagination.nbItems / this.pagination.nbItemsPerPage)\n : 1;\n\n this.pagination.currentPageIndex = this.pagination.selectedPageIndex; // current page must be set before reloading\n\n this.paginationChanged.next(this.pagination); // emit an event to reload the pagination component\n }\n\n /**\n * Update the current last item.\n * @param {PaginationItem} lastItem to update\n * @param {any[]} elements elements displayed respecting the pagination\n */\n updateLastItem(lastItem: PaginationItem, elements: any[]) {\n lastItem._id = elements.length ? elements[elements.length - 1]._id : null;\n lastItem.index = elements.length ? elements.length - 1 : 0;\n }\n\n /**\n * Reset pagination for an empty array of items and set current page on first one.\n */\n emptyPagination(): void {\n this.updateAfterSearch(0);\n }\n\n /**\n * Create and return the pagination query from its values.\n * This specific format is expected by API routes using back pagination.\n * @param {PaginationItem} lastItem\n * @return {QueryPagination} query\n */\n getPaginationQuery(lastItem: PaginationItem): QueryPagination {\n return {\n limit: this.pagination.nbItemsPerPage,\n lastItemId: lastItem._id,\n lastItemIndex: lastItem.index,\n currentPageIndex: this.pagination.currentPageIndex,\n selectedPageIndex: this.pagination.selectedPageIndex,\n };\n }\n\n /**\n * Set pagination to first page. Reset last item.\n * @param {PaginationItem} lastItem item\n */\n setFirstPage(): void {\n this.pagination.currentPageIndex = 0;\n this.pagination.selectedPageIndex = 0;\n }\n\n /**\n * SORT\n */\n\n /**\n * Handle sort: selected column and order (asc/desc).\n * Clicking on the current column selected reverses the sort (asc/desc).\n * Clicking on another column sorts the table with the default direction\n * @param {string} header column header selected for sort\n * @param {QuerySort} sort sort element to update from user action\n */\n onSort(header: string): void {\n if (this.sort.field !== header) {\n this.sort.asc = this.defaultSortAsc; // if change of column, reset default sort direction\n this.sort.field = header;\n } else {\n this.sort.asc = !this.sort.asc;\n }\n }\n\n /**\n * Update the sort caret class depending on the user action.\n * @param {string} header\n * @returns {string[]} css classes\n */\n getClassesSort(header: string): string[] {\n const classes = ['fa', 'hover-color'];\n\n let icon = 'fa-sort';\n if (this.sort.field === header) {\n icon = this.sort.asc === this.defaultSortAsc ? 'fa-caret-down' : 'fa-caret-up';\n }\n\n classes.push(icon);\n return classes;\n }\n\n /**\n * -------- SPECIFIC FOR USER -------- \n * To refacto later with generic\n */\n\n /**\n * Create and return the pagination query from its values.\n * This specific format is expected by API routes using back pagination.\n * @param {PaginationUser} lastItem\n * @return {QueryPaginationUser} query\n */\n getPaginationQueryUser(lastItem: PaginationUser): QueryPaginationUser {\n return {\n lastUserName: lastItem.name,\n lastUserIndex: lastItem.index,\n currentPageIndex: this.pagination.currentPageIndex,\n selectedPageIndex: this.pagination.selectedPageIndex,\n nbItemsPerPage: this.pagination.nbItemsPerPage,\n };\n }\n\n /**\n * Update the current last user item\n * @param {any[]} elements elements having an _id\n */\n updateLastUser(lastItem: PaginationUser, elements: any[]) {\n if (elements.length === 0) {\n lastItem.name = null;\n lastItem.index = 0;\n } else {\n lastItem.name = elements[elements.length - 1].name;\n lastItem.index = elements.length - 1;\n }\n }\n\n /**\n * Set pagination to first page. Reset last item.\n * @param {PaginationUser} lastItem\n */\n setFirstPageUser(lastItem: PaginationUser): void {\n this.pagination.currentPageIndex = 0;\n this.pagination.selectedPageIndex = 0;\n lastItem = { name: null, index: 0 };\n }\n}\n","import { Component, DoCheck, EventEmitter, Input, IterableDiffers, OnInit, Output } from '@angular/core';\n\nimport { Page, PaginationConfig, PaginationIndexes } from '../pagination.interface';\nimport { PaginationService } from './pagination-front.service';\n\n@Component({\n selector: 'ga-pagination',\n templateUrl: './pagination-front.component.html',\n styleUrls: ['./../pagination.component.scss'],\n})\nexport class PaginationComponent implements OnInit, DoCheck {\n /**\n * Maximum number of elements to display on a page\n */\n @Input() paginationRange = 5;\n\n /**\n * Boolean to detemine if the option \"see all\" is available\n */\n @Input() canDisplayAll = false;\n\n /**\n * Elements to display in the table\n */\n @Input() elements: any[] = [];\n\n /**\n * Event to be emitted when pagination has changed.\n */\n @Output() paginationChanged: EventEmitter = new EventEmitter(true);\n\n differ: any;\n\n constructor(differs: IterableDiffers, private paginationService: PaginationService) {\n this.differ = differs.find([]).create(null);\n }\n\n ngOnInit(): void {\n this.paginationService.pagination.range = this.paginationRange;\n this.paginationService.pagination.canDisplayAll = this.canDisplayAll;\n this.initPaginationArray();\n }\n\n ngDoCheck(): void {\n const change = this.differ.diff(this.elements);\n if (change) {\n this.initPaginationArray();\n }\n }\n\n /**\n * Create pagination array from selected page & range\n */\n private initPaginationArray(): void {\n this.paginationService.pagesArray = [];\n\n // if 'all' is selected\n if (this.paginationService.pagination.range === 0) {\n this.paginationService.pagination.indexEnd = this.elements.length - 1;\n this.paginationService.pagination.countPages = 1;\n } else {\n this.paginationService.pagination.indexEnd = this.paginationService.pagination.range - 1;\n this.paginationService.pagination.countPages = Math.ceil(\n this.elements.length / this.paginationService.pagination.range\n );\n this.paginationService.pagination.countPages = this.paginationService.pagination.countPages || 1;\n }\n\n // fill the pagination array\n for (let i = 0; i < this.paginationService.pagination.countPages; i++) {\n this.paginationService.pagesArray.push({\n page: i + 1,\n usage: false,\n class: 'unused-button',\n display: true,\n displaySeparator: false,\n });\n }\n\n this.updatePaginationArray();\n }\n\n /**\n * Update the pagination array and the current elements indexes to display\n */\n private updatePaginationArray(): void {\n // If the page exists and isn't already selected\n if (\n this.paginationService.pagesArray &&\n this.paginationService.pagesArray[this.paginationService.pagination.currentPage - 1] &&\n this.paginationService.pagesArray[this.paginationService.pagination.currentPage - 1].usage !== true\n ) {\n this.paginationService.pagesArray.forEach(x => {\n const { currentPage, countPages } = this.paginationService.pagination;\n const differenceWithCurrentIndex = Math.abs(x.page - currentPage);\n // We display the first and last item, plus the ones beside the active one\n x.display = x.display = x.page === 1 || x.page === countPages || differenceWithCurrentIndex <= 1;\n\n // We display \"...\" beside the visible buttons\n x.displaySeparator = differenceWithCurrentIndex <= 2;\n\n // Set all other pages to unused\n if (x.page !== currentPage) {\n x.usage = false;\n x.class = 'unused-button';\n } else {\n // Calculate start and end indexes\n // Set used page\n x.usage = true;\n this.paginationService.pagination.indexStart =\n (x.page - 1) * this.paginationService.pagination.range;\n // if all is selected, range is 0\n this.paginationService.pagination.indexEnd = this.paginationService.pagination.range\n ? this.paginationService.pagination.indexStart + this.paginationService.pagination.range - 1\n : this.elements.length - 1;\n x.class = 'used-button citron-background-50';\n\n this.paginationChanged.emit({\n indexStart: this.paginationService.pagination.indexStart,\n indexEnd: this.paginationService.pagination.indexEnd,\n });\n }\n });\n } else {\n // if files were removed the page might have been deleted\n this.paginationService.pagination.currentPage = 1;\n this.updatePaginationArray();\n }\n }\n\n /**\n * Set a new page index and update pagination accordingly\n * @param {number} pageNumber\n */\n public selectPage(pageNumber: number): void {\n if (this.paginationService.pagination.currentPage !== pageNumber) {\n this.paginationService.pagination.currentPage = pageNumber;\n this.updatePaginationArray();\n }\n }\n\n /**\n * Update pagination range and update pagination accordingly\n * @param {string} range\n */\n public updatePaginationRange(range: string): void {\n this.paginationService.pagination.range = Number(range);\n this.paginationService.pagination.currentPage = 1;\n this.initPaginationArray();\n }\n\n /**\n * Return the current pagination array\n */\n get pagesArray(): Page[] {\n return this.paginationService.pagesArray;\n }\n\n get pagination(): PaginationConfig {\n return this.paginationService.pagination;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { QuerySort } from 'app/shared/models/pagination.interface';\nimport { Page, PaginationConfig, PaginationIndexes } from '../pagination.interface';\n\n@Injectable()\nexport class PaginationService {\n /** Pages array */\n public pagesArray: Page[] = [];\n\n /** Pagination configuration */\n public pagination: PaginationConfig = {\n indexStart: 0,\n indexEnd: 9,\n range: 10,\n currentPage: 1,\n countPages: 0,\n defaultSortAsc: true,\n canDisplayAll: false,\n };\n\n /** Sort fields elements */\n public sort: QuerySort = {\n asc: true,\n field: 'routingReference',\n };\n\n /**\n * Update pagination with new selected values\n */\n public updatePagination(newPagination: PaginationIndexes) {\n this.pagination.indexStart = newPagination.indexStart;\n this.pagination.indexEnd = newPagination.indexEnd;\n }\n\n /**\n * Update the sort caret class depending on the user action.\n */\n public getClassesSort(header: string): string[] {\n const classes = ['fa', 'hover-color'];\n\n let icon = 'fa-sort';\n if (this.sort.field === header) {\n icon = this.sort.asc === this.pagination.defaultSortAsc ? 'fa-caret-down' : 'fa-caret-up';\n }\n\n classes.push(icon);\n return classes;\n }\n\n /**\n * Update sort header and direction depending on selection\n */\n public updateSort(newHeader: string): void {\n if (this.sort.field === newHeader) {\n this.sort.asc = !this.sort.asc;\n } else {\n this.sort.field = newHeader;\n }\n }\n\n /**\n * Set pagination indexes on first page\n */\n public setFirstPage(): void {\n this.pagination.indexStart = 0;\n this.pagination.indexEnd = this.pagination.range - 1;\n this.pagination.currentPage = 1;\n }\n}\n","export default \".pagination-bloc {\\n display: -webkit-box;\\n display: flex;\\n}\\n.pagination-bloc .pagination-select {\\n font-size: 12px;\\n margin: 5px;\\n line-height: 25px;\\n}\\n.pagination-bloc .pagination-button {\\n cursor: pointer;\\n display: -webkit-box;\\n display: flex;\\n margin: 0.5rem;\\n font-size: 12px;\\n width: 2em;\\n height: 2em;\\n -webkit-box-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n align-items: center;\\n border-radius: 50%;\\n -webkit-transition: all 0.3s ease;\\n transition: all 0.3s ease;\\n}\\n.pagination-bloc .used-button {\\n font-size: 15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0FDREo7QURHSTtFQUNJLGVBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7QUNEUjtBRElJO0VBQ0ksZUFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGNBQUE7RUFDQSxlQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUNBQUE7RUFBQSx5QkFBQTtBQ0ZSO0FES0k7RUFDSSxlQUFBO0FDSFIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4ucGFnaW5hdGlvbi1ibG9jIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgLnBhZ2luYXRpb24tc2VsZWN0IHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBtYXJnaW46IDVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDI1cHg7XG4gICAgfVxuXG4gICAgLnBhZ2luYXRpb24tYnV0dG9uIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXJnaW46IDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICB9XG5cbiAgICAudXNlZC1idXR0b24ge1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgfVxufVxuIiwiLnBhZ2luYXRpb24tYmxvYyB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4ucGFnaW5hdGlvbi1ibG9jIC5wYWdpbmF0aW9uLXNlbGVjdCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbWFyZ2luOiA1cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xufVxuLnBhZ2luYXRpb24tYmxvYyAucGFnaW5hdGlvbi1idXR0b24ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbjogMC41cmVtO1xuICBmb250LXNpemU6IDEycHg7XG4gIHdpZHRoOiAyZW07XG4gIGhlaWdodDogMmVtO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuLnBhZ2luYXRpb24tYmxvYyAudXNlZC1idXR0b24ge1xuICBmb250LXNpemU6IDE1cHg7XG59Il19 */\"","export default \".disabled-input {\\n cursor: not-allowed;\\n}\\n\\n.citron-pdl-data-table {\\n width: 100%;\\n}\\n\\n.citron-pdl-data-table .search {\\n display: -webkit-box;\\n display: flex;\\n}\\n\\n.citron-pdl-data-table .search .search-icon {\\n height: 20px;\\n width: 20px;\\n position: absolute;\\n right: 230px;\\n top: 18px;\\n bottom: 20px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n background-color: grey;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n}\\n\\n.citron-pdl-data-table .search input {\\n height: 30px;\\n position: absolute;\\n right: 25px;\\n top: 13px;\\n width: 200px;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-left: auto;\\n}\\n\\ntable {\\n width: 100%;\\n background-color: white;\\n}\\n\\ntable .red {\\n background-color: rgba(203, 25, 0, 0.1);\\n}\\n\\ntable td {\\n border-bottom: 1px solid #e8e8e8;\\n width: 12%;\\n font-size: 12px;\\n padding-left: 8px;\\n padding-right: 8px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n word-wrap: break-word;\\n}\\n\\ntable td select {\\n font-size: 12px;\\n height: 33px;\\n max-width: 100%;\\n}\\n\\n.header {\\n width: 100%;\\n background-color: #f3f3f3;\\n border-top: 1px solid #bcbcbc;\\n border-bottom: 1px solid #bcbcbc;\\n font-size: 12px;\\n}\\n\\n.header td {\\n text-align: left;\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\n\\ntbody {\\n display: block;\\n}\\n\\ntbody .line {\\n width: 100%;\\n border-bottom: 1px solid #bcbcbc;\\n cursor: pointer;\\n}\\n\\ntbody .line td {\\n height: auto;\\n font-size: 12px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\n\\ntbody .line:hover,\\ntbody .checked {\\n background-color: #3189c4;\\n}\\n\\ntbody .line:hover td,\\ntbody .checked td {\\n color: white;\\n}\\n\\nthead,\\ntbody tr {\\n display: table;\\n width: 100%;\\n table-layout: fixed;\\n}\\n\\n.order-icon {\\n display: inline-block;\\n font-size: 14px;\\n position: relative;\\n margin-left: 20px;\\n top: 1px;\\n}\\n\\n.order-desc {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.order-asc {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n\\n.add {\\n padding: 15px;\\n}\\n\\n.add strong {\\n margin-right: 15px;\\n}\\n\\n.select {\\n width: 100%;\\n font-size: 12px;\\n}\\n\\n.select .option {\\n position: absolute;\\n height: 100px;\\n width: 50%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BhdHRlcm4tZml4L3BhdHRlcm4tZml4LXRhYmxlL3BhdHRlcm4tZml4LXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9wYXR0ZXJuLWZpeC9wYXR0ZXJuLWZpeC10YWJsZS9wYXR0ZXJuLWZpeC10YWJsZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG1CQUFBO0FDQ0o7O0FERUE7RUFDSSxXQUFBO0FDQ0o7O0FEQUk7RUFDSSxvQkFBQTtFQUFBLGFBQUE7QUNFUjs7QUREUTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esa0VBQUE7VUFBQSwwREFBQTtFQUNBLHNCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUNBLHdCQUFBO1VBQUEsZ0JBQUE7QUNHWjs7QUREUTtFQUNJLFlBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxTQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxpQkFBQTtBQ0daOztBREVBO0VBQ0ksV0FBQTtFQUNBLHVCQUFBO0FDQ0o7O0FEQUk7RUFDSSx1Q0FBQTtBQ0VSOztBREFJO0VBQ0ksZ0NBQUE7RUFDQSxVQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EscUJBQUE7QUNFUjs7QUREUTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBQ0daOztBREVBO0VBQ0ksV0FBQTtFQUNBLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSxnQ0FBQTtFQUNBLGVBQUE7QUNDSjs7QURBSTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QUNFUjs7QURFQTtFQUNJLGNBQUE7QUNDSjs7QURBSTtFQUNJLFdBQUE7RUFDQSxnQ0FBQTtFQUNBLGVBQUE7QUNFUjs7QUREUTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0daOztBREFJOztFQUVJLHlCQUFBO0FDRVI7O0FERFE7O0VBQ0ksWUFBQTtBQ0laOztBRENBOztFQUVJLGNBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7QUNFSjs7QURDQTtFQUNJLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxRQUFBO0FDRUo7O0FEQ0E7RUFDSSxnQ0FBQTtVQUFBLHdCQUFBO0FDRUo7O0FEQ0E7RUFDSSxpQ0FBQTtVQUFBLHlCQUFBO0FDRUo7O0FEQUE7RUFDSSxhQUFBO0FDR0o7O0FERkk7RUFDSSxrQkFBQTtBQ0lSOztBRERBO0VBQ0ksV0FBQTtFQUNBLGVBQUE7QUNJSjs7QURISTtFQUNJLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLFVBQUE7QUNLUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BhdHRlcm4tZml4L3BhdHRlcm4tZml4LXRhYmxlL3BhdHRlcm4tZml4LXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmRpc2FibGVkLWlucHV0IHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAuc2VhcmNoIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgLnNlYXJjaC1pY29uIHtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDIzMHB4O1xuICAgICAgICAgICAgdG9wOiAxOHB4O1xuICAgICAgICAgICAgYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19zZWFyY2guc3ZnJyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogY292ZXI7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDI1cHg7XG4gICAgICAgICAgICB0b3A6IDEzcHg7XG4gICAgICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxufVxuXG50YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgLnJlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjAzLCAyNSwgMCwgMC4xKTtcbiAgICB9XG4gICAgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U4ZThlODtcbiAgICAgICAgd2lkdGg6IDEyJTtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmhlYWRlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2JjYmNiYztcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgdGQge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICB9XG59XG5cbnRib2R5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICAubGluZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5saW5lOmhvdmVyLFxuICAgIC5jaGVja2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMxODljNDtcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG50aGVhZCxcbnRib2R5IHRyIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xufVxuXG4ub3JkZXItaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgdG9wOiAxcHg7XG59XG5cbi5vcmRlci1kZXNjIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi5vcmRlci1hc2Mge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG4uYWRkIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIHN0cm9uZyB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICB9XG59XG4uc2VsZWN0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgLm9wdGlvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG59XG4iLCIuZGlzYWJsZWQtaW5wdXQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIC5zZWFyY2gge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS10YWJsZSAuc2VhcmNoIC5zZWFyY2gtaWNvbiB7XG4gIGhlaWdodDogMjBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDIzMHB4O1xuICB0b3A6IDE4cHg7XG4gIGJvdHRvbTogMjBweDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3NlYXJjaC5zdmdcIik7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIC5zZWFyY2ggaW5wdXQge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDI1cHg7XG4gIHRvcDogMTNweDtcbiAgd2lkdGg6IDIwMHB4O1xuICBtYXJnaW4tdG9wOiBhdXRvO1xuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cblxudGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG50YWJsZSAucmVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMDMsIDI1LCAwLCAwLjEpO1xufVxudGFibGUgdGQge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U4ZThlODtcbiAgd2lkdGg6IDEyJTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbn1cbnRhYmxlIHRkIHNlbGVjdCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgaGVpZ2h0OiAzM3B4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5oZWFkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNiY2JjYmM7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmNiY2JjO1xuICBmb250LXNpemU6IDEycHg7XG59XG4uaGVhZGVyIHRkIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG59XG5cbnRib2R5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG50Ym9keSAubGluZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxudGJvZHkgLmxpbmUgdGQge1xuICBoZWlnaHQ6IGF1dG87XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxudGJvZHkgLmxpbmU6aG92ZXIsXG50Ym9keSAuY2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTg5YzQ7XG59XG50Ym9keSAubGluZTpob3ZlciB0ZCxcbnRib2R5IC5jaGVja2VkIHRkIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG50aGVhZCxcbnRib2R5IHRyIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xufVxuXG4ub3JkZXItaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICB0b3A6IDFweDtcbn1cblxuLm9yZGVyLWRlc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi5vcmRlci1hc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4uYWRkIHtcbiAgcGFkZGluZzogMTVweDtcbn1cbi5hZGQgc3Ryb25nIHtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxuXG4uc2VsZWN0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5zZWxlY3QgLm9wdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgd2lkdGg6IDUwJTtcbn0iXX0= */\"","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApiService } from 'app/shared/services/api/api.service';\nimport { UploadService } from 'app/shared/services/files/upload.service';\nimport { RegexService } from 'app/shared/services/regex/regex.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-pattern-fix-table',\n templateUrl: './pattern-fix-table.component.html',\n styleUrls: ['./pattern-fix-table.component.scss'],\n providers: [ApiService],\n})\nexport class PatternFixTableComponent {\n @Input() dataArray: any;\n @Output() updatePattern: EventEmitter = new EventEmitter();\n @Output() createPattern: EventEmitter = new EventEmitter();\n\n selectedValue: string;\n modification: any[] = [];\n resetState: any[] = [];\n otherRegexOptions: any[] = [];\n\n constructor(private regexService: RegexService, private uploadService: UploadService) {}\n\n updatePatternClicked(fileProperties) {\n if (!this.hasWrongPattern() && !this.hasLoadingPattern()) {\n this.updateClosestPatternRecursively(\n fileProperties.newRegex,\n fileProperties.propertyToWatch,\n fileProperties.closestPattern\n );\n this.updatePattern.emit(fileProperties);\n this.resetButtonsAndColumns();\n } else {\n Swal.fire('Impossible', 'Un regex est en erreur ou en cours de recherche.', 'error');\n }\n }\n\n createNewPattern(fileProperties) {\n if (!this.hasWrongPattern() && !this.hasLoadingPattern()) {\n this.updateClosestPatternRecursively(\n fileProperties.newRegex,\n fileProperties.propertyToWatch,\n fileProperties.closestPattern\n );\n this.createPattern.emit(fileProperties);\n this.resetButtonsAndColumns();\n } else {\n Swal.fire('Impossible', 'Un regex est en erreur ou en cours de recherche.', 'error');\n }\n }\n\n updateClosestPatternRecursively(regex, rightPartToExplore, currentPointer) {\n // need to go furher inside property\n // 1. rackingFee.HC.dateStart\n // 2. HC.dateStart\n // 3. dateStart\n if (rightPartToExplore.indexOf('.') !== -1) {\n // go 1 step further\n // 1. turpe -> turpe.rackingFee\n // 2. turpe.rackingFee -> turpe.rackingFee.HC\n const firstElement = rightPartToExplore.split('.')[0];\n if (!currentPointer[firstElement]) {\n currentPointer[firstElement] = {};\n }\n currentPointer = currentPointer[firstElement];\n\n // 1. rackingFee.HC.dateStart -> HC.dateStart\n // 2. HC.dateStart -> dateStart\n rightPartToExplore = rightPartToExplore.substring(rightPartToExplore.split('.')[0].length + 1);\n\n return this.updateClosestPatternRecursively(regex, rightPartToExplore, currentPointer);\n }\n\n // 3. closestPattern[turpe.rackingFee.HC.dateStart] is set to regex value\n currentPointer[rightPartToExplore] = regex;\n }\n\n onResetBtn(fileProperties) {\n Swal.fire({\n title: 'Etes-vous sûr ?',\n text: 'Voulez-vous réinitialiser le regex initial ?',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Réinitialiser',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n }).then(result => {\n if (result.value) {\n this.resetLine(fileProperties);\n }\n });\n }\n\n resetLine(fileProperties) {\n // onResetBtn the colum 'potential values' for that pattern\n this.dataArray.fileProperties.forEach(file => {\n if (file.patternId.toString() === fileProperties.patternId.toString()) {\n file.potentialValueExtract = '';\n }\n });\n fileProperties.oldRegex = fileProperties.regex;\n fileProperties.option = 'Selectionnez un regex';\n fileProperties.potentialValueExtract = '';\n this.modification[fileProperties.number - 1] = false;\n this.resetState[fileProperties.number - 1] = false;\n fileProperties.valueExtract = '';\n this.applyRegexToText(fileProperties, fileProperties.regex).then(val => {\n fileProperties.valueExtract = val;\n });\n }\n\n async openFileInTab(fileId) {\n try {\n await this.uploadService.openFileInTab(fileId);\n } catch (e) {\n Swal.fire(\n 'Toutes nos excuses',\n 'Le fichier est inaccessible pour le moment. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n }\n }\n\n onRegexChanged(fileProperty, regex, target) {\n // If regex came from input\n if (target === 'input') {\n fileProperty.option = 'Selectionnez un regex';\n this.updateValuesFromRegex(fileProperty, regex);\n } else {\n // If regex came from selectbox\n if (regex === 'Selectionnez un regex') {\n this.resetLine(fileProperty);\n } else {\n if (regex.indexOf(' -->') !== -1) {\n regex = regex.substr(regex.indexOf(' -->') + 5);\n }\n fileProperty.oldRegex = regex;\n this.updateValuesFromRegex(fileProperty, regex);\n }\n }\n }\n\n updateValuesFromRegex(fileProperty, regex) {\n fileProperty.loading = true;\n this.applyRegexToText(fileProperty, regex).then(val => {\n fileProperty.valueExtract = val;\n fileProperty.newRegex = regex;\n fileProperty.loading = false;\n this.resetState[fileProperty.number - 1] = true;\n this.modification[fileProperty.number - 1] = true;\n this.dataArray.fileProperties.forEach(file => {\n if (\n file.patternId.toString() === fileProperty.patternId.toString() &&\n file.number !== fileProperty.number\n ) {\n file.loading = true;\n this.applyRegexToText(file, regex).then(val2 => {\n file.potentialValueExtract = val2;\n file.loading = false;\n });\n }\n });\n });\n }\n\n testRegex(text, regex) {\n return this.regexService.testRegex(text, regex);\n }\n\n applyRegexToText(file, regex) {\n const textContent = file.textContent;\n return this.testRegex(textContent, regex)\n .then(extractedValuesArray => {\n let listValues = '';\n extractedValuesArray.forEach(value => {\n listValues = listValues.concat('[' + value + '] ');\n });\n file.error = false;\n return listValues;\n })\n .catch(err => {\n file.error = true;\n return 'Error : ' + err.errorCode;\n });\n }\n // Update on focus, can't calculate all live, as it take too much time with the workers\n updateDictOptions(fileProperty) {\n this.otherRegexOptions = [];\n this.dataArray.regexDictionaryPerIdentPattern[fileProperty.identificationPatternId].forEach(regex => {\n const option = { regex, value: 'Recherche...' };\n this.otherRegexOptions.push(option);\n this.getDictionaryOption(fileProperty, regex).then(valueToDisplay => {\n option.value = valueToDisplay;\n });\n });\n }\n\n getDictionaryOption(fileProperty, regex) {\n return this.applyRegexToText(fileProperty, regex).then(extractedValue => {\n // if the extracted valueis null -> shoudn't display 'null'\n const valueToDisplay = !extractedValue ? '' : extractedValue + ' --> ';\n\n // the first option is an empty regex, shouldn't display anything\n return valueToDisplay + regex;\n });\n }\n\n resetButtonsAndColumns() {\n this.modification = [];\n this.resetState = [];\n this.dataArray.fileProperties.forEach(file => {\n file.potentialValueExtract = '';\n });\n }\n\n getValueExtract(property) {\n if (property) {\n if (property.loading) {\n return 'Recherche...';\n }\n return property.valueExtract;\n }\n return '';\n }\n\n getPotentialValueExtract(property) {\n if (property) {\n if (property.loading && this.modification.some(x => x)) {\n return 'Recherche...';\n }\n return property.potentialValueExtract;\n }\n return '';\n }\n\n hasWrongPattern() {\n let isWrong = false;\n isWrong = isWrong || this.dataArray.fileProperties.some(x => x.error === true);\n return isWrong;\n }\n\n hasLoadingPattern() {\n let isLoading = false;\n isLoading = isLoading || this.dataArray.fileProperties.some(x => x.loading === true);\n return isLoading;\n }\n\n getPropertyLink(fileProperty) {\n if (fileProperty.chunk) {\n return ['/collecte/regex/upload', fileProperty._id, fileProperty.chunk];\n }\n return ['/collecte/regex/upload', fileProperty._id];\n }\n\n isPatternEnabled(fileProperty): boolean {\n if (fileProperty.closestPattern && typeof fileProperty.closestPattern.enabled === 'boolean') {\n return fileProperty.closestPattern.enabled;\n }\n\n return true;\n }\n}\n","export default \".citron-pdl-data-table {\\n width: 100%;\\n}\\n.citron-pdl-data-table .search-icon {\\n height: 12px;\\n background-color: black;\\n display: inline-block;\\n}\\ntable {\\n width: 100%;\\n background-color: white;\\n}\\ntable button {\\n font-size: 15px;\\n height: 29px;\\n}\\ntable .red {\\n background-color: rgba(203, 25, 0, 0.1);\\n}\\ntable .blue {\\n background-color: rgba(143, 195, 230, 0.2);\\n}\\ntable td {\\n border-bottom: 1px solid #e8e8e8;\\n width: 20%;\\n font-size: 12px;\\n padding-left: 8px;\\n padding-right: 8px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n overflow-wrap: break-word;\\n}\\ntable td select {\\n font-size: 12px;\\n height: 33px;\\n}\\ntable thead .regex {\\n width: 200px;\\n}\\n.header {\\n width: 100%;\\n background-color: #f3f3f3;\\n border-top: 1px solid #bcbcbc;\\n border-bottom: 1px solid #bcbcbc;\\n font-size: 12px;\\n}\\n.header td {\\n text-align: left;\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\ntbody {\\n display: block;\\n}\\ntbody .line {\\n width: 100%;\\n border-bottom: 1px solid #bcbcbc;\\n cursor: pointer;\\n}\\ntbody .line td {\\n height: auto;\\n font-size: 12px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\ntbody .line td input {\\n font-size: 12px;\\n}\\ntbody .line td .input-wrap {\\n position: relative;\\n}\\ntbody .line td .input-wrap .edit-icon-fa {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n width: 40px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n color: white;\\n background-color: #3189c4;\\n border-radius: 0.25rem;\\n}\\ntbody .line td .input-wrap .edit-icon-fa:hover, tbody .line td .input-wrap .edit-icon-fa:focus, tbody .line td .input-wrap .edit-icon-fa:active {\\n background-color: #8fc3e6;\\n}\\ntbody .line:hover,\\ntbody .checked {\\n background-color: #3189c4;\\n}\\ntbody .line:hover td,\\ntbody .checked td {\\n color: white;\\n}\\nthead,\\ntbody tr {\\n display: table;\\n width: 100%;\\n table-layout: fixed;\\n}\\n.order-icon {\\n display: inline-block;\\n font-size: 14px;\\n position: relative;\\n margin-left: 20px;\\n top: 1px;\\n}\\n.order-desc {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n.order-asc {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BhdHRlcm4tZml4L3VwbG9hZC1maXgtdGFibGUvdXBsb2FkLWZpeC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGF0dGVybi1maXgvdXBsb2FkLWZpeC10YWJsZS91cGxvYWQtZml4LXRhYmxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksV0FBQTtBQ0NKO0FEQUk7RUFDSSxZQUFBO0VBQ0EsdUJBQUE7RUFDQSxxQkFBQTtBQ0VSO0FERUE7RUFDSSxXQUFBO0VBQ0EsdUJBQUE7QUNDSjtBREFJO0VBQ0ksZUFBQTtFQUNBLFlBQUE7QUNFUjtBREFJO0VBQ0ksdUNBQUE7QUNFUjtBREFJO0VBQ0ksMENBQUE7QUNFUjtBREFJO0VBQ0ksZ0NBQUE7RUFDQSxVQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EseUJBQUE7QUNFUjtBREFRO0VBQ0ksZUFBQTtFQUNBLFlBQUE7QUNFWjtBREVRO0VBQ0ksWUFBQTtBQ0FaO0FES0E7RUFDSSxXQUFBO0VBQ0EseUJBQUE7RUFDQSw2QkFBQTtFQUNBLGdDQUFBO0VBQ0EsZUFBQTtBQ0ZKO0FER0k7RUFDSSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0FDRFI7QURLQTtFQUNJLGNBQUE7QUNGSjtBREdJO0VBQ0ksV0FBQTtFQUNBLGdDQUFBO0VBQ0EsZUFBQTtBQ0RSO0FERVE7RUFDSSxZQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QUNBWjtBRENZO0VBQ0ksZUFBQTtBQ0NoQjtBRENZO0VBQ0ksa0JBQUE7QUNDaEI7QURDZ0I7RUFDSSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLFdBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtFQUNBLFlBQUE7RUFDQSx5QkFBQTtFQUNBLHNCQUFBO0FDQ3BCO0FEQ29CO0VBR0kseUJBQUE7QUNEeEI7QURPSTs7RUFFSSx5QkFBQTtBQ0xSO0FETVE7O0VBQ0ksWUFBQTtBQ0haO0FEUUE7O0VBRUksY0FBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtBQ0xKO0FEUUE7RUFDSSxxQkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsUUFBQTtBQ0xKO0FEUUE7RUFDSSxnQ0FBQTtVQUFBLHdCQUFBO0FDTEo7QURRQTtFQUNJLGlDQUFBO1VBQUEseUJBQUE7QUNMSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BhdHRlcm4tZml4L3VwbG9hZC1maXgtdGFibGUvdXBsb2FkLWZpeC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaXRyb24tcGRsLWRhdGEtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5zZWFyY2gtaWNvbiB7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG59XG5cbnRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBidXR0b24ge1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIGhlaWdodDogMjlweDtcbiAgICB9XG4gICAgLnJlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjAzLCAyNSwgMCwgMC4xKTtcbiAgICB9XG4gICAgLmJsdWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE0MywgMTk1LCAyMzAsIDAuMik7XG4gICAgfVxuICAgIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOGU4ZTg7XG4gICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDMzcHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhlYWQge1xuICAgICAgICAucmVnZXgge1xuICAgICAgICAgICAgd2lkdGg6IDIwMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaGVhZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYmNiY2JjO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmNiY2JjO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZCB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgIH1cbn1cblxudGJvZHkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIC5saW5lIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmNiY2JjO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmlucHV0LXdyYXAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgIC5lZGl0LWljb24tZmEge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTg5YzQ7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG5cbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgICAgICAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzhmYzNlNjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubGluZTpob3ZlcixcbiAgICAuY2hlY2tlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTg5YzQ7XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxudGhlYWQsXG50Ym9keSB0ciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cblxuLm9yZGVyLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgIHRvcDogMXB4O1xufVxuXG4ub3JkZXItZGVzYyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4ub3JkZXItYXNjIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuIiwiLmNpdHJvbi1wZGwtZGF0YS10YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10YWJsZSAuc2VhcmNoLWljb24ge1xuICBoZWlnaHQ6IDEycHg7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbnRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxudGFibGUgYnV0dG9uIHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBoZWlnaHQ6IDI5cHg7XG59XG50YWJsZSAucmVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMDMsIDI1LCAwLCAwLjEpO1xufVxudGFibGUgLmJsdWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE0MywgMTk1LCAyMzAsIDAuMik7XG59XG50YWJsZSB0ZCB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xuICB3aWR0aDogMjAlO1xuICBmb250LXNpemU6IDEycHg7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbn1cbnRhYmxlIHRkIHNlbGVjdCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgaGVpZ2h0OiAzM3B4O1xufVxudGFibGUgdGhlYWQgLnJlZ2V4IHtcbiAgd2lkdGg6IDIwMHB4O1xufVxuXG4uaGVhZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYmNiY2JjO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmhlYWRlciB0ZCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGhlaWdodDogYXV0bztcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuXG50Ym9keSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxudGJvZHkgLmxpbmUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbnRib2R5IC5saW5lIHRkIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBmb250LXNpemU6IDEycHg7XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cbnRib2R5IC5saW5lIHRkIGlucHV0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxudGJvZHkgLmxpbmUgdGQgLmlucHV0LXdyYXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG50Ym9keSAubGluZSB0ZCAuaW5wdXQtd3JhcCAuZWRpdC1pY29uLWZhIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiA0MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxudGJvZHkgLmxpbmUgdGQgLmlucHV0LXdyYXAgLmVkaXQtaWNvbi1mYTpob3ZlciwgdGJvZHkgLmxpbmUgdGQgLmlucHV0LXdyYXAgLmVkaXQtaWNvbi1mYTpmb2N1cywgdGJvZHkgLmxpbmUgdGQgLmlucHV0LXdyYXAgLmVkaXQtaWNvbi1mYTphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGZjM2U2O1xufVxudGJvZHkgLmxpbmU6aG92ZXIsXG50Ym9keSAuY2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTg5YzQ7XG59XG50Ym9keSAubGluZTpob3ZlciB0ZCxcbnRib2R5IC5jaGVja2VkIHRkIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG50aGVhZCxcbnRib2R5IHRyIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xufVxuXG4ub3JkZXItaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICB0b3A6IDFweDtcbn1cblxuLm9yZGVyLWRlc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi5vcmRlci1hc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufSJdfQ== */\"","import { Component, DoCheck, EventEmitter, Input, IterableDiffer, IterableDiffers, Output } from '@angular/core';\nimport Swal from 'sweetalert2';\n\nimport {\n ExtractDataArray,\n ExtractDataTableProperty,\n SelectBoxValue,\n} from 'app/pages/fix-regex-upload/fix-regex-upload.service';\nimport { PatternService } from 'app/shared/services/pattern/pattern.service';\nimport { RegexService } from 'app/shared/services/regex/regex.service';\n\ninterface PatternData {\n energyType: string;\n identificationPatternId: string;\n textContent: string;\n}\n@Component({\n selector: 'ga-upload-fix-table',\n templateUrl: './upload-fix-table.component.html',\n styleUrls: ['./upload-fix-table.component.scss'],\n})\nexport class UploadFixTableComponent implements DoCheck {\n @Input() dataArray: ExtractDataArray;\n /**\n * Contains energyType, identificationPatternId and textContent.\n * Used to get dictionary of properties\n */\n @Input() patternData: PatternData;\n public search = '';\n public isSearch = false;\n private iterableDiffer: IterableDiffer;\n @Output() propertySaved: EventEmitter = new EventEmitter();\n @Output() propertyDeleted: EventEmitter = new EventEmitter();\n @Output() regexChanged: EventEmitter = new EventEmitter();\n @Output() regexReset: EventEmitter = new EventEmitter();\n @Input() isPatternEnabled: boolean;\n\n constructor(\n private iterableDiffers: IterableDiffers,\n private patternService: PatternService,\n private regexService: RegexService\n ) {\n // https://stackoverflow.com/a/42962723 Here to detect changes on a inputArray, used when ExtractDataTableProperty are adeed to dataArray.dataTable from other component.\n this.iterableDiffer = iterableDiffers.find([]).create(null);\n }\n\n ngDoCheck() {\n const changes = this.iterableDiffer.diff(this.dataArray.dataTable);\n if (changes) {\n this.filterDataTable({\n target: {\n value: this.search,\n },\n });\n }\n }\n\n removeRegex(property: ExtractDataTableProperty) {\n Swal.fire({\n title: 'Etes-vous sûr ?',\n text: 'Voulez-vous supprimer la propriété ?',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Supprimer',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n }).then(result => {\n if (result.value) {\n this.propertyDeleted.emit(property);\n Swal.fire('Supprimé', 'Le regex a été supprimé.', 'success');\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n Swal.fire('Annulé', \"Le regex n'a pas été supprimé\", 'error');\n }\n });\n }\n\n resetRegex(property: ExtractDataTableProperty) {\n Swal.fire({\n title: 'Etes-vous sûr ?',\n text: 'Voulez-vous réinitialiser le regex initial ?',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Réinitialiser',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n }).then(result => {\n if (result.value) {\n this.regexReset.emit(property);\n }\n });\n }\n\n isRegexChangedNewOrWrong(property: ExtractDataTableProperty) {\n // wrong ?\n if ((!property.valueExtract || !property.countExtract) && !property.loading) {\n return 'red';\n } else if (!property.initialRegex) {\n // new property ?\n return 'blue';\n } else if (property.initialRegex !== property.regex) {\n // regex has changed and value is extracted\n return 'blue';\n }\n\n return;\n }\n\n editMode(property: ExtractDataTableProperty) {\n const data = this.dataArray.dataTable.find(prop => prop.name === property.name);\n data.editing = true;\n data.selectBoxData.selectedValue = data.selectBoxData.listOptions[0];\n }\n\n executeRegex(property: ExtractDataTableProperty) {\n this.regexChanged.emit(property);\n }\n\n updatePropertyRegex(property: ExtractDataTableProperty, optionSelected) {\n property.selectBoxData.selectedValue = optionSelected;\n property.regex = optionSelected.regex;\n property.editing = false;\n this.regexChanged.emit(property);\n }\n\n // If the regex belongs to the initial pattern and has been changed we can display the \"Revert\" button\n hasRegexChanged(property: ExtractDataTableProperty) {\n return property.initialRegex && property.initialRegex !== property.regex ? true : false;\n }\n\n displayDictionaryOption(regex, extractedValue) {\n // if the extracted valueis null -> shoudn't display 'null'\n const valueToDisplay = !extractedValue ? '' : extractedValue + ' --> ';\n\n // the first option is an empty regex, shouldn't display anything\n return valueToDisplay + regex;\n }\n\n getValueExtract(property: ExtractDataTableProperty) {\n if (property.loading) {\n return 'Recherche...';\n }\n return property.valueExtract;\n }\n\n public openOrCloseSearch() {\n this.isSearch = !this.isSearch;\n this.filterDataTable({\n target: {\n value: '',\n },\n });\n }\n\n /**\n * Filter the table of property according to search input\n */\n public filterDataTable(event: { target: { value: string } }): ExtractDataArray {\n this.search = event.target.value;\n this.dataArray.dataTable.forEach(property => (property.hide = !this.matchResearch(property)));\n\n return this.dataArray;\n }\n\n /**\n * True if search is contained in name or regex or value of property\n */\n private matchResearch(property: ExtractDataTableProperty): boolean {\n return (\n property.name.toLowerCase().includes(this.search.toLowerCase()) ||\n property.regex.toLowerCase().includes(this.search.toLowerCase()) ||\n property.valueExtract.toLowerCase().includes(this.search.toLowerCase())\n );\n }\n\n /**\n * Fill listOptions select box of given property\n */\n public getListOptions(property: ExtractDataTableProperty): void {\n if (!property.selectBoxData.listOptions.length) {\n this.setDictionaryOfProperty(this.patternData, property);\n }\n }\n\n /**\n * Set listOption of property with dictionnary and set selectedBoxData.selectedValue of property.\n */\n private async setDictionaryOfProperty(\n { energyType, identificationPatternId, textContent }: PatternData,\n property: ExtractDataTableProperty\n ): Promise {\n const listRegex = await this.patternService.getDictionaryForProperty(\n energyType,\n identificationPatternId,\n property.name\n );\n\n if (listRegex && listRegex.length) {\n const val = await this.getValuesFromListRegex(listRegex, textContent);\n property.selectBoxData.listOptions = property.selectBoxData.listOptions.concat(val);\n // if the regex belongs to the pattern, set preselected value with that regex\n // otherwise if it's a new property the regex is empty and no value is selected\n property.selectBoxData.selectedValue = property.selectBoxData.listOptions.find(\n option => option.regex === property.regex\n );\n }\n }\n\n /**\n * Find values in text content for a list of regex.\n */\n private async getValuesFromListRegex(listRegex: string[], textContent: string): Promise {\n const listRegexValue: SelectBoxValue[] = [];\n\n for (let i = 0; i < listRegex.length; i++) {\n const regex = listRegex[i];\n const valueExtracted = await this.getListValuesExtracted(textContent, regex);\n listRegexValue.push({\n id: i + 1,\n regex,\n valueExtracted,\n });\n }\n return listRegexValue;\n }\n\n /**\n * Get list of values extracted\n */\n private async getListValuesExtracted(textContent: string, regexToCheck: string): Promise {\n try {\n const resultsFromMatch = await this.regexService.computeRegexInPool(textContent, regexToCheck);\n return this.displayValuesExtracted(resultsFromMatch);\n } catch (err) {\n if (err && err.errorCode) {\n return `Error : ${err.errorCode}`;\n }\n return 'Error : Unknown error';\n }\n }\n\n /**\n * Get display string for extracted values\n */\n private displayValuesExtracted(valuesArray: string[]): string {\n return valuesArray.map(value => `[${value}]`).join(' ');\n }\n}\n","export default \".text-wrap {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n margin: 12px 0;\\n line-height: 1.3;\\n}\\n.text-wrap:first-of-type {\\n margin-top: 0;\\n}\\n.text-wrap:last-of-type {\\n margin-bottom: 0;\\n}\\n.text-wrap .info-text {\\n font-size: 15px;\\n margin-right: 16px;\\n}\\n.text-wrap .value-text {\\n margin-left: 16px;\\n font-weight: 600;\\n font-size: 15px;\\n text-align: right;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9ibG9jLWNvbnRyYWN0L2Jsb2MtY29udHJhY3QuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9ibG9jLWNvbnRyYWN0L2Jsb2MtY29udHJhY3QuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLHFDQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBO0FDQ0o7QURDSTtFQUNJLGFBQUE7QUNDUjtBREVJO0VBQ0ksZ0JBQUE7QUNBUjtBREdJO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0FDRFI7QURJSTtFQUNJLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7QUNGUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9ibG9jLWNvbnRyYWN0L2Jsb2MtY29udHJhY3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dC13cmFwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7XG4gICAgbWFyZ2luOiAxMnB4IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcblxuICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5pbmZvLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAudmFsdWUtdGV4dCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn1cbiIsIi50ZXh0LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZjtcbiAgbWFyZ2luOiAxMnB4IDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG4udGV4dC13cmFwOmZpcnN0LW9mLXR5cGUge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLnRleHQtd3JhcDpsYXN0LW9mLXR5cGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLnRleHQtd3JhcCAuaW5mby10ZXh0IHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG59XG4udGV4dC13cmFwIC52YWx1ZS10ZXh0IHtcbiAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-pdl-bloc-contract',\n templateUrl: './bloc-contract.component.html',\n styleUrls: ['./bloc-contract.component.scss'],\n})\nexport class PdlBlocContractComponent implements OnInit {\n @Input() contract: any = {};\n @Input() routingReference: any = {};\n constructor() {}\n ngOnInit() {}\n}\n","export default \".communicating-icon {\\n width: 2.5em;\\n height: 2.5em;\\n margin-right: 0.5em;\\n}\\n\\n.text-wrap {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n}\\n\\n.text-wrap .info-text {\\n font-size: 13px;\\n}\\n\\n.text-wrap .info-text.info-right__pdl-status {\\n cursor: pointer;\\n}\\n\\n.text-wrap .info-text.info-right__pdl-status span {\\n border-bottom: 1px solid white;\\n}\\n\\n.text-wrap .value-text {\\n font-size: 13px;\\n font-weight: 600;\\n text-align: right;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS1zaXRlLXRvcC9wZGwtY29tbXVuaWNhdGluZy1pY29uL3BkbC1jb21tdW5pY2F0aW5nLWljb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS1zaXRlLXRvcC9wZGwtY29tbXVuaWNhdGluZy1pY29uL3BkbC1jb21tdW5pY2F0aW5nLWljb24uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0FDREo7O0FESUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLHFDQUFBO0FDREo7O0FER0k7RUFDSSxlQWZHO0FDY1g7O0FERVE7RUFDSSxlQUFBO0FDQVo7O0FEQ1k7RUFDSSw4QkFBQTtBQ0NoQjs7QURJSTtFQUNJLGVBekJHO0VBMEJILGdCQUFBO0VBQ0EsaUJBQUE7QUNGUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS1zaXRlLXRvcC9wZGwtY29tbXVuaWNhdGluZy1pY29uL3BkbC1jb21tdW5pY2F0aW5nLWljb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIkZm9udFNpemU6IDEzcHg7XG5cbi5jb21tdW5pY2F0aW5nLWljb24ge1xuICAgIHdpZHRoOiAyLjVlbTtcbiAgICBoZWlnaHQ6IDIuNWVtO1xuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG59XG5cbi50ZXh0LXdyYXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcblxuICAgIC5pbmZvLXRleHQge1xuICAgICAgICBmb250LXNpemU6ICRmb250U2l6ZTtcbiAgICAgICAgJi5pbmZvLXJpZ2h0X19wZGwtc3RhdHVzIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB3aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC52YWx1ZS10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udFNpemU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn1cbiIsIi5jb21tdW5pY2F0aW5nLWljb24ge1xuICB3aWR0aDogMi41ZW07XG4gIGhlaWdodDogMi41ZW07XG4gIG1hcmdpbi1yaWdodDogMC41ZW07XG59XG5cbi50ZXh0LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZjtcbn1cbi50ZXh0LXdyYXAgLmluZm8tdGV4dCB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cbi50ZXh0LXdyYXAgLmluZm8tdGV4dC5pbmZvLXJpZ2h0X19wZGwtc3RhdHVzIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnRleHQtd3JhcCAuaW5mby10ZXh0LmluZm8tcmlnaHRfX3BkbC1zdGF0dXMgc3BhbiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB3aGl0ZTtcbn1cbi50ZXh0LXdyYXAgLnZhbHVlLXRleHQge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufSJdfQ== */\"","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ga-pdl-communicating-icon',\n templateUrl: './pdl-communicating-icon.component.html',\n styleUrls: ['./pdl-communicating-icon.component.scss'],\n providers: [],\n})\nexport class PDLCommunicatingIconComponent {\n @Input() color: string;\n @Input() tooltip: string;\n}\n","import { CommunicatingSummary } from 'app/shared/models/routing-reference.interface';\n\nexport enum COMMUNICATING_COLOR_LABEL {\n COMMUNICATING = 'rref_communicating_communicating',\n NOT_COMMUNICATING = 'rref_communicating_not_communicating',\n CAN_COMMUNICATE = 'rref_communicating_can_communicate',\n INVALID_COMMUNICATING = 'rref_communicating_invalid_communicating',\n}\n\ntype ConditionFunction = (communicatingSummary: CommunicatingSummary) => boolean;\nexport interface ConditionFunctions {\n inWarrant: ConditionFunction;\n canSync: ConditionFunction;\n synchronized: ConditionFunction;\n communicating: ConditionFunction;\n communicatingAvailable: ConditionFunction;\n communicatingUndetermined: ConditionFunction;\n}\n\nexport interface StatusConfig {\n conditions: Array<{ fct: ConditionFunction; expected: boolean }>;\n colorLabel: COMMUNICATING_COLOR_LABEL;\n text: string;\n getTooltip: (communicatingSummary: CommunicatingSummary) => string;\n getAccessToLoadCurve: (communicatingSummary: CommunicatingSummary) => boolean;\n}\n\nexport interface RoutingReferenceCommunicatingStatus {\n text: string;\n color: string;\n tooltip: string;\n accessToLoadcurve: boolean;\n}\n","import { Injectable } from '@angular/core';\n\nimport { SOURCE_TYPE } from 'app/shared/models/external-providers.interface';\nimport { CommunicatingSummary, RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { LoadCurveService } from 'app/shared/services/load-curve/load-curve.service';\nimport { TranslateService } from 'app/shared/services/translate/translate.service';\n\nimport {\n COMMUNICATING_COLOR_LABEL,\n ConditionFunctions,\n RoutingReferenceCommunicatingStatus,\n StatusConfig,\n} from './pdl-communicating.interface';\n\n@Injectable()\nexport class PDLCommunicatingService {\n /** Functions to use in configs conditions */\n private conditionFonctions: ConditionFunctions = {\n inWarrant: summary =>\n this.getPropertyFromExternalProviders(summary, SOURCE_TYPE.ENEDIS, 'warrantAuthorization', false),\n canSync: summary =>\n this.getPropertyFromExternalProviders(summary, SOURCE_TYPE.ENEDIS, 'contractualData', false),\n synchronized: summary => Boolean(summary.lastSynchronization),\n communicating: summary => summary.isCommunicating,\n communicatingAvailable: summary => summary.canCommunicate,\n communicatingUndetermined: summary => summary.isUndeterminedCommunicating,\n };\n\n /** List of labels, colors and tooltip to use, given the connected state match conditions */\n public statusConfigs: StatusConfig[] = [\n {\n conditions: [\n { fct: this.conditionFonctions.inWarrant, expected: true },\n { fct: this.conditionFonctions.canSync, expected: true },\n { fct: this.conditionFonctions.synchronized, expected: true },\n { fct: this.conditionFonctions.communicatingUndetermined, expected: true },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.CAN_COMMUNICATE,\n text: this.translate._('routing_reference_communicating_cant_be_determined'),\n getTooltip: summary => this.getDateTooltip(summary),\n getAccessToLoadCurve: summary => summary.isVisibleToUser,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.inWarrant, expected: true },\n { fct: this.conditionFonctions.canSync, expected: true },\n { fct: this.conditionFonctions.synchronized, expected: true },\n { fct: this.conditionFonctions.communicating, expected: true },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.COMMUNICATING,\n text: this.translate._('routing_reference_communicating'),\n getTooltip: summary => this.getDateTooltip(summary),\n getAccessToLoadCurve: summary => summary.isVisibleToUser,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.inWarrant, expected: true },\n { fct: this.conditionFonctions.canSync, expected: false },\n { fct: this.conditionFonctions.synchronized, expected: true },\n { fct: this.conditionFonctions.communicating, expected: true },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.COMMUNICATING,\n text: this.translate._('routing_reference_communicating'),\n getTooltip: summary => this.getDateTooltip(summary),\n getAccessToLoadCurve: summary => summary.isVisibleToUser,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.inWarrant, expected: false },\n { fct: this.conditionFonctions.canSync, expected: false },\n { fct: this.conditionFonctions.synchronized, expected: true },\n { fct: this.conditionFonctions.communicating, expected: true },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.COMMUNICATING,\n text: this.translate._('routing_reference_communicating'),\n getTooltip: summary => this.getDateTooltip(summary),\n getAccessToLoadCurve: summary => false,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.synchronized, expected: true },\n { fct: this.conditionFonctions.communicating, expected: false },\n { fct: this.conditionFonctions.communicatingAvailable, expected: false },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.NOT_COMMUNICATING,\n text: this.translate._('routing_reference_not_communicating'),\n getTooltip: communicatingSummary => this.getDateTooltip(communicatingSummary),\n getAccessToLoadCurve: summary => false,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.synchronized, expected: true },\n { fct: this.conditionFonctions.communicating, expected: false },\n { fct: this.conditionFonctions.communicatingAvailable, expected: true },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.CAN_COMMUNICATE,\n text: this.translate._('routing_reference_available_communicating'),\n getTooltip: communicatingSummary => this.getDateTooltip(communicatingSummary),\n getAccessToLoadCurve: summary => false,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.inWarrant, expected: true },\n { fct: this.conditionFonctions.canSync, expected: true },\n { fct: this.conditionFonctions.synchronized, expected: false },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.INVALID_COMMUNICATING,\n text: this.translate._('routing_reference_waiting_communicating'),\n getTooltip: () => this.translate._('no_available_data'),\n getAccessToLoadCurve: summary => false,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.inWarrant, expected: true },\n { fct: this.conditionFonctions.canSync, expected: false },\n { fct: this.conditionFonctions.synchronized, expected: false },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.INVALID_COMMUNICATING,\n text: this.translate._('routing_reference_need_sync_communicating'),\n getTooltip: () => this.translate._('no_available_data'),\n getAccessToLoadCurve: summary => false,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.inWarrant, expected: false },\n { fct: this.conditionFonctions.canSync, expected: false },\n { fct: this.conditionFonctions.synchronized, expected: false },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.INVALID_COMMUNICATING,\n text: this.translate._('routing_reference_out_of_scope_communicating'),\n getTooltip: () => this.translate._('no_available_data'),\n getAccessToLoadCurve: summary => false,\n },\n {\n conditions: [\n { fct: this.conditionFonctions.synchronized, expected: true },\n { fct: this.conditionFonctions.communicating, expected: null },\n { fct: this.conditionFonctions.communicatingAvailable, expected: null },\n ],\n colorLabel: COMMUNICATING_COLOR_LABEL.INVALID_COMMUNICATING,\n text: this.translate._('routing_reference_out_of_scope_communicating'),\n getTooltip: () => this.translate._('no_available_data'),\n getAccessToLoadCurve: summary => false,\n },\n ];\n\n /** The connnected state of the routing reference */\n private communicatingSummary: CommunicatingSummary;\n\n constructor(\n private translate: TranslateService,\n private colorService: ColorService,\n private loadcurveService: LoadCurveService\n ) {}\n\n /** Retrieve the connected state of the routing reference */\n public async retrieveCommunicatingStatus(\n routingReference: RoutingReference\n ): Promise {\n this.communicatingSummary = await this.loadcurveService.getRoutingReferenceCommunicatingSummary(\n routingReference._id\n );\n\n return this.calcStatus();\n }\n\n /** Find correct config, calc status and emit the new one */\n private calcStatus(): RoutingReferenceCommunicatingStatus {\n const currentConfig = this.statusConfigs.find(config =>\n config.conditions.every(cond => cond.fct(this.communicatingSummary) === cond.expected)\n );\n\n return this.getRoutingReferenceStatus(currentConfig);\n }\n\n /** Calc the communicating status of the routing reference for the current config */\n private getRoutingReferenceStatus(config: StatusConfig): RoutingReferenceCommunicatingStatus {\n return {\n text: config.text,\n color: this.colorService.getRgbColor(config.colorLabel),\n tooltip: config.getTooltip(this.communicatingSummary),\n accessToLoadcurve: config.getAccessToLoadCurve(this.communicatingSummary),\n };\n }\n\n /** Return the tooltip text to display the last synchronization date */\n private getDateTooltip(communicatingSummary: CommunicatingSummary): string {\n if (!communicatingSummary) {\n return null;\n }\n\n const lastDate = new Date(communicatingSummary.lastSynchronization);\n return `${lastDate.toLocaleDateString()} ${lastDate.toLocaleTimeString()}`;\n }\n\n /** Return the value of a property for a given external provider */\n private getPropertyFromExternalProviders(\n summary: CommunicatingSummary,\n provider: SOURCE_TYPE,\n property: string,\n defaultValue: T\n ): T {\n const externalProvider = summary.externalProviders.find(ep => ep.dataProvider === provider);\n if (!externalProvider) {\n return defaultValue;\n }\n\n const value = externalProvider[property];\n return value || defaultValue;\n }\n}\n","export default \".text-wrap {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n}\\n.text-wrap .info-text {\\n font-size: 0.8rem;\\n margin-right: 16px;\\n}\\n.text-wrap .value-text {\\n font-size: 0.8rem;\\n font-weight: 600;\\n text-align: right;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS1zaXRlLXRvcC9wZGwtY29udHJhY3R1YWwtZGF0YS9wZGwtY29udHJhY3R1YWwtZGF0YS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGRsL3BkbC1kYXRhLXNpdGUtdG9wL3BkbC1jb250cmFjdHVhbC1kYXRhL3BkbC1jb250cmFjdHVhbC1kYXRhLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7RUFDQSxxQ0FBQTtBQ0NKO0FEQ0k7RUFDSSxpQkFBQTtFQUNBLGtCQUFBO0FDQ1I7QURFSTtFQUNJLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtBQ0FSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGRsL3BkbC1kYXRhLXNpdGUtdG9wL3BkbC1jb250cmFjdHVhbC1kYXRhL3BkbC1jb250cmFjdHVhbC1kYXRhLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRleHQtd3JhcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmO1xuXG4gICAgLmluZm8tdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgfVxuXG4gICAgLnZhbHVlLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxufVxuIiwiLnRleHQtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmO1xufVxuLnRleHQtd3JhcCAuaW5mby10ZXh0IHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIG1hcmdpbi1yaWdodDogMTZweDtcbn1cbi50ZXh0LXdyYXAgLnZhbHVlLXRleHQge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { sortBy } from 'lodash';\nimport Swal from 'sweetalert2';\n\nimport { ContractualData } from 'app/shared/models/contractual-data.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { GetContractualDataFilters } from 'app/shared/services/contractual-data/interfaces';\n\nimport { RRefContractualDataService } from './pdl-contractual-data.service';\n\ninterface ContractualDataConfig {\n fluid: string;\n retrievalFilters: GetContractualDataFilters;\n propertiesDisplay: Array<{\n key: string;\n translateKey: string;\n unit: string;\n }>;\n}\n\n@Component({\n selector: 'pdl-contractual-data',\n templateUrl: './pdl-contractual-data.component.html',\n styleUrls: ['./pdl-contractual-data.component.scss'],\n providers: [RRefContractualDataService],\n})\nexport class RRefContractualDataComponent implements OnInit {\n @Input() routingReference: RoutingReference;\n\n /** Routing reference's contractual data */\n public rrefContractualData: ContractualData;\n\n /** Config for retrieval and display contractual data */\n public contractualDataConfig: ContractualDataConfig;\n\n /** Config indicating how to retrieve and display contractual data depending on routing reference fluid */\n public readonly CONFIG_CONTRACTUAL_DATA: ContractualDataConfig[] = [\n {\n fluid: 'elec',\n retrievalFilters: {\n keys: ['segment', 'connectionPowerRacking'],\n onlyLast: true,\n excludeData: false,\n excludeSynchronizations: true,\n },\n propertiesDisplay: [\n {\n key: 'segment',\n translateKey: 'segment',\n unit: '',\n },\n {\n key: 'connectionPowerRacking',\n translateKey: 'connection_power_racking',\n unit: 'kVA',\n },\n ],\n },\n ];\n\n constructor(private readonly rRefContractualDataService: RRefContractualDataService) {}\n\n async ngOnInit() {\n try {\n this.contractualDataConfig = this.CONFIG_CONTRACTUAL_DATA.find(\n config => config.fluid === this.routingReference.energyType\n );\n\n if (this.contractualDataConfig) {\n this.rrefContractualData = await this.rRefContractualDataService.getRRefContractualData(\n this.routingReference,\n this.contractualDataConfig.retrievalFilters\n );\n }\n } catch (error) {\n await Swal.fire({\n title: 'Une erreur est survenue',\n text: 'Impossible de récupérer les données contractuelles. Veuillez réessayer ultérieurement.',\n icon: 'error',\n });\n }\n }\n\n public showContractualData(): boolean {\n return Boolean(this.hasContractualData() && this.contractualDataConfig);\n }\n\n public getDataPropertyLastValue(key: string): unknown | null {\n if (!this.hasContractualData()) {\n return null;\n }\n\n const dataProperty = this.rrefContractualData.data.find(dataProp => dataProp.key === key);\n\n if (dataProperty) {\n const orderedValues = sortBy(dataProperty.values, 'dateStart');\n const lastValue = orderedValues.slice(-1)[0];\n\n return lastValue ? lastValue.value : null;\n }\n return null;\n }\n\n private hasContractualData(): boolean {\n return Boolean(\n this.rrefContractualData && this.rrefContractualData.data && this.rrefContractualData.data.length\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n// Models\nimport { ContractualData } from 'app/shared/models/contractual-data.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\n\n// Services\nimport { ContractualDataService, GetContractualDataFilters } from 'app/shared/services/contractual-data';\n\n/**\n * This service is designed to retrieve routing reference's required\n * contractual data when loading its view page.\n */\n@Injectable()\nexport class RRefContractualDataService {\n constructor(private readonly contractualDataService: ContractualDataService) {}\n\n /** Get required contractual data for a routing reference */\n public async getRRefContractualData(\n routingReference: RoutingReference,\n filters: GetContractualDataFilters\n ): Promise {\n const identifiers = [\n {\n routingReference: routingReference.reference,\n fluid: routingReference.energyType,\n },\n ];\n\n const data = await this.contractualDataService.getContractualDatas(identifiers, filters);\n\n // Contractual data is the first value from data array\n if (data && data.length) {\n return data[0];\n }\n\n return null;\n }\n}\n","export default \".citron-pdl-data-site-top {\\n display: -webkit-box;\\n display: flex;\\n min-height: 215px;\\n width: 100%;\\n color: white;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n}\\n.citron-pdl-data-site-top .image-column {\\n min-height: 215px;\\n background-size: cover;\\n background-position: center;\\n}\\n.citron-pdl-data-site-top .nc {\\n width: 40px;\\n height: 40px;\\n -webkit-mask-image: url('picto_warning.svg');\\n mask-image: url('picto_warning.svg');\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n background-color: orange;\\n}\\n.citron-pdl-data-site-top .info {\\n background-color: #2f3b40;\\n min-height: 215px;\\n}\\n.citron-pdl-data-site-top .info-left__container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n.citron-pdl-data-site-top .info-left__container-top {\\n padding-top: 25px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n.citron-pdl-data-site-top .info-left__container-bottom {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n flex-direction: row;\\n padding: 25px 0 12.5px 0;\\n}\\n.citron-pdl-data-site-top .info-right__container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n padding: 25px 27.5px;\\n}\\n.citron-pdl-data-site-top .info-right__container.no-contract {\\n -webkit-box-pack: start;\\n justify-content: start;\\n}\\n.citron-pdl-data-site-top .info-right__container.no-contract > .text-wrap {\\n margin-bottom: 1.2rem;\\n}\\n.citron-pdl-data-site-top .info-left__container-top__site-name {\\n font-size: 19px;\\n font-weight: bold;\\n display: -webkit-box;\\n display: flex;\\n}\\n.citron-pdl-data-site-top .info-left__container-top__adress {\\n display: -webkit-box;\\n display: flex;\\n padding: 4px 0;\\n}\\n.citron-pdl-data-site-top .info-left__container-top__adress .nc {\\n right: 0;\\n left: auto;\\n}\\n.citron-pdl-data-site-top .info-left__container-top__adress .icon {\\n height: 36px;\\n width: 36px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_pin.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_pin.svg\\\");\\n margin-right: 15px;\\n}\\n.citron-pdl-data-site-top .info-left__container-top__adress .adress {\\n font-size: 13px;\\n line-height: 1.5;\\n}\\n.citron-pdl-data-site-top .info-left__container-top__btn {\\n display: -webkit-box;\\n display: flex;\\n padding-top: 10px;\\n}\\n.citron-pdl-data-site-top .info-left__container-top__btn > a {\\n margin-right: 10px;\\n}\\n.citron-pdl-data-site-top .citron-btn {\\n padding: 10px 12px;\\n font-size: 13px;\\n}\\n.citron-pdl-data-site-top .info-left__container-bottom__years {\\n display: -webkit-box;\\n display: flex;\\n min-height: 4.5rem;\\n}\\n.citron-pdl-data-site-top .info-left__container-bottom__years .select-label {\\n font-size: 13px;\\n margin-right: 4px;\\n}\\n.citron-pdl-data-site-top .info-left__container-bottom__years .info-left__switch {\\n margin-top: 0.5rem;\\n}\\n.citron-pdl-data-site-top .info-left__container-bottom__export span {\\n font-size: 13px;\\n margin-right: 5px;\\n}\\n.citron-pdl-data-site-top .info-left__container-bottom__export .excel-icon {\\n cursor: pointer;\\n height: 40px;\\n width: 32px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_excel.svg\\\");\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n}\\n.citron-pdl-data-site-top .text-wrap {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n}\\n.citron-pdl-data-site-top .text-wrap .info-text {\\n font-size: 13px;\\n margin-right: 16px;\\n}\\n.citron-pdl-data-site-top .text-wrap .info-text.info-right__pdl-status {\\n cursor: pointer;\\n}\\n.citron-pdl-data-site-top .text-wrap .info-text.info-right__pdl-status span {\\n border-bottom: 1px solid white;\\n}\\n.citron-pdl-data-site-top .text-wrap .value-text {\\n font-size: 13px;\\n font-weight: 600;\\n text-align: right;\\n}\\n.citron-pdl-data-site-top .status__info-icon {\\n font-size: 1rem;\\n margin-left: 5px;\\n}\\n:host ::ng-deep ga-select-filter .bloc-select {\\n padding-top: 0px;\\n}\\n:host ::ng-deep ga-date-filter input {\\n margin-top: 0px !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS1zaXRlLXRvcC9wZGwtZGF0YS1zaXRlLXRvcC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGRsL3BkbC1kYXRhLXNpdGUtdG9wL3BkbC1kYXRhLXNpdGUtdG9wLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxxQ0FBQTtBQ0xKO0FET0k7RUFDSSxpQkFBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7QUNMUjtBRFFJO0VBQ0ksV0FBQTtFQUNBLFlBQUE7RUFDQSw0Q0FBQTtVQUFBLG9DQUFBO0VBQ0Esd0JBQUE7VUFBQSxnQkFBQTtFQUNBLHdCQUFBO0FDTlI7QURTSTtFQUNJLHlCQUFBO0VBQ0EsaUJBQUE7QUNQUjtBRFlJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtBQ1ZSO0FEYUk7RUFDSSxpQkFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtBQ1hSO0FEY0k7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0EsOEJBQUE7RUFBQSw2QkFBQTtVQUFBLG1CQUFBO0VBQ0Esd0JBQUE7QUNaUjtBRGVJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLG9CQUFBO0FDYlI7QURlUTtFQUNJLHVCQUFBO1VBQUEsc0JBQUE7QUNiWjtBRGVZO0VBQ0kscUJBQUE7QUNiaEI7QURvQkk7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7QUNsQlI7QURxQkk7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxjQUFBO0FDbkJSO0FEb0JRO0VBQ0ksUUFBQTtFQUNBLFVBQUE7QUNsQlo7QURxQlE7RUVuRkosWUZvRnlCO0VFbkZ6QixXRm1GK0I7RUVsRi9CLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHVCRjZFaUM7RUV6RWpDLCtEQUFBO1VBQUEsdURBQUE7RUYwRUksa0JBQUE7QUNiWjtBRGdCUTtFQUNJLGVBQUE7RUFDQSxnQkFBQTtBQ2RaO0FEa0JJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsaUJBQUE7QUNoQlI7QURpQlE7RUFDSSxrQkFBQTtBQ2ZaO0FEbUJJO0VBQ0ksa0JBQUE7RUFDQSxlQUFBO0FDakJSO0FEc0JJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0Esa0JBQUE7QUNwQlI7QURzQlE7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7QUNwQlo7QUR1QlE7RUFDSSxrQkFBQTtBQ3JCWjtBRDBCUTtFQUNJLGVBQUE7RUFDQSxpQkFBQTtBQ3hCWjtBRDBCUTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGlFQUFBO1VBQUEseURBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBQ0EsdUJBQUE7QUN4Qlo7QUQ4Qkk7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EseUJBQUE7VUFBQSw4QkFBQTtFQUNBLHFDQUFBO0FDNUJSO0FEOEJRO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0FDNUJaO0FENkJZO0VBQ0ksZUFBQTtBQzNCaEI7QUQ0QmdCO0VBQ0ksOEJBQUE7QUMxQnBCO0FEK0JRO0VBQ0ksZUFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7QUM3Qlo7QURpQ0k7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7QUMvQlI7QURtQ0E7RUFDSSxnQkFBQTtBQ2hDSjtBRGtDQTtFQUNJLDBCQUFBO0FDL0JKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGRsL3BkbC1kYXRhLXNpdGUtdG9wL3BkbC1kYXRhLXNpdGUtdG9wLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XG5cbiRwYWRkaW5nOiAyNTtcblxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtaW4taGVpZ2h0OiAyMTVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcblxuICAgIC5pbWFnZS1jb2x1bW4ge1xuICAgICAgICBtaW4taGVpZ2h0OiAyMTVweDtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5uYyB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgnLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3dhcm5pbmcuc3ZnJyk7XG4gICAgICAgIG1hc2stc2l6ZTogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTtcbiAgICB9XG5cbiAgICAuaW5mbyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyZjNiNDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIxNXB4O1xuICAgIH1cblxuICAgIC8vIGNvbnRhaW5lcnNcblxuICAgIC5pbmZvLWxlZnRfX2NvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG5cbiAgICAuaW5mby1sZWZ0X19jb250YWluZXItdG9wIHtcbiAgICAgICAgcGFkZGluZy10b3A6ICN7JHBhZGRpbmd9cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuXG4gICAgLmluZm8tbGVmdF9fY29udGFpbmVyLWJvdHRvbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgcGFkZGluZzogI3skcGFkZGluZ31weCAwICN7JHBhZGRpbmcvMn1weCAwO1xuICAgIH1cblxuICAgIC5pbmZvLXJpZ2h0X19jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHBhZGRpbmc6ICN7JHBhZGRpbmd9cHggI3sxNSArICRwYWRkaW5nIC8gMn1weDtcblxuICAgICAgICAmLm5vLWNvbnRyYWN0IHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG5cbiAgICAgICAgICAgICYgPiAudGV4dC13cmFwIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0b3AgbGVmdCBzaWRlXG5cbiAgICAuaW5mby1sZWZ0X19jb250YWluZXItdG9wX19zaXRlLW5hbWUge1xuICAgICAgICBmb250LXNpemU6IDE5cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC5pbmZvLWxlZnRfX2NvbnRhaW5lci10b3BfX2FkcmVzcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBhZGRpbmc6IDRweCAwO1xuICAgICAgICAubmMge1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3ZnSWNvbigzNnB4LCAzNnB4LCB3aGl0ZSwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fcGluLnN2ZycpO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFkcmVzcyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmluZm8tbGVmdF9fY29udGFpbmVyLXRvcF9fYnRuIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgICYgPiBhIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jaXRyb24tYnRuIHtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgfVxuXG4gICAgLy8gYm90dG9tIGxlZnQgc2lkZVxuXG4gICAgLmluZm8tbGVmdF9fY29udGFpbmVyLWJvdHRvbV9feWVhcnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtaW4taGVpZ2h0OiA0LjVyZW07XG5cbiAgICAgICAgLnNlbGVjdC1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbmZvLWxlZnRfX3N3aXRjaCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5mby1sZWZ0X19jb250YWluZXItYm90dG9tX19leHBvcnQge1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5leGNlbC1pY29uIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2V4Y2VsLnN2ZycpO1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmlnaHQgc2lkZVxuXG4gICAgLnRleHQtd3JhcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcblxuICAgICAgICAuaW5mby10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICAgICAgICAgICYuaW5mby1yaWdodF9fcGRsLXN0YXR1cyB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgd2hpdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnZhbHVlLXRleHQge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN0YXR1c19faW5mby1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIH1cbn1cblxuOmhvc3QgOjpuZy1kZWVwIGdhLXNlbGVjdC1maWx0ZXIgLmJsb2Mtc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMHB4O1xufVxuOmhvc3QgOjpuZy1kZWVwIGdhLWRhdGUtZmlsdGVyIGlucHV0IHtcbiAgICBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDtcbn1cbiIsIi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3Age1xuICBkaXNwbGF5OiBmbGV4O1xuICBtaW4taGVpZ2h0OiAyMTVweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiLCBzYW5zLXNlcmlmO1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAuaW1hZ2UtY29sdW1uIHtcbiAgbWluLWhlaWdodDogMjE1cHg7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLm5jIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbWFzay1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3dhcm5pbmcuc3ZnXCIpO1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJmM2I0MDtcbiAgbWluLWhlaWdodDogMjE1cHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLWxlZnRfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLmluZm8tbGVmdF9fY29udGFpbmVyLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAyNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAuaW5mby1sZWZ0X19jb250YWluZXItYm90dG9tIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBwYWRkaW5nOiAyNXB4IDAgMTIuNXB4IDA7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLXJpZ2h0X19jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDI1cHggMjcuNXB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAuaW5mby1yaWdodF9fY29udGFpbmVyLm5vLWNvbnRyYWN0IHtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLmluZm8tcmlnaHRfX2NvbnRhaW5lci5uby1jb250cmFjdCA+IC50ZXh0LXdyYXAge1xuICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLWxlZnRfX2NvbnRhaW5lci10b3BfX3NpdGUtbmFtZSB7XG4gIGZvbnQtc2l6ZTogMTlweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLWxlZnRfX2NvbnRhaW5lci10b3BfX2FkcmVzcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDRweCAwO1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAuaW5mby1sZWZ0X19jb250YWluZXItdG9wX19hZHJlc3MgLm5jIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGF1dG87XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLWxlZnRfX2NvbnRhaW5lci10b3BfX2FkcmVzcyAuaWNvbiB7XG4gIGhlaWdodDogMzZweDtcbiAgd2lkdGg6IDM2cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19waW4uc3ZnXCIpO1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLWxlZnRfX2NvbnRhaW5lci10b3BfX2FkcmVzcyAuYWRyZXNzIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAuaW5mby1sZWZ0X19jb250YWluZXItdG9wX19idG4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMTBweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLmluZm8tbGVmdF9fY29udGFpbmVyLXRvcF9fYnRuID4gYSB7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLmNpdHJvbi1idG4ge1xuICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLmluZm8tbGVmdF9fY29udGFpbmVyLWJvdHRvbV9feWVhcnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtaW4taGVpZ2h0OiA0LjVyZW07XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLWxlZnRfX2NvbnRhaW5lci1ib3R0b21fX3llYXJzIC5zZWxlY3QtbGFiZWwge1xuICBmb250LXNpemU6IDEzcHg7XG4gIG1hcmdpbi1yaWdodDogNHB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAuaW5mby1sZWZ0X19jb250YWluZXItYm90dG9tX195ZWFycyAuaW5mby1sZWZ0X19zd2l0Y2gge1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC5pbmZvLWxlZnRfX2NvbnRhaW5lci1ib3R0b21fX2V4cG9ydCBzcGFuIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLmluZm8tbGVmdF9fY29udGFpbmVyLWJvdHRvbV9fZXhwb3J0IC5leGNlbC1pY29uIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiAzMnB4O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2V4Y2VsLnN2Z1wiKTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC50ZXh0LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZjtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLnRleHQtd3JhcCAuaW5mby10ZXh0IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXNpdGUtdG9wIC50ZXh0LXdyYXAgLmluZm8tdGV4dC5pbmZvLXJpZ2h0X19wZGwtc3RhdHVzIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAudGV4dC13cmFwIC5pbmZvLXRleHQuaW5mby1yaWdodF9fcGRsLXN0YXR1cyBzcGFuIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHdoaXRlO1xufVxuLmNpdHJvbi1wZGwtZGF0YS1zaXRlLXRvcCAudGV4dC13cmFwIC52YWx1ZS10ZXh0IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtc2l0ZS10b3AgLnN0YXR1c19faW5mby1pY29uIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG46aG9zdCA6Om5nLWRlZXAgZ2Etc2VsZWN0LWZpbHRlciAuYmxvYy1zZWxlY3Qge1xuICBwYWRkaW5nLXRvcDogMHB4O1xufVxuXG46aG9zdCA6Om5nLWRlZXAgZ2EtZGF0ZS1maWx0ZXIgaW5wdXQge1xuICBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDtcbn0iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iXX0= */\"","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { saveAs } from 'file-saver';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport { Subscription } from 'rxjs';\nimport Swal from 'sweetalert2';\n\n// interfaces\nimport { SwitchFilterElement } from 'app/shared/components/filters/switch-filter/switch-filter-element.interface';\nimport { PeriodFilter } from 'app/shared/models/bills-timeline.interface';\nimport { AvailableYears, SelectedDatePeriod } from 'app/shared/services/filter/filter.interface';\n\n// services\nimport { ExportService } from 'app/shared/services/export/export.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { LoadCurveService } from 'app/shared/services/load-curve/load-curve.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\n\n// components\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { ModalComponent } from '../../common/modal/modal.component';\nimport { RoutingReferenceCommunicatingStatus } from './pdl-communicating.interface';\nimport { PDLCommunicatingService } from './pdl-communicating.service';\n\n@Component({\n selector: 'ga-pdl-data-site-top',\n templateUrl: './pdl-data-site-top.component.html',\n styleUrls: ['./pdl-data-site-top.component.scss'],\n providers: [PDLCommunicatingService],\n})\nexport class PdlDataSiteTopComponent implements OnInit, OnDestroy {\n private _data: any;\n @Input()\n set data(value: any) {\n this._data = value;\n this.sortHistoryDateAsc();\n }\n get data() {\n return this._data;\n }\n @Input() site: any;\n @Input() contract: any;\n @Input() fluidCategory = 'energie';\n\n @Input() exportExcelUrl: string;\n @Input() exportExcelName: string;\n\n get pdlReference() {\n return _.get(this.data, 'reference') || '';\n }\n\n get contractLight() {\n if (!this.contract) {\n return null;\n }\n return {\n _id: this.contract._id,\n reference: this.contract.reference,\n provider: this.contract.provider,\n startDate: _.get(this.contract, 'infos.dateStart'),\n endDate: _.get(this.contract, 'infos.dateEnd'),\n };\n }\n\n /**\n * Period selection variables\n */\n\n @Output() yearChanged: EventEmitter = new EventEmitter(); // output {dateStart:.., dateEnd: ..}\n\n @Input() dateMethodSelected = 'yearly';\n\n public switchDateFilterElements: SwitchFilterElement[] = [\n {\n displayName: 'Par année',\n value: 'yearly',\n },\n {\n displayName: 'Personnalisé',\n value: 'custom',\n },\n ];\n\n @Input() years: any;\n\n public billCompletenessDates: PeriodFilter;\n\n /**\n * Period being currently selected in the datepickers\n */\n public selectedDate: SelectedDatePeriod = {\n dateStart: '',\n dateEnd: '',\n year: '',\n };\n\n /**\n * Period requested to update the params\n */\n public requestedDate: SelectedDatePeriod = {\n dateStart: '',\n dateEnd: '',\n year: '',\n };\n\n public availablePeriod: AvailableYears = {\n dateStart: '',\n dateEnd: '',\n years: [],\n };\n\n /** The calculated communicating status of the routing reference */\n public communicatingStatus: RoutingReferenceCommunicatingStatus;\n\n /**\n * Subscriptions\n */\n private subscription: Subscription;\n\n /**\n * Last used and valid params\n */\n private params: Params;\n\n /** Check if the routing reference can have load curve (some fluids won't) */\n get hasLoadcurve(): boolean {\n return this.loadCurveService.compatibleFluids.includes(this.data.energyType);\n }\n\n horizontalPosition: MatSnackBarHorizontalPosition = 'end';\n verticalPosition: MatSnackBarVerticalPosition = 'top';\n\n @ViewChild('statusToggle', { static: true }) private statusToggle: MatSlideToggle;\n @ViewChild(ModalComponent, { static: true }) public billingModal: ModalComponent;\n\n constructor(\n private mapService: MapService,\n private exportService: ExportService,\n private routingReferencesService: RoutingReferencesService,\n private filterService: FilterService,\n private snackBar: MatSnackBar,\n private loadCurveService: LoadCurveService,\n private route: ActivatedRoute,\n private sessionService: SessionService,\n private communicatingService: PDLCommunicatingService\n ) {}\n\n async ngOnInit() {\n this.initMinMaxRange();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n\n this.subscription = this.route.queryParams.subscribe(queryParams => {\n this.updateDatesFromRouteParams(queryParams);\n });\n\n if (this.hasLoadcurve) {\n try {\n this.communicatingStatus = await this.communicatingService.retrieveCommunicatingStatus(this.data);\n } catch (err) {\n Swal.fire(\n 'Une erreur est survenue',\n 'Impossible de récupérer les informations de connectivité',\n 'error'\n );\n }\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n ifNc(value) {\n if (value === 'NC' || value === '' || !value) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Initialize the maximum range available for dateStart and dateEnd.\n * minDateRange is January of the oldest year available.\n * maxDateRange is January of the earliest year available + 1.\n * Initialise the available years for the options of the input \"Per year\". Format is {displayName: .., value: ..}\n */\n private async initMinMaxRange() {\n if (this.years && this.years.length) {\n this.availablePeriod.dateEnd = moment({\n y: Number(this.years[0] + 1),\n M: 0,\n }).format(this.filterService.inputDateFormat);\n this.availablePeriod.dateStart = moment({\n y: Number(this.years[this.years.length - 1]),\n M: 0,\n }).format(this.filterService.inputDateFormat);\n this.availablePeriod.years = this.years.map(year => ({\n displayName: year.toString(),\n value: year.toString(),\n }));\n }\n }\n\n /**\n * Set the dates inputs depending on the params of the route or init with last year if not set.\n * Method preselected by default is set to \"per year\".\n * Year selected by default is the most recent year available.\n * Specific period selected is January of the most recent year available to January of the newt year. Format is \"YYYY-MM\".\n * @param {Params} params\n */\n private setSelectedDates(params: Params) {\n if (this.years && this.years.length) {\n // set default param on the last available year if none given\n if (!(params.hasOwnProperty('ds') || params.hasOwnProperty('de') || params.hasOwnProperty('year'))) {\n this.onUpdateSelectedYear(this.years[0]);\n return;\n }\n\n // If both start date and end date are setted in the route params, it initialise the dates inputs with them\n if (params.hasOwnProperty('ds') && params.hasOwnProperty('de')) {\n this.dateMethodSelected = 'custom';\n this.selectedDate = {\n year: moment(params.de, this.filterService.urlDateFormat).format(this.filterService.yearDateFormat),\n dateStart: this.filterService.getMonthUrlIntoInputDateFormat(params.ds),\n dateEnd: this.filterService.getMonthUrlIntoInputDateFormat(params.de),\n };\n }\n\n // It initialize the dates inputs depending on the year route params or a default year (the most recent year possible)\n else {\n const selectedYear = moment(\n params.hasOwnProperty('year') ? params.year : this.years[0],\n this.filterService.yearDateFormat\n );\n this.dateMethodSelected = 'yearly';\n\n this.selectedDate = {\n year: selectedYear.format(this.filterService.yearDateFormat),\n dateStart: selectedYear.startOf('year').format(this.filterService.inputDateFormat),\n dateEnd: selectedYear.add(1, 'y').format(this.filterService.inputDateFormat),\n };\n }\n\n this.requestedDate = { ...this.selectedDate };\n }\n }\n\n /**\n * Called every time the date selected is changed.\n * Update if needed in order: the max date available for dateEnd input, the selected dateEnd.\n * Max date available for dateEnd input: one year after dateStart if possible, otherwise we take maxDateRange.\n * Selected dateEnd changes if selected dateStart was set after dateEnd: one year after if possible, otherwise we take maxDateRange.\n * @param {Params} params\n */\n private async updateDatesFromRouteParams(params: Params): Promise {\n // Update selected dates if the current and new params are different\n if (_.isEqual(params, this.params)) {\n return;\n }\n\n const oldSelectedDate = { ...this.selectedDate };\n if (this.years && this.years.length) {\n if (Object.keys(params).length) {\n const tmpParams: Params = { ...params };\n const permittedParams = ['year', 'de', 'ds'];\n\n // Verify the params integrity, and deleting not valid params\n this.filterService.removeInvalidParams(tmpParams, permittedParams);\n\n // Verify the dates integrity by parsing them and removing not valid dates\n this.filterService.removeInvalidDatesInParams(tmpParams, this.availablePeriod);\n\n // Replace missing params if needed\n this.filterService.replaceMissingDatesInParams(tmpParams, this.availablePeriod);\n\n // Replace dates if they are out of limits\n this.filterService.fixDatesCoherence(tmpParams, this.availablePeriod);\n\n this.setSelectedDates(tmpParams);\n\n this.params = tmpParams;\n\n // Emit to the parent only if there's different between the new and current selectedDates\n if (!_.isEqual(oldSelectedDate, this.selectedDate)) {\n this.updateParent();\n }\n } else {\n this.setSelectedDates(params);\n }\n }\n }\n\n /**\n * On click on the switch \"Per year\" / \"Specific period\".\n * Preselect the year of the dateStart of the specific period.\n * @param {string} method: \"yearly\" or \"custom\"\n */\n public updateDateSearchMethod(method: string) {\n this.dateMethodSelected = method;\n if (this.dateMethodSelected === 'yearly') {\n this.requestedDate.year = this.requestedDate.dateStart.substring(0, 4);\n }\n this.updateRouteParams();\n }\n\n /**\n * Update the route params, depending on the selected date method ('yearly' or 'custom')\n */\n public async updateRouteParams() {\n // TODO handle errors\n\n const params =\n this.dateMethodSelected === 'yearly'\n ? {\n year: moment(this.requestedDate.year, this.filterService.yearDateFormat).format(\n this.filterService.yearDateFormat\n ),\n }\n : {\n ds: this.filterService.getMonthUrlDateFormat(this.requestedDate.dateStart),\n de: this.filterService.getMonthUrlDateFormat(this.requestedDate.dateEnd),\n };\n\n await this.filterService.updateRouteParams(params, '');\n }\n\n /**\n * set the dates filter for the billing completeness modal\n */\n setBillCompletenessDates() {\n if (this.selectedDate.dateStart && this.selectedDate.dateEnd) {\n const dateStart: string[] = this.selectedDate.dateStart.split('-');\n const dateEnd: moment.Moment = moment\n .utc(`${this.selectedDate.dateEnd}-01`, 'YYYY-MM-DD')\n .subtract(1, 'days')\n .endOf('day');\n\n this.billCompletenessDates = {\n beginDate: {\n year: +dateStart[0],\n month: +dateStart[1],\n day: 1,\n },\n endDate: {\n year: dateEnd.year(),\n month: dateEnd.month() + 1,\n day: dateEnd.date(),\n },\n };\n }\n }\n\n /**\n * On click on a new year option.\n * Set the dates from January to December of the selected year.\n * Update the parent component.\n * @param year\n */\n onUpdateSelectedYear(year) {\n this.requestedDate.year = year;\n this.updateRouteParams();\n }\n\n /**\n * On click on a new dateStart.\n * Update the parent component.\n * @param date\n */\n updateSelectedDateStart(date) {\n this.requestedDate.dateStart = date;\n this.updateRouteParams();\n }\n /**\n * On click on a new dateEnd.\n * Update the parent component.\n * @param date\n */\n updateSelectedDateEnd(date) {\n this.requestedDate.dateEnd = date;\n this.updateRouteParams();\n }\n\n /**\n * Emit the change to the parent of the component.\n * The expected format of the event is {dateStart: .., dateEnd: ..}\n */\n updateParent() {\n this.setBillCompletenessDates();\n this.yearChanged.emit({ dateStart: this.selectedDate.dateStart, dateEnd: this.selectedDate.dateEnd });\n }\n get siteLink() {\n return `/${this.fluidCategory}/profil/${this.site._id}`;\n }\n\n /**\n * Display load curve redirection button only if the current routing reference is elec\n * @returns {boolean} true if\n */\n get displayLoadCurveBtn(): boolean {\n return this.hasLoadcurve && this.communicatingStatus && this.communicatingStatus.accessToLoadcurve;\n }\n\n get loadCurveLink(): string {\n return this.loadCurveService.loadCurveLink;\n }\n\n /**\n * Load curve params : site id and date is a week ago to yesterday\n */\n get loadCurveParams(): Params {\n const { ds, de } = this.loadCurveService.formatDatesParams(\n this.selectedDate.dateStart,\n this.selectedDate.dateEnd\n );\n const params: Params = {\n ds,\n de,\n };\n\n if (this.site) {\n params.s = this.site._id;\n\n if (this.sessionService.getCompanyId() !== this.site.company) {\n params[this.filterService.getParamAlias('company')] = this.site.company;\n }\n }\n\n return params;\n }\n\n getSitePictureAsBackground() {\n if (!this.data.address) {\n return null;\n }\n return this.mapService.getSitePictureAsBackground(this.data.address);\n }\n\n getPdlContractDates(pdl, contract) {\n const search = contract.routingReferences.find(x => x.routingReference === pdl._id);\n return {\n dateStart: search.dateStart,\n dateEnd: search.dateEnd,\n };\n }\n\n exportToExcel() {\n if (this.exportExcelUrl && this.exportExcelName) {\n this.exportService.getFile(this.exportExcelUrl).subscribe(file => {\n saveAs(file, this.exportExcelName);\n });\n }\n }\n\n get address() {\n if (\n !this.data.address ||\n !(this.data.address.streetName && this.data.address.zipcode && this.data.address.city)\n ) {\n return 'PDL non localisé';\n }\n\n const streetNumber = this.data.address.streetNumber ? `${this.data.address.streetNumber}, ` : '';\n const zipcode = this.data.address.zipcode ? this.data.address.zipcode : '';\n return `${streetNumber} ${this.data.address.streetName} ${zipcode} ${this.data.address.city}`;\n }\n\n async toggleStatus(value) {\n try {\n const response = await this.routingReferencesService.updateStatusRoutingReference(\n this.data._id,\n value.checked\n );\n if (this.data) {\n this.data.status = response.data.status;\n this.sortHistoryDateAsc();\n // Message to revert action if not wanted\n const message = value.checked ? 'activé' : 'désactivé';\n const snack = this.snackBar.open(`Vous avez ${message} le PDL`, 'Annuler', {\n duration: 5000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n // If cancel pressed, call for revert then re-update the front display history list\n snack.onAction().subscribe(async () => {\n try {\n // Get last history\n const lastHistory = this.data.status.history[this.data.status.history.length - 1];\n const res = await this.routingReferencesService.updateStatusRoutingReference(\n this.data._id,\n value.checked,\n lastHistory._id\n );\n this.data.status = res.data.status;\n this.sortHistoryDateAsc();\n } catch (e) {\n this.handleApiError(false);\n }\n });\n }\n } catch (e) {\n this.handleApiError(true);\n }\n }\n\n get routingReferenceStatus() {\n if (this.data && this.data.status) {\n return this.data.status.active;\n }\n return false;\n }\n\n get routingReferenceStatusText() {\n return this.routingReferenceStatus ? 'Actif' : 'Inactif';\n }\n\n private sortHistoryDateAsc() {\n if (this._data && this._data.stats && this._data.status && this._data.status.history) {\n this._data.status.history.sort((a, b) => (a.date < b.date ? -1 : 1));\n }\n }\n\n private handleApiError(resetToggle: boolean) {\n return error => {\n if (resetToggle) {\n // Timeout so that it go back to the inital place not instantaneously.\n setTimeout(() => {\n this.statusToggle.toggle();\n }, 700);\n }\n this.snackBar.open(`Une erreur est survenue, merci de réessayer utlérieurement.`, 'Masquer', {\n duration: 5000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n };\n }\n\n openBillingModal() {\n this.billingModal.show();\n return;\n }\n\n /**\n * @returns {boolean} true is the modal shown, false otherwise\n */\n get isModalShown(): boolean {\n return this.billingModal.isShown;\n }\n}\n","export default \".ga-data-search-list {\\n width: 100%;\\n}\\n\\ntable {\\n width: 100%;\\n background-color: white;\\n}\\n\\ntable td {\\n padding-left: 8px;\\n padding-right: 8px;\\n}\\n\\n.header {\\n width: 100%;\\n background-color: #f3f3f3;\\n border-top: 1px solid #bcbcbc;\\n border-bottom: 1px solid #bcbcbc;\\n}\\n\\n.header td {\\n text-align: left;\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n font-size: 12px;\\n}\\n\\n.line {\\n width: 100%;\\n border-bottom: 1px solid #bcbcbc;\\n}\\n\\n.line td {\\n font-size: 12px;\\n}\\n\\n.line .button-td {\\n text-align: center;\\n}\\n\\n.line .button-td .button {\\n padding-top: 3.5px;\\n padding-bottom: 3.5px;\\n height: 47px;\\n}\\n\\n.line .button-td .button button {\\n height: 40px;\\n width: 100%;\\n max-width: 60px;\\n padding-left: 8.8125px;\\n padding-right: 8.8125px;\\n background-color: #3189c4;\\n border: none;\\n color: white;\\n cursor: pointer;\\n}\\n\\n.line .button-td .button button:hover, .line .button-td .button button:focus, .line .button-td .button button:active {\\n background-color: #8fc3e6 !important;\\n}\\n\\n.line .button-td .button button:disabled {\\n background-color: rgba(173, 185, 202, 0.8) !important;\\n cursor: not-allowed;\\n}\\n\\n.checkbox-td {\\n padding-left: 20px;\\n padding-right: 20px;\\n}\\n\\n.checkbox-td .checkbox-div {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n}\\n\\n.checkbox-td .checkbox-div label {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n width: 40px;\\n min-width: 40px;\\n height: 40px;\\n min-height: 40px;\\n border-radius: 50%;\\n border: 1px solid lightgrey;\\n background-color: transparent;\\n -webkit-transition: 0.5s all;\\n transition: 0.5s all;\\n color: lightgrey;\\n margin: 0;\\n cursor: pointer;\\n}\\n\\n.checkbox-td .checkbox-div input[type=checkbox] {\\n display: none;\\n}\\n\\n.checkbox-td .checkbox-div input[type=checkbox]:checked + label {\\n background-color: #3189c4;\\n color: white;\\n border: none;\\n}\\n\\n.checkbox-td .checkbox-text {\\n font-size: 13px;\\n font-weight: bold;\\n margin-left: 20px;\\n}\\n\\n.td-with-btn {\\n padding-top: 0;\\n padding-bottom: 0;\\n}\\n\\n.td-with-btn .energy-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.td-with-btn .energy {\\n height: 100%;\\n display: -webkit-box;\\n display: flex;\\n justify-content: space-around;\\n min-width: 70px;\\n margin-right: 20px;\\n}\\n\\n.td-with-btn .energy-div {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n margin: 6px 0;\\n}\\n\\n.td-with-btn .energy-icon {\\n width: 28px;\\n margin-right: 8px;\\n}\\n\\n.td-with-btn .energy-text {\\n white-space: nowrap;\\n font-size: 13px;\\n}\\n\\n.td-with-btn .button-container {\\n width: 90%;\\n}\\n\\n.td-with-btn .citron-btn {\\n height: 40px;\\n width: 100%;\\n max-width: 180px;\\n padding-left: 8px;\\n padding-right: 8px;\\n}\\n\\n.building .energy {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n}\\n\\n.building .energy-icon {\\n width: 22px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS10YWJsZS1zaXRlL3BkbC1kYXRhLXRhYmxlLXNpdGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS10YWJsZS1zaXRlL3BkbC1kYXRhLXRhYmxlLXNpdGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFBO0FDQ0o7O0FERUE7RUFDSSxXQUFBO0VBQ0EsdUJBQUE7QUNDSjs7QURBSTtFQUNJLGlCQUFBO0VBQ0Esa0JBQUE7QUNFUjs7QURFQTtFQUNJLFdBQUE7RUFDQSx5QkFBQTtFQUNBLDZCQUFBO0VBQ0EsZ0NBQUE7QUNDSjs7QURBSTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxlQUFBO0FDRVI7O0FERUE7RUFDSSxXQUFBO0VBQ0EsZ0NBQUE7QUNDSjs7QURBSTtFQUNJLGVBQUE7QUNFUjs7QURBSTtFQUNJLGtCQUFBO0FDRVI7O0FERFE7RUFDSSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsWUFBQTtBQ0daOztBREZZO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtFQUNBLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0FDSWhCOztBREhnQjtFQUdJLG9DQUFBO0FDR3BCOztBREFnQjtFQUNJLHFEQUFBO0VBQ0EsbUJBQUE7QUNFcEI7O0FES0E7RUFDSSxrQkFBQTtFQUNBLG1CQUFBO0FDRko7O0FESUk7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0FDRlI7O0FER1E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSwyQkFBQTtFQUNBLDZCQUFBO0VBQ0EsNEJBQUE7RUFBQSxvQkFBQTtFQUNBLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7QUNEWjs7QURHUTtFQUNJLGFBQUE7QUNEWjs7QURHUTtFQUNJLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7QUNEWjs7QURLSTtFQUNJLGVBQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0FDSFI7O0FET0E7RUFDSSxjQUFBO0VBQ0EsaUJBQUE7QUNKSjs7QURNSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0FDSlI7O0FET0k7RUFDSSxZQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNkJBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7QUNMUjs7QURRSTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSxhQUFBO0FDTlI7O0FEU0k7RUFDSSxXQUFBO0VBQ0EsaUJBQUE7QUNQUjs7QURVSTtFQUNJLG1CQUFBO0VBQ0EsZUFBQTtBQ1JSOztBRFdJO0VBQ0ksVUFBQTtBQ1RSOztBRFlJO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7QUNWUjs7QURlSTtFQUNJLDRCQUFBO0VBQUEsNkJBQUE7VUFBQSxzQkFBQTtBQ1pSOztBRGNJO0VBQ0ksV0FBQTtBQ1pSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGRsL3BkbC1kYXRhLXRhYmxlLXNpdGUvcGRsLWRhdGEtdGFibGUtc2l0ZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5nYS1kYXRhLXNlYXJjaC1saXN0IHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxudGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICB9XG59XG5cbi5oZWFkZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNiY2JjYmM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7XG4gICAgdGQge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cbn1cblxuLmxpbmUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmNiY2JjO1xuICAgIHRkIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cbiAgICAuYnV0dG9uLXRkIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzLjVweDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzLjVweDtcbiAgICAgICAgICAgIGhlaWdodDogNDdweDtcbiAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogNjBweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDguODEyNXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDguODEyNXB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTg5YzQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAmOmZvY3VzLFxuICAgICAgICAgICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzhmYzNlNiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE3MywgMTg1LCAyMDIsIDAuOCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jaGVja2JveC10ZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cbiAgICAuY2hlY2tib3gtZGl2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogMC41cyBhbGw7XG4gICAgICAgICAgICBjb2xvcjogbGlnaHRncmV5O1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNoZWNrYm94LXRleHQge1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICB9XG59XG5cbi50ZC13aXRoLWJ0biB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICAuZW5lcmd5LWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG5cbiAgICAuZW5lcmd5IHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICAgICAgbWluLXdpZHRoOiA3MHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgfVxuXG4gICAgLmVuZXJneS1kaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDZweCAwO1xuICAgIH1cblxuICAgIC5lbmVyZ3ktaWNvbiB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICB9XG5cbiAgICAuZW5lcmd5LXRleHQge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgfVxuXG4gICAgLmJ1dHRvbi1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogOTAlO1xuICAgIH1cblxuICAgIC5jaXRyb24tYnRuIHtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxODBweDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICB9XG59XG5cbi5idWlsZGluZyB7XG4gICAgLmVuZXJneSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuICAgIC5lbmVyZ3ktaWNvbiB7XG4gICAgICAgIHdpZHRoOiAyMnB4O1xuICAgIH1cbn1cbiIsIi5nYS1kYXRhLXNlYXJjaC1saXN0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbnRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxudGFibGUgdGQge1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xufVxuXG4uaGVhZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYmNiY2JjO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbn1cbi5oZWFkZXIgdGQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4ubGluZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbn1cbi5saW5lIHRkIHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmxpbmUgLmJ1dHRvbi10ZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5saW5lIC5idXR0b24tdGQgLmJ1dHRvbiB7XG4gIHBhZGRpbmctdG9wOiAzLjVweDtcbiAgcGFkZGluZy1ib3R0b206IDMuNXB4O1xuICBoZWlnaHQ6IDQ3cHg7XG59XG4ubGluZSAuYnV0dG9uLXRkIC5idXR0b24gYnV0dG9uIHtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA2MHB4O1xuICBwYWRkaW5nLWxlZnQ6IDguODEyNXB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4LjgxMjVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMxODljNDtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogd2hpdGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5saW5lIC5idXR0b24tdGQgLmJ1dHRvbiBidXR0b246aG92ZXIsIC5saW5lIC5idXR0b24tdGQgLmJ1dHRvbiBidXR0b246Zm9jdXMsIC5saW5lIC5idXR0b24tdGQgLmJ1dHRvbiBidXR0b246YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhmYzNlNiAhaW1wb3J0YW50O1xufVxuLmxpbmUgLmJ1dHRvbi10ZCAuYnV0dG9uIGJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTczLCAxODUsIDIwMiwgMC44KSAhaW1wb3J0YW50O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY2hlY2tib3gtdGQge1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG59XG4uY2hlY2tib3gtdGQgLmNoZWNrYm94LWRpdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uY2hlY2tib3gtdGQgLmNoZWNrYm94LWRpdiBsYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogNDBweDtcbiAgbWluLXdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1pbi1oZWlnaHQ6IDQwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmV5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdHJhbnNpdGlvbjogMC41cyBhbGw7XG4gIGNvbG9yOiBsaWdodGdyZXk7XG4gIG1hcmdpbjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNoZWNrYm94LXRkIC5jaGVja2JveC1kaXYgaW5wdXRbdHlwZT1jaGVja2JveF0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmNoZWNrYm94LXRkIC5jaGVja2JveC1kaXYgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMxODljNDtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IG5vbmU7XG59XG4uY2hlY2tib3gtdGQgLmNoZWNrYm94LXRleHQge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tbGVmdDogMjBweDtcbn1cblxuLnRkLXdpdGgtYnRuIHtcbiAgcGFkZGluZy10b3A6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xufVxuLnRkLXdpdGgtYnRuIC5lbmVyZ3ktY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuLnRkLXdpdGgtYnRuIC5lbmVyZ3kge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBtaW4td2lkdGg6IDcwcHg7XG4gIG1hcmdpbi1yaWdodDogMjBweDtcbn1cbi50ZC13aXRoLWJ0biAuZW5lcmd5LWRpdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogNnB4IDA7XG59XG4udGQtd2l0aC1idG4gLmVuZXJneS1pY29uIHtcbiAgd2lkdGg6IDI4cHg7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuLnRkLXdpdGgtYnRuIC5lbmVyZ3ktdGV4dCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cbi50ZC13aXRoLWJ0biAuYnV0dG9uLWNvbnRhaW5lciB7XG4gIHdpZHRoOiA5MCU7XG59XG4udGQtd2l0aC1idG4gLmNpdHJvbi1idG4ge1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xufVxuXG4uYnVpbGRpbmcgLmVuZXJneSB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uYnVpbGRpbmcgLmVuZXJneS1pY29uIHtcbiAgd2lkdGg6IDIycHg7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-pdl-data-table-site',\n templateUrl: './pdl-data-table-site.component.html',\n styleUrls: ['./pdl-data-table-site.component.scss'],\n providers: [],\n})\nexport class PdlDataTableSiteComponent implements OnInit {\n @Input() pdls: object;\n @Input() type: string;\n @Input() currentSelection: any;\n @Input() site: any;\n @Input() filter = '';\n\n constructor() {}\n ngOnInit() {}\n\n getPdlRouterLink(pdl): string {\n switch (pdl.contract.energyType) {\n case 'elec':\n return `/${this.type}/pdl/${this.site._id}/${pdl.contract._id}/${pdl.routingReference}`;\n case 'gaz':\n return `/${this.type}/pdl/gaz/${this.site._id}/${pdl.contract._id}/${pdl.routingReference}`;\n case 'water':\n return `/${this.type}/pdl/${this.site._id}/${pdl.contract._id}/${pdl.routingReference}`;\n }\n }\n\n filterEnergyType(pdl): boolean {\n if (this.filter === 'water') {\n return pdl.contract.energyType === 'water';\n }\n\n return pdl.contract.energyType !== 'water';\n }\n}\n","export default \".citron-pdl-data-table {\\n width: 100%;\\n}\\n.citron-pdl-data-table .table__inputs {\\n position: absolute;\\n right: 25px;\\n top: 13px;\\n}\\n.citron-pdl-data-table .table__inputs .branches {\\n margin-right: 15px;\\n}\\n.citron-pdl-data-table .table__inputs .branches select {\\n font-size: 0.75rem;\\n height: 30px;\\n}\\n.citron-pdl-data-table .table__inputs .companies {\\n margin-right: 15px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n.citron-pdl-data-table .table__inputs .companies .tree {\\n min-width: 200px;\\n}\\n.citron-pdl-data-table .table__inputs .companies .icon {\\n color: grey;\\n margin-right: 5px;\\n}\\n.citron-pdl-data-table .table__inputs .search .search-icon {\\n height: 20px;\\n width: 20px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n background-color: grey;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n margin-right: 5px;\\n}\\n.citron-pdl-data-table .table__inputs .search input {\\n color: #607188;\\n border: 1px solid #d9d9d9;\\n font-size: 0.75rem;\\n height: 30px;\\n width: 200px;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-left: auto;\\n padding-left: 0.5rem;\\n}\\ntable {\\n width: 100%;\\n background-color: white;\\n font-size: 0.8125rem;\\n}\\ntable td {\\n width: 20%;\\n padding-left: 8px;\\n padding-right: 8px;\\n}\\n.header {\\n width: 100%;\\n background-color: #f3f3f3;\\n border-top: 1px solid #bcbcbc;\\n border-bottom: 1px solid #bcbcbc;\\n}\\n.header td {\\n text-align: left;\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\ntbody {\\n display: block;\\n height: 455px;\\n overflow: auto;\\n}\\ntbody .line {\\n width: 100%;\\n border-bottom: 1px solid #bcbcbc;\\n cursor: pointer;\\n}\\ntbody .line td {\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\ntbody .line:hover,\\ntbody .checked {\\n background-color: #3189c4;\\n}\\ntbody .line:hover td,\\ntbody .checked td {\\n color: white;\\n}\\nthead,\\ntbody tr {\\n display: table;\\n width: 100%;\\n table-layout: fixed;\\n}\\n.order-icon {\\n display: inline-block;\\n margin-right: 10px;\\n}\\n.order-desc {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n.order-asc {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n.status__icon {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: black;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_dot_circle.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_dot_circle.svg\\\");\\n margin-left: 5px;\\n}\\n.status__td {\\n width: 70px !important;\\n}\\n.status__icon-enabled {\\n background-color: green;\\n}\\n.status__icon-disabled {\\n background-color: #db4b47;\\n}\\n.profile-completion__td {\\n text-align: center;\\n width: 70px !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtZGF0YS10YWJsZS9wZGwtZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGRsL3BkbC1kYXRhLXRhYmxlL3BkbC1kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7RUFDSSxXQUFBO0FDTEo7QURPSTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQUE7QUNMUjtBRE9RO0VBQ0ksa0JBQUE7QUNMWjtBRE1ZO0VBQ0ksa0JBYkU7RUFjRixZQUFBO0FDSmhCO0FEUVE7RUFDSSxrQkFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0FDTlo7QURPWTtFQUNJLGdCQUFBO0FDTGhCO0FET1k7RUFDSSxXQUFBO0VBQ0EsaUJBQUE7QUNMaEI7QURVWTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtFQUFBO1VBQUEsMERBQUE7RUFDQSxzQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSx3QkFBQTtVQUFBLGdCQUFBO0VBQ0EsaUJBQUE7QUNSaEI7QURVWTtFQUNJLGNFdkJIO0VGd0JHLHlCQUFBO0VBQ0Esa0JBL0NFO0VBZ0RGLFlBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QUNSaEI7QURjQTtFQUNJLFdBQUE7RUFDQSx1QkFBQTtFQUNBLG9CQS9EYTtBQ29EakI7QURhSTtFQUNJLFVBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0FDWFI7QURlQTtFQUNJLFdBQUE7RUFDQSx5QkFBQTtFQUNBLDZCQUFBO0VBQ0EsZ0NBQUE7QUNaSjtBRGNJO0VBQ0ksZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ1pSO0FEZ0JBO0VBQ0ksY0FBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0FDYko7QURjSTtFQUNJLFdBQUE7RUFDQSxnQ0FBQTtFQUNBLGVBQUE7QUNaUjtBRGNRO0VBQ0ksWUFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QUNaWjtBRGVJOztFQUVJLHlCQUFBO0FDYlI7QURlUTs7RUFDSSxZQUFBO0FDWlo7QURpQkE7O0VBRUksY0FBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtBQ2RKO0FEaUJBO0VBQ0kscUJBQUE7RUFDQSxrQkFBQTtBQ2RKO0FEaUJBO0VBQ0ksZ0NBQUE7VUFBQSx3QkFBQTtBQ2RKO0FEaUJBO0VBQ0ksaUNBQUE7VUFBQSx5QkFBQTtBQ2RKO0FEaUJBO0VHcklJLFlIc0lpQjtFR3JJakIsV0hxSXVCO0VHcEl2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx1QkgrSHlCO0VHM0h6QixzRUFBQTtVQUFBLDhEQUFBO0VINEhKLGdCQUFBO0FDUko7QURXQTtFQUNJLHNCQUFBO0FDUko7QURXQTtFQUNJLHVCRXpITTtBRGlIVjtBRFdBO0VBQ0kseUJFOUhJO0FEc0hSO0FEV0E7RUFDSSxrQkFBQTtFQUNBLHNCQUFBO0FDUkoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9wZGwvcGRsLWRhdGEtdGFibGUvcGRsLWRhdGEtdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMnO1xuXG4kdGV4dC1mb250LXNpemU6IDAuODEyNXJlbTtcbiRpbnB1dC1mb250LXNpemU6IDAuNzVyZW07XG5cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLnRhYmxlX19pbnB1dHMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAyNXB4O1xuICAgICAgICB0b3A6IDEzcHg7XG5cbiAgICAgICAgLmJyYW5jaGVzIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb21wYW5pZXMge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIC50cmVlIHtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBncmV5O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaCB7XG4gICAgICAgICAgICAuc2VhcmNoLWljb24ge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fc2VhcmNoLnN2ZycpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyZ3JleTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcblxuICAgIHRkIHtcbiAgICAgICAgd2lkdGg6IDIwJTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICB9XG59XG5cbi5oZWFkZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNiY2JjYmM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7XG5cbiAgICB0ZCB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgIH1cbn1cblxudGJvZHkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogNDU1cHg7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgLmxpbmUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5saW5lOmhvdmVyLFxuICAgIC5jaGVja2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMxODljNDtcblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnRoZWFkLFxudGJvZHkgdHIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG5cbi5vcmRlci1pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4ub3JkZXItZGVzYyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4ub3JkZXItYXNjIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4uc3RhdHVzX19pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDIwcHgsIDIwcHgsIGJsYWNrLCAnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19kb3RfY2lyY2xlLnN2ZycpO1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbi5zdGF0dXNfX3RkIHtcbiAgICB3aWR0aDogNzBweCAhaW1wb3J0YW50O1xufVxuXG4uc3RhdHVzX19pY29uLWVuYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzdWNjZXNzO1xufVxuXG4uc3RhdHVzX19pY29uLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XG59XG5cbi5wcm9maWxlLWNvbXBsZXRpb25fX3RkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDcwcHggIWltcG9ydGFudDtcbn1cbiIsIi5jaXRyb24tcGRsLWRhdGEtdGFibGUge1xuICB3aWR0aDogMTAwJTtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUgLnRhYmxlX19pbnB1dHMge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAyNXB4O1xuICB0b3A6IDEzcHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIC50YWJsZV9faW5wdXRzIC5icmFuY2hlcyB7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUgLnRhYmxlX19pbnB1dHMgLmJyYW5jaGVzIHNlbGVjdCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgaGVpZ2h0OiAzMHB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS10YWJsZSAudGFibGVfX2lucHV0cyAuY29tcGFuaWVzIHtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUgLnRhYmxlX19pbnB1dHMgLmNvbXBhbmllcyAudHJlZSB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIC50YWJsZV9faW5wdXRzIC5jb21wYW5pZXMgLmljb24ge1xuICBjb2xvcjogZ3JleTtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIC50YWJsZV9faW5wdXRzIC5zZWFyY2ggLnNlYXJjaC1pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3NlYXJjaC5zdmdcIik7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS10YWJsZSAudGFibGVfX2lucHV0cyAuc2VhcmNoIGlucHV0IHtcbiAgY29sb3I6ICM2MDcxODg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgaGVpZ2h0OiAzMHB4O1xuICB3aWR0aDogMjAwcHg7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbn1cblxudGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xufVxudGFibGUgdGQge1xuICB3aWR0aDogMjAlO1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xufVxuXG4uaGVhZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYmNiY2JjO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbn1cbi5oZWFkZXIgdGQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cblxudGJvZHkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiA0NTVweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG50Ym9keSAubGluZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxudGJvZHkgLmxpbmUgdGQge1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cbnRib2R5IC5saW5lOmhvdmVyLFxudGJvZHkgLmNoZWNrZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE4OWM0O1xufVxudGJvZHkgLmxpbmU6aG92ZXIgdGQsXG50Ym9keSAuY2hlY2tlZCB0ZCB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxudGhlYWQsXG50Ym9keSB0ciB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTtcbiAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cblxuLm9yZGVyLWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cblxuLm9yZGVyLWRlc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi5vcmRlci1hc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4uc3RhdHVzX19pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2RvdF9jaXJjbGUuc3ZnXCIpO1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4uc3RhdHVzX190ZCB7XG4gIHdpZHRoOiA3MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5zdGF0dXNfX2ljb24tZW5hYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xufVxuXG4uc3RhdHVzX19pY29uLWRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0Nztcbn1cblxuLnByb2ZpbGUtY29tcGxldGlvbl9fdGQge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiA3MHB4ICFpbXBvcnRhbnQ7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\n\nimport { filter } from 'rxjs/operators';\n\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { SortFilterService } from 'app/shared/services/sort/sort-filter/sort-filter.service';\nimport { UtilsService } from 'app/shared/services/utils/utils.service';\n\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport {\n SortableProperties,\n SortableProperty,\n SortFilters,\n} from 'app/shared/services/sort/sort-filter/sort-filter.interface';\n\n@Component({\n selector: 'ga-pdl-data-table',\n templateUrl: './pdl-data-table.component.html',\n styleUrls: ['./pdl-data-table.component.scss'],\n providers: [],\n})\nexport class PdlDataTableComponent implements OnInit {\n @Input() sites: any[];\n @Output() selectedSite: EventEmitter = new EventEmitter();\n @Input() currentSelection: string;\n @Input() companies: Array<{ displayName: string; value: string }>;\n\n /**\n * Indicates if sites list is loading\n */\n @Input() isLoading: boolean;\n\n public filterArgs = '';\n\n public sitesSortableProperties: SortableProperties = {\n status: {\n name: 'status',\n type: 'boolean',\n path: 'status.active',\n },\n code: {\n name: 'code',\n type: 'string',\n path: 'code',\n },\n complement: {\n name: 'complement',\n type: 'string',\n path: 'complement',\n },\n zipcode: {\n name: 'zipcode',\n type: 'string',\n path: 'zipcode',\n },\n completion: {\n name: 'completion',\n type: 'number',\n path: 'info.profilCompletion.general',\n },\n };\n\n // Store the filters for the orderby pipe\n public sortFilters: SortFilters;\n\n /**\n * Tracks the companies selected by the user among the ones he is allowed to see\n * selectedCompanies = ['companyId1', 'companyId2']\n */\n public selectedCompanies: string[] = [];\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private sessionService: SessionService,\n private utils: UtilsService,\n private sitesService: SitesService,\n private filterService: FilterService,\n private sortFilterService: SortFilterService\n ) {\n // Set sort filters by default on field complement when loading\n this.sortFilters = {\n order: 'asc',\n property: this.sitesSortableProperties.complement,\n };\n }\n\n ngOnInit() {\n if (Array.isArray(this.selectedCompanies) && !this.selectedCompanies.length) {\n this.selectedCompanies =\n this.companies && this.companies.length\n ? [this.companies[0].value]\n : [this.sessionService.getCompanyId()];\n }\n this.route.queryParams\n .pipe(filter(params => Boolean(this.filterService.getParamAliasValue(params, 'companies'))))\n .subscribe({\n next: params => {\n this.selectedCompanies = this.filterService.getParamAliasValues(params, 'companies', []);\n },\n });\n }\n\n public filterSearchSite(site: SitePopulated): boolean {\n return this.sitesService.filterSiteOnSearch(site, this.filterArgs);\n }\n\n public selectionSite(element: string) {\n this.currentSelection = element;\n this.selectedSite.emit(element);\n }\n\n // Update the sort filters which refreshes the orderby pipe\n public sortTable(sortableProperty: SortableProperty): void {\n this.sortFilters = this.sortFilterService.updateSortFilters(sortableProperty, this.sortFilters);\n }\n\n public getAddressToDisplay(site) {\n return this.sitesService.getAddressToDisplay(site);\n }\n\n /**\n * Get companyName object from a company ID\n * @param {Array<{ displayName: string; value: string }>} array\n * @returns {{ displayName: string; value: string }} object\n */\n\n public getCompanyNameObject(\n companies: Array<{ displayName: string; value: string }>,\n companyId: string\n ): { displayName: string; value: string } {\n return companies.find(company => company.value === companyId);\n }\n\n /**\n * For a given site, get all the information of the site, to be able to get the company of the site\n * Then format the company name of the site to display it\n * @param {any} site\n * @returns {string} company name to display\n */\n public getCompanyToDisplay(site: any): string {\n // Get companyName for site companyId\n const companyNameObject = this.getCompanyNameObject(this.companies, site.company);\n if (!companyNameObject) {\n return 'Inconnue';\n }\n // Format the site company display name\n const displayName = companyNameObject.displayName.replace(/^-+\\s/, '');\n return displayName;\n }\n\n public getSiteStatusClass(site) {\n if (site && site.status && site.status.active) {\n return 'status__icon-enabled';\n }\n return 'status__icon-disabled';\n }\n\n public getSiteProfileCompletion(site) {\n if (site && site.info && site.info.profilCompletion && site.info.profilCompletion.general) {\n return site.info.profilCompletion.general;\n }\n return 0;\n }\n\n get hasBranches() {\n return this.companies && this.companies.length > 1;\n }\n\n /**\n * Select new company from branches\n * @param {string[]} values - companyIds\n */\n public setSelectedCompanies(values: string[]) {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: { [this.filterService.getParamAlias('companies')]: values.join(',') },\n // reset the existing query params in the route\n queryParamsHandling: '',\n skipLocationChange: false,\n });\n }\n}\n","export default \".pdl-building-year-table {\\n display: -webkit-box;\\n display: flex;\\n flex-wrap: wrap;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: start;\\n align-items: flex-start;\\n margin: auto;\\n overflow: auto;\\n}\\n\\n.table {\\n font-size: 12px;\\n}\\n\\nthead {\\n border-bottom: 4px solid lightgrey;\\n}\\n\\nthead th,\\nthead td {\\n font-weight: bold;\\n}\\n\\ntbody .bold-value {\\n font-weight: bold;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3BkbC9wZGwtdGFibGUvcGRsLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9wZGwvcGRsLXRhYmxlL3BkbC10YWJsZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGVBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0FDQ0o7O0FEQ0E7RUFDSSxrQ0FBQTtBQ0VKOztBRERJOztFQUVJLGlCQUFBO0FDR1I7O0FEQ0k7RUFDSSxpQkFBQTtBQ0VSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGRsL3BkbC10YWJsZS9wZGwtdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucGRsLWJ1aWxkaW5nLXllYXItdGFibGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi50YWJsZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxudGhlYWQge1xuICAgIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCBsaWdodGdyZXk7XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG59XG50Ym9keSB7XG4gICAgLmJvbGQtdmFsdWUge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG59XG4iLCIucGRsLWJ1aWxkaW5nLXllYXItdGFibGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbjogYXV0bztcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi50YWJsZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxudGhlYWQge1xuICBib3JkZXItYm90dG9tOiA0cHggc29saWQgbGlnaHRncmV5O1xufVxudGhlYWQgdGgsXG50aGVhZCB0ZCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG50Ym9keSAuYm9sZC12YWx1ZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { GenericTableBill } from 'app/shared/models/fluid-tables.interface';\n\ninterface Row {\n name: string;\n billProperty: string;\n subLabels: Array<{ key: string; name: string; isTotal?: boolean }>;\n hasBreak: boolean;\n}\n\ninterface FluidRows {\n hasTitle: boolean;\n rows: Row[];\n}\n\ninterface FluidTypeRows {\n year: { [fluid: string]: FluidRows };\n month: { [fluid: string]: FluidRows };\n ratio: { [fluid: string]: FluidRows };\n}\n\n@Component({\n selector: 'pdl-table',\n templateUrl: './pdl-table.component.html',\n styleUrls: ['./pdl-table.component.scss'],\n})\nexport class PdlTableComponent implements OnInit {\n @Input() bills: GenericTableBill[];\n @Input() fluid: string;\n @Input() type: string;\n\n fluidRows: FluidRows;\n\n rows: FluidTypeRows = {\n year: {\n elec: {\n rows: [\n {\n name: 'Montant de la facture',\n billProperty: 'amount',\n subLabels: [{ key: 'total', name: null }],\n hasBreak: false,\n },\n {\n name: 'Fourniture',\n billProperty: 'consumption',\n subLabels: [\n { key: 'global', name: 'Coût de consommation (€)' },\n { key: 'globalRatio', name: 'Coût de consommation (c€/kWh)' },\n { key: 'renewable', name: 'Energies Renouvelables (€)' },\n { key: 'renewableRatio', name: 'Energies Renouvelables (c€/kWh)' },\n { key: 'capacity', name: 'Mécanisme de capacité (€)' },\n { key: 'capacityRatio', name: 'Mécanisme de capacité (c€/kWh)' },\n { key: 'cee', name: 'CEE (€)' },\n { key: 'ceeRatio', name: 'CEE (c€/kWh)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n { key: 'totalRatio', name: 'Sous-total (c€/kWh)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Abonnement (fournisseur et distributeur)',\n billProperty: 'subscription',\n subLabels: [\n { key: 'subscriptionFixed', name: 'Abonnement fournisseur (c€/kWh)' },\n { key: 'fixedRacking', name: 'Composante de Soutirage Fixe (c€/kWh)' },\n { key: 'counting', name: 'Composante de Comptage (c€/kWh)' },\n { key: 'management', name: 'Composante de Gestion (c€/kWh)' },\n { key: 'total', name: 'Sous-total (c€/kWh)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Services réseau',\n billProperty: 'networkService',\n subLabels: [\n { key: 'meterRent', name: 'Location de compteur (c€/kWh)' },\n { key: 'miscServices', name: 'Services divers (c€/kWh)' },\n { key: 'penalities', name: 'Pénalités diverses (c€/kWh)' },\n { key: 'racking', name: 'Composante de soutirage variable (c€/kWh)' },\n { key: 'overtaking', name: 'Dépassements (c€/kWh)' },\n { key: 'reactive', name: 'Energie réactive (c€/kWh)' },\n { key: 'total', name: 'Sous-total (c€/kWh)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Taxes',\n billProperty: 'taxes',\n subLabels: [\n { key: 'cta', name: 'CTA (c€/kWh)' },\n { key: 'cspe', name: 'CSPE (c€/kWh)' },\n { key: 'tdcfe', name: 'TDCFE (c€/kWh)' },\n { key: 'tccfe', name: 'TCCFE (c€/kWh)' },\n { key: 'tcfe', name: 'TCFE (c€/kWh)' },\n { key: 'total', name: 'Sous-total (c€/kWh)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Total HTVA (c€/kWh)',\n billProperty: 'totalHTVA',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n {\n name: 'Total TTC (c€/kWh)',\n billProperty: 'totalTTC',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n ],\n hasTitle: true,\n },\n },\n month: {\n elec: {\n rows: [\n {\n name: 'Fourniture',\n billProperty: 'consumption',\n subLabels: [\n { key: 'globalQuantity', name: 'Consommation (kWh)' },\n { key: 'globalCost', name: 'Coût de consommation (€)' },\n { key: 'renewable', name: 'Energies Renouvelables (€)' },\n { key: 'capacity', name: 'Mécanisme de capacité (€)' },\n { key: 'cee', name: 'CEE (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Abonnement (fournisseur et distributeur)',\n billProperty: 'subscription',\n subLabels: [\n { key: 'subscriptionFixed', name: 'Abonnement fournisseur (€)' },\n { key: 'fixedRacking', name: 'Composante de Soutirage Fixe (€)' },\n { key: 'counting', name: 'Composante de Comptage (€)' },\n { key: 'management', name: 'Composante de Gestion (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Services réseau',\n billProperty: 'networkService',\n subLabels: [\n { key: 'meterRent', name: 'Location de compteur (€)' },\n { key: 'miscServices', name: 'Services divers (€)' },\n { key: 'penalities', name: 'Pénalités diverses (€)' },\n { key: 'racking', name: 'Composante de soutirage variable (€)' },\n { key: 'overtaking', name: 'Dépassements (€)' },\n { key: 'reactive', name: 'Energie réactive (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Taxes',\n billProperty: 'taxes',\n subLabels: [\n { key: 'ctaCost', name: 'CTA (€)' },\n { key: 'cspeQuantity', name: 'CSPE (kWh)' },\n { key: 'cspeCost', name: 'CSPE (€)' },\n { key: 'tdcfeQuantity', name: 'TDCFE (kWh)' },\n { key: 'tdcfeCost', name: 'TDCFE (€)' },\n { key: 'tccfeQuantity', name: 'TCCFE (kWh)' },\n { key: 'tccfeCost', name: 'TCCFE (€)' },\n { key: 'tcfeQuantity', name: 'TCFE (kWh)' },\n { key: 'tcfeCost', name: 'TCFE (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Montant HTVA (€)',\n billProperty: 'totalHTVA',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n {\n name: 'Montant TTC (€)',\n billProperty: 'totalTTC',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n ],\n hasTitle: true,\n },\n gaz: {\n rows: [\n {\n name: 'Consommation',\n billProperty: 'consumption',\n subLabels: [\n { key: 'globalQty', name: 'Quantité (MWh)' },\n { key: 'globalVolume', name: 'Volume (m3)' },\n { key: 'globalAmount', name: 'Coût de consommation (€)' },\n { key: 'renewableAmount', name: 'Energies Renouvelables (€)' },\n { key: 'ceeAmount', name: 'CEE (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Abonnement',\n billProperty: 'subscription',\n subLabels: [\n { key: 'globalAmount', name: 'Abonnement (€)' },\n { key: 'distribFixedAmount', name: 'Distribution part Fixe (ATRD fixe) (€)' },\n { key: 'transpFixedAmount', name: 'Transport part Fixe (ATRT fixe) (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Services Réseau',\n billProperty: 'networkServices',\n subLabels: [\n { key: 'distributionVariableQty', name: 'Distribution part Variable (ATRD) (MWh)' },\n { key: 'distributionVariableAmount', name: 'Distribution part Variable (ATRD) (€)' },\n { key: 'transportVariableQty', name: 'Transport part Variable (ATRT) (MWh)' },\n { key: 'transportVariableAmount', name: 'Transport part Variable (ATRT) (€)' },\n { key: 'storageQty', name: 'Stockage (MWh)' },\n { key: 'storageAmount', name: 'Stockage (€)' },\n { key: 'capacityAmount', name: 'Capacité (€)' },\n { key: 'meterRentAmount', name: 'Location compteur (€)' },\n { key: 'miscServicesAmount', name: 'Services divers (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Taxes',\n billProperty: 'taxes',\n subLabels: [\n { key: 'CTAGlobal', name: 'CTA Globale (€)' },\n { key: 'CTADistrib', name: 'CTA Distribution (€)' },\n { key: 'CTATransp', name: 'CTA Transport (€)' },\n { key: 'TICGNQty', name: 'TICGN (MWh)' },\n { key: 'TICGNAmount', name: 'TICGN (€)' },\n { key: 'CBMQty', name: 'CBM (MWh)' },\n { key: 'CBMAmount', name: 'CBM (€)' },\n { key: 'CTSSGQty', name: 'CTSSG (MWh)' },\n { key: 'CTSSGAmount', name: 'CTSSG (€)' },\n { key: 'CSPGQty', name: 'CSPG (MWh)' },\n { key: 'CSPGAmount', name: 'CSPG (€)' },\n { key: 'total', name: 'Sous-total (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Montant HTVA (€)',\n billProperty: 'totalHT',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n {\n name: 'Montant TTC (€)',\n billProperty: 'totalTTC',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n ],\n hasTitle: true,\n },\n heating: {\n rows: [\n {\n name: 'Consommation (R1)',\n billProperty: 'consumption',\n subLabels: [\n { key: 'heatingQty', name: 'Consommation chauffage (kWh)' },\n { key: 'ecsQuantity', name: 'Consommation ECS (kWh)' },\n { key: 'totalQuantity', name: 'Consommation totale (kWh)', isTotal: true },\n { key: 'heatingAmount', name: 'Coût consommation chauffage (€)' },\n { key: 'ecsAmount', name: 'Coût consommation ECS (€)' },\n { key: 'totalAmount', name: 'Total Coût consommation (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Abonnement (R2)',\n billProperty: 'subscription',\n subLabels: [\n { key: 'heating', name: 'Abonnement chauffage (€)' },\n { key: 'ecs', name: 'Abonnement ECS (€)' },\n { key: 'total', name: 'Total Abonnement (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Services divers',\n billProperty: 'miscellaneous',\n subLabels: [\n { key: 'telegestion', name: 'Télégestion (€)' },\n { key: 'gestion', name: \"Gestion de l'energie (€)\" },\n { key: 'total', name: 'Total Services divers (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Montant HTVA (€)',\n billProperty: 'totalHT',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n {\n name: 'Montant TTC (€)',\n billProperty: 'totalTTC',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n ],\n hasTitle: true,\n },\n cooling: {\n rows: [\n {\n name: 'Consommation (R1)',\n billProperty: 'consumption',\n subLabels: [\n { key: 'energyQty', name: 'Consommation Energie (kWh)' },\n { key: 'volumeQty', name: 'Consommation Volume (m3)' },\n { key: 'energyAmount', name: 'Coût Consommation Energie (€)' },\n { key: 'volumeAmount', name: 'Coût Consommation Volume (€)' },\n { key: 'totalAmount', name: 'Total Coût consommation (€)', isTotal: true },\n ],\n hasBreak: true,\n },\n {\n name: 'Abonnement (R2)',\n billProperty: 'subscription',\n subLabels: [\n { key: 'r2', name: 'Abonnement (€)' },\n { key: 'power', name: 'Puissance souscrite max (kW)' },\n ],\n hasBreak: true,\n },\n {\n name: 'Services divers',\n billProperty: 'miscellaneous',\n subLabels: [{ key: 'deltaT', name: 'Delta T (°C)' }],\n hasBreak: true,\n },\n {\n name: 'Montant HTVA (€)',\n billProperty: 'totalHT',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n {\n name: 'Montant TTC (€)',\n billProperty: 'totalTTC',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n ],\n hasTitle: true,\n },\n water: {\n rows: [\n {\n name: 'Production et distribution',\n billProperty: 'consumption',\n subLabels: [\n { key: 'conso', name: 'Coût Consommation (€)' },\n { key: 'quantity', name: 'Volume (m³)' },\n ],\n hasBreak: true,\n },\n {\n name: 'Collecte et traitement des eaux usées (€)',\n billProperty: 'wasteWaterTreatment',\n subLabels: [{ key: 'value', name: null }],\n hasBreak: false,\n },\n {\n name: 'Organismes publics (€)',\n billProperty: 'publicOrganismAndVAT',\n subLabels: [{ key: 'value', name: null }],\n hasBreak: false,\n },\n {\n name: 'Abonnement (€)',\n billProperty: 'subscription',\n subLabels: [{ key: 'value', name: null }],\n hasBreak: false,\n },\n {\n name: 'Montant HTVA (€)',\n billProperty: 'totalHT',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n {\n name: 'Montant TTC (€)',\n billProperty: 'totalTTC',\n subLabels: [{ key: 'total', name: null, isTotal: true }],\n hasBreak: false,\n },\n ],\n hasTitle: true,\n },\n },\n ratio: {\n gaz: {\n rows: [\n {\n name: null,\n billProperty: 'ratios',\n subLabels: [\n { key: 'consumption', name: 'Consommation (€/MWh)' },\n { key: 'subscription', name: 'Abonnement (€/MWh)' },\n { key: 'networkServices', name: 'Services réseau (€/MWh)' },\n { key: 'taxes', name: 'Taxes (€/MWh)' },\n ],\n hasBreak: false,\n },\n ],\n hasTitle: false,\n },\n heating: {\n rows: [\n {\n name: null,\n billProperty: 'ratios',\n subLabels: [\n { key: 'consumption', name: 'Consommation R1 (c€ / kWh)' },\n { key: 'subscription', name: \"Coût d'abonnement R2 (c€ / kWh)\" },\n { key: 'miscellaneous', name: 'Services Divers (c€ / kWh)' },\n { key: 'totalHTVA', name: 'Montant HTVA (c€ / kWh)' },\n { key: 'totalTTC', name: 'Montant TTC (c€ / kWh)' },\n ],\n hasBreak: false,\n },\n ],\n hasTitle: false,\n },\n cooling: {\n rows: [\n {\n name: null,\n billProperty: 'ratios',\n subLabels: [\n { key: 'consumption', name: 'Consommation R1 (c€ / kWh)' },\n { key: 'subscription', name: \"Coût d'abonnement R2 (c€ / kWh)\" },\n { key: 'totalHTVA', name: 'Montant HTVA (c€ / kWh)' },\n { key: 'totalTTC', name: 'Montant TTC (c€ / kWh)' },\n ],\n hasBreak: false,\n },\n ],\n hasTitle: false,\n },\n water: {\n rows: [\n {\n name: 'Production et distribution',\n billProperty: 'productionAndDistribution',\n subLabels: [\n { key: 'subscription', name: \"Coût d'abonnement (c€ / m³)\" },\n { key: 'consumption', name: 'Consommation (c€ / m³)' },\n ],\n hasBreak: true,\n },\n {\n name: 'Collecte et traitement des eaux usées (c€ / m³)',\n billProperty: 'wasteWaterTreatment',\n subLabels: [{ key: 'value', name: null }],\n hasBreak: false,\n },\n {\n name: 'Organismes publics (c€ / m³)',\n billProperty: 'publicOrganismAndVAT',\n subLabels: [{ key: 'value', name: null }],\n hasBreak: false,\n },\n {\n name: 'Montant HTVA (c€ / m³)',\n billProperty: 'totalHT',\n subLabels: [{ key: 'value', name: null }],\n hasBreak: false,\n },\n {\n name: 'Montant TTC (c€ / m³)',\n billProperty: 'totalTTC',\n subLabels: [{ key: 'value', name: null }],\n hasBreak: false,\n },\n ],\n hasTitle: true,\n },\n },\n };\n\n constructor() {}\n\n ngOnInit() {\n this.fluidRows = this.rows[this.type][this.fluid];\n }\n}\n","export default \".citron-pdl-data-table {\\n width: 100%;\\n}\\n.citron-pdl-data-table .search {\\n display: -webkit-box;\\n display: flex;\\n}\\n.citron-pdl-data-table .search .search-icon {\\n height: 20px;\\n width: 20px;\\n position: absolute;\\n right: 230px;\\n top: 18px;\\n bottom: 20px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n background-color: grey;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n}\\n.citron-pdl-data-table .search input {\\n height: 30px;\\n position: absolute;\\n right: 25px;\\n top: 13px;\\n width: 200px;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-left: auto;\\n}\\ntable {\\n width: 100%;\\n background-color: white;\\n}\\ntable td {\\n font-size: 12px;\\n border-bottom: 1px solid #e8e8e8;\\n width: 20%;\\n padding: 8px 8px;\\n}\\n.header {\\n width: 100%;\\n background-color: #f3f3f3;\\n border-top: 1px solid #bcbcbc;\\n border-bottom: 1px solid #bcbcbc;\\n font-size: 12px;\\n}\\n.header td {\\n text-align: left;\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\ntbody {\\n display: block;\\n overflow: auto;\\n}\\ntbody .line {\\n width: 100%;\\n border-bottom: 1px solid #bcbcbc;\\n cursor: pointer;\\n}\\ntbody .line td {\\n height: auto;\\n font-size: 12px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\ntbody .line:hover,\\ntbody .checked {\\n background-color: #3189c4;\\n}\\ntbody .line:hover td,\\ntbody .checked td {\\n color: white;\\n}\\nthead,\\ntbody tr {\\n display: table;\\n width: 100%;\\n table-layout: fixed;\\n}\\n.order-icon {\\n display: inline-block;\\n font-size: 14px;\\n position: relative;\\n margin-left: 20px;\\n top: 1px;\\n}\\n.order-desc {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n.order-asc {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n.no-unknown {\\n padding: 10px;\\n font-size: 12px;\\n text-align: center;\\n}\\n.fix-height-table {\\n max-height: 185px;\\n}\\n.citron-btn {\\n font-size: 12px;\\n padding: 5px 16px;\\n}\\n.citron-btn:disabled {\\n cursor: not-allowed !important;\\n background: #dddddd;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3JlZ2V4L25vdC1maW5kLXRhYmxlL25vdC1maW5kLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9yZWdleC9ub3QtZmluZC10YWJsZS9ub3QtZmluZC10YWJsZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7QUNDSjtBREFJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0FDRVI7QUREUTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esa0VBQUE7VUFBQSwwREFBQTtFQUNBLHNCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUNBLHdCQUFBO1VBQUEsZ0JBQUE7QUNHWjtBRERRO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0FDR1o7QURFQTtFQUNJLFdBQUE7RUFDQSx1QkFBQTtBQ0NKO0FEQUk7RUFDSSxlQUFBO0VBQ0EsZ0NBQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7QUNFUjtBREVBO0VBQ0ksV0FBQTtFQUNBLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSxnQ0FBQTtFQUNBLGVBQUE7QUNDSjtBREFJO0VBQ0ksZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0VSO0FERUE7RUFDSSxjQUFBO0VBQ0EsY0FBQTtBQ0NKO0FEQUk7RUFDSSxXQUFBO0VBQ0EsZ0NBQUE7RUFDQSxlQUFBO0FDRVI7QUREUTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0daO0FEQUk7O0VBRUkseUJBQUE7QUNFUjtBRERROztFQUNJLFlBQUE7QUNJWjtBRENBOztFQUVJLGNBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7QUNFSjtBRENBO0VBQ0kscUJBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLFFBQUE7QUNFSjtBRENBO0VBQ0ksZ0NBQUE7VUFBQSx3QkFBQTtBQ0VKO0FEQ0E7RUFDSSxpQ0FBQTtVQUFBLHlCQUFBO0FDRUo7QURDQTtFQUNJLGFBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7QUNFSjtBRENBO0VBQ0ksaUJBQUE7QUNFSjtBRENBO0VBQ0ksZUFBQTtFQUNBLGlCQUFBO0FDRUo7QURBSTtFQUNJLDhCQUFBO0VBQ0EsbUJBQUE7QUNFUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3JlZ2V4L25vdC1maW5kLXRhYmxlL25vdC1maW5kLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNpdHJvbi1wZGwtZGF0YS10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgLnNlYXJjaCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIC5zZWFyY2gtaWNvbiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAyMzBweDtcbiAgICAgICAgICAgIHRvcDogMThweDtcbiAgICAgICAgICAgIGJvdHRvbTogMjBweDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fc2VhcmNoLnN2ZycpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAyNXB4O1xuICAgICAgICAgICAgdG9wOiAxM3B4O1xuICAgICAgICAgICAgd2lkdGg6IDIwMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgfVxuICAgIH1cbn1cblxudGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHRkIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U4ZThlODtcbiAgICAgICAgd2lkdGg6IDIwJTtcbiAgICAgICAgcGFkZGluZzogOHB4IDhweDtcbiAgICB9XG59XG5cbi5oZWFkZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNiY2JjYmM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHRkIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgfVxufVxuXG50Ym9keSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgLmxpbmUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubGluZTpob3ZlcixcbiAgICAuY2hlY2tlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTg5YzQ7XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxudGhlYWQsXG50Ym9keSB0ciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cblxuLm9yZGVyLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgIHRvcDogMXB4O1xufVxuXG4ub3JkZXItZGVzYyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4ub3JkZXItYXNjIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4ubm8tdW5rbm93biB7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZml4LWhlaWdodC10YWJsZSB7XG4gICAgbWF4LWhlaWdodDogMTg1cHg7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgcGFkZGluZzogNXB4IDE2cHg7XG5cbiAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZGRkZGRkO1xuICAgIH1cbn1cbiIsIi5jaXRyb24tcGRsLWRhdGEtdGFibGUge1xuICB3aWR0aDogMTAwJTtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUgLnNlYXJjaCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uY2l0cm9uLXBkbC1kYXRhLXRhYmxlIC5zZWFyY2ggLnNlYXJjaC1pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjMwcHg7XG4gIHRvcDogMThweDtcbiAgYm90dG9tOiAyMHB4O1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIG1hc2staW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fc2VhcmNoLnN2Z1wiKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1zaXplOiBjb3Zlcjtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUgLnNlYXJjaCBpbnB1dCB7XG4gIGhlaWdodDogMzBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjVweDtcbiAgdG9wOiAxM3B4O1xuICB3aWR0aDogMjAwcHg7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbnRhYmxlIHRkIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U4ZThlODtcbiAgd2lkdGg6IDIwJTtcbiAgcGFkZGluZzogOHB4IDhweDtcbn1cblxuLmhlYWRlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2JjYmNiYztcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiY2JjYmM7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5oZWFkZXIgdGQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cblxudGJvZHkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG50Ym9keSAubGluZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxudGJvZHkgLmxpbmUgdGQge1xuICBoZWlnaHQ6IGF1dG87XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxudGJvZHkgLmxpbmU6aG92ZXIsXG50Ym9keSAuY2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTg5YzQ7XG59XG50Ym9keSAubGluZTpob3ZlciB0ZCxcbnRib2R5IC5jaGVja2VkIHRkIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG50aGVhZCxcbnRib2R5IHRyIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xufVxuXG4ub3JkZXItaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICB0b3A6IDFweDtcbn1cblxuLm9yZGVyLWRlc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi5vcmRlci1hc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4ubm8tdW5rbm93biB7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZml4LWhlaWdodC10YWJsZSB7XG4gIG1heC1oZWlnaHQ6IDE4NXB4O1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgcGFkZGluZzogNXB4IDE2cHg7XG59XG4uY2l0cm9uLWJ0bjpkaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogI2RkZGRkZDtcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as BlueBird from 'bluebird';\nimport Swal from 'sweetalert2';\nimport { ApiService } from '../../../services/api/api.service';\nimport { PaginationService } from '../../pagination/front/pagination-front.service';\nimport { UnknownFile } from './not-find-table.interface';\n\n@Component({\n selector: 'ga-not-find-table',\n templateUrl: './not-find-table.component.html',\n styleUrls: ['./not-find-table.component.scss'],\n providers: [ApiService, PaginationService],\n})\nexport class NotFindTableComponent implements OnInit {\n /**\n * List of unkwown files to display\n */\n @Input() files: UnknownFile[];\n\n /**\n * Event sent to remove one or multiple files\n */\n @Output() removeUnknownFiles: EventEmitter = new EventEmitter();\n\n /**\n * Event sent to reextract the file\n */\n @Output() reextractFile: EventEmitter = new EventEmitter();\n\n /**\n * Used to disable all the buttons and prevent any action during a temporary period\n */\n @Input() disableActions = false;\n\n constructor(private paginationService: PaginationService) {}\n\n ngOnInit() {}\n\n /**\n * Launch popup to confirm the removal of one or all files and alert parent component.\n * Do not remove file here.\n * @param {UnknownFile[]} files - files to remove\n */\n async remove(files: UnknownFile[]): Promise {\n const result = await Swal.fire({\n title: 'Êtes-vous sur ?',\n text: '',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: files.length > 1 ? 'Tout supprimer' : 'Supprimer',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n });\n\n if (result.value) {\n this.removeUnknownFiles.emit(files);\n }\n }\n\n /**\n * Launch popup to confirm the re-extraction of of a file and alert parent component.\n * Do not re-extract file here.\n * @param {UnknownFile} file - file to re-extract\n */\n async reextract(file: UnknownFile): Promise {\n const result = await Swal.fire({\n title: 'Êtes-vous sur ?',\n text: '',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Ré-extraire',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n });\n\n if (result.value) {\n this.reextractFile.emit(file);\n }\n }\n\n /**\n * Returns the list of the files to display, respecting the current pagination\n * @returns {UnknownFile[]} files to display\n */\n get filesSorted(): UnknownFile[] {\n return this.files.slice(\n this.paginationService.pagination.indexStart,\n this.paginationService.pagination.indexEnd + 1\n );\n }\n}\n","export default \".citron-pdl-data-table {\\n width: 100%;\\n}\\n.citron-pdl-data-table .search {\\n display: -webkit-box;\\n display: flex;\\n}\\n.citron-pdl-data-table .search .search-icon {\\n height: 20px;\\n width: 20px;\\n position: absolute;\\n right: 230px;\\n top: 18px;\\n bottom: 20px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_search.svg\\\");\\n background-color: grey;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-size: cover;\\n mask-size: cover;\\n}\\n.citron-pdl-data-table .search input {\\n height: 30px;\\n position: absolute;\\n right: 25px;\\n top: 13px;\\n width: 200px;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-left: auto;\\n}\\ntable {\\n max-height: 450px;\\n display: block;\\n overflow-y: scroll;\\n width: 100%;\\n background-color: white;\\n}\\ntable td {\\n font-size: 12px;\\n border-bottom: 1px solid #e8e8e8;\\n width: 20%;\\n padding-left: 8px;\\n padding-right: 8px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\n.header {\\n width: 100%;\\n background-color: #f3f3f3;\\n border-top: 1px solid #bcbcbc;\\n border-bottom: 1px solid #bcbcbc;\\n font-size: 12px;\\n}\\n.header td {\\n text-align: left;\\n height: auto;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n}\\nthead,\\ntbody tr {\\n display: table;\\n width: 100%;\\n table-layout: fixed;\\n}\\n.order-icon {\\n display: inline-block;\\n font-size: 14px;\\n position: relative;\\n margin-left: 20px;\\n top: 1px;\\n}\\n.order-desc {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n.order-asc {\\n -webkit-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n}\\n.column-action .citron-btn {\\n height: 40px;\\n max-width: 180px;\\n margin: 0 5px;\\n white-space: nowrap;\\n padding-left: 12px;\\n padding-right: 12px;\\n}\\n.column-action .citron-btn:disabled {\\n cursor: not-allowed !important;\\n background: #dddddd;\\n}\\ntbody tr {\\n cursor: pointer;\\n}\\ntbody tr:hover {\\n background-color: rgba(141, 190, 74, 0.5);\\n}\\ntbody tr:hover .citron-btn {\\n color: white;\\n background-color: #8dbe4a;\\n border: 1px solid white;\\n}\\ntbody tr:hover .citron-btn:hover {\\n background-color: white;\\n color: #8dbe4a;\\n border: 1px solid #8dbe4a;\\n}\\n.line-active {\\n background-color: rgba(141, 190, 74, 0.5);\\n}\\n.line-active .citron-btn {\\n color: white;\\n background-color: #8dbe4a;\\n border: 1px solid white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3JlZ2V4L3BhdHRlcm4tdGFibGUvcGF0dGVybi10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcmVnZXgvcGF0dGVybi10YWJsZS9wYXR0ZXJuLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLFdBQUE7QUNESjtBREVJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0FDQVI7QURDUTtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esa0VBQUE7VUFBQSwwREFBQTtFQUNBLHNCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUNBLHdCQUFBO1VBQUEsZ0JBQUE7QUNDWjtBRENRO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0FDQ1o7QURJQTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0FDREo7QURFSTtFQUNJLGVBQUE7RUFDQSxnQ0FBQTtFQUNBLFVBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FSO0FESUE7RUFDSSxXQUFBO0VBQ0EseUJBQUE7RUFDQSw2QkFBQTtFQUNBLGdDQUFBO0VBQ0EsZUFBQTtBQ0RKO0FERUk7RUFDSSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0FDQVI7QURJQTs7RUFFSSxjQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0FDREo7QURJQTtFQUNJLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxRQUFBO0FDREo7QURJQTtFQUNJLGdDQUFBO1VBQUEsd0JBQUE7QUNESjtBRElBO0VBQ0ksaUNBQUE7VUFBQSx5QkFBQTtBQ0RKO0FES0k7RUFDSSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0FDRlI7QURJUTtFQUNJLDhCQUFBO0VBQ0EsbUJBQUE7QUNGWjtBRE9BO0VBQ0ksZUFBQTtBQ0pKO0FETUk7RUFDSSx5Q0FBQTtBQ0pSO0FETVE7RUFDSSxZQUFBO0VBQ0EseUJFN0dEO0VGOEdDLHVCQUFBO0FDSlo7QURNWTtFQUNJLHVCQUFBO0VBQ0EsY0VsSEw7RUZtSEsseUJBQUE7QUNKaEI7QURVQTtFQUNJLHlDQUFBO0FDUEo7QURTSTtFQUNJLFlBQUE7RUFDQSx5QkU5SEc7RUYrSEgsdUJBQUE7QUNQUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3JlZ2V4L3BhdHRlcm4tdGFibGUvcGF0dGVybi10YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5zZWFyY2gge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAuc2VhcmNoLWljb24ge1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDogMjMwcHg7XG4gICAgICAgICAgICB0b3A6IDE4cHg7XG4gICAgICAgICAgICBib3R0b206IDIwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3NlYXJjaC5zdmcnKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb3ZlcjtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDogMjVweDtcbiAgICAgICAgICAgIHRvcDogMTNweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnRhYmxlIHtcbiAgICBtYXgtaGVpZ2h0OiA0NTBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgdGQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xuICAgICAgICB3aWR0aDogMjAlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgfVxufVxuXG4uaGVhZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYmNiY2JjO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmNiY2JjO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZCB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgIH1cbn1cblxudGhlYWQsXG50Ym9keSB0ciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cblxuLm9yZGVyLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgIHRvcDogMXB4O1xufVxuXG4ub3JkZXItZGVzYyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4ub3JkZXItYXNjIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4uY29sdW1uLWFjdGlvbiB7XG4gICAgLmNpdHJvbi1idG4ge1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIG1heC13aWR0aDogMTgwcHg7XG4gICAgICAgIG1hcmdpbjogMCA1cHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTJweDtcblxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnRib2R5IHRyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sbGVjdGUsIDAuNSk7XG5cbiAgICAgICAgLmNpdHJvbi1idG4ge1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3RlO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sbGVjdGU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbGxlY3RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGluZS1hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbGxlY3RlLCAwLjUpO1xuXG4gICAgLmNpdHJvbi1idG4ge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xsZWN0ZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG4gICAgfVxufVxuIiwiLmNpdHJvbi1wZGwtZGF0YS10YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10YWJsZSAuc2VhcmNoIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtdGFibGUgLnNlYXJjaCAuc2VhcmNoLWljb24ge1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAyMzBweDtcbiAgdG9wOiAxOHB4O1xuICBib3R0b206IDIwcHg7XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19zZWFyY2guc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xufVxuLmNpdHJvbi1wZGwtZGF0YS10YWJsZSAuc2VhcmNoIGlucHV0IHtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAyNXB4O1xuICB0b3A6IDEzcHg7XG4gIHdpZHRoOiAyMDBweDtcbiAgbWFyZ2luLXRvcDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbnRhYmxlIHtcbiAgbWF4LWhlaWdodDogNDUwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbnRhYmxlIHRkIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U4ZThlODtcbiAgd2lkdGg6IDIwJTtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuXG4uaGVhZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYmNiY2JjO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JjYmNiYztcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmhlYWRlciB0ZCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGhlaWdodDogYXV0bztcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuXG50aGVhZCxcbnRib2R5IHRyIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xufVxuXG4ub3JkZXItaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICB0b3A6IDFweDtcbn1cblxuLm9yZGVyLWRlc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi5vcmRlci1hc2Mge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuXG4uY29sdW1uLWFjdGlvbiAuY2l0cm9uLWJ0biB7XG4gIGhlaWdodDogNDBweDtcbiAgbWF4LXdpZHRoOiAxODBweDtcbiAgbWFyZ2luOiAwIDVweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgcGFkZGluZy1sZWZ0OiAxMnB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xufVxuLmNvbHVtbi1hY3Rpb24gLmNpdHJvbi1idG46ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG59XG5cbnRib2R5IHRyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxudGJvZHkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE0MSwgMTkwLCA3NCwgMC41KTtcbn1cbnRib2R5IHRyOmhvdmVyIC5jaXRyb24tYnRuIHtcbiAgY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGRiZTRhO1xuICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcbn1cbnRib2R5IHRyOmhvdmVyIC5jaXRyb24tYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiAjOGRiZTRhO1xuICBib3JkZXI6IDFweCBzb2xpZCAjOGRiZTRhO1xufVxuXG4ubGluZS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE0MSwgMTkwLCA3NCwgMC41KTtcbn1cbi5saW5lLWFjdGl2ZSAuY2l0cm9uLWJ0biB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhkYmU0YTtcbiAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PaginationService } from 'app/shared/components/pagination/front/pagination-front.service';\nimport { PaginationIndexes } from 'app/shared/components/pagination/pagination.interface';\nimport { ContractUploadsGroup, ForceType } from 'app/shared/models/upload-file.interface';\n\n@Component({\n selector: 'ga-pattern-table',\n templateUrl: './pattern-table.component.html',\n styleUrls: ['./pattern-table.component.scss'],\n providers: [PaginationService],\n})\nexport class PatternTableComponent implements OnInit {\n @Input() dataArray: ContractUploadsGroup[];\n @Output() selectElement = new EventEmitter();\n @Output() extractClick = new EventEmitter();\n /**\n * Triggered when force extract clicked.\n * Value is the index of contract group to force.\n */\n @Output() forceExtractClick: EventEmitter = new EventEmitter();\n @Input() currentLineSelected = 0;\n @Input() disableActions = false;\n\n /** List of contract types to display */\n public contractTypes: ContractUploadsGroup[] = [];\n\n constructor(private paginationService: PaginationService) {}\n ngOnInit() {}\n\n public selectContractType(index: number) {\n index = this.getIndexPaginated(index);\n this.currentLineSelected = index;\n this.selectElement.emit(index);\n }\n\n public extractContractType(index: number) {\n index = this.getIndexPaginated(index);\n this.extractClick.emit(index);\n }\n\n public forceExtractContractType(index: number) {\n index = this.getIndexPaginated(index);\n this.forceExtractClick.emit(index);\n }\n\n public trackByFn(index: any, item: any) {\n return item.id;\n }\n\n public getLineActiveClass(index: number): string {\n index = this.getIndexPaginated(index);\n return index === this.currentLineSelected ? 'line-active' : '';\n }\n\n /**\n * Get index considering pagination.\n * Eg. Index of 3rd item of 2nd page is 5 (not 2)\n * @param {number} index\n * @returns {number}\n */\n private getIndexPaginated(index: number): number {\n return this.paginationService.pagination.indexStart + index;\n }\n\n public getProviderName(contract: ContractUploadsGroup) {\n return contract.provider && contract.provider.name ? contract.provider.name.toUpperCase() : '';\n }\n\n public getContractTypeName(contract: ContractUploadsGroup) {\n return contract.contractType && contract.contractType.name ? contract.contractType.name : '';\n }\n\n public updateContractTypes(indexes: PaginationIndexes) {\n this.contractTypes = this.dataArray.slice(indexes.indexStart, indexes.indexEnd + 1);\n }\n\n public canForceQuality(forceType: string): boolean {\n return forceType === ForceType.QUALITY;\n }\n}\n","export default \".overflow-table {\\n overflow: scroll;\\n height: auto;\\n width: 100%;\\n display: block;\\n}\\n\\nth {\\n padding-left: 5px;\\n padding-right: 5px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n font-size: 12px;\\n font-weight: normal;\\n background-color: #f3f3f3;\\n}\\n\\ntr {\\n border-bottom: solid 1px white;\\n}\\n\\ntr:first-of-type {\\n border-top: solid 1px white;\\n}\\n\\ntr:last-of-type td {\\n border-bottom: 1px solid white;\\n}\\n\\ntbody td {\\n padding: 5px;\\n font-size: 12px;\\n font-weight: normal;\\n border-right: solid 1px white;\\n border-top: 1px solid white;\\n}\\n\\ntbody td:first-of-type {\\n border-left: solid 1px white;\\n}\\n\\n.element__row .sticky-item {\\n background-color: white;\\n}\\n\\n.element__row .property-found {\\n background-color: #bada55;\\n}\\n\\n.element__row .property-not-found {\\n background-color: #dc2f07;\\n}\\n\\n.element__row .property-non-existent {\\n background-color: #bbbbbb;\\n}\\n\\n.element__row:hover {\\n background: #ddd;\\n}\\n\\n.element__row:hover .sticky-item {\\n background-color: #ddd;\\n border-top: 0px;\\n}\\n\\n.element__row:hover .property-found {\\n background-color: #6e8e09;\\n}\\n\\n.element__row:hover .property-not-found {\\n background-color: #a90000;\\n}\\n\\n.element__row:hover .property-non-existent {\\n background-color: #6f6f6f;\\n}\\n\\n.property-element {\\n padding: 5px;\\n max-width: 50px;\\n min-width: 15px;\\n cursor: pointer;\\n}\\n\\n.property-name,\\n.file-name,\\n.file-index {\\n cursor: pointer;\\n}\\n\\n.file-index a {\\n display: block;\\n width: 100%;\\n}\\n\\n.property-name {\\n position: relative;\\n}\\n\\n.property-name label {\\n position: absolute;\\n top: -50px;\\n left: 10px;\\n display: block;\\n padding: 5px;\\n width: auto;\\n background-color: white;\\n color: black;\\n border: 1px solid #dcdcdc;\\n -webkit-transition: 1s all;\\n transition: 1s all;\\n opacity: 0;\\n z-index: 101;\\n}\\n\\n.property-name:hover label {\\n opacity: 1;\\n}\\n\\n.filters-section {\\n display: -webkit-box;\\n display: flex;\\n margin: 0.5rem 0.5rem 0.5rem 20px;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.filters-section label {\\n font-size: 0.75rem;\\n margin-bottom: 0;\\n margin-right: 1rem;\\n}\\n\\n.filters-section select,\\n.filters-section input {\\n font-size: 12px;\\n}\\n\\n.close-table {\\n position: absolute;\\n top: -20px;\\n right: 0;\\n}\\n\\n.infolabel .citron-btn {\\n cursor: pointer;\\n text-align: center;\\n padding: 5px 10px;\\n}\\n\\n.infolabel .citron-btn:disabled {\\n cursor: not-allowed !important;\\n background: #dddddd;\\n}\\n\\n.infolabel .close {\\n color: #5b4da1;\\n position: absolute;\\n right: 8px;\\n top: 8px;\\n cursor: pointer;\\n}\\n\\n.infolabel .infolabel__btn {\\n width: 100%;\\n}\\n\\n.sticky-item {\\n position: -webkit-sticky;\\n position: sticky;\\n left: 0px;\\n display: -webkit-box;\\n display: flex;\\n}\\n\\n.sticky-item a {\\n margin-right: 1em;\\n}\\n\\ntd.sticky-item {\\n background-color: white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3JlZ2V4L3BhdHRlcm5zLXByb3BlcnRpZXMtdGFibGUvcGF0dGVybnMtcHJvcGVydGllcy10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcmVnZXgvcGF0dGVybnMtcHJvcGVydGllcy10YWJsZS9wYXR0ZXJucy1wcm9wZXJ0aWVzLXRhYmxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGNBQUE7QUNESjs7QURJQTtFQUNJLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EseUJBQUE7QUNESjs7QURJQTtFQUNJLDhCQUFBO0FDREo7O0FER0k7RUFDSSwyQkFBQTtBQ0RSOztBREtRO0VBQ0ksOEJBQUE7QUNIWjs7QURTSTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDJCQUFBO0FDTlI7O0FEUVE7RUFDSSw0QkFBQTtBQ05aOztBRFlJO0VBQ0ksdUJBQUE7QUNUUjs7QURXSTtFQUNJLHlCQUFBO0FDVFI7O0FEV0k7RUFDSSx5QkFBQTtBQ1RSOztBRFdJO0VBQ0kseUJBQUE7QUNUUjs7QURZQTtFQUNJLGdCQUFBO0FDVEo7O0FEVUk7RUFDSSxzQkFBQTtFQUNBLGVBQUE7QUNSUjs7QURVSTtFQUNJLHlCQUFBO0FDUlI7O0FEVUk7RUFDSSx5QkFBQTtBQ1JSOztBRFVJO0VBQ0kseUJBQUE7QUNSUjs7QURZQTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7QUNUSjs7QURZQTs7O0VBR0ksZUFBQTtBQ1RKOztBRFlBO0VBQ0ksY0FBQTtFQUNBLFdBQUE7QUNUSjs7QURZQTtFQUNJLGtCQUFBO0FDVEo7O0FEV0k7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0VBQ0EsY0FBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtFQUFBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7QUNUUjs7QURhUTtFQUNJLFVBQUE7QUNYWjs7QURnQkE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxpQ0FBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7QUNiSjs7QURjSTtFQUNJLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtBQ1pSOztBRGNJOztFQUVJLGVBQUE7QUNaUjs7QURnQkE7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxRQUFBO0FDYko7O0FEaUJJO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0VBRUEsaUJBQUE7QUNmUjs7QURpQlE7RUFDSSw4QkFBQTtFQUNBLG1CQUFBO0FDZlo7O0FEbUJJO0VBQ0ksY0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSxlQUFBO0FDakJSOztBRG1CSTtFQUNJLFdBQUE7QUNqQlI7O0FEcUJBO0VBQ0ksd0JBQUE7RUFBQSxnQkFBQTtFQUNBLFNBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7QUNsQko7O0FEb0JJO0VBQ0ksaUJBQUE7QUNsQlI7O0FEcUJBO0VBQ0ksdUJBQUE7QUNsQkoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9yZWdleC9wYXR0ZXJucy1wcm9wZXJ0aWVzLXRhYmxlL3BhdHRlcm5zLXByb3BlcnRpZXMtdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbi5vdmVyZmxvdy10YWJsZSB7XG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbnRoIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbn1cblxudHIge1xuICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCB3aGl0ZTtcblxuICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCB3aGl0ZTtcbiAgICB9XG5cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxudGJvZHkge1xuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGJvcmRlci1yaWdodDogc29saWQgMXB4IHdoaXRlO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgd2hpdGU7XG5cbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBzb2xpZCAxcHggd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5lbGVtZW50X19yb3cge1xuICAgIC5zdGlja3ktaXRlbSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAucHJvcGVydHktZm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmFkYTU1O1xuICAgIH1cbiAgICAucHJvcGVydHktbm90LWZvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMmYwNztcbiAgICB9XG4gICAgLnByb3BlcnR5LW5vbi1leGlzdGVudCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiYmJiYmI7XG4gICAgfVxufVxuLmVsZW1lbnRfX3Jvdzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2RkZDtcbiAgICAuc3RpY2t5LWl0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xuICAgICAgICBib3JkZXItdG9wOiAwcHg7XG4gICAgfVxuICAgIC5wcm9wZXJ0eS1mb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2ZThlMDk7XG4gICAgfVxuICAgIC5wcm9wZXJ0eS1ub3QtZm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTkwMDAwO1xuICAgIH1cbiAgICAucHJvcGVydHktbm9uLWV4aXN0ZW50IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzZmNmY2ZjtcbiAgICB9XG59XG5cbi5wcm9wZXJ0eS1lbGVtZW50IHtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgbWF4LXdpZHRoOiA1MHB4O1xuICAgIG1pbi13aWR0aDogMTVweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5wcm9wZXJ0eS1uYW1lLFxuLmZpbGUtbmFtZSxcbi5maWxlLWluZGV4IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5maWxlLWluZGV4IGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ucHJvcGVydHktbmFtZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgbGFiZWwge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTUwcHg7XG4gICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGNkY2RjO1xuICAgICAgICB0cmFuc2l0aW9uOiAxcyBhbGw7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZpbHRlcnMtc2VjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW46IDAuNXJlbSAwLjVyZW0gMC41cmVtIDIwcHg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgfVxuICAgIHNlbGVjdCxcbiAgICBpbnB1dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG59XG5cbi5jbG9zZS10YWJsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTIwcHg7XG4gICAgcmlnaHQ6IDA7XG59XG5cbi5pbmZvbGFiZWwge1xuICAgIC5jaXRyb24tYnRuIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG5cbiAgICAgICAgJjpkaXNhYmxlZCB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZGRkZGRkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNsb3NlIHtcbiAgICAgICAgY29sb3I6ICM1YjRkYTE7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDhweDtcbiAgICAgICAgdG9wOiA4cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgLmluZm9sYWJlbF9fYnRuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4uc3RpY2t5LWl0ZW0ge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgbGVmdDogMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBhIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgfVxufVxudGQuc3RpY2t5LWl0ZW0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuIiwiLm92ZXJmbG93LXRhYmxlIHtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbnRoIHtcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG59XG5cbnRyIHtcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4IHdoaXRlO1xufVxudHI6Zmlyc3Qtb2YtdHlwZSB7XG4gIGJvcmRlci10b3A6IHNvbGlkIDFweCB3aGl0ZTtcbn1cbnRyOmxhc3Qtb2YtdHlwZSB0ZCB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB3aGl0ZTtcbn1cblxudGJvZHkgdGQge1xuICBwYWRkaW5nOiA1cHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggd2hpdGU7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB3aGl0ZTtcbn1cbnRib2R5IHRkOmZpcnN0LW9mLXR5cGUge1xuICBib3JkZXItbGVmdDogc29saWQgMXB4IHdoaXRlO1xufVxuXG4uZWxlbWVudF9fcm93IC5zdGlja3ktaXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuLmVsZW1lbnRfX3JvdyAucHJvcGVydHktZm91bmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmFkYTU1O1xufVxuLmVsZW1lbnRfX3JvdyAucHJvcGVydHktbm90LWZvdW5kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMmYwNztcbn1cbi5lbGVtZW50X19yb3cgLnByb3BlcnR5LW5vbi1leGlzdGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiYmJiYmI7XG59XG5cbi5lbGVtZW50X19yb3c6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZGRkO1xufVxuLmVsZW1lbnRfX3Jvdzpob3ZlciAuc3RpY2t5LWl0ZW0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xuICBib3JkZXItdG9wOiAwcHg7XG59XG4uZWxlbWVudF9fcm93OmhvdmVyIC5wcm9wZXJ0eS1mb3VuZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2ZThlMDk7XG59XG4uZWxlbWVudF9fcm93OmhvdmVyIC5wcm9wZXJ0eS1ub3QtZm91bmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTkwMDAwO1xufVxuLmVsZW1lbnRfX3Jvdzpob3ZlciAucHJvcGVydHktbm9uLWV4aXN0ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZmNmY2Zjtcbn1cblxuLnByb3BlcnR5LWVsZW1lbnQge1xuICBwYWRkaW5nOiA1cHg7XG4gIG1heC13aWR0aDogNTBweDtcbiAgbWluLXdpZHRoOiAxNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5wcm9wZXJ0eS1uYW1lLFxuLmZpbGUtbmFtZSxcbi5maWxlLWluZGV4IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZmlsZS1pbmRleCBhIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucHJvcGVydHktbmFtZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5wcm9wZXJ0eS1uYW1lIGxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC01MHB4O1xuICBsZWZ0OiAxMHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4O1xuICB3aWR0aDogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiBibGFjaztcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGNkYztcbiAgdHJhbnNpdGlvbjogMXMgYWxsO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxMDE7XG59XG4ucHJvcGVydHktbmFtZTpob3ZlciBsYWJlbCB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5maWx0ZXJzLXNlY3Rpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW46IDAuNXJlbSAwLjVyZW0gMC41cmVtIDIwcHg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5maWx0ZXJzLXNlY3Rpb24gbGFiZWwge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbn1cbi5maWx0ZXJzLXNlY3Rpb24gc2VsZWN0LFxuLmZpbHRlcnMtc2VjdGlvbiBpbnB1dCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmNsb3NlLXRhYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yMHB4O1xuICByaWdodDogMDtcbn1cblxuLmluZm9sYWJlbCAuY2l0cm9uLWJ0biB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbn1cbi5pbmZvbGFiZWwgLmNpdHJvbi1idG46ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG59XG4uaW5mb2xhYmVsIC5jbG9zZSB7XG4gIGNvbG9yOiAjNWI0ZGExO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA4cHg7XG4gIHRvcDogOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uaW5mb2xhYmVsIC5pbmZvbGFiZWxfX2J0biB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc3RpY2t5LWl0ZW0ge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBsZWZ0OiAwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uc3RpY2t5LWl0ZW0gYSB7XG4gIG1hcmdpbi1yaWdodDogMWVtO1xufVxuXG50ZC5zdGlja3ktaXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufSJdfQ== */\"","import { Component, ElementRef, Input, OnChanges, OnInit, QueryList, SimpleChange, ViewChildren } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { PaginationService } from 'app/shared/components/pagination/front/pagination-front.service';\nimport { PaginationIndexes } from 'app/shared/components/pagination/pagination.interface';\nimport { PatternService } from 'app/shared/services/pattern/pattern.service';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\n\n/**\n * Pattern property to display in table\n * Can be a chunk or a simple file data\n */\ninterface PatternProperty {\n filename: string;\n pattern: {\n name: string;\n id: string;\n };\n properties: Array<{\n name: string;\n found: number;\n }>;\n hasPropertiesNotFound: boolean;\n uploadId: string;\n chunkId: string;\n}\n\n@Component({\n selector: 'ga-pattern-properties-table',\n templateUrl: './patterns-properties-table.component.html',\n styleUrls: ['./patterns-properties-table.component.scss'],\n providers: [PaginationService],\n})\nexport class PatternsPropertiesTableComponent implements OnInit, OnChanges {\n @Input() data: PatternProperty[];\n @Input() groupId: string;\n @Input() indexSelectedGroupType: number;\n @Input() energyType: string;\n @Input() provider: { extracted: string; name: string; regex: string };\n @Input() contractType: { extracted: string; name: string; regex: string };\n @Input() disableActions = false;\n\n @ViewChildren('editPropertyTooltip') propertiesTooltip: QueryList;\n\n /**\n * All unique properties found for for all data\n */\n allProperties: string[] = [];\n\n /**\n * Filtering\n */\n currentSearch = '';\n searchControl = new FormControl(); // needed to add a debounce time\n\n /**\n * Different patterns found\n * Not used for the moment\n */\n patterns: { [key: string]: number } = {};\n currentPatternCounter = 0;\n\n /**\n * Property to display in popover\n */\n propertyToDisplay = '';\n\n /**\n * Filtered list of files/chunks before pagination\n */\n public items: PatternProperty[] = [];\n\n /**\n * Filtered list of files/chunks after pagination\n */\n public itemsSorted: PatternProperty[] = [];\n\n constructor(private patternService: PatternService, private paginationService: PaginationService) {}\n\n ngOnInit() {\n this.searchControl.valueChanges\n .pipe(debounceTime(300))\n .subscribe({ next: newSearch => this.onSearch(newSearch) });\n }\n\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n // Reload component if input data has changes\n for (const propName in changes) {\n if (propName === 'data') {\n this.reinitComponent();\n this.updateProperties();\n this.updateElementsToDisplay();\n }\n }\n }\n\n reinitComponent() {\n this.allProperties = [];\n this.currentPatternCounter = 0;\n }\n\n updateProperties() {\n this.createAllProperties();\n this.modifyDataWithAllProperties();\n }\n\n updateElementsToDisplay() {\n this.items = [];\n this.data.forEach(element => {\n if (this.canBeDisplayed(element)) {\n this.items.push(element);\n }\n });\n }\n\n /**\n * Generate allProperties by searching all patterns properties found in data.\n */\n createAllProperties() {\n const uniqueProps = new Set();\n this.data.forEach(element => {\n element.properties.forEach(p => {\n uniqueProps.add(p.name);\n });\n });\n this.allProperties = Array.from(uniqueProps);\n }\n\n getPatternDisplayName(pattern) {\n if (!this.patterns[pattern.id]) {\n this.patterns[pattern.id] = ++this.currentPatternCounter;\n }\n\n // return \"Pattern \" + this.patterns[pattern.id];\n return pattern.id;\n }\n\n /**\n * Update data by computing properties not found.\n */\n modifyDataWithAllProperties() {\n this.data = this.data.map(element => {\n if (element.properties.length !== this.allProperties.length) {\n const foundProperties = element.properties.filter(p => p.found).map(p => p.name);\n const notFoundProperties = element.properties.filter(p => !p.found).map(p => p.name);\n\n element.properties = this.allProperties.map(prop => {\n let found = -1;\n\n if (foundProperties.includes(prop)) {\n found = 1;\n } else if (notFoundProperties.includes(prop)) {\n found = 0;\n }\n\n return {\n name: prop,\n found,\n };\n });\n }\n\n return element;\n });\n }\n\n isInSearch(element: PatternProperty): boolean {\n if (this.currentSearch !== '') {\n return element.filename.includes(this.currentSearch);\n }\n\n return true;\n }\n\n isStateDisplayable(element: PatternProperty): boolean {\n return true;\n }\n\n /**\n * For the given element, define it can be displayed or not.\n * @param {PatternProperty} element - element to define if must be displayed or not.\n * @returns {boolean} true if element matches filters, false otherwise\n */\n canBeDisplayed(element: PatternProperty): boolean {\n return this.isStateDisplayable(element) && this.isInSearch(element);\n }\n\n getPropertyClass(found: number): string {\n let className = '';\n\n if (found === 1) {\n className = 'property-found';\n } else if (found === 0) {\n className = 'property-not-found';\n } else if (found === -1) {\n className = 'property-non-existent';\n }\n\n return className;\n }\n\n getFixUploadLink(element: PatternProperty): string[] {\n if (element.chunkId) {\n return ['/collecte/regex/upload/' + element.uploadId + '/' + element.chunkId];\n } else {\n return ['/collecte/regex/upload/' + element.uploadId];\n }\n }\n\n get fixUploadQueryParams() {\n return { index: this.indexSelectedGroupType };\n }\n\n /**\n * Get url for the redirection on the pattern edition page.\n * @param {string} property\n */\n getUrlProperty(property: string) {\n return (\n `/collecte/regex/propriete/${this.groupId}/${property}/` +\n `${encodeURIComponent(this.energyType)}/${encodeURIComponent(this.provider.name)}/${encodeURIComponent(\n this.contractType.name\n )}`\n );\n }\n\n /**\n * Get query params for redirection on the pattern edition page.\n * Param is the index of the selected contract.\n * On the pattern page, clicking on “Return“ enables the contract to be pre-selected.\n */\n getUrlQueryParams() {\n return { index: this.indexSelectedGroupType };\n }\n\n removeStringSpaces(str: string) {\n return str.replace(/\\s/g, '_');\n }\n\n getPropertyNameFromSlug(property) {\n return this.patternService.getPropertyNameFromSlug(property, this.energyType);\n }\n\n displayProperty(event, property) {\n this.propertyToDisplay = property;\n }\n\n onSearch(search: string) {\n this.currentSearch = search;\n this.updateElementsToDisplay();\n }\n\n public updateItemsSorted(indexes: PaginationIndexes) {\n this.itemsSorted = this.items.slice(indexes.indexStart, indexes.indexEnd + 1);\n }\n\n /**\n * Hide all the tooltips.\n */\n public onScroll(): void {\n this.propertiesTooltip.forEach(x => x.hide());\n }\n}\n","export default \"table {\\n max-height: 450px;\\n overflow-y: scroll;\\n width: 100%;\\n}\\n\\nthead {\\n background-color: #f3f3f3;\\n font-size: 12px;\\n}\\n\\nth,\\ntd {\\n padding-left: 8px;\\n padding-right: 8px;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n font-size: 12px;\\n font-weight: normal;\\n}\\n\\nth .citron-btn,\\ntd .citron-btn {\\n margin-left: 15px;\\n font-size: 12px;\\n height: 40px;\\n padding: 0 12px 0 12px;\\n}\\n\\nth .citron-btn:disabled,\\ntd .citron-btn:disabled {\\n cursor: not-allowed !important;\\n background: #dddddd;\\n}\\n\\n.padded-left {\\n padding-left: 30px;\\n}\\n\\n.filename {\\n cursor: pointer;\\n}\\n\\n.input-under {\\n margin-left: 10px;\\n}\\n\\n.collapsed-chevron {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n margin-bottom: 3px;\\n -webkit-transition: 0.3s all;\\n transition: 0.3s all;\\n}\\n\\n.uncollapsed-chevron {\\n margin-bottom: 3px;\\n -webkit-transition: 0.3s all;\\n transition: 0.3s all;\\n}\\n\\n.message-icon {\\n padding-right: 0.5rem;\\n}\\n\\n.column-content {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 10px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3JlZ2V4L3JlY2FwLWZpbGVzL3JlY2FwLWZpbGVzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9yZWdleC9yZWNhcC1maWxlcy9yZWNhcC1maWxlcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtFQUNBLGVBQUE7QUNDSjs7QURFQTs7RUFFSSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtBQ0NKOztBRENJOztFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTtBQ0VSOztBREFROztFQUNJLDhCQUFBO0VBQ0EsbUJBQUE7QUNHWjs7QURFQTtFQUNJLGtCQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtBQ0NKOztBREVBO0VBQ0ksZ0NBQUE7VUFBQSx3QkFBQTtFQUNBLGtCQUFBO0VBQ0EsNEJBQUE7RUFBQSxvQkFBQTtBQ0NKOztBREVBO0VBQ0ksa0JBQUE7RUFDQSw0QkFBQTtFQUFBLG9CQUFBO0FDQ0o7O0FERUE7RUFDSSxxQkFBQTtBQ0NKOztBREVBO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLGFBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3JlZ2V4L3JlY2FwLWZpbGVzL3JlY2FwLWZpbGVzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsidGFibGUge1xuICAgIG1heC1oZWlnaHQ6IDQ1MHB4O1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxudGhlYWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuXG50aCxcbnRkIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgcGFkZGluZzogMCAxMnB4IDAgMTJweDtcblxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wYWRkZWQtbGVmdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xufVxuXG4uZmlsZW5hbWUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmlucHV0LXVuZGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cblxuLmNvbGxhcHNlZC1jaGV2cm9uIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgbWFyZ2luLWJvdHRvbTogM3B4O1xuICAgIHRyYW5zaXRpb246IDAuM3MgYWxsO1xufVxuXG4udW5jb2xsYXBzZWQtY2hldnJvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3B4O1xuICAgIHRyYW5zaXRpb246IDAuM3MgYWxsO1xufVxuXG4ubWVzc2FnZS1pY29uIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG59XG5cbi5jb2x1bW4tY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG4iLCJ0YWJsZSB7XG4gIG1heC1oZWlnaHQ6IDQ1MHB4O1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG50aGVhZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxudGgsXG50ZCB7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxudGggLmNpdHJvbi1idG4sXG50ZCAuY2l0cm9uLWJ0biB7XG4gIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGhlaWdodDogNDBweDtcbiAgcGFkZGluZzogMCAxMnB4IDAgMTJweDtcbn1cbnRoIC5jaXRyb24tYnRuOmRpc2FibGVkLFxudGQgLmNpdHJvbi1idG46ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG59XG5cbi5wYWRkZWQtbGVmdCB7XG4gIHBhZGRpbmctbGVmdDogMzBweDtcbn1cblxuLmZpbGVuYW1lIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uaW5wdXQtdW5kZXIge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbn1cblxuLmNvbGxhcHNlZC1jaGV2cm9uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gIHRyYW5zaXRpb246IDAuM3MgYWxsO1xufVxuXG4udW5jb2xsYXBzZWQtY2hldnJvbiB7XG4gIG1hcmdpbi1ib3R0b206IDNweDtcbiAgdHJhbnNpdGlvbjogMC4zcyBhbGw7XG59XG5cbi5tZXNzYWdlLWljb24ge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG59XG5cbi5jb2x1bW4tY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDEwcHg7XG59Il19 */\"","import { CollectService } from 'app/pages/collect/collect.service';\nimport { PaginationService } from 'app/shared/components/pagination/front/pagination-front.service';\nimport { ForceType, UploadChunkRecap } from 'app/shared/models/upload-file.interface';\nimport * as _ from 'lodash';\nimport Swal from 'sweetalert2';\n\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { UploadsMapping } from './recap-files.interface';\n\n@Component({\n selector: 'ga-recap-files',\n templateUrl: './recap-files.component.html',\n styleUrls: ['./recap-files.component.scss'],\n providers: [PaginationService],\n})\nexport class RecapFilesComponent implements OnInit {\n private _data: UploadChunkRecap[][];\n @Input() set data(data: UploadChunkRecap[][]) {\n this._data = data;\n // if collapseValue is 0, means that view is not init or empty\n if (this.collapseValue) {\n // Update file level checkbox if data changes (otherwise, after extract, still checked, while chunks aren't)\n this._data.forEach(chunks => {\n this.updateChunkChecked(chunks);\n });\n }\n this.refreshForceTypes();\n }\n get data(): UploadChunkRecap[][] {\n return this._data;\n }\n\n public filesChecked: { [filename: string]: boolean } = {};\n private filesCollapsed: { [filename: string]: boolean } = {};\n /**\n * Array of force type i18n key where each item index must match `_data` index\n */\n public dataForceTypeKeys: string[] = [];\n // Number of files in recap, used to check changes and trigger collapse reset\n private collapseValue = 0;\n @Input() disableActions = false;\n @Output() extractClicked: EventEmitter = new EventEmitter();\n @Output() forceExtractClicked: EventEmitter = new EventEmitter();\n @Output() updateExtractSelectionButton: EventEmitter = new EventEmitter();\n\n constructor(public collectService: CollectService, private paginationService: PaginationService) {}\n ngOnInit() {\n this.filesChecked = {};\n this.initCollapse();\n }\n\n private initCollapse() {\n this.data.forEach(file => {\n this.filesChecked[file[0].filename] = false;\n this.filesCollapsed[file[0].filename] = true;\n });\n this.collapseValue = this.data.length;\n }\n\n public resetCollapse() {\n if (this.data.length !== this.collapseValue) {\n this.collapseValue = Object.keys(this.filesChecked).length;\n this.initCollapse();\n }\n return true;\n }\n\n public collapse(file: UploadChunkRecap[]) {\n this.filesCollapsed[file[0].filename] = !this.filesCollapsed[file[0].filename];\n }\n\n public isCollapsedClass(file: UploadChunkRecap[]): string {\n return this.filesCollapsed[file[0].filename] ? 'uncollapsed-chevron' : 'collapsed-chevron';\n }\n\n public isCollapsed(file: UploadChunkRecap[]): boolean {\n return this.filesCollapsed[file[0].filename];\n }\n\n public getNbMissingProperties(element: UploadChunkRecap): number {\n if (!element.missingProperties) {\n return 0;\n }\n\n return element.missingProperties.length;\n }\n\n /**\n * Returns true if all chunks that can be checked are checked (=> checked or already extracted)\n * @param {Array} chunk\n * @return {boolean}\n */\n private areAllChunksChecked(chunks: UploadChunkRecap[]): boolean {\n return chunks.every(chunk => this.isExtracted(chunk.state) || chunk.checked === true);\n }\n\n private someFilesOrChunkedChecked(): boolean {\n for (const file of this.data) {\n if (file.some(chunk => !this.isExtracted(chunk.state) && chunk.checked === true)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Check all file chunks\n */\n public checkAllFileChunks(chunks: UploadChunkRecap[]) {\n // A chunk is checked when it is already extracted or checked. We can not check a chunk which is already extracted.\n const allChunksChecked = this.areAllChunksChecked(chunks);\n\n const valueToPut = !allChunksChecked;\n chunks.forEach(chunk => {\n const isExtracted = this.isExtracted(chunk.state);\n chunk.checked = !isExtracted && valueToPut;\n });\n }\n\n /**\n * Update chunk checked\n */\n public updateChunkChecked(chunks: UploadChunkRecap[]) {\n const allChunksChecked = this.areAllChunksChecked(chunks);\n\n this.filesChecked[chunks[0].filename] = allChunksChecked;\n\n this.manageExtractAllButton();\n }\n\n /**\n * Enable extract selection button if some files/chunks are checked, disable if nothing is checked\n */\n public manageExtractAllButton() {\n const somethingChecked = this.someFilesOrChunkedChecked();\n this.updateExtractSelectionButton.emit(somethingChecked);\n }\n\n /**\n * Handle extract button clicked\n */\n public singleFileExtract(chunks: UploadChunkRecap[], action: 'extract' | 'forceExtract') {\n const checkedChunks = this.getListOfChunks(chunks, true);\n let chunkToExtract = checkedChunks;\n\n if (!checkedChunks || !checkedChunks[0] || !checkedChunks[0][chunks[0].uploadId].length) {\n const errorChunks = this.getListOfChunks(chunks, false);\n if (errorChunks.length === 0) {\n this.getSwal('', 'Aucun chunk à extraire', 'error');\n return;\n }\n chunkToExtract = errorChunks;\n }\n\n switch (action) {\n case 'extract':\n this.extractClicked.emit(chunkToExtract);\n break;\n case 'forceExtract':\n this.forceExtractClicked.emit(chunkToExtract);\n break;\n }\n }\n\n /**\n * Get list of checked or unchecked chunks\n * @param {boolean} checked - Specifies whether to get checked chunks (true) or unchecked chunks (false) in error states.\n */\n private getListOfChunks(chunks: UploadChunkRecap[], checked: boolean): UploadsMapping[] {\n // for the moment every bill belongs to the same upload -> all the same filename\n const formatedArrayCheckedFiles: UploadsMapping[] = [];\n const filesByUpload: UploadsMapping = {};\n\n if (checked) {\n filesByUpload[chunks[0].uploadId] = chunks.filter(c => c.checked);\n } else {\n filesByUpload[chunks[0].uploadId] = chunks.filter(c => !this.isExtracted(c.state));\n }\n\n if (filesByUpload[chunks[0].uploadId]) {\n formatedArrayCheckedFiles.push(filesByUpload);\n }\n\n return formatedArrayCheckedFiles;\n }\n\n /**\n * Display swal\n */\n private getSwal(title: string, subtitle: string, type: any) {\n return Swal.fire(title, subtitle, type);\n }\n\n /**\n * Get color related to state\n */\n public getColor(state: string): string {\n return this.collectService.infos[this.collectService.stateInfo[state].type].color;\n }\n\n /**\n * Get icon class related to state\n */\n public getIconClass(state: string): string {\n return this.collectService.infos[this.collectService.stateInfo[state].type].icon;\n }\n\n /**\n * Get message related to state\n */\n public getMessage(state: string): string {\n return this.collectService.stateInfo[state].message;\n }\n\n /** Pagination **/\n get filesSorted(): UploadChunkRecap[][] {\n return this.data.slice(\n this.paginationService.pagination.indexStart,\n this.paginationService.pagination.indexEnd + 1\n );\n }\n\n /**\n * used to disable the checkbox of the file chunk element if it is already extracted\n * @param {string} state - state of the chunk element\n * @returns {boolean}\n */\n public isExtracted(state: string): boolean {\n return [this.collectService.infoType.SUCCESS].includes(_.get(this.collectService.stateInfo[state], 'type'));\n }\n\n /**\n * used to disabled the checkbox of file which is already extracted\n * @param {UploadChunkRecap[]} file\n * @returns {boolean}\n */\n public isFileFullyExtracted(file: UploadChunkRecap[]): boolean {\n return file.every(chunk => this.isExtracted(chunk.state));\n }\n\n /**\n * Refresh dataForceTypeKey\n */\n private refreshForceTypes() {\n this.dataForceTypeKeys = this.data.map(data => {\n const forceType = this.collectService.getForceTypeFromStates(data, true);\n return this.getForceTypeKey(forceType);\n });\n }\n\n /**\n * Get i18n key related to force button\n * @param forceType\n */\n private getForceTypeKey(forceType: ForceType): string {\n if (!forceType) {\n return null;\n }\n if (forceType === ForceType.QUALITY) {\n return 'force_quality';\n }\n return null;\n }\n}\n","export default \".citron-pdl-data-multiple-profile .input {\\n padding-bottom: 25px;\\n}\\n.citron-pdl-data-multiple-profile .designation {\\n padding-top: 10px;\\n padding-bottom: 10px;\\n font-size: 12px;\\n color: #808080;\\n}\\n.citron-pdl-data-multiple-profile select {\\n width: 175px;\\n}\\n.citron-pdl-data-multiple-profile td {\\n vertical-align: middle;\\n}\\n.citron-pdl-data-multiple-profile citron-btn {\\n max-width: 180px;\\n padding: 10px 16px;\\n}\\n.citron-pdl-data-multiple-profile citron-btn:nth-child(even) {\\n margin-left: 15px;\\n margin-right: 15px;\\n}\\n.citron-pdl-data-multiple-profile .remove-icon {\\n height: 30px;\\n width: 30px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #db4b47;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_unchecked.svg\\\");\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2FkZC1tYXRlcmlhbC9hZGQtbWF0ZXJpYWwuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2FkZC1tYXRlcmlhbC9hZGQtbWF0ZXJpYWwuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL21peGlucy5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJSTtFQUNJLG9CQUFBO0FDSFI7QURNSTtFQUNJLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtBQ0pSO0FET0k7RUFDSSxZQUFBO0FDTFI7QURRSTtFQUNJLHNCQUFBO0FDTlI7QURTSTtFQUNJLGdCQUFBO0VBQ0Esa0JBQUE7QUNQUjtBRFNRO0VBQ0ksaUJBQUE7RUFDQSxrQkFBQTtBQ1BaO0FEV0k7RUVoQ0EsWUZpQ3FCO0VFaENyQixXRmdDMkI7RUUvQjNCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ2NBO0VEVkEscUVBQUE7VUFBQSw2REFBQTtBRG1CUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2FkZC1tYXRlcmlhbC9hZGQtbWF0ZXJpYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMnO1xuXG4uY2l0cm9uLXBkbC1kYXRhLW11bHRpcGxlLXByb2ZpbGUge1xuICAgIC5pbnB1dCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyNXB4O1xuICAgIH1cblxuICAgIC5kZXNpZ25hdGlvbiB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogIzgwODA4MDtcbiAgICB9XG5cbiAgICBzZWxlY3Qge1xuICAgICAgICB3aWR0aDogMTc1cHg7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgIGNpdHJvbi1idG4ge1xuICAgICAgICBtYXgtd2lkdGg6IDE4MHB4O1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE2cHg7XG5cbiAgICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucmVtb3ZlLWljb24ge1xuICAgICAgICBAaW5jbHVkZSBzdmdJY29uKDMwcHgsIDMwcHgsICRlcnJvciwgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fdW5jaGVja2VkLnN2ZycpO1xuICAgIH1cbn1cbiIsIi5jaXRyb24tcGRsLWRhdGEtbXVsdGlwbGUtcHJvZmlsZSAuaW5wdXQge1xuICBwYWRkaW5nLWJvdHRvbTogMjVweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtbXVsdGlwbGUtcHJvZmlsZSAuZGVzaWduYXRpb24ge1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICM4MDgwODA7XG59XG4uY2l0cm9uLXBkbC1kYXRhLW11bHRpcGxlLXByb2ZpbGUgc2VsZWN0IHtcbiAgd2lkdGg6IDE3NXB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS1tdWx0aXBsZS1wcm9maWxlIHRkIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5jaXRyb24tcGRsLWRhdGEtbXVsdGlwbGUtcHJvZmlsZSBjaXRyb24tYnRuIHtcbiAgbWF4LXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xufVxuLmNpdHJvbi1wZGwtZGF0YS1tdWx0aXBsZS1wcm9maWxlIGNpdHJvbi1idG46bnRoLWNoaWxkKGV2ZW4pIHtcbiAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbn1cbi5jaXRyb24tcGRsLWRhdGEtbXVsdGlwbGUtcHJvZmlsZSAucmVtb3ZlLWljb24ge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiNGI0NztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b191bmNoZWNrZWQuc3ZnXCIpO1xufSIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { materialTypes } from '../../../constants/material-types.constants';\n\n@Component({\n selector: 'ga-sites-add-material',\n templateUrl: './add-material.component.html',\n styleUrls: ['./add-material.component.scss'],\n})\nexport class SitesAddMaterialComponent implements OnInit {\n systemCategories = [\n {\n text: 'Il existe une production de chauffage',\n value: materialTypes.HEAT,\n },\n {\n text: 'Il existe une production de froid',\n value: materialTypes.COLD,\n },\n {\n text: 'Emission',\n value: materialTypes.EMISSION,\n },\n ];\n\n materialForms: any = {\n [materialTypes.HEAT]: {},\n [materialTypes.COLD]: {},\n [materialTypes.EMISSION]: {},\n };\n\n @Input() element: any = {};\n @Input() energies: any[] = [];\n @Input() emissionTypes: any[] = [];\n\n constructor() {}\n ngOnInit() {}\n\n addMaterial(type) {\n // add material in site info\n this.element[type].info.push(this.materialForms[type]);\n // reset form\n this.materialForms[type] = {};\n }\n\n removeMaterial(type, index) {\n this.element[type].info.splice(index, 1);\n }\n\n IsEmission(type): boolean {\n return type === materialTypes.EMISSION;\n }\n}\n","export default \".info-site-label,\\n.info-site {\\n padding-top: calc(0.5rem - 1px * 2) !important;\\n padding-bottom: calc(0.5rem - 1px * 2);\\n margin-bottom: 0;\\n white-space: initial;\\n}\\n\\n.info-site {\\n font-weight: initial;\\n}\\n\\n.address-changed {\\n color: #28a745;\\n}\\n\\n.error-message {\\n color: red;\\n text-align: end;\\n}\\n\\n.cancel-btn,\\n.cancel-btn:active,\\n.cancel-btn:focus,\\n.cancel-btn:hover {\\n background-color: grey;\\n}\\n\\n.save-btn,\\n.save-btn:hover,\\n.save-btn:focus,\\n.save-btn:active {\\n background-color: #28a745;\\n}\\n\\n.entity-associated__title {\\n font-weight: bold;\\n}\\n\\n.entity-associated__bloc {\\n margin-bottom: 1rem;\\n margin-top: 1rem;\\n}\\n\\n.entity-associated__info-bloc:hover {\\n background-color: antiquewhite;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2Jhc2ljLWluZm9ybWF0aW9uLWZvcm0vYmFzaWMtaW5mb3JtYXRpb24tZm9ybS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvYmFzaWMtaW5mb3JtYXRpb24tZm9ybS9iYXNpYy1pbmZvcm1hdGlvbi1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVJLDhDQUFBO0VBQ0Esc0NBQUE7RUFDQSxnQkFBQTtFQUNBLG9CQUFBO0FDQ0o7O0FERUE7RUFDSSxvQkFBQTtBQ0NKOztBREVBO0VBQ0ksY0FBQTtBQ0NKOztBREVBO0VBQ0ksVUFBQTtFQUNBLGVBQUE7QUNDSjs7QURFQTs7OztFQUlJLHNCQUFBO0FDQ0o7O0FERUE7Ozs7RUFJSSx5QkFBQTtBQ0NKOztBREVBO0VBQ0ksaUJBQUE7QUNDSjs7QURFQTtFQUNJLG1CQUFBO0VBQ0EsZ0JBQUE7QUNDSjs7QURHSTtFQUNJLDhCQUFBO0FDQVIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9iYXNpYy1pbmZvcm1hdGlvbi1mb3JtL2Jhc2ljLWluZm9ybWF0aW9uLWZvcm0uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaW5mby1zaXRlLWxhYmVsLFxuLmluZm8tc2l0ZSB7XG4gICAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtIC0gMXB4ICogMikgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjVyZW0gLSAxcHggKiAyKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xufVxuXG4uaW5mby1zaXRlIHtcbiAgICBmb250LXdlaWdodDogaW5pdGlhbDtcbn1cblxuLmFkZHJlc3MtY2hhbmdlZCB7XG4gICAgY29sb3I6ICMyOGE3NDU7XG59XG5cbi5lcnJvci1tZXNzYWdlIHtcbiAgICBjb2xvcjogcmVkO1xuICAgIHRleHQtYWxpZ246IGVuZDtcbn1cblxuLmNhbmNlbC1idG4sXG4uY2FuY2VsLWJ0bjphY3RpdmUsXG4uY2FuY2VsLWJ0bjpmb2N1cyxcbi5jYW5jZWwtYnRuOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xufVxuXG4uc2F2ZS1idG4sXG4uc2F2ZS1idG46aG92ZXIsXG4uc2F2ZS1idG46Zm9jdXMsXG4uc2F2ZS1idG46YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG4uZW50aXR5LWFzc29jaWF0ZWRfX3RpdGxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmVudGl0eS1hc3NvY2lhdGVkX19ibG9jIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG59XG5cbi5lbnRpdHktYXNzb2NpYXRlZF9faW5mby1ibG9jIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYW50aXF1ZXdoaXRlO1xuICAgIH1cbn1cbiIsIi5pbmZvLXNpdGUtbGFiZWwsXG4uaW5mby1zaXRlIHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtIC0gMXB4ICogMikgIWltcG9ydGFudDtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtIC0gMXB4ICogMik7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xufVxuXG4uaW5mby1zaXRlIHtcbiAgZm9udC13ZWlnaHQ6IGluaXRpYWw7XG59XG5cbi5hZGRyZXNzLWNoYW5nZWQge1xuICBjb2xvcjogIzI4YTc0NTtcbn1cblxuLmVycm9yLW1lc3NhZ2Uge1xuICBjb2xvcjogcmVkO1xuICB0ZXh0LWFsaWduOiBlbmQ7XG59XG5cbi5jYW5jZWwtYnRuLFxuLmNhbmNlbC1idG46YWN0aXZlLFxuLmNhbmNlbC1idG46Zm9jdXMsXG4uY2FuY2VsLWJ0bjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG59XG5cbi5zYXZlLWJ0bixcbi5zYXZlLWJ0bjpob3Zlcixcbi5zYXZlLWJ0bjpmb2N1cyxcbi5zYXZlLWJ0bjphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG4uZW50aXR5LWFzc29jaWF0ZWRfX3RpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5lbnRpdHktYXNzb2NpYXRlZF9fYmxvYyB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG5cbi5lbnRpdHktYXNzb2NpYXRlZF9faW5mby1ibG9jOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYW50aXF1ZXdoaXRlO1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport Swal from 'sweetalert2';\n\nimport { Company } from 'app/shared/models/company.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport { Vehicle } from 'app/shared/models/vehicle.interface';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { VehiclesService } from 'app/shared/services/vehicles/vehicles.service';\n\ntype Entity = RoutingReference | Vehicle;\n\n@Component({\n selector: 'ga-site-basic-info-form',\n templateUrl: './basic-information-form.component.html',\n styleUrls: ['./basic-information-form.component.scss'],\n providers: [],\n})\nexport class SiteBasicInformationFormComponent implements OnInit {\n /**\n * Site's company\n */\n @Input() company: Company;\n\n /**\n * Entity type authorized to be unlinked\n */\n @Input() entityType: 'vehicules' | 'routingReferences';\n\n /**\n * Event triggered when the site has been deleted.\n * Value is site deleted.\n */\n @Output() siteDeleted: EventEmitter = new EventEmitter(true);\n\n /**\n * Event triggered when an entity has been unlinked.\n * Value is entity unlinked.\n */\n @Output() entityUnlinked: EventEmitter = new EventEmitter(true);\n\n /**\n * Site's form group for name and search query (for address)\n */\n siteForm: FormGroup;\n\n /**\n * Site displayed\n */\n _site: SitePopulated;\n @Input()\n set site(site: SitePopulated) {\n this._site = site;\n this.initForm();\n if (this._site) {\n // Set form values with the sites infos\n const siteComplement = typeof site.complement !== 'undefined' ? site.complement : null;\n const siteName = typeof site.name !== 'undefined' ? site.name : null;\n this.siteForm.setValue({\n name: siteComplement,\n search: siteName,\n });\n // Set the address.\n // It's a copy so that we don't change the site object.\n this.addressSite = {\n changed: false,\n error: null,\n name: siteName,\n streetNumber: site.streetNumber,\n streetName: site.streetName,\n zipcode: site.zipcode,\n city: site.city,\n longitude: site.longitude,\n latitude: site.latitude,\n };\n } else {\n this.siteForm.setValue({\n name: '',\n search: '',\n });\n this.addressSite = {\n changed: false,\n error: null,\n name: null,\n streetNumber: null,\n streetName: null,\n zipcode: null,\n city: null,\n longitude: null,\n latitude: null,\n };\n }\n }\n get site(): SitePopulated {\n return this._site;\n }\n\n /**\n * Address fields to display under the site form\n */\n addressSite: {\n changed: boolean;\n error: ApiCitronError;\n name: string;\n streetNumber: string;\n streetName: string;\n zipcode: string;\n city: string;\n longitude: number;\n latitude: number;\n } = {\n changed: false,\n error: null,\n name: null,\n streetNumber: null,\n streetName: null,\n zipcode: null,\n city: null,\n longitude: null,\n latitude: null,\n };\n\n constructor(\n private sitesService: SitesService,\n private colorService: ColorService,\n private vehiclesService: VehiclesService\n ) {}\n\n ngOnInit() {\n this.initForm();\n }\n\n /**\n * Check if input name value has changed in comparison to current text value\n * @returns {boolean}\n */\n get isNameChanged(): boolean {\n if (!this.siteForm) {\n return false;\n }\n\n let name = this.siteForm.get('name').value;\n if (typeof name === 'string') {\n name = name.trim();\n }\n\n let complement = this.site.complement;\n if (typeof complement === 'string') {\n complement = complement.trim();\n }\n\n return name && name !== complement ? true : false;\n }\n\n /**\n * Check if input search value has changed in comparison to current text value\n * @returns {boolean}\n */\n get isSearchChanged(): boolean {\n if (!this.siteForm) {\n return false;\n }\n\n let search = this.siteForm.get('search').value;\n if (typeof search === 'string') {\n search = search.trim();\n }\n\n let name = this.site.name;\n if (typeof name === 'string') {\n name = name.trim();\n }\n\n return search !== name ? true : false;\n }\n\n /**\n * Init site form for name and search if not already initialized\n */\n private initForm() {\n if (!this.siteForm) {\n this.siteForm = new FormGroup({\n name: new FormControl(),\n search: new FormControl(),\n });\n }\n }\n\n /*****************\n * SITE INFORMATION FORM\n *****************/\n\n /**\n * Get a property value of the site selected's address\n * @param {string} property - property name\n * @returns {string} address property value\n */\n getSiteSelectedAddressProperty(property: string): string {\n if (!this.site || !this.addressSite) {\n return null;\n }\n\n return this.addressSite[property];\n }\n\n /**\n * Save site information\n * @param {{name: string, search: string}} values of the form\n */\n async submitSite(values: { name: string; search: string }) {\n const site = this.site;\n\n if (site && values) {\n const isNameChanged = values.name !== site.complement;\n const isSearchChanged = values.search !== site.name;\n\n // If name has been changed => Save name\n if (Boolean(isNameChanged && values.name)) {\n const oldValue = site.complement;\n site.complement = values.name;\n try {\n const res = await this.sitesService.updateSite(site._id, site);\n // Check if name changed\n if (res.data.complement !== site.complement) {\n // Should not happen\n site.complement = res.data.complement;\n }\n } catch (e) {\n site.complement = oldValue;\n }\n }\n // If search address has been changed, but not checked => Check location\n if (isSearchChanged && values.search && !this.addressSite.changed) {\n try {\n const res = await this.sitesService.searchAddress(values.search, false, site._id, this.company._id);\n if (res.data) {\n const addressFound = res.data;\n Object.assign(this.addressSite, addressFound);\n this.addressSite.streetNumber = addressFound.streetNumber ? addressFound.streetNumber : null;\n this.addressSite.changed = true;\n this.addressSite.error = null;\n }\n } catch (e) {\n this.addressSite.error = e;\n }\n // If search address has been changed and checked => Save location\n } else if (isSearchChanged && values.search && this.addressSite.changed && !this.addressSite.error) {\n const location = Object.assign({}, this.addressSite);\n delete location.changed;\n try {\n const res = await this.sitesService.saveLocation(site._id, location, this.company._id);\n if (res.data) {\n const siteNew = res.data;\n // If site address is unchanged (same coordinates)\n if (siteNew.latitude === location.latitude && siteNew.longitude === location.longitude) {\n Object.assign(site, location);\n site.streetNumber = location.streetNumber ? location.streetNumber : null;\n this.addressSite.changed = false;\n }\n this.addressSite.error = null;\n }\n } catch (e) {\n this.addressSite.error = e;\n }\n }\n }\n }\n\n /**\n * Get the save button text\n * @returns {string} save btn text\n */\n get saveButtonText(): string {\n if (this.site && this.siteForm) {\n /** Check if search and name values have changed */\n if (this.isNameChanged && this.isSearchChanged) {\n if (this.addressSite.changed) {\n return 'Enregistrer';\n }\n return 'Renommer et rechercher';\n }\n\n /** Check if name value has changed */\n if (this.isNameChanged && !this.isSearchChanged) {\n return 'Enregistrer le nom';\n }\n\n /** Check if search and addressSite values have changed */\n if (this.isSearchChanged && this.addressSite.changed) {\n return 'Enregistrer l\\'adresse';\n }\n\n /** Check if search value has changed */\n if (this.isSearchChanged && !this.addressSite.changed) {\n return 'Rechercher une adresse';\n }\n }\n }\n\n /**\n * Add a save class on the button\n * @returns {string} save btn class\n */\n get buttonSaveClass(): string {\n if (this.site && this.siteForm) {\n if (this.isNameChanged) {\n return 'save-btn';\n }\n\n if (this.isSearchChanged && this.addressSite.changed) {\n return 'save-btn';\n }\n }\n return '';\n }\n\n /**\n * Reset the selected site information and form\n */\n cancelSiteInfo() {\n this.site = this._site;\n }\n /**\n * @returns {string} if the address changed, returns a specific class to highlight it.\n */\n get addressClass(): string {\n return this.addressSite.changed ? 'address-changed' : '';\n }\n\n /**\n * Get the error message for the address.\n */\n get errorMessage(): string {\n if (!this.addressSite || !this.addressSite.error || !this.addressSite.error.errorCode) {\n return null;\n }\n const errorCode = this.addressSite.error.errorCode;\n if (errorCode === 'address_not_found') {\n return 'Adresse introuvable';\n }\n return 'Une erreur est survenue';\n }\n\n /**\n * Delete site and emit onSiteDeleted event with site deleted\n */\n async deleteSite() {\n try {\n const site = this.site;\n const result = await Swal.fire({\n title: 'Êtes-vous sûr ?',\n text:\n 'Voulez-vous vraiment supprimer le site ' + (site.complement ? site.complement : site.name) + ' ?',\n icon: 'warning',\n showCancelButton: true,\n });\n if (result.value) {\n await this.sitesService.deleteSite(site._id);\n this.site = null;\n this.siteDeleted.emit(site);\n }\n } catch (e) {\n Swal.fire(\n 'Erreur',\n 'Une erreur est survenue pendant la suppression du site. Merci de réessayer ultérieurement.',\n 'error'\n );\n }\n }\n\n /*****************\n * SITE INFORMATION ENTITY LIST\n *****************/\n\n /**\n * Get the fluid color for a given pdl\n * @param {RoutingReference} pdl populated with contracts\n * @returns {string} formatted CSS rbg or null if the routing reference has no fluid (no contracts)\n */\n getRoutingReferenceFluidColor(pdl: RoutingReference): string {\n if (!pdl || !pdl.energyType) {\n return null;\n }\n const fluid = pdl.energyType;\n return this.colorService.getSecondRgbColor(fluid);\n }\n\n /**\n * Get color for vehicle's fluid color (fuel)\n * @returns {string} formatted CSS rbg or null if the vehicle has no fluid\n */\n get vehicleFluidColor(): string {\n return this.colorService.getSecondRgbColor('fuel');\n }\n\n /**\n * Get the fluid value for a given pdl\n * @param {RoutingReference} pdl populated with contracts\n * @returns {string} fluid value (eg. 'elec') or null if the pdl has no fluid (no contracts)\n */\n getRoutingReferenceFluidValue(pdl: RoutingReference): string {\n if (!pdl || !pdl.energyType) {\n return null;\n }\n return pdl.energyType;\n }\n\n /**\n * Get entity order. For example, in routing references attribution, routing references will be displayed first.\n * @returns {string} Boostrap's flex order class\n */\n getEntityOrderClass(entityType: 'vehicles' | 'routingReferences'): string {\n if (entityType === this.entityType) {\n return 'order-0';\n }\n return 'order-1';\n }\n\n /**\n * @returns {boolean} true to display remove icon, false otherwise\n */\n canUnlink(entityType: 'vehicles' | 'routingReferences'): boolean {\n return Boolean(entityType === this.entityType);\n }\n\n /**\n * Remove a PDL from it's site.\n * Triggers API call then remove it from local site object\n * @param {RoutingReference} routingReference\n */\n async unlinkRoutingReference(routingReference: RoutingReference) {\n try {\n const site = this.site;\n await this.sitesService.removeRoutingReferenceFromSite(routingReference._id, site._id);\n // Remove from the front object\n site.routingReferences = site.routingReferences.filter(x => x._id !== routingReference._id);\n this.entityUnlinked.emit(routingReference);\n } catch (e) {\n Swal.fire(\n 'Erreur',\n 'Une erreur est survenue pendant la dissociation du PDL. Merci de réessayer ultérieurement.',\n 'error'\n );\n }\n }\n\n /**\n * Remove a vehicle from it's site.\n * Triggers API call then remove it from local site object\n * @param {Vehicle} vehicle\n */\n async unlinkVehicle(vehicle: Vehicle) {\n try {\n const site = this.site;\n await this.vehiclesService.unlinkVehicleFromSite(vehicle._id);\n // Remove from the front object\n site.vehicles = site.vehicles.filter(x => x._id !== vehicle._id);\n this.entityUnlinked.emit(vehicle);\n } catch (e) {\n Swal.fire(\n 'Erreur',\n 'Une erreur est survenue pendant la dissociation du véhicule. Merci de réessayer ultérieurement.',\n 'error'\n );\n }\n }\n}\n","export default \".text-wrap {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n font-family: \\\"Montserrat\\\", sans-serif;\\n margin: 12px 0;\\n line-height: 1.3;\\n}\\n.text-wrap:first-of-type {\\n margin-top: 0;\\n}\\n.text-wrap:last-of-type {\\n margin-bottom: 0;\\n}\\n.text-wrap .info-text {\\n font-size: 15px;\\n margin-right: 16px;\\n}\\n.text-wrap .value-text {\\n margin-left: 12px;\\n font-weight: 600;\\n font-size: 15px;\\n text-align: right;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2Jsb2MtYWRyZXNzL2Jsb2MtYWRyZXNzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9ibG9jLWFkcmVzcy9ibG9jLWFkcmVzcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0VBQ0EscUNBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7QUNDSjtBRENJO0VBQ0ksYUFBQTtBQ0NSO0FERUk7RUFDSSxnQkFBQTtBQ0FSO0FER0k7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7QUNEUjtBRElJO0VBQ0ksaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtBQ0ZSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvYmxvYy1hZHJlc3MvYmxvYy1hZHJlc3MuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dC13cmFwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7XG4gICAgbWFyZ2luOiAxMnB4IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcblxuICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5pbmZvLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAudmFsdWUtdGV4dCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn1cbiIsIi50ZXh0LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgc2Fucy1zZXJpZjtcbiAgbWFyZ2luOiAxMnB4IDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG4udGV4dC13cmFwOmZpcnN0LW9mLXR5cGUge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLnRleHQtd3JhcDpsYXN0LW9mLXR5cGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLnRleHQtd3JhcCAuaW5mby10ZXh0IHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG59XG4udGV4dC13cmFwIC52YWx1ZS10ZXh0IHtcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-sites-bloc-adress',\n templateUrl: './bloc-adress.component.html',\n styleUrls: ['./bloc-adress.component.scss'],\n})\nexport class SitesBlocAdressComponent implements OnInit {\n @Input() site: any = {};\n constructor() {}\n ngOnInit() {}\n}\n","export default \"table {\\n margin-bottom: 0;\\n}\\n\\ntd {\\n vertical-align: middle;\\n font-size: 14px;\\n}\\n\\n.status__icon {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: black;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_dot_circle.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_dot_circle.svg\\\");\\n margin-left: 5px;\\n}\\n\\n.status__icon-enabled {\\n background-color: green;\\n}\\n\\n.status__icon-disabled {\\n background-color: #db4b47;\\n}\\n\\n.table td.fit,\\n.table th.fit {\\n white-space: nowrap;\\n width: 1%;\\n}\\n\\n.zone__value {\\n width: 15%;\\n}\\n\\n.zone__value--legacy-data {\\n padding: calc(0.5rem + 1px) 0.75rem;\\n font-size: 1rem;\\n line-height: 1.25;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2Rpc3RyaWJ1dGlvbi1rZXkvZGlzdHJpYnV0aW9uLWtleS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvZGlzdHJpYnV0aW9uLWtleS9kaXN0cmlidXRpb24ta2V5LmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxnQkFBQTtBQ0ZKOztBREtBO0VBQ0ksc0JBQUE7RUFDQSxlQUFBO0FDRko7O0FES0E7RUVYSSxZRllpQjtFRVhqQixXRld1QjtFRVZ2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx1QkZLeUI7RUVEekIsc0VBQUE7VUFBQSw4REFBQTtFRkVKLGdCQUFBO0FDSUo7O0FEREE7RUFDSSx1QkdLTTtBRkRWOztBRERBO0VBQ0kseUJBQUE7QUNJSjs7QUREQTs7RUFFSSxtQkFBQTtFQUNBLFNBQUE7QUNJSjs7QUREQTtFQUNJLFVBRlM7QUNNYjs7QUREQTtFQUNJLG1DQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0FDSUoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9kaXN0cmlidXRpb24ta2V5L2Rpc3RyaWJ1dGlvbi1rZXkuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuXG50YWJsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxudGQge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uc3RhdHVzX19pY29uIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDIwcHgsIDIwcHgsIGJsYWNrLCAnL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b19kb3RfY2lyY2xlLnN2ZycpO1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbi5zdGF0dXNfX2ljb24tZW5hYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN1Y2Nlc3M7XG59XG5cbi5zdGF0dXNfX2ljb24tZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRlcnJvcjtcbn1cblxuLnRhYmxlIHRkLmZpdCxcbi50YWJsZSB0aC5maXQge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgd2lkdGg6IDElO1xufVxuJHZhbHVlV2lkdGg6IDE1JTtcbi56b25lX192YWx1ZSB7XG4gICAgd2lkdGg6ICR2YWx1ZVdpZHRoO1xufVxuXG4uem9uZV9fdmFsdWUtLWxlZ2FjeS1kYXRhIHtcbiAgICBwYWRkaW5nOiBjYWxjKDAuNXJlbSArIDFweCkgMC43NXJlbTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjU7XG59XG4iLCJ0YWJsZSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbnRkIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uc3RhdHVzX19pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2RvdF9jaXJjbGUuc3ZnXCIpO1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4uc3RhdHVzX19pY29uLWVuYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcbn1cblxuLnN0YXR1c19faWNvbi1kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjRiNDc7XG59XG5cbi50YWJsZSB0ZC5maXQsXG4udGFibGUgdGguZml0IHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd2lkdGg6IDElO1xufVxuXG4uem9uZV9fdmFsdWUge1xuICB3aWR0aDogMTUlO1xufVxuXG4uem9uZV9fdmFsdWUtLWxlZ2FjeS1kYXRhIHtcbiAgcGFkZGluZzogY2FsYygwLjVyZW0gKyAxcHgpIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, NgZone, OnInit, Output } from '@angular/core';\nimport * as clone from 'clone';\nimport { LegacyService } from '../../../services/sites/legacy.service';\n\n@Component({\n selector: 'ga-site-distribution-key',\n templateUrl: './distribution-key.component.html',\n styleUrls: ['./distribution-key.component.scss'],\n providers: [],\n})\nexport class SiteDistributionKeyComponent implements OnInit {\n // Site object to get the shared routing references, routing references and zones.\n @Input() site: any;\n @Output() updatedRoutingReferences: EventEmitter = new EventEmitter();\n\n /**\n * Shared routing references array, populated with the routing references and zones.\n * Each object must have the format :\n * {\n * routingReference: {Routing reference obj},\n * type: enum ['percent', 'buidlingsurface', 'nbpeopleonsite']\n * zones: [{\n * zone: {Zone obj},\n * ratio: number (0 <= ratio <= 1)\n * }]\n * }\n */\n sharedRoutingReferences: any[] = [];\n /** Initial values of shared routing references, used to restore if needed */\n initialSharedRRef: Record = {};\n\n /**\n * Ponderation types buttons choices.\n */\n ponderationTypes = [\n {\n displayName: '% Automatique',\n value: 'percent_auto',\n },\n {\n displayName: '% Manuel',\n value: 'percent',\n },\n {\n displayName: 'Surface',\n value: 'buildingsurface',\n },\n {\n displayName: 'Effectif',\n value: 'nbpeopleonsite',\n },\n ];\n\n /**\n * Object with zone id as key. Each zone legacy data has \"nbpeopleonsite\" and \"buildingsurface\" property\n * Ie : {\n * \"a1b2c3d4e5f6g7h8i9j0kl\" : {\n * \"buildingsurface\": 125,\n * \"nbpeopleonsite\": 12\n * }, ...\n * }\n */\n zonesLegacyData: any = {};\n\n constructor(private legacyService: LegacyService) {}\n\n ngOnInit() {\n if (!this.site) {\n throw new Error('site is mandatory');\n }\n // Init shared routing references array by getting site's shared routing references and populating them.\n this.computeSharedRoutingReferences();\n // Init zones legacy data array by grabbing wanted data for each zone\n this.updateLegacyData();\n }\n\n /**\n * Update distribution key table data. Can be called when site changed or legacy data updated for example.\n * Every not saved changes will be erased.\n */\n public async update() {\n this.computeSharedRoutingReferences();\n await this.updateLegacyData();\n }\n\n /**\n * Compute sharedRoutingReferences member array.\n */\n private computeSharedRoutingReferences() {\n // Populate sharedRoutingReferences array with the routing references and zones (instead of ids)\n if (this.site.info.sharedRoutingReferences && this.site.info.sharedRoutingReferences.length) {\n // Clone site so that we don't update the parent site object\n const site = clone(this.site);\n this.sharedRoutingReferences = site.info.sharedRoutingReferences.map(sharedRoutingReference => {\n // Get the populated routing reference from the site's routing references list.\n const searchRf = site.routingReferences.find(x => x._id === sharedRoutingReference.routingReference);\n if (searchRf) {\n sharedRoutingReference.routingReference = searchRf;\n } else {\n return null;\n }\n // Get populated zones from the site's zones list.\n sharedRoutingReference.zones = sharedRoutingReference.zones.map(zone => {\n const searchZone = site.info.batiments.find(x => x._id === zone.zone);\n if (searchZone) {\n zone.zone = searchZone;\n }\n return zone;\n });\n // Save initial value\n this.initialSharedRRef[sharedRoutingReference.routingReference._id] = clone(sharedRoutingReference);\n // Compute shared RRef zones ratio (for example, if a RRef has been added to list)\n this.computeZonesRatio(sharedRoutingReference);\n return sharedRoutingReference;\n });\n }\n }\n\n /**\n * Update zones legacy data by getting values\n */\n private async updateLegacyData() {\n // Get legacy data for each zone. Just get the legacy data we're interested in.\n if (this.site.info.diviser) {\n const promiseArray = this.site.info.batiments.map(zone => {\n this.zonesLegacyData[zone._id] = {};\n return this.getLegacyData(zone, this.site);\n });\n return Promise.all(promiseArray);\n }\n }\n\n /**\n * Emit shared routing reference ratio data change.\n * Data emitted is the clean, non populated, sharedRoutingReferences object.\n */\n private emitChange() {\n const valueEmit = [];\n this.sharedRoutingReferences.forEach(sharedPdl => {\n // Compute ratios before emiting\n this.computeZonesRatio(sharedPdl);\n const item = {\n routingReference: sharedPdl.routingReference._id,\n type: sharedPdl.type,\n zones: sharedPdl.zones.map(zone => ({\n zone: zone.zone._id,\n ratio: zone.ratio,\n })),\n };\n\n valueEmit.push(item);\n });\n this.updatedRoutingReferences.emit(valueEmit);\n }\n\n /**\n * Get shared routing reference energy icon class\n * @param {*} sharedPdl - shared routing reference populated object (see this.sharedRoutingReferences)\n * @returns {string} return fluid icon class or nothing if no data for the pdl. Class is at format {fluid}-icon (ie. \"elec-icon\")\n */\n getSharedPdlIcon(sharedPdl) {\n if (sharedPdl.routingReference && sharedPdl.routingReference.energyType) {\n return sharedPdl.routingReference.energyType + '-icon';\n }\n return '';\n }\n\n /**\n * Get shared routing reference status class.\n * @param {*} sharedPdl - shared routing reference populated object (see this.sharedRoutingReferences)\n * @returns {string} \"status__icon-enabled\" if pdl is active, \"status__icon-disabled\" otherwise\n */\n getPdlStatusClass(sharedPdl) {\n if (\n sharedPdl &&\n sharedPdl.routingReference &&\n sharedPdl.routingReference.status &&\n sharedPdl.routingReference.status.active\n ) {\n return 'status__icon-enabled';\n }\n return 'status__icon-disabled';\n }\n\n /**\n * Get ponderation value for a zone and a shared routing reference, depending on the shared routing reference ponderation type.\n * @param {*} zone - zone object to get the value of\n * @param {*} sharedPdl - shared routing reference populated object (see this.sharedRoutingReferences)\n * @returns {string|number} ponderation value\n */\n getValue(zone, sharedPdl) {\n switch (sharedPdl.type) {\n default:\n case 'percent':\n case 'percent_auto':\n return zone.ratio * 100;\n case 'buildingsurface':\n if (this.zonesLegacyData[zone.zone._id] && this.zonesLegacyData[zone.zone._id].buildingsurface) {\n return this.zonesLegacyData[zone.zone._id].buildingsurface + ' m2';\n }\n return 'Non renseigné';\n case 'nbpeopleonsite':\n if (this.zonesLegacyData[zone.zone._id] && this.zonesLegacyData[zone.zone._id].nbpeopleonsite) {\n return this.zonesLegacyData[zone.zone._id].nbpeopleonsite + ' personne(s)';\n }\n return 'Non renseigné';\n }\n }\n\n /**\n * Get legacy data for a zone (buildingsurface and nbpeopleonsite) and set it to the global member this.zonesLegacyData.\n * @param {*} zone - zone to get the lgacy data of\n * @param {*} site - site containing the zone\n */\n private async getLegacyData(zone, site) {\n try {\n const response = await this.legacyService.getLegacyData(site._id, zone._id, [\n 'buildingsurface',\n 'nbpeopleonsite',\n ]);\n if (response.data) {\n response.data.forEach(legacyData => {\n this.zonesLegacyData[zone._id][legacyData.key] =\n legacyData.values[legacyData.values.length - 1].value;\n });\n }\n } catch (error) {\n this.zonesLegacyData[zone._id] = {\n buildingsurface: null,\n nbpeopleonsite: null,\n };\n }\n }\n\n /**\n * Set selected ponderation for a shared routing reference\n * @param sharedPdl - shared routing reference populated object (see this.sharedRoutingReferences)\n * @param ponderation - ponderation type item (see this.ponderationTypes)\n */\n selectPonderation(sharedPdl, ponderation: string) {\n sharedPdl.type = ponderation;\n this.emitChange();\n }\n\n /**\n * Update shared pdl's zone ratio percent.\n * @param {number} value - percentage value to set (0 <= value <= 100).\n * @param {*} zone - zone to updated the ratio of\n */\n updatePercentRatio(value, zone) {\n if (value >= 0 && value <= 100) {\n zone.ratio = value / 100;\n this.emitChange();\n }\n }\n\n /**\n * Compute zones ratios.\n * Currently only recompute for 'percent_auto'.\n */\n private computeZonesRatio(sharedRRef: {\n routingReference: { _id: string };\n type: string;\n zones: Array<{ ratio: number }>;\n }) {\n // Only for display (backend recompute).\n // Legacy data doesn't use this ratio for display.\n // When going back to initial type, restore saved zones\n // Manual percent can't be computed.\n const initial = this.initialSharedRRef[sharedRRef.routingReference._id];\n if (initial && initial.type === sharedRRef.type) {\n sharedRRef.zones = clone(initial.zones);\n return;\n }\n\n if (sharedRRef.type === 'percent_auto') {\n const ratio = 1 / sharedRRef.zones.length;\n sharedRRef.zones.forEach(zone => {\n zone.ratio = ratio;\n });\n }\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2dlbmVyYWwtaW5mb3JtYXRpb25zL2dlbmVyYWwtaW5mb3JtYXRpb25zLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { materialTypes } from '../../../constants/material-types.constants';\n\n@Component({\n selector: 'ga-sites-general-informations',\n templateUrl: './general-informations.component.html',\n styleUrls: ['./general-informations.component.scss'],\n})\nexport class SitesGeneralInformationsComponent implements OnInit {\n @Input() element: any = {};\n\n constructor() {}\n ngOnInit() {}\n}\n","export default \".citron-site-informations {\\n background-color: white;\\n height: 551px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n.citron-site-informations .image-bloc {\\n height: 186px;\\n width: 100%;\\n background-size: cover;\\n background-position: center;\\n}\\n.citron-site-informations .text-bloc {\\n padding: 16px;\\n text-align: center;\\n}\\n.citron-site-informations .text-name {\\n color: black;\\n margin-bottom: 20px;\\n}\\n.citron-site-informations .text-adresse {\\n font-size: 0.8125rem;\\n margin-bottom: 20px;\\n}\\n.citron-site-informations .citron-btn {\\n max-width: 220px;\\n width: 100%;\\n font-weight: 400;\\n font-size: 0.875rem;\\n}\\n.citron-site-informations .tiles-bloc {\\n display: -webkit-box;\\n display: flex;\\n width: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2luZm9ybWF0aW9ucy9zaXRlLWluZm9ybWF0aW9ucy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvaW5mb3JtYXRpb25zL3NpdGUtaW5mb3JtYXRpb25zLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksdUJBQUE7RUFDQSxhQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EseUJBQUE7VUFBQSxtQkFBQTtFQUNBLHlCQUFBO1VBQUEsOEJBQUE7QUNGSjtBRElJO0VBQ0ksYUFBQTtFQUNBLFdBQUE7RUFDQSxzQkFBQTtFQUNBLDJCQUFBO0FDRlI7QURLSTtFQUNJLGFBQUE7RUFDQSxrQkFBQTtBQ0hSO0FETUk7RUFDSSxZQUFBO0VBQ0EsbUJBQUE7QUNKUjtBRE9JO0VBQ0ksb0JBNUJTO0VBNkJULG1CQUFBO0FDTFI7QURRSTtFQUNJLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBckNRO0FDK0JoQjtBRFNJO0VBQ0ksb0JBQUE7RUFBQSxhQUFBO0VBQ0EsV0FBQTtBQ1BSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvaW5mb3JtYXRpb25zL3NpdGUtaW5mb3JtYXRpb25zLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiJGJ0bi1mb250LXNpemU6IDAuODc1cmVtO1xuJHRleHQtZm9udC1zaXplOiAwLjgxMjVyZW07XG5cbi5jaXRyb24tc2l0ZS1pbmZvcm1hdGlvbnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGhlaWdodDogNTUxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgLmltYWdlLWJsb2Mge1xuICAgICAgICBoZWlnaHQ6IDE4NnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cblxuICAgIC50ZXh0LWJsb2Mge1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLnRleHQtbmFtZSB7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICAudGV4dC1hZHJlc3NlIHtcbiAgICAgICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgfVxuXG4gICAgLmNpdHJvbi1idG4ge1xuICAgICAgICBtYXgtd2lkdGg6IDIyMHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgZm9udC1zaXplOiAkYnRuLWZvbnQtc2l6ZTtcbiAgICB9XG5cbiAgICAudGlsZXMtYmxvYyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cbiIsIi5jaXRyb24tc2l0ZS1pbmZvcm1hdGlvbnMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgaGVpZ2h0OiA1NTFweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuLmNpdHJvbi1zaXRlLWluZm9ybWF0aW9ucyAuaW1hZ2UtYmxvYyB7XG4gIGhlaWdodDogMTg2cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG59XG4uY2l0cm9uLXNpdGUtaW5mb3JtYXRpb25zIC50ZXh0LWJsb2Mge1xuICBwYWRkaW5nOiAxNnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uY2l0cm9uLXNpdGUtaW5mb3JtYXRpb25zIC50ZXh0LW5hbWUge1xuICBjb2xvcjogYmxhY2s7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG4uY2l0cm9uLXNpdGUtaW5mb3JtYXRpb25zIC50ZXh0LWFkcmVzc2Uge1xuICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbi5jaXRyb24tc2l0ZS1pbmZvcm1hdGlvbnMgLmNpdHJvbi1idG4ge1xuICBtYXgtd2lkdGg6IDIyMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cbi5jaXRyb24tc2l0ZS1pbmZvcm1hdGlvbnMgLnRpbGVzLWJsb2Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Params } from '@angular/router';\nimport * as moment from 'moment';\n\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { FilterService } from 'app/shared/services/filter/filter.service';\nimport { LoadCurveService } from 'app/shared/services/load-curve/load-curve.service';\nimport { MapService } from 'app/shared/services/map/map.service';\nimport { SessionService } from 'app/shared/services/session/session.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\n\n@Component({\n selector: 'ga-site-informations',\n templateUrl: './site-informations.component.html',\n styleUrls: ['./site-informations.component.scss'],\n providers: [],\n})\nexport class SiteInformationsComponent implements OnInit {\n @Input() tiles: any[] = [];\n @Input() currentSelection: any = {};\n @Input() fluidCategory = 'energy';\n\n fluidCategoryFrench: string;\n\n constructor(\n private mapService: MapService,\n private energyService: EnergyService,\n private siteService: SitesService,\n private loadCurveService: LoadCurveService,\n private sessionService: SessionService,\n private filterService: FilterService\n ) {}\n ngOnInit() {\n this.fluidCategoryFrench = this.energyService.getFluidCategoryFrench(this.fluidCategory);\n }\n\n getClassFromTilesNumber() {\n const max = 12;\n const size = max / this.tiles.length;\n const prefix = 'col-md-' + size;\n\n return {\n [prefix]: true,\n };\n }\n\n getProfileSiteLink() {\n return `/${this.fluidCategoryFrench}/profil/${this.currentSelection._id}`;\n }\n\n isDisabled() {\n return !this.currentSelection._id;\n }\n\n getSiteBackgroundImage() {\n return this.mapService.getSitePictureAsBackground(this.currentSelection);\n }\n\n get loadCurveLink(): string {\n return this.loadCurveService.loadCurveLink;\n }\n\n /**\n * Load curve params : site id and period over the last month\n */\n get loadCurveParams(): Params {\n const { ds, de } = this.loadCurveService.formatDatesParams(\n moment().subtract(1, 'month'),\n moment().subtract(1, 'd')\n );\n const params: Params = {\n s: this.currentSelection._id,\n ds,\n de,\n };\n if (this.sessionService.getCompanyId() !== this.currentSelection.company) {\n params[this.filterService.getParamAlias('company')] = this.currentSelection.company;\n }\n return params;\n }\n\n /**\n * Display load curve redirection button only if the selected site is communicating\n * @returns {boolean} true if\n */\n get displayLoadCurveBtn(): boolean {\n return this.currentSelection.communicating;\n }\n}\n","export default \".legacy-data {\\n font-size: 0.875rem;\\n}\\n.legacy-data .nav-link {\\n cursor: pointer;\\n border-bottom: 1px solid #d9d9d9;\\n border-radius: 0;\\n}\\n.legacy-data .nav-link:first-child {\\n border-top: 1px solid #d9d9d9;\\n}\\n.legacy-data .nav-pills {\\n border-right: 1px solid #d9d9d9;\\n}\\n/** \\n* TODO : Globalize theses classes into bootstrap theme\\n*/\\n:host ::ng-deep .question label,\\n:host ::ng-deep .question .form-control {\\n font-size: 0.875rem;\\n}\\n.citron-btn {\\n font-size: 12px;\\n margin-top: 15px;\\n padding: 10px 15px;\\n height: 50px;\\n}\\n.icon-checked {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n float: right;\\n background-color: green;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_checked.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_checked.svg\\\");\\n margin-top: 1px;\\n margin-bottom: -5px;\\n}\\n.nav-pills .nav-link.active:hover {\\n color: #fff;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2xlZ2FjeS1kYXRhL2xlZ2FjeS1kYXRhLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9sZWdhY3ktZGF0YS9sZWdhY3ktZGF0YS5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0VBQ0ksbUJBSGE7QUNEakI7QURNSTtFQUNJLGVBQUE7RUFDQSxnQ0FBQTtFQUNBLGdCQUFBO0FDSlI7QURPSTtFQUNJLDZCQUFBO0FDTFI7QURRSTtFQUNJLCtCQUFBO0FDTlI7QURVQTs7Q0FBQTtBQUtROztFQUVJLG1CQTNCSztBQ2tCakI7QURjQTtFQUNJLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtBQ1hKO0FEY0E7RUV6Q0ksWUYwQ2lCO0VFekNqQixXRnlDdUI7RUV4Q3ZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFRnVDQSxZQUFBO0VBQ0EsdUJHdEJNO0VIdUJOLG1FQUFBO1VBQUEsMkRBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7QUNQSjtBRFVBO0VBQ0ksV0FBQTtBQ1BKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvbGVnYWN5LWRhdGEvbGVnYWN5LWRhdGEuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4kdGV4dC1mb250LXNpemU6IDAuODc1cmVtO1xuXG4ubGVnYWN5LWRhdGEge1xuICAgIGZvbnQtc2l6ZTogJHRleHQtZm9udC1zaXplO1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlcmdyZXk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxuXG4gICAgLm5hdi1saW5rOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRib3JkZXJncmV5O1xuICAgIH1cblxuICAgIC5uYXYtcGlsbHMge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYm9yZGVyZ3JleTtcbiAgICB9XG59XG5cbi8qKiBcbiogVE9ETyA6IEdsb2JhbGl6ZSB0aGVzZXMgY2xhc3NlcyBpbnRvIGJvb3RzdHJhcCB0aGVtZVxuKi9cbjpob3N0IDo6bmctZGVlcCB7XG4gICAgLnF1ZXN0aW9uIHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkdGV4dC1mb250LXNpemU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgaGVpZ2h0OiA1MHB4O1xufVxuXG4uaWNvbi1jaGVja2VkIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDIwcHgsIDIwcHgpO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3VjY2VzcztcbiAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2hlY2tlZC5zdmcnKTtcbiAgICBtYXJnaW4tdG9wOiAxcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogLTVweDtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbn1cbiIsIi5sZWdhY3ktZGF0YSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG4ubGVnYWN5LWRhdGEgLm5hdi1saW5rIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5sZWdhY3ktZGF0YSAubmF2LWxpbms6Zmlyc3QtY2hpbGQge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2Q5ZDlkOTtcbn1cbi5sZWdhY3ktZGF0YSAubmF2LXBpbGxzIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2Q5ZDlkOTtcbn1cblxuLyoqIFxuKiBUT0RPIDogR2xvYmFsaXplIHRoZXNlcyBjbGFzc2VzIGludG8gYm9vdHN0cmFwIHRoZW1lXG4qL1xuOmhvc3QgOjpuZy1kZWVwIC5xdWVzdGlvbiBsYWJlbCxcbjpob3N0IDo6bmctZGVlcCAucXVlc3Rpb24gLmZvcm0tY29udHJvbCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBtYXJnaW4tdG9wOiAxNXB4O1xuICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gIGhlaWdodDogNTBweDtcbn1cblxuLmljb24tY2hlY2tlZCB7XG4gIGhlaWdodDogMjBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBmbG9hdDogcmlnaHQ7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2NoZWNrZWQuc3ZnXCIpO1xuICBtYXJnaW4tdG9wOiAxcHg7XG4gIG1hcmdpbi1ib3R0b206IC01cHg7XG59XG5cbi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZTpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufSIsIkBtaXhpbiBzdmdJY29uKCRoZWlnaHQsICR3aWR0aCwgJGNvbG9yOiBudWxsLCAkdXJsOiBudWxsKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgQGlmICgkY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHVybCkge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoJHVybCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcGFjaXR5KCRjb2xvciwgJG9wYWNpdHk6IDAuNSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgLyogVGhlIEZhbGxiYWNrICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCR2YWx1ZSkge1xuICAgIG1hc2stcmVwZWF0OiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1zaXplKCR2YWx1ZSkge1xuICAgIG1hc2stc2l6ZTogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1zaXplOiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLWltYWdlKCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLWltYWdlOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogJHBhcmFtcztcbn1cblxuQG1peGluIG1hc2stcmVwZWF0KCRwYXJhbXMuLi4pIHtcbiAgICBtYXNrLXJlcGVhdDogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtby1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIGJveC1zaGFkb3c6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0oJHBhcmFtcy4uLikge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tb3otdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1vLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbXMtdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIHRyYW5zZm9ybTogJHBhcmFtcztcbn1cbiIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import { HttpEventType } from '@angular/common/http';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n Type,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\nimport Swal from 'sweetalert2';\nimport { Question } from '../../../models/question.interface';\nimport { QuestionService } from '../../../services/sites/question.service';\nimport { FileQuestionComponent } from '../questions/file-upload/file-upload.component';\nimport { GroupQuestionComponent } from '../questions/group-collapse/group-collapse.component';\nimport { InputTextMultipleComponent } from '../questions/input-text-multiple/input-text-multiple.component';\nimport { InputTextComponent } from '../questions/input-text/input-text.component';\nimport { ModalQuestionComponent } from '../questions/modal/modal.component';\nimport { SelectChoicesBlocComponent } from '../questions/select-choices-bloc/select-choices-bloc.component';\nimport { SelectChoicesInputComponent } from '../questions/select-choices-input/select-choices-input.component';\nimport { SelectChoicesComponent } from '../questions/select-choices/select-choices.component';\nimport { SelectDropdownComponent } from '../questions/select-dropdown/select-dropdown.component';\n\n/**\n * Main component to handle the legacy data.\n * The schema below describe which component can create which component.\n * LegacyDataComponent ----------\n * | | |\n * | V |\n * | ModalQuestionComponent |\n * | | | |\n * V V | |\n * GroupQuestionComponent | |\n * | | |\n * V V V\n * --------------------------------------------------------------------\n * | FileQuestionComponent, InputTextComponent, SelectChoicesComponent, |\n * | SelectDropdownComponent, InputTextMultipleComponent, |\n * | SelectChoicesInputComponent, SelectChoicesBlocComponent |\n * --------------------------------------------------------------------\n * All components (except LeagcyDataComponent) extend QuestionComponent and implement Question\n * @Input data: legacy data for on site/zone.\n * @Input config: configuration file to create the template.\n * @Input siteId: ID of the site related to the legacy data\n * @Input zone: ID of the zone related to the legacy data (if multi zone site)\n */\n@Component({\n selector: 'ga-sites-legacy-data',\n templateUrl: './legacy-data.component.html',\n styleUrls: ['./legacy-data.component.scss'],\n})\nexport class LegacyDataComponent implements OnInit, AfterViewInit {\n @Input() data: any[];\n @Input() config: any;\n @Input() siteId = '';\n @Input() zoneId = '';\n\n // Tab selected by the user\n currentTab = '';\n\n // Values entered by the user. Contains all values from every questions except for files\n private values: Array<{ key: string; value: any }> = [];\n\n // Get all children of ng-template to replace it by questions components.\n @ViewChildren('question', { read: ViewContainerRef }) questionItems: QueryList;\n\n // Progress for all questions between 0 and 100. (%)\n totalProgress: number;\n\n // Progress for each tab. Object dynamically created (~ associative array)\n tabsProgress = {};\n\n // Is the view initialized or not. Used to allow the updateProgress function to be run after initialization.\n private viewInitialized = false;\n\n private valuesChecksumLastSave: string = null;\n\n @Output() progressUpdated: EventEmitter = new EventEmitter();\n\n constructor(private questionService: QuestionService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.totalProgress = 0;\n }\n\n ngAfterViewInit(): void {\n let index = 0;\n // For each tab defined by the config file\n this.config.tabs.forEach(tab => {\n // For each question in the tab\n tab.infos.forEach(question => {\n // Get the corresponding ng-template element to create a question\n const vcr = this.questionItems.toArray()[index];\n this.addQuestion(question, vcr);\n index++;\n });\n // Create and init the tab progress for the tab\n this.tabsProgress[tab.key] = 0;\n });\n // Set the current tab to the first one\n if (this.config.tabs && this.config.tabs.length > 0) {\n this.currentTab = this.config.tabs[0].key;\n }\n // As we change values outside a change detection cycle, we force the detection\n // Known problem in Angular 4\n this.cdr.detectChanges();\n this.viewInitialized = true;\n this.valuesChecksumLastSave = JSON.stringify(this.values);\n this.updateProgress();\n this.cdr.detectChanges();\n }\n\n /**\n * Save data to DB when user click on the save button or when a file is uploaded\n */\n async saveData() {\n const options = {\n values: this.values,\n site: this.siteId,\n zone: this.zoneId,\n };\n const result = await this.questionService.saveLegacyData(options);\n this.valuesChecksumLastSave = JSON.stringify(options.values);\n return result;\n }\n\n /**\n * Change the tab displayed to the user on user click\n * @param tab: key of the tab\n */\n display(tab) {\n this.currentTab = tab;\n }\n\n /**\n * Return the class either the tab is active or not\n * @param tab: key of the tab\n * @returns {string | string} class to display tab or not\n */\n getTabClass(tab) {\n return this.currentTab === tab ? 'show active' : '';\n }\n\n /**\n * Return the class either the tab is active or not\n * @param tab: key of the tab\n * @returns {string | string} class to display tab or not\n */\n getTabLinkClass(tab) {\n return this.currentTab === tab ? 'show active citron-background' : '';\n }\n\n /**\n * Get the col width of questions. For modal, create smaller columns.\n * @param question: question config\n * @returns {string}: class for the column\n */\n getQuestionClass(question) {\n let qClass = 'mb-1 mt-1 question ';\n qClass += question.type === 'modal' ? 'col-md-3' : 'col-md-12';\n return qClass;\n }\n\n /******* COMPONENTS CREATION *******/\n\n /**\n * Create and add to the DOM the question element and return the observable for modifications\n * @param data: data from DB for the site's legacy data\n * @param config: config of the question\n * @param vcr: DOM element where the question component will be placed (vcr = ViewContainerRef).\n * @returns {any} object containing event emitters to have interactions between question and this.\n */\n private createQuestion(data, config, vcr) {\n let typeComponent: Type = null;\n switch (config.type) {\n case 'simple-choices':\n typeComponent = SelectChoicesComponent;\n break;\n case 'simple-choices-bloc':\n typeComponent = SelectChoicesBlocComponent;\n break;\n case 'input-text':\n typeComponent = InputTextComponent;\n break;\n case 'select-dropdown':\n typeComponent = SelectDropdownComponent;\n break;\n case 'input-text-multiple':\n typeComponent = InputTextMultipleComponent;\n break;\n case 'select-choices-input':\n typeComponent = SelectChoicesInputComponent;\n break;\n case 'file':\n typeComponent = FileQuestionComponent;\n break;\n case 'modal':\n typeComponent = ModalQuestionComponent;\n break;\n case 'group':\n typeComponent = GroupQuestionComponent;\n break;\n }\n if (typeComponent) {\n return this.questionService.addComponent(data, config, this.siteId, this.zoneId, typeComponent, vcr);\n } else {\n return null;\n }\n }\n\n /**\n * Create the question then listen to events of the questions.\n * @param config of the question\n * @param vcr reference of the container where the question is placed. (vcr = ViewContainerRef)\n */\n private addQuestion(config, vcr) {\n const obsAll = this.createQuestion(this.data, config, vcr);\n // When a value changes, update the values list.\n if (obsAll.change) {\n obsAll.change.subscribe(value => {\n if (Array.isArray(value)) {\n value.forEach(item => {\n this.addOrUpdate(item);\n });\n } else {\n this.addOrUpdate(value);\n }\n this.updateProgress();\n });\n }\n // When a file is selected, upload it and save the values with the reference to the file\n if (obsAll.fileUpload) {\n obsAll.fileUpload.subscribe(value => {\n let file = null;\n const fileValues = Object.assign(\n {\n siteId: this.siteId,\n zoneId: this.zoneId,\n },\n value\n );\n this.questionService.uploadFile(value.files[0], fileValues).subscribe(\n event => {\n if (event.type === HttpEventType.Response) {\n file = event.body.data;\n }\n },\n error => {\n Swal.fire(\n 'Oups',\n \"Une erreur est survenue pendant l'upload de votre fichier.
\" +\n 'Seuls les fichiers aux formats PDF et PNG sont acceptés.
' +\n \"Merci d'essayer de nouveau, et si le problème persiste de nous contacter.\",\n 'error'\n );\n },\n () => {\n if (file) {\n // Notify the question that its file has been uploaded with success.\n value.notif.emit(file);\n // Save all data.\n this.saveData();\n }\n }\n );\n });\n }\n }\n\n /**\n * Add or update data to the values list.\n * @param {key: string; value: any} item value from a question component\n */\n private addOrUpdate(item: { key: string; value: any }) {\n if (item) {\n const temp = this.values.find(x => x.key === item.key);\n if (!temp) {\n this.values.push(item);\n } else {\n temp.value = item.value;\n }\n }\n }\n\n /******* PROGRESS MANAGEMENT *******/\n\n /**\n * Update the progress for general and by tab.\n */\n private updateProgress() {\n if (this.viewInitialized) {\n const tmpProgress = {\n total: 0,\n filled: 0,\n };\n\n this.config.tabs.forEach(tab => {\n this.tabProgress(tab, tmpProgress);\n });\n if (tmpProgress.total > 0) {\n this.totalProgress = (tmpProgress.filled / tmpProgress.total) * 100;\n } else {\n this.totalProgress = 100;\n }\n const checksum = JSON.stringify(this.values);\n this.progressUpdated.emit({\n value: this.totalProgress,\n changed: checksum !== this.valuesChecksumLastSave,\n });\n }\n }\n\n /**\n * Get a tab progress between 0 and 100 (%)\n * @param tab: key of the tab\n * @returns {any} number between 0 and 100\n */\n public getTabProgress(tab) {\n return this.tabsProgress[tab.key];\n }\n\n /**\n * Compute a tab progress\n * @param tab: key of the tab\n * @param tmpProgress: progress follow-up up object ({total: number, filled: number}).\n */\n private tabProgress(tab, tmpProgress) {\n const tabProgress = {\n total: 0,\n filled: 0,\n };\n tab.infos.forEach(info => {\n if (info.type === 'modal') {\n info.properties.questions.forEach(q => {\n this.groupProgress(tabProgress, q);\n });\n } else {\n this.groupProgress(tabProgress, info);\n }\n });\n tmpProgress.total += tabProgress.total;\n tmpProgress.filled += tabProgress.filled;\n this.tabsProgress[tab.key] = (tabProgress.filled / tabProgress.total) * 100;\n }\n\n /**\n * Compute the progress for groups (or not)\n * @param tmpProgress: progress follow-up up object ({total: number, filled: number}).\n * @param info: question config\n */\n private groupProgress(tmpProgress, info) {\n if (info.type === 'group') {\n // For a group, only one question needs to be filled to be considered as completed.\n const grpProgress = { total: 0, filled: 0 };\n info.properties.questions.forEach(q => {\n this.manageProgress(grpProgress, q, true);\n });\n tmpProgress.total += 1;\n tmpProgress.filled += grpProgress.filled > 0 ? 1 : 0;\n } else {\n this.manageProgress(tmpProgress, info);\n }\n }\n\n /**\n * Compute progress for each \"classic\" question type.\n * @param tmpProgress: progress follow-up up object ({total: number, filled: number}).\n * @param info: question config\n * @param {boolean} isGroup: is the question part of a group.\n */\n private manageProgress(tmpProgress, info, isGroup = false) {\n // These two types have a key at a different place than others.\n const multipleTypes = ['input-text-multiple', 'select-choices-input'];\n\n if (multipleTypes.find(x => x === info.type)) {\n if (info.properties && info.properties.values) {\n // Compute the progress for the question that have multiple answers.\n const mtProgress = { total: 0, filled: 0 };\n mtProgress.total += info.properties.values.length;\n info.properties.values.forEach(item => {\n const val = this.values.find(y => y.key === item.key);\n const filled = val ? (isGroup ? val.value[0] : val.value) : false;\n mtProgress.filled += filled ? 1 : 0;\n });\n // For select-choices-input, at least one needs to be filled\n // to be considered as completed.\n if (info.type === 'select-choices-input') {\n tmpProgress.total++;\n tmpProgress.filled += mtProgress.filled > 0 ? 1 : 0;\n } else {\n tmpProgress.total += mtProgress.total;\n tmpProgress.filled += mtProgress.filled;\n }\n }\n } else {\n const val = this.values.find(y => y.key === info.properties.key);\n const filled = val ? (isGroup ? val.value[0] : val.value) : false;\n tmpProgress.filled += filled ? 1 : 0;\n tmpProgress.total++;\n }\n }\n\n public getTotalProgress() {\n return this.totalProgress;\n }\n}\n","export default \".create-site-bloc {\\n border: 1px dashed grey;\\n border-radius: 2px;\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n text-align: center;\\n line-height: calc(2.25rem + 2px);\\n margin-top: 0.5rem;\\n margin-bottom: 0.5rem;\\n background-color: #f7f7f7;\\n}\\n.create-site-bloc.drag-over {\\n background-color: grey;\\n border-color: lightgrey;\\n color: white;\\n}\\n.site-bloc {\\n border: 1px dashed grey;\\n border-radius: 2px;\\n margin-bottom: 0.5rem;\\n}\\n.site-bloc.drag-over {\\n background-color: grey;\\n border-color: lightgrey;\\n color: white;\\n}\\n.site-bloc:hover {\\n cursor: pointer;\\n}\\n.site-bloc.selected-site {\\n border-color: #db4b47;\\n}\\n.site-bloc * {\\n pointer-events: none;\\n}\\n.site-bloc {\\n padding: 5px 15px;\\n}\\n.info-address {\\n font-size: 0.75rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2xpc3QtZHJhZy1uLWRyb3AvbGlzdC1kcmFnLW4tZHJvcC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvbGlzdC1kcmFnLW4tZHJvcC9saXN0LWRyYWctbi1kcm9wLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQTtFQUNJLHVCQUFBO0VBQ0Esa0JBTlc7RUFPWCxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQ0FBQTtFQUNBLGtCQVZlO0VBV2YscUJBVmU7RUFXZix5QkFBQTtBQ1BKO0FEUUk7RUFDSSxzQkFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBQ05SO0FEVUE7RUFDSSx1QkFBQTtFQUNBLGtCQXZCVztFQXdCWCxxQkF0QmU7QUNlbkI7QURTSTtFQUNJLHNCQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FDUFI7QURTSTtFQUNJLGVBQUE7QUNQUjtBRFNJO0VBQ0kscUJFZEE7QURPUjtBRFdBO0VBQ0ksb0JBQUE7QUNSSjtBRFdBO0VBQ0ksaUJBQUE7QUNSSjtBRFdBO0VBQ0ksa0JBQUE7QUNSSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL2xpc3QtZHJhZy1uLWRyb3AvbGlzdC1kcmFnLW4tZHJvcC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5cbiRzaGFkb3dDb2xvcjogIzY1NjU2NTtcbiRzaGFkb3dEaXJlY3Rpb25zOiAtMnB4IDJweCA1cHggMHB4O1xuJHNoYWRvd1JhZGl1czogMnB4O1xuJG1hcmdpblRvcFBkbFNpdGU6IDAuNXJlbTtcbiRtYXJnaW5Cb3RQZGxTaXRlOiAwLjVyZW07XG5cbi5jcmVhdGUtc2l0ZS1ibG9jIHtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgZ3JleTtcbiAgICBib3JkZXItcmFkaXVzOiAkc2hhZG93UmFkaXVzO1xuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luVG9wUGRsU2l0ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luQm90UGRsU2l0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICAgICYuZHJhZy1vdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBsaWdodGdyZXk7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG59XG5cbi5zaXRlLWJsb2Mge1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCBncmV5O1xuICAgIGJvcmRlci1yYWRpdXM6ICRzaGFkb3dSYWRpdXM7XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbkJvdFBkbFNpdGU7XG5cbiAgICAmLmRyYWctb3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogbGlnaHRncmV5O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICAgICYuc2VsZWN0ZWQtc2l0ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGFkbWluO1xuICAgIH1cbn1cblxuLnNpdGUtYmxvYyAqIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNpdGUtYmxvYyB7XG4gICAgcGFkZGluZzogNXB4IDE1cHg7XG59XG5cbi5pbmZvLWFkZHJlc3Mge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cbiIsIi5jcmVhdGUtc2l0ZS1ibG9jIHtcbiAgYm9yZGVyOiAxcHggZGFzaGVkIGdyZXk7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cbi5jcmVhdGUtc2l0ZS1ibG9jLmRyYWctb3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIGJvcmRlci1jb2xvcjogbGlnaHRncmV5O1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5zaXRlLWJsb2Mge1xuICBib3JkZXI6IDFweCBkYXNoZWQgZ3JleTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uc2l0ZS1ibG9jLmRyYWctb3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIGJvcmRlci1jb2xvcjogbGlnaHRncmV5O1xuICBjb2xvcjogd2hpdGU7XG59XG4uc2l0ZS1ibG9jOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnNpdGUtYmxvYy5zZWxlY3RlZC1zaXRlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGI0YjQ3O1xufVxuXG4uc2l0ZS1ibG9jICoge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNpdGUtYmxvYyB7XG4gIHBhZGRpbmc6IDVweCAxNXB4O1xufVxuXG4uaW5mby1hZGRyZXNzIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufSIsIiRhY2N1ZWlsOiAjZjBhNjJhO1xuJGNhcnRvZ3JhcGhpZTogIzg5YTYzMDtcbiRjb2xsZWN0ZTogIzhkYmU0YTtcbiRhbmFseXNlOiAjNzBjMjgzO1xuJGVuZXJnaWU6ICNkM2JmOTY7XG4kZW5lcmd5LXNlY29uZGFyeTogIzY3OWM0NjtcbiR2ZWhpY3VsZXM6ICNkZjdjM2E7XG4kZG9jdW1lbnRzOiAjZDhhNjNlO1xuJGNvbnRyYXRzOiAjZDhhNjNlO1xuJHJzZTogIzQ0OWQ4NDtcbiR2ZWlsbGU6ICNiNTM3MzE7XG4kbWFuYWdlcnM6ICNkMDUzMTk7XG4kcHJvZmlsOiAjY2M1MTU3O1xuJHBkZjogI2VlNTc0NztcbiRnYXo6ICM1YWM2YmM7XG4kZWxlY3RyaWNpdGU6ICNmMmJmMDQ7XG4kZWF1OiAjNDI4MWI4O1xuJGZ1ZWw6ICNkZjdjM2E7XG4kaGVhdGluZzogI2FiMmY1MjtcbiRjb29saW5nOiAjMjhiYWUxO1xuJHVwbG9hZDogI2E1YjJjMztcbiRwcm9maWxldG9wOiAjZGZlNmVmO1xuJGVycm9yOiAjZGI0YjQ3O1xuJHN1Y2Nlc3M6IGdyZWVuO1xuJHdhcm5pbmc6IG9yYW5nZTtcbiRhZG1pbjogI2RiNGI0NztcbiR0ZXh0LWNvbG9yOiAjNjA3MTg4O1xuJG5hdmJhcjogIzJmM2I0MDtcbiRuYXZiYXItdG9wOiAjYTViNWNiO1xuJHNwZWNpZmljOiAjZjI4NDVjO1xuJGRvY3VtZW50czogI2E3YjI5ZDtcbiRtYXJrZXJncmVlbjogIzM5YzY1OTtcbiRjaWJsZXM6ICNkM2JmOTY7XG4kZmFjdHVyZXM6ICNkOGE2M2U7XG4kYm9yZGVyZ3JleTogI2Q5ZDlkOTtcbiRkanU6ICMyOGJhZTE7XG4kcGFnZWNvbnRhaW5lcjogI2YwZjBmMDtcbiRhbGVydHMtbWFuYWdlbWVudDogJGFkbWluO1xuJGJveC1jb250ZW50OiAjZWVlO1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmV5OiAjNTE2MDczO1xuJGNoZWNrYm94LWJhY2tncm91bmQ6ICNlM2UzZTM7XG4kY2hlY2ttYXJrOiAjY2NjO1xuJHRhYmxlLWJvcmRlcjogI2U5ZWNlZjtcbiRpbnB1dC1ib3JkZXI6ICNjZWQ0ZGE7XG4kZHJvcGRvd24taG92ZXI6ICNmNWZhZmY7XG4kbGlnaHRncmV5OiAjYTViNWNiO1xuIl19 */\"","import {\n Component,\n DoCheck,\n EventEmitter,\n Input,\n IterableDiffer,\n IterableDiffers,\n KeyValueDiffer,\n KeyValueDiffers,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Company } from 'app/shared/models/company.interface';\nimport { RoutingReference } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulated } from 'app/shared/models/site.interface';\nimport { Vehicle } from 'app/shared/models/vehicle.interface';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\nimport { RoutingReferencesService } from 'app/shared/services/routing-references/routing-references.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport { VehiclesService } from 'app/shared/services/vehicles/vehicles.service';\n\ntype Entity = RoutingReference | Vehicle;\n\n@Component({\n selector: 'ga-sites-list-drag-n-drop',\n templateUrl: './list-drag-n-drop.component.html',\n styleUrls: ['./list-drag-n-drop.component.scss'],\n providers: [],\n})\nexport class SitesListDragDropComponent implements OnInit, DoCheck {\n /**\n * Company of sites\n */\n @Input() company: Company;\n\n /**\n * Fluids available\n */\n @Input() fluids: Array<{\n name: string;\n value: string;\n }> = [];\n\n /**\n * All sites from company, populated with routing references and vehicles\n */\n @Input() sites: SitePopulated[];\n\n /**\n * List's entity type to display and assign : routing references or vehicles\n */\n @Input() entityType: 'vehicles' | 'routingReferences';\n\n /**\n * Event emitted when an entity have been associated to a site\n */\n @Output() entityAssigned: EventEmitter<{\n entity: Entity;\n site: SitePopulated;\n isNew: boolean;\n }> = new EventEmitter(true);\n\n /**\n * Event emitted when a site is selected\n */\n @Output() siteSelected: EventEmitter = new EventEmitter(true);\n\n /**\n * List of sites to be displayed (after filtering and limit applied)\n */\n sitesToDisplay: SitePopulated[] = [];\n\n /**\n * Site hovered while dragging\n */\n dragOverSite: string = null;\n\n /**\n * Search value\n */\n search = '';\n\n /**\n * Site selected\n */\n selectedSite: any;\n\n // Sites's entities informations to display (colors, count).\n // Each site _id is a key\n siteEntityDisplayInfo: {\n [siteId: string]: {\n [fluid: string]: {\n color: string;\n count: number;\n };\n };\n } = {};\n\n // Limits for the display of sites\n limits = {\n sites: 10,\n };\n\n /**\n * Differs to monitor changes in sites and perform action when changed.\n * _sitesObjDiffer is to detect changes inside sites (ex. changes on name, entities, ...)\n * _sitesDiffer is to detech changes on the site's array (add or remove one)\n */\n private _sitesObjDiffer: { [id: string]: KeyValueDiffer };\n private _sitesDiffer: IterableDiffer;\n\n constructor(\n private routingReferencesService: RoutingReferencesService,\n private sitesService: SitesService,\n private vehiclesService: VehiclesService,\n private colorService: ColorService,\n private fluidService: EnergyService,\n private keyValueDiffers: KeyValueDiffers,\n private iterableDiffers: IterableDiffers\n ) {}\n\n ngOnInit() {\n this._sitesObjDiffer = {};\n this.sites.forEach(site => {\n this.createSiteDiffer(site);\n });\n this._sitesDiffer = this.iterableDiffers.find(this.sites).create(null);\n }\n\n /**\n * Create a site differ entry in sites differs\n */\n private createSiteDiffer(site: SitePopulated) {\n this._sitesObjDiffer[site._id] = this.keyValueDiffers.find(site).create();\n }\n\n /**\n * Lifecycle hook that invokes a custom change-detection function for a directive,\n * in addition to the check performed by the default change-detector.\n *\n * Here, we check if sites changed and if sites list changed\n */\n ngDoCheck() {\n let hasChanged = false;\n this.sites.forEach(site => {\n const objDiffer = this._sitesObjDiffer[site._id];\n if (objDiffer) {\n const objChanges = objDiffer.diff(site);\n if (objChanges) {\n hasChanged = true;\n this.computeSiteEntityInfo(site);\n }\n }\n });\n const changes = this._sitesDiffer.diff(this.sites);\n if (changes) {\n hasChanged = true;\n }\n if (hasChanged) {\n this.filterSites(true);\n }\n }\n\n /*****************\n * COMPUTE SITE & ENTITY DISPLAY INFO\n *****************/\n\n /**\n * Get the rgb color of a fluid. Return the color if the site has the fluid, default otherwise.\n * @param {string} fluid to look for\n * @param {number} count - number of entity of the fluid\n * @returns {string} color at format 'rgb(r,g,b)' or null if element not found\n */\n private getFluidColor(fluid: string, count: number): string {\n const hasFluid = Boolean(count && count > 0);\n if (hasFluid) {\n return this.colorService.getSecondRgbColor(fluid);\n }\n return null;\n }\n /**\n * Get the number of entities of a site for a given fluid.\n * @param {string} fluid to look for\n * @param {SitePopulated} site to get the count of pdls for the fluid\n * @returns {number} number of PDLs for the given site and fluid\n */\n private getSiteEntityCount(fluid: string, site: SitePopulated): number {\n if (this.fluidService.getAllVehicleFluids().includes(fluid)) {\n return site && site.vehicles ? site.vehicles.length : 0;\n }\n return this.sitesService.countRoutingReferencesOfFluid(site, fluid);\n }\n\n /**\n * Compute the entities information for a given site.\n * Example : for routing references, will compute number of each fluid routing references\n * As there is lot of sites displayed, it's calculated when user takes action\n * and not on the angular cycles\n * Objects of type: {\n * color: string,\n * count: number\n * }\n * @param {SitePopulated} site - site to compute the information of\n */\n private computeSiteEntityInfo(site: SitePopulated) {\n this.siteEntityDisplayInfo[site._id] = {};\n this.fluids.forEach(fluid => {\n const count = this.getSiteEntityCount(fluid.value, site);\n this.siteEntityDisplayInfo[site._id][fluid.value] = {\n color: this.getFluidColor(fluid.value, count),\n count,\n };\n });\n }\n\n /**\n * Filter site per value\n * @param {string} value - search criteria\n */\n searchSite(value: string) {\n this.search = value;\n this.filterSites();\n }\n\n /**\n * Apply all filters to the sites list\n * @param {boolean} isReset - reset the sites list (for example in research true, display more false)\n */\n private filterSites(isReset: boolean = true) {\n // Reset the sites list\n if (isReset) {\n this.sitesToDisplay = [];\n }\n // Split the search in multiple words to check each one instead of all of them\n const values = this.search.toLocaleLowerCase().split(' ');\n // Properties of the sites to check in research\n const propertiesToCheck = ['complement', '_id', 'streetName', 'city', 'zipcode'];\n // Function to access embed properties\n const getProp = (obj, path) => path.split('.').reduce((acc, part) => acc && acc[part], obj);\n // Add the right number of sites to the display list\n // Each one is the next one matching filters\n for (let i = this.sitesToDisplay.length; i < this.limits.sites; i++) {\n const site = this.sites.find((x: SitePopulated) => {\n // Check if not already in the list\n if (this.sitesToDisplay.some(y => x._id === y._id)) {\n return false;\n }\n\n // Search in associated routingreferences\n const hasRoutingReferenceMatch =\n x.routingReferences &&\n x.routingReferences.some(\n pdl => this.checkMatch(pdl._id, values) || this.checkMatch(pdl.reference, values)\n );\n if (hasRoutingReferenceMatch) {\n return true;\n }\n\n // Search in associated vehicles\n const hasVehicleMatch =\n x.vehicles &&\n x.vehicles.some(\n v =>\n this.checkMatch(v._id, values) ||\n this.checkMatch(v.name, values) ||\n this.checkMatch(v.registrationNumber, values)\n );\n if (hasVehicleMatch) {\n return true;\n }\n\n // Check from search input\n return propertiesToCheck.some(property => {\n const val = getProp(x, property);\n return val && this.checkMatch(val, values);\n });\n });\n if (site) {\n this.sitesToDisplay.push(site);\n }\n }\n }\n\n /**\n * Check is a list of values matches a string\n * @param {string} property to check check the values from\n * @param {string[]} values list of values to test\n * @returns {boolean} true if all values matches, false otherwise\n */\n private checkMatch(property: string = '', values: string[] = []): boolean {\n return values.every(value => {\n return property.toLocaleLowerCase().includes(value);\n });\n }\n\n /**\n * Get site bloc class.\n * @param {SitePopulated} site - site to get class from\n * @returns {string} 'drag-over' when hover while dragging, 'selected-site' when selected, empty otherwise\n */\n getSiteClass(site: SitePopulated): string {\n if (this.dragOverSite === site._id) {\n return 'drag-over';\n }\n if (this.selectedSite && this.selectedSite._id === site._id) {\n return 'selected-site';\n }\n return '';\n }\n\n /**\n * Set selected site if not the same site already selected\n * @param {SitePopulated} site - site selected\n */\n selectSite(site: SitePopulated) {\n if (!this.selectedSite || (this.selectedSite && this.selectedSite._id !== site._id)) {\n this.selectedSite = site;\n this.siteSelected.emit(site);\n }\n }\n\n /**\n * Display more site in the list.\n * @param {number} number of sites to display more. Default : 10\n */\n displayMoreSites(number: number = 10) {\n this.limits.sites += number;\n this.filterSites(false);\n }\n\n /**\n * DRAG N DROP MANAGEMENT\n */\n /**\n * On drop of an entity on a site, associate the entity to the existing site or create a site if new one\n * @param {DragEvent} event\n * @param {SitePopulated} site - id of site dropped\n */\n async onDrop(event: DragEvent, site: SitePopulated) {\n event.preventDefault();\n const dataString = event.dataTransfer.getData('text/plain');\n const entity = JSON.parse(dataString);\n\n switch (this.entityType) {\n case 'routingReferences': {\n await this.associateRoutingReference(entity, site);\n break;\n }\n case 'vehicles': {\n await this.associateVehicle(entity, site);\n break;\n }\n default:\n break;\n }\n\n this.dragOverSite = null;\n }\n\n private async associateRoutingReference(entity: RoutingReference, site: SitePopulated) {\n // If the area dropped is an existing site\n if (site) {\n // Set the selected site\n this.selectSite(site);\n\n // Associate the pdl to site, if not already in\n const siteHasRoutingReference = site.routingReferences.some(x => Boolean(x._id === entity._id));\n if (!siteHasRoutingReference) {\n try {\n await this.routingReferencesService.associateRoutingReferenceToSite(entity._id, site._id);\n this.entityAssigned.emit({ entity, site, isNew: false });\n } catch (e) {}\n }\n } else {\n // If the area dropped to is the area to create a site, create a new site\n // Then associate the routing reference to the site.\n // Create site from routing reference in back\n try {\n const newSite = await this.routingReferencesService.createSiteFromRoutingReference(\n entity._id,\n this.company._id\n );\n if (newSite) {\n newSite.routingReferences = [entity];\n this.createSiteDiffer(newSite);\n this.entityAssigned.emit({ entity, site: newSite, isNew: true });\n this.selectSite(newSite);\n this.limits.sites++;\n }\n } catch (e) {}\n }\n }\n\n private async associateVehicle(entity: Vehicle, site: SitePopulated) {\n // If the area dropped is an existing site\n if (site) {\n // Set the selected site\n this.selectSite(site);\n\n // Associate the vehicle to site, if not already in\n const siteHasVehicle = site.vehicles.some(x => Boolean(x._id === entity._id));\n if (!siteHasVehicle) {\n try {\n await this.vehiclesService.linkVehicleToSite(entity._id, site._id);\n this.entityAssigned.emit({ entity, site, isNew: false });\n } catch (e) {}\n }\n } else {\n // If the area dropped to is the area to create a site, create a new site\n // Then associate the vehicle to the site.\n // Create site from vehicle in back\n try {\n const newSite = await this.vehiclesService.createSiteFromVehicle(entity._id);\n if (newSite) {\n newSite.vehicles = [entity];\n this.createSiteDiffer(newSite);\n this.entityAssigned.emit({ entity, site: newSite, isNew: true });\n this.selectSite(newSite);\n this.limits.sites++;\n }\n } catch (e) {}\n }\n }\n\n /**\n * Set the site when drag enters DOM element hover.\n * If it hovers the site creation zone, instead of setting the _id, set 'new'.\n * @param {DragEvent} event\n * @param {SitePopulated} site object of the site dragged over\n */\n onDragEnter(event: DragEvent, site: SitePopulated) {\n event.preventDefault();\n const isNewSite = !Boolean(site);\n\n this.dragOverSite = isNewSite ? 'new' : site._id;\n }\n\n /**\n * Unset the site when drag leaves DOM element hover.\n * @param {DragEvent} event\n * @param {SitePopulated} site - site left. Unset only if the site is the one stored.\n */\n onDrageLeave(event: DragEvent, site: SitePopulated) {\n event.preventDefault();\n const isNewSite = !Boolean(site);\n\n const id = isNewSite ? 'new' : site._id;\n\n if (this.dragOverSite === id) {\n this.dragOverSite = null;\n }\n }\n\n /**\n * DO NOT REMOVE. ENABLE THE DROP.\n * @param event\n */\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n}\n","export default \"td {\\n vertical-align: middle;\\n font-size: 0.8125rem;\\n}\\n\\nbutton {\\n line-height: 1.4;\\n border: none;\\n}\\n\\n.svg-icon {\\n height: 33px;\\n width: 33px;\\n}\\n\\n.citron-btn {\\n margin: 0 3px;\\n height: 36px;\\n display: -webkit-inline-box;\\n display: inline-flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n max-width: 180px;\\n padding: 6px 12px;\\n font-size: 0.875rem;\\n}\\n\\n.actions-container {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n}\\n\\n.button-icon {\\n padding-left: 8px;\\n padding-right: 8px;\\n}\\n\\n.icon-unlink {\\n height: 25px;\\n width: 25px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_unlink.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_unlink.svg\\\");\\n}\\n\\n.status__icon {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: black;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_dot_circle.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_dot_circle.svg\\\");\\n margin-left: 5px;\\n}\\n\\n.status__td {\\n width: 30px !important;\\n}\\n\\n.status__icon-green {\\n background-color: green;\\n}\\n\\n.status__icon-red {\\n background-color: #db4b47;\\n}\\n\\n.status__icon-grey {\\n background-color: grey;\\n}\\n\\n.modal-header .close {\\n padding: 0;\\n}\\n\\n.modal__container {\\n max-width: none;\\n}\\n\\n@media (min-width: 1200px) {\\n .modal__container {\\n width: 1200px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3BkbC1saXN0L3BkbC1saXN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9wZGwtbGlzdC9wZGwtbGlzdC5jb21wb25lbnQuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvbWl4aW5zLnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BO0VBQ0ksc0JBQUE7RUFDQSxvQkFKYTtBQ0RqQjs7QURRQTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtBQ0xKOztBRFFBO0VBQ0ksWUFBQTtFQUNBLFdBQUE7QUNMSjs7QURRQTtFQUNJLGFBQUE7RUFDQSxZQUFBO0VBQ0EsMkJBQUE7RUFBQSxvQkFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx3QkFBQTtVQUFBLHVCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQTFCWTtBQ3FCaEI7O0FEUUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esd0JBQUE7VUFBQSx1QkFBQTtBQ0xKOztBRFFBO0VBQ0ksaUJBQUE7RUFDQSxrQkFBQTtBQ0xKOztBRFFBO0VFMUNJLFlGMkNpQjtFRTFDakIsV0YwQ3VCO0VFekN2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx1QkZvQ3lCO0VFaEN6QixrRUFBQTtVQUFBLDBEQUFBO0FEaUNSOztBREVBO0VFOUNJLFlGK0NpQjtFRTlDakIsV0Y4Q3VCO0VFN0N2Qiw2QkFBQTtVQUFBLHFCQUFBO0VBQ0EsMEJBQUE7VUFBQSxrQkFBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFHSSx1QkZ3Q3lCO0VFcEN6QixzRUFBQTtVQUFBLDhEQUFBO0VGcUNKLGdCQUFBO0FDT0o7O0FESkE7RUFDSSxzQkFBQTtBQ09KOztBREpBO0VBQ0ksdUJHbENNO0FGeUNWOztBREpBO0VBQ0kseUJHdkNJO0FGOENSOztBREpBO0VBQ0ksc0JBQUE7QUNPSjs7QURKQTtFQUNJLFVBQUE7QUNPSjs7QURKQTtFQUNJLGVBQUE7QUNPSjs7QURKQTtFQUNJO0lBQ0ksYUFBQTtFQ09OO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9wZGwtbGlzdC9wZGwtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL2NvbG9ycyc7XG5cbiRidG4tZm9udC1zaXplOiAwLjg3NXJlbTtcbiR0ZXh0LWZvbnQtc2l6ZTogMC44MTI1cmVtO1xuXG50ZCB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6ICR0ZXh0LWZvbnQtc2l6ZTtcbn1cblxuYnV0dG9uIHtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuLnN2Zy1pY29uIHtcbiAgICBoZWlnaHQ6IDMzcHg7XG4gICAgd2lkdGg6IDMzcHg7XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgICBtYXJnaW46IDAgM3B4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1heC13aWR0aDogMTgwcHg7XG4gICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgZm9udC1zaXplOiAkYnRuLWZvbnQtc2l6ZTtcbn1cblxuLmFjdGlvbnMtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5idXR0b24taWNvbiB7XG4gICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgcGFkZGluZy1yaWdodDogOHB4O1xufVxuXG4uaWNvbi11bmxpbmsge1xuICAgIEBpbmNsdWRlIHN2Z0ljb24oMjVweCwgMjVweCwgd2hpdGUsICcvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX3VubGluay5zdmcnKTtcbn1cblxuLnN0YXR1c19faWNvbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigyMHB4LCAyMHB4LCBibGFjaywgJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fZG90X2NpcmNsZS5zdmcnKTtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4uc3RhdHVzX190ZCB7XG4gICAgd2lkdGg6IDMwcHggIWltcG9ydGFudDtcbn1cblxuLnN0YXR1c19faWNvbi1ncmVlbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN1Y2Nlc3M7XG59XG5cbi5zdGF0dXNfX2ljb24tcmVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XG59XG5cbi5zdGF0dXNfX2ljb24tZ3JleSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbn1cblxuLm1vZGFsLWhlYWRlciAuY2xvc2Uge1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi5tb2RhbF9fY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAubW9kYWxfX2NvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAxMjAwcHg7XG4gICAgfVxufVxuIiwidGQge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LXNpemU6IDAuODEyNXJlbTtcbn1cblxuYnV0dG9uIHtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4uc3ZnLWljb24ge1xuICBoZWlnaHQ6IDMzcHg7XG4gIHdpZHRoOiAzM3B4O1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIG1hcmdpbjogMCAzcHg7XG4gIGhlaWdodDogMzZweDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXgtd2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmFjdGlvbnMtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5idXR0b24taWNvbiB7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG59XG5cbi5pY29uLXVubGluayB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDI1cHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgbWFzay1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvcGljdG9zLXN2Zy9waWN0b191bmxpbmsuc3ZnXCIpO1xufVxuXG4uc3RhdHVzX19pY29uIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICBtYXNrLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2RvdF9jaXJjbGUuc3ZnXCIpO1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4uc3RhdHVzX190ZCB7XG4gIHdpZHRoOiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5zdGF0dXNfX2ljb24tZ3JlZW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcbn1cblxuLnN0YXR1c19faWNvbi1yZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGI0YjQ3O1xufVxuXG4uc3RhdHVzX19pY29uLWdyZXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xufVxuXG4ubW9kYWwtaGVhZGVyIC5jbG9zZSB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5tb2RhbF9fY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5tb2RhbF9fY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTIwMHB4O1xuICB9XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport * as moment from 'moment';\n\n// services\nimport { EnergyService } from 'app/shared/services/energy/energy.service';\n\n// interfaces\nimport { ContractLight } from 'app/shared/models/contract.interface';\nimport { RoutingReferencePopulated } from 'app/shared/models/routing-reference.interface';\nimport { SitePopulatedContracts } from 'app/shared/models/site.interface';\nimport { Vehicle, VehiclePopulated } from 'app/shared/models/vehicle.interface';\nimport { ModalDirective } from 'ngx-bootstrap/modal';\nimport { SweetAlertOptions } from 'sweetalert2';\n\n@Component({\n selector: 'ga-sites-pdl-list',\n templateUrl: './pdl-list.component.html',\n styleUrls: ['./pdl-list.component.scss'],\n})\nexport class SitesPdlListComponent implements OnInit {\n /**\n * Items to display\n * @deprecated Not used anymore. Use it if site not provided ?\n */\n @Input() items: RoutingReferencePopulated[] | VehiclePopulated[] = [];\n\n /**\n * Site to display entities from\n */\n @Input() site: SitePopulatedContracts;\n\n /**\n * Fluid category for display entities. Can be energy, water or vehicles\n */\n @Input() fluidCategory: string = null;\n\n /**\n * If true, display button to relocate routing references / edit vehicles\n */\n @Input() canEditItems = false;\n\n /**\n * If true, display button to unlink entities from site\n */\n @Input() canDeleteItems = false;\n\n /**\n * Triggered when use click on the unlink button and confirmed the modal\n */\n @Output() removeClick: EventEmitter = new EventEmitter();\n\n /**\n * Vehicle selected for editing modal\n */\n vehicleSelected: VehiclePopulated = null;\n\n /**\n * Vehicle edit modal\n */\n @ViewChild('modal', { static: true }) modal: ModalDirective;\n\n /**\n * Swal options for the routing reference unlink confirmation modal\n */\n public swalOptions: SweetAlertOptions = {\n title: \"Dissociation d'un PDL\",\n text:\n 'Vous êtes sur le point de dissocier un PDL de ce site, êtes vous certain de vouloir effectuer cette action ?',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Oui, le dissocier',\n cancelButtonText: 'Annuler',\n };\n\n constructor(private energyService: EnergyService) {}\n\n ngOnInit() {}\n\n /***************\n * Generic\n ***************/\n\n /**\n * Get columns headers\n * @returns {string[]}\n */\n get itemColumns(): string[] {\n const columns = this.isSourceRoutingReference ? this.routingReferenceColumns : this.vehicleColumns;\n\n columns.push('Données'); // common\n return columns;\n }\n\n /**\n * Returns true if fluid category is either energy or water, false if vehicles\n * @returns {boolean}\n */\n get isSourceRoutingReference(): boolean {\n return this.energyService.isCategoryForRoutingReference(this.fluidCategory);\n }\n\n /**\n * Returns the element to remove\n * @param {RoutingReferencePopulated|VehiclePopulated} item\n */\n emitDeleteEvent(item: RoutingReferencePopulated | VehiclePopulated) {\n this.removeClick.emit(item);\n }\n\n /**\n * Returns the url for the routing reference/contract view or the vehicle's followup\n * @param {RoutingReferencePopulated|VehiclePopulated} item\n * @param {ContractLight} contract\n * @returns {url: string[], queryParams: any} url link for routerLink with optional query params\n */\n getItemRedirection(\n item: RoutingReferencePopulated | VehiclePopulated,\n contract?: ContractLight\n ): { url: string[]; params?: any } {\n if (this.isSourceRoutingReference) {\n return { url: [`${this.getItemUrlFromContract(contract.energyType)}/${item._id}/${contract._id}`] };\n }\n return { url: [`/vehicules/suivi`], params: { vehicleId: item._id } };\n }\n\n /**\n * Find the contract matching the routing reference's id / fuelCard's id and return its date.\n * @param {ContractLight} contract\n * @param {string} itemId - routing reference's id / fuel card's id\n * @returns {{dateStart: string|null, dateEnd: string|null}}\n */\n getItemContractDates(contract: ContractLight, itemId: string): { dateStart: string; dateEnd: string } {\n if (this.isSourceRoutingReference) {\n return this.getRoutingReferenceContractDates(contract, itemId);\n }\n return this.getVehiculeContractDates(contract, itemId);\n }\n\n /**\n * Return the css class for item validaty.\n * Typing is not possible beacause routing reference and vehcile don't share the field on which the validity is based on.\n * @param {*} item\n * @returns {string} class name\n */\n getItemStatusClass(item: any): string {\n const active = this.isSourceRoutingReference ? this.isRoutingReferenceActive(item) : this.isVehActive(item);\n return active ? 'status__icon-green' : 'status__icon-red';\n }\n\n /**\n * Get item status title attribute to display\n * @param {*} item\n * @returns {string}\n */\n getItemStatusTitle(item: any): string {\n if (this.isSourceRoutingReference) {\n return this.getRoutingReferenceTitle(item);\n }\n return this.getVehicleTitle(item);\n }\n\n /***************\n * Routing references\n ***************/\n\n get routingReferences(): RoutingReferencePopulated[] {\n return this.site && this.site.routingReferences ? this.site.routingReferences : [];\n }\n\n /**\n * Returns true to fitler items by their energy type, depending on the fluid category (energy, water, vehicle)\n * Water pdls should not be visible in energy page, and vice-versa.\n * (Vehicles are not filtered, we need to diaply all of them)\n * @param {RoutingReferencePopulated} routingReference\n * @returns {boolean}\n */\n isItemFilteredByEnergyType(routingReference: RoutingReferencePopulated): boolean {\n // no need to filter items per energy (it's the case on vehicle page)\n if (!this.isSourceRoutingReference) {\n return true;\n }\n\n if (routingReference.energyType) {\n if (this.fluidCategory === 'water') {\n return routingReference.energyType === 'water';\n }\n return routingReference.energyType !== 'water';\n }\n return false;\n }\n\n /**\n * Get URL to relocate routing reference page\n * @param {RoutingReferencePopulated}\n */\n getRelocateRoutingRefUrl(routingRef: RoutingReferencePopulated): string[] {\n const urlCategory = this.energyService.getFluidCategoryFrench(this.fluidCategory);\n return ['/', urlCategory, 'merge', 'rf', routingRef._id];\n }\n\n /**\n * Returns the url for the routing reference's contract view\n * @param {RoutingReferencePopulated} item - routing reference\n * @param {string} energyType\n * @returns {string[]} url link for routerLink\n */\n getRoutingRefUrl(item: RoutingReferencePopulated, energyType: string): string[] {\n const url = `${this.getItemUrlFromContract(energyType)}/${item._id}`;\n return [url];\n }\n\n /**\n * Get base url for the routing reference view, for the contract's specific fluid\n * @param {string} energyType\n */\n private getItemUrlFromContract(energyType: string): string {\n return this.energyService.getFluidPdlDataUrl(energyType);\n }\n\n /**\n * Get common zones for a routing reference\n * @param {RoutingReferencePopulated} routingReference - routing reference object\n * @returns {string} names of the zones sharing the routing reference\n */\n getCommonZones(routingReference: RoutingReferencePopulated): string {\n // Get shared routing reference object if shared\n const sharedRoutingReference = this.site.info.sharedRoutingReferences.find(item => {\n return item.routingReference === routingReference._id;\n });\n // If found, return zones names joined\n if (sharedRoutingReference) {\n const zonesName = sharedRoutingReference.zones.map(zoneItem => {\n const z = this.site.info.batiments.find(x => x._id === zoneItem.zone);\n return z ? z.name : 'Zone NC (Erreur)';\n });\n return zonesName.join(' - ');\n }\n // If not, found, means that it's not shared, so return empty string.\n return '';\n }\n\n /**\n * Returns true if the routing reference has more than 1 contract\n * @param {RoutingReferencePopulated} routingReference\n * @returns {boolean}\n */\n hasSeveralContracts(routingReference: RoutingReferencePopulated): boolean {\n return routingReference.contracts && routingReference.contracts.length > 1;\n }\n\n get routingReferenceColumns(): string[] {\n const columns = ['PDL', '', 'N° de contrat', 'Période', 'Type', 'Fournisseur'];\n if (this.hasSharedRoutingReferences) {\n columns.push('Commun');\n }\n return columns;\n }\n\n /**\n * Returns true if the routing reference is active\n * @param {RoutingReferencePopulated} routingReference\n * @returns {boolean}\n */\n isRoutingReferenceActive(routingReference: RoutingReferencePopulated): boolean {\n return Boolean(routingReference && routingReference.status && routingReference.status.active);\n }\n\n /**\n * Returns true if the site has some routing references shared by mutiple zones\n * @returns {boolean}\n */\n get hasSharedRoutingReferences(): boolean {\n return (\n this.site &&\n this.site.info &&\n this.site.info.sharedRoutingReferences &&\n this.site.info.sharedRoutingReferences.length\n );\n }\n\n /**\n * Get routing reference dates for the given contract\n * @param {ContractLight} contract\n * @param {string} id\n * @returns {{dateStart: string, dateEnd: string}}\n */\n getRoutingReferenceContractDates(contract: ContractLight, id: string): { dateStart: string; dateEnd: string } {\n const contractItem = contract.routingReferences.find(x => x.routingReference === id);\n\n return {\n dateStart: contractItem ? contractItem.dateStart : null,\n dateEnd: contractItem ? contractItem.dateEnd : null,\n };\n }\n\n /**\n * Get routing reference title attribute to display\n * @param {RoutingReferencePopulated} routingReference\n */\n getRoutingReferenceTitle(routingReference: RoutingReferencePopulated): string {\n return '';\n }\n\n /***************\n * Vehicles\n ***************/\n\n /**\n * Get vehicles display columns\n */\n get vehicleColumns(): string[] {\n return ['Immatriculation', 'N° de contrat', 'N° de carte', 'Période', 'Type', 'Fournisseur'];\n }\n\n get vehicles(): VehiclePopulated[] {\n return this.site && this.site.vehicles ? this.site.vehicles : [];\n }\n\n /**\n * Returns true if the vehicle is active, meaning its contract hasn't ended yet\n * @param {VehiclePopulated} vehicle\n * @returns {boolean}\n */\n isVehActive(vehicle: VehiclePopulated): boolean {\n /**\n * Vehicle is active if dateOut defined and is after current time.\n * Or if dateOut not defined and dateIn defined and is before current time\n */\n const hasStarted = Boolean(vehicle.dateIn && moment.utc(vehicle.dateIn).isBefore());\n const isStillActual = Boolean(vehicle.dateOut && moment.utc(vehicle.dateOut).isAfter());\n return isStillActual || (!vehicle.dateOut && hasStarted);\n }\n\n /**\n * Get row span for the vehicle's registration name & its status icon\n * @returns {number} number of rows for this vehicle: 1 row per fuelCard per contract\n */\n getVehicleRowSpan(contracts: ContractLight[]): number {\n return contracts.reduce((count, c) => {\n count += c.fuelCards.length;\n return count;\n }, 0);\n }\n\n /**\n * Get vehicle dates for the given contract\n * @param {ContractLight} contract\n * @param {string} id\n * @returns {{dateStart: string, dateEnd: string}}\n */\n getVehiculeContractDates(contract: ContractLight, id: string): { dateStart: string; dateEnd: string } {\n const contractItem = contract.fuelCards.find(x => x.fuelCard === id);\n\n return {\n dateStart: contractItem ? contractItem.dateStart : null,\n dateEnd: contractItem ? contractItem.dateEnd : null,\n };\n }\n\n /**\n * Update vehicle data\n * @param {Vehicle} vehicle - vehicle with recent data\n */\n updateVehicle(vehicle: Vehicle) {\n /**\n * Vehicle provided is not populated with contracts so we can't just assign.\n */\n this.vehicleSelected.fuelType = vehicle.fuelType;\n this.vehicleSelected.dateIn = vehicle.dateIn;\n this.vehicleSelected.dateOut = vehicle.dateOut;\n this.vehicleSelected.category = vehicle.category;\n this.vehicleSelected.make = vehicle.make;\n this.vehicleSelected.model = vehicle.model;\n this.vehicleSelected.consumption = vehicle.consumption;\n this.vehicleSelected.isHybrid = vehicle.isHybrid;\n if (this.modal) {\n this.modal.hide();\n }\n }\n\n /**\n * Get vehicle status title attribute\n * @param {VehiclePopulated} vehicle\n * @returns {string}\n */\n getVehicleTitle(vehicle: VehiclePopulated): string {\n if (this.isVehActive(vehicle)) {\n return '';\n }\n if (vehicle.dateOut) {\n return 'La date de sortie du véhicule est dépassée';\n }\n return \"La date de sortie du véhicule n'est pas définie\";\n }\n\n /**\n * Return the css class for item validaty.\n * @param {VehiclePopulated} item\n * @returns {string} class name\n */\n getVehicleStatusClass(item: VehiclePopulated): string {\n if (this.isVehActive(item)) {\n return 'status__icon-green';\n }\n if (item.dateOut) {\n return 'status__icon-red';\n }\n return 'status__icon-grey';\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3Byb3BlcnRpZXMvc2l0ZS1wcm9wZXJ0aWVzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-site-properties',\n templateUrl: './site-properties.component.html',\n styleUrls: ['./site-properties.component.scss'],\n})\nexport class SitePropertiesComponent implements OnInit {\n @Input() element: any; // can be site or zone\n @Input() properties: any;\n\n @Input() colWidth: number | string = 12;\n\n constructor() {}\n ngOnInit() {}\n\n elementHasComplements(): boolean {\n if (!this.elementHasSubCategory()) {\n return false;\n }\n\n const subCategories = this.properties.categories[this.element.category].subcategories;\n const subCategory = subCategories.find(subCat => subCat.id === this.element.subcategory);\n\n return Boolean(subCategory && subCategory.complements.length);\n }\n\n elementHasSubCategory(): boolean {\n const category = this.properties.categories[this.element.category];\n\n return Boolean(category && category.subcategories.length);\n }\n\n get organizationIsCompany(): boolean {\n return this.properties && this.properties.organization && Number(this.properties.organization.id) === 1; // 1 is the id of \"Entreprise\" organization\n }\n\n get organizationHasCategories() {\n return Boolean(this.properties && this.properties.categories && this.properties.categories.length);\n }\n\n canShowSubCategories(): boolean {\n return Boolean(this.organizationHasCategories && this.elementHasSubCategory());\n }\n\n canShowComplements(): boolean {\n return Boolean(this.organizationHasCategories && this.elementHasComplements());\n }\n\n get organizationHasSubnatures(): boolean {\n return (\n this.properties && this.properties.natures && this.properties.natures.some(x => x.items && x.items.length)\n );\n }\n\n get showSubnatures(): boolean {\n return this.organizationHasSubnatures && this.element.nature;\n }\n\n get getElementSubnatures(): any[] {\n const nature = this.properties.natures.find(x => x.id === this.element.nature);\n return nature ? nature.items : [];\n }\n\n /******************/\n /* GET */\n /******************/\n\n getElementComplements(subCatId): any[] {\n const subCategories = this.properties.categories[this.element.category].subcategories;\n const subCategory = subCategories.find(subCat => subCat.id === subCatId);\n\n return subCategory ? subCategory.complements : [];\n }\n\n /******************/\n /* UPDATE */\n /******************/\n\n onCategoryChanged() {\n if (!this.element.category) {\n this.element.subcategory = null;\n this.element.complement = null;\n }\n }\n\n onSubCategoryChanged() {\n if (!this.element.subcategory) {\n this.element.complement = null;\n }\n }\n\n onNatureChanged() {\n this.element.subnature = null;\n }\n\n get getColClass() {\n return 'col-md-' + this.colWidth;\n }\n}\n","export default \".upload-file-btn {\\n margin-top: 0.4em;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvcXVlc3Rpb25zL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksaUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi51cGxvYWQtZmlsZS1idG4ge1xuICAgIG1hcmdpbi10b3A6IDAuNGVtO1xufVxuIiwiLnVwbG9hZC1maWxlLWJ0biB7XG4gIG1hcmdpbi10b3A6IDAuNGVtO1xufSJdfQ== */\"","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { QuestionService } from 'app/shared/services/sites/question.service';\nimport { UploadFilesComponent } from '../../../upload/upload-files/upload-files.component';\nimport { QuestionComponent } from '../question/question.component';\n\n@Component({\n selector: 'ga-question-file',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n providers: [],\n})\n/**\n * Component to create a question to upload file(s).\n * @Input data : User data at the format [{key: string, value: any}]\n * @Input config : Question from the config file with properties attribute at the format:\n * {key: string}\n */\nexport class FileQuestionComponent extends QuestionComponent implements OnInit {\n multiple = true;\n\n /**\n * Get the upload component\n */\n @ViewChild('upload', { static: false }) private uploadComponent: UploadFilesComponent;\n\n constructor(private questionService: QuestionService) {\n super();\n }\n\n ngOnInit(): void {\n super.setFileKey(this.config.properties.key);\n\n if (this.config.properties.multiple) {\n this.multiple = true;\n }\n\n const initVal = this.data.find(x => x.key === this.config.properties.key);\n\n if (initVal && initVal.value) {\n this.questionService\n .getUploadFile(initVal.value)\n .then(fileRes => {\n this.fileLoaded = fileRes;\n })\n .catch(err => {\n this.fileLoaded = {\n _id: null,\n originalname: 'Erreur lors de la récupération votre fichier',\n };\n });\n }\n }\n\n clickOnInput() {\n if (this.uploadComponent) {\n this.uploadComponent.clickOnInput();\n }\n }\n\n deleteFile() {\n const key = this.config.properties.key;\n const valueToDelete = {\n site: this.siteId,\n zone: this.zoneId,\n keys: [key],\n fileId: this.fileLoaded._id,\n };\n\n this.questionService.deleteFiles(valueToDelete).then(res => {\n this.fileLoaded = null;\n });\n }\n}\n","export default \".card-header {\\n text-align: left;\\n}\\n\\n.delete-btn {\\n float: right;\\n}\\n\\n.card {\\n box-shadow: none;\\n border: 1px solid rgba(0, 0, 0, 0.1) !important;\\n border-radius: 0.25em;\\n}\\n\\n.group-collapse {\\n box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.2);\\n border-radius: 0.25em;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9ncm91cC1jb2xsYXBzZS9ncm91cC1jb2xsYXBzZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvcXVlc3Rpb25zL2dyb3VwLWNvbGxhcHNlL2dyb3VwLWNvbGxhcHNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksZ0JBQUE7QUNDSjs7QURNQTtFQUNJLFlBQUE7QUNISjs7QURNQTtFQUNJLGdCQUFBO0VBQ0EsK0NBQUE7RUFDQSxxQkFBQTtBQ0hKOztBRE1BO0VBQ0ksNENBQUE7RUFDQSxxQkFBQTtBQ0hKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvcXVlc3Rpb25zL2dyb3VwLWNvbGxhcHNlL2dyb3VwLWNvbGxhcHNlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNhcmQtaGVhZGVyIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ucXVlc3Rpb25Hcm91cCB7XG4gICAgLy8gYmFja2dyb3VuZC1jb2xvcjogIzU1OGIyZjtcbn1cblxuLmRlbGV0ZS1idG4ge1xuICAgIGZsb2F0OiByaWdodDtcbn1cblxuLmNhcmQge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMC4yNWVtO1xufVxuXG4uZ3JvdXAtY29sbGFwc2Uge1xuICAgIGJveC1zaGFkb3c6IDFweCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbn1cbiIsIi5jYXJkLWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5kZWxldGUtYnRuIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4uY2FyZCB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAwLjI1ZW07XG59XG5cbi5ncm91cC1jb2xsYXBzZSB7XG4gIGJveC1zaGFkb3c6IDFweCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3JkZXItcmFkaXVzOiAwLjI1ZW07XG59Il19 */\"","// tslint:disable:no-access-missing-member\nimport {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n OnInit,\n QueryList,\n TemplateRef,\n Type,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Question } from '../../../../models/question.interface';\nimport { QuestionService } from '../../../../services/sites/question.service';\nimport { FileQuestionComponent } from '../file-upload/file-upload.component';\nimport { InputTextMultipleComponent } from '../input-text-multiple/input-text-multiple.component';\nimport { InputTextComponent } from '../input-text/input-text.component';\nimport { QuestionComponent } from '../question/question.component';\nimport { SelectChoicesBlocComponent } from '../select-choices-bloc/select-choices-bloc.component';\nimport { SelectChoicesInputComponent } from '../select-choices-input/select-choices-input.component';\nimport { SelectChoicesComponent } from '../select-choices/select-choices.component';\nimport { SelectDropdownComponent } from '../select-dropdown/select-dropdown.component';\n\n@Component({\n selector: 'ga-question-group',\n templateUrl: './group-collapse.component.html',\n styleUrls: ['./group-collapse.component.scss'],\n})\n/**\n * Component to create a group of questions. A group is composed of multiple questions that can have multiple answers.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with pro perties attribute at the format {questions: [... any question objects]}\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format [{key: string, value: string}]\n */\nexport class GroupQuestionComponent extends QuestionComponent implements OnInit, AfterViewChecked {\n // Container to set the questions component in the ng-template places\n rootViewContainer: ViewContainerRef;\n\n // Values of the questions components\n private values: Array<{\n key: string;\n value: any[];\n }> = [];\n\n // Get all the questions components from the ng-template.s\n @ViewChildren('questionGroup', { read: ViewContainerRef }) questionItems: QueryList;\n\n public groups: Array<{\n rendered: boolean; // Is the group created in the DOM (render => create the DOM component)\n display: boolean;\n values: Array<{ key: string; value: string }>;\n vcr: ViewContainerRef;\n }> = [];\n\n constructor(\n private factoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private questionService: QuestionService\n ) {\n super();\n }\n\n ngOnInit() {\n let nbGroups = 1;\n let key = '';\n // Define the number of groups that needs to be initialized\n if (this.config.properties.questions) {\n const type = this.config.properties.questions[0].type;\n if (\n type === 'simple-choices' ||\n type === 'simple-choices-bloc' ||\n type === 'input-text' ||\n type === 'select-dropdown' ||\n type === 'file'\n ) {\n key = this.config.properties.questions[0].properties.key;\n } else if (type === 'input-text-multiple' || type === 'select-choices-input') {\n if (this.config.properties.questions[0].properties.values) {\n key = this.config.properties.questions[0].properties.values[0].key;\n }\n }\n const tmpData = this.data.find(x => x.key === key);\n if (tmpData && Array.isArray(tmpData.value)) {\n nbGroups = tmpData.value.length;\n }\n }\n for (let i = 0; i < nbGroups; i++) {\n this.add();\n }\n }\n\n /**\n * After the view check, check if each group is already created. Create those which aren't.\n * The property rendered indicates if it has been created/rendered.\n */\n ngAfterViewChecked() {\n this.groups.forEach(group => {\n if (!group.rendered) {\n group.vcr = this.questionItems.toArray()[this.groups.indexOf(group)];\n this.manageGroups(group);\n group.rendered = true;\n }\n });\n }\n\n /**\n * Add groups at init\n * @param group to create\n */\n private manageGroups(group) {\n this.config.properties.questions.forEach(question => {\n this.addQuestion(question, group);\n });\n this.cdr.detectChanges();\n }\n\n toggleCollapse(group) {\n if (!group.display) {\n group.display = !group.display;\n this.groups.forEach(g => {\n g.display = false;\n });\n }\n group.display = !group.display;\n }\n\n /**\n * Delete a collapse group when clicking on the delete button\n * @param group to delete.\n */\n deleteCollapseGroup(group) {\n const index = this.groups.indexOf(group);\n const keys = [];\n // Get the files keys of the group's file to delete them.\n this.config.properties.questions.forEach(q => {\n if (q.type === 'file' || (q.type === 'simple-choices' && q.fileKey)) {\n if (q.properties.key) {\n keys.push(q.properties.key);\n }\n }\n });\n // If there is some files\n if (keys.length > 0) {\n // Delete the files\n const valueToDelete = {\n site: this.siteId,\n zone: this.zoneId,\n keys,\n index,\n groupDelete: true,\n };\n\n this.questionService.deleteFiles(valueToDelete).then(res => {\n this.groups = this.groups.filter(x => x !== group);\n this.updateValues();\n });\n } else {\n this.groups = this.groups.filter(x => x !== group);\n this.updateValues();\n }\n }\n\n /**\n * Add a group to the group list.\n * @param {Array<{key: string; value: string}>} values\n */\n add(values: Array<{ key: string; value: string }> = []) {\n this.groups.forEach(g => {\n g.display = false;\n });\n this.groups.push({\n rendered: false,\n display: true,\n values,\n vcr: null,\n });\n }\n\n /**\n * Create, add a question at the place, then subscribe to any changes of the question value\n * @param config of the question in the group.\n * @param group where the question is added.\n */\n private addQuestion(config, group) {\n this.rootViewContainer = group.vcr;\n const obsAll = this.createQuestion(this.getDataForGroup(group), config);\n // Watch for value change to update it.\n if (obsAll.change) {\n obsAll.change.subscribe(value => {\n if (Array.isArray(value)) {\n value.forEach(item => {\n this.addOrUpdate(item, group);\n });\n } else {\n this.addOrUpdate(value, group);\n }\n this.updateValues();\n });\n }\n // Watch for file upload instruction\n if (obsAll.fileUpload) {\n obsAll.fileUpload.subscribe(value => {\n const index = this.groups.indexOf(group);\n\n if (index > -1) {\n const res = Object.assign(\n {\n index,\n },\n value\n );\n\n this.uploadFile.emit(res);\n }\n });\n }\n }\n\n /**\n * Lean the data for a group with the good value\n * (ex. for 2nd group : [\"coucou\", \"test\"] => \"test\"\n * @param group\n * @returns {any[]}\n */\n private getDataForGroup(group) {\n const index = this.groups.indexOf(group);\n const data = [];\n this.data.forEach(x => {\n data.push({\n key: x.key,\n value: Array.isArray(x.value) ? x.value[index] : x.value,\n });\n });\n return data;\n }\n\n /**\n * Create the question element and return the observable for modifications\n * @param data from db\n * @param config: question config\n * @returns {any} objects containing EventEmitters\n */\n createQuestion(data, config) {\n let typeComponent: Type = null;\n switch (config.type) {\n case 'simple-choices':\n typeComponent = SelectChoicesComponent;\n break;\n case 'simple-choices-bloc':\n typeComponent = SelectChoicesBlocComponent;\n break;\n case 'input-text':\n typeComponent = InputTextComponent;\n break;\n case 'select-dropdown':\n typeComponent = SelectDropdownComponent;\n break;\n case 'input-text-multiple':\n typeComponent = InputTextMultipleComponent;\n break;\n case 'select-choices-input':\n typeComponent = SelectChoicesInputComponent;\n break;\n case 'file':\n typeComponent = FileQuestionComponent;\n break;\n }\n if (typeComponent) {\n return this.questionService.addComponent(\n data,\n config,\n this.siteId,\n this.zoneId,\n typeComponent,\n this.rootViewContainer\n );\n } else {\n return null;\n }\n }\n\n /**\n * Update the group value by adding it to the list if not existing. Otherwise, update it.\n * @param {{key: string; value: string}} item\n * @param group\n */\n private addOrUpdate(item: { key: string; value: string }, group) {\n const temp = group.values.find(x => x.key === item.key);\n if (!temp) {\n group.values.push(item);\n } else {\n temp.value = item.value;\n }\n }\n\n /**\n * Update values and emit it to parent.\n */\n private updateValues() {\n this.values = [];\n this.groups.forEach(grp => {\n grp.values.forEach(val => {\n const tmpQuestion = this.values.find(x => x.key === val.key);\n if (tmpQuestion) {\n tmpQuestion.value[this.groups.indexOf(grp)] = val.value;\n } else {\n this.values.push({\n key: val.key,\n value: [val.value],\n });\n }\n });\n });\n this.valueChange.emit(this.values);\n }\n}\n","export default \".question-input-label {\\n margin-right: 10px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9pbnB1dC10ZXh0LW11bHRpcGxlL2lucHV0LXRleHQtbXVsdGlwbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9pbnB1dC10ZXh0LW11bHRpcGxlL2lucHV0LXRleHQtbXVsdGlwbGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxrQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvcXVlc3Rpb25zL2lucHV0LXRleHQtbXVsdGlwbGUvaW5wdXQtdGV4dC1tdWx0aXBsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5xdWVzdGlvbi1pbnB1dC1sYWJlbCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuIiwiLnF1ZXN0aW9uLWlucHV0LWxhYmVsIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufSJdfQ== */\"","// tslint:disable:no-access-missing-member\nimport { Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { QuestionComponent } from '../question/question.component';\n\n@Component({\n selector: 'ga-question-input-text-multiple',\n templateUrl: './input-text-multiple.component.html',\n styleUrls: ['./input-text-multiple.component.scss'],\n})\n/**\n * Component to create an input question (as text, number, email, ...) or text-area with multiple inputs.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with properties attribute at the format {values: [{label: string, key: string, type: string}]}\n * Available types : text, number, text-area, color, date, datetime-local, email, month, tel, time, url, week.\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format {key: string, value: string}\n */\nexport class InputTextMultipleComponent extends QuestionComponent implements OnInit {\n allowedTypes = [\n 'text',\n 'number',\n 'text-area',\n 'color',\n 'date',\n 'datetime-local',\n 'email',\n 'month',\n 'tel',\n 'time',\n 'url',\n 'week',\n ];\n\n questionForm: FormGroup;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n const form = {};\n if (this.config.properties.values) {\n this.config.properties.values.forEach(item => {\n // Set data from db\n const itemData = this.data.find(x => x.key === item.key);\n form[item.key] = new FormControl(itemData ? itemData.value : null);\n });\n this.questionForm = new FormGroup(form);\n\n this.onChanges();\n this.updateValues(this.questionForm.getRawValue());\n }\n }\n\n onChanges() {\n this.questionForm.valueChanges.subscribe(val => {\n if (val) {\n this.updateValues(val);\n }\n });\n }\n\n private updateValues(val = null) {\n const res = [];\n this.config.properties.values.forEach(item => {\n res.push({\n key: item.key,\n value: val ? val[item.key] : null,\n });\n });\n this.valueChange.emit(res);\n }\n\n getType(item) {\n if (this.allowedTypes.find(x => x === item.type)) {\n return item.type;\n }\n return 'text';\n }\n\n getMin(item) {\n return item.min !== undefined ? item.min : null;\n }\n\n getMax(item) {\n return item.max !== undefined ? item.max : null;\n }\n\n isTextArea(item) {\n return item.type === 'text-area';\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9pbnB1dC10ZXh0L2lucHV0LXRleHQuY29tcG9uZW50LnNjc3MifQ== */\"","// tslint:disable:no-access-missing-member\nimport { Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport * as moment from 'moment';\nimport { QuestionComponent } from '../question/question.component';\n\n@Component({\n selector: 'ga-question-input-text',\n templateUrl: './input-text.component.html',\n styleUrls: ['./input-text.component.scss'],\n})\n/**\n * Component to create an input question (as text, number, email, ...) or text-area.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with properties attribute at the format {key: string, type:string, min: number (opt.), max: number (opt.)}\n * Available types : text, number, text-area, color, date, datetime-local, email, month, tel, time, url, week.\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format {key: string, value: string}\n */\nexport class InputTextComponent extends QuestionComponent implements OnInit {\n // Will be used when dealing with real data for initialization\n textValue: string = null;\n\n allowedTypes = [\n 'text',\n 'number',\n 'text-area',\n 'color',\n 'date',\n 'datetime-local',\n 'email',\n 'month',\n 'tel',\n 'time',\n 'url',\n 'week',\n ];\n\n questionForm: FormGroup;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n const initVal = this.data.find(x => x.key === this.config.properties.key);\n\n this.textValue = initVal ? initVal.value : null;\n\n if (this.getType() === 'month' && this.textValue) {\n this.textValue = moment(this.textValue).format('YYYY-MM');\n } else if (this.getType() === 'month' && this.textValue) {\n this.textValue = moment(this.textValue).format('YYYY-MM-DD');\n }\n\n this.questionForm = new FormGroup({\n question: new FormControl(this.textValue),\n });\n\n this.onChanges();\n this.updateValue();\n }\n\n onChanges() {\n this.questionForm.valueChanges.subscribe(val => {\n if (val && val.question) {\n this.textValue = val.question;\n this.updateValue();\n }\n });\n }\n\n private updateValue() {\n this.valueChange.emit({\n key: this.config.properties.key,\n value: this.textValue,\n });\n }\n\n getType() {\n if (this.allowedTypes.find(x => x === this.config.properties.type)) {\n return this.config.properties.type;\n }\n return 'text';\n }\n\n getMin() {\n return this.config.properties.min || this.config.properties.min === 0 ? this.config.properties.min : null;\n }\n\n getMax() {\n return this.config.properties.max !== undefined ? this.config.properties.max : null;\n }\n\n isTextArea() {\n return this.config.properties.type === 'text-area';\n }\n}\n","export default \"@media (min-width: 1010px) {\\n .modal-lg {\\n max-width: 1000px;\\n }\\n}\\n.citron-btn-modal {\\n width: 100%;\\n padding: 12px 10px 12px 30px;\\n}\\n.icon-checked {\\n height: 20px;\\n width: 20px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n float: right;\\n background-color: green;\\n -webkit-mask-image: url(\\\"/assets/img/pictos-svg/picto_checked.svg\\\");\\n mask-image: url(\\\"/assets/img/pictos-svg/picto_checked.svg\\\");\\n margin-top: 1px;\\n margin-bottom: -5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9tb2RhbC9tb2RhbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvcXVlc3Rpb25zL21vZGFsL21vZGFsLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSTtJQUNJLGlCQUFBO0VDRk47QUFDRjtBREtBO0VBQ0ksV0FBQTtFQUNBLDRCQUFBO0FDSEo7QURNQTtFRWJJLFlGY2lCO0VFYmpCLFdGYXVCO0VFWnZCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFRldBLFlBQUE7RUFDQSx1QkdNTTtFSExOLG1FQUFBO1VBQUEsMkRBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9tb2RhbC9tb2RhbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL21peGlucyc7XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDEwcHgpIHtcbiAgICAubW9kYWwtbGcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgICB9XG59XG5cbi5jaXRyb24tYnRuLW1vZGFsIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxMnB4IDEwcHggMTJweCAzMHB4O1xufVxuXG4uaWNvbi1jaGVja2VkIHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDIwcHgsIDIwcHgpO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3VjY2VzcztcbiAgICBtYXNrLWltYWdlOiB1cmwoJy9hc3NldHMvaW1nL3BpY3Rvcy1zdmcvcGljdG9fY2hlY2tlZC5zdmcnKTtcbiAgICBtYXJnaW4tdG9wOiAxcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogLTVweDtcbn1cbiIsIkBtZWRpYSAobWluLXdpZHRoOiAxMDEwcHgpIHtcbiAgLm1vZGFsLWxnIHtcbiAgICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgfVxufVxuLmNpdHJvbi1idG4tbW9kYWwge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTJweCAxMHB4IDEycHggMzBweDtcbn1cblxuLmljb24tY2hlY2tlZCB7XG4gIGhlaWdodDogMjBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBmbG9hdDogcmlnaHQ7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvYXNzZXRzL2ltZy9waWN0b3Mtc3ZnL3BpY3RvX2NoZWNrZWQuc3ZnXCIpO1xuICBtYXJnaW4tdG9wOiAxcHg7XG4gIG1hcmdpbi1ib3R0b206IC01cHg7XG59IiwiQG1peGluIHN2Z0ljb24oJGhlaWdodCwgJHdpZHRoLCAkY29sb3I6IG51bGwsICR1cmw6IG51bGwpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICBAaWYgKCRjb2xvcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdXJsKSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybCgkdXJsKTtcbiAgICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9wYWNpdHkoJGNvbG9yLCAkb3BhY2l0eTogMC41KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOyAvKiBUaGUgRmFsbGJhY2sgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHZhbHVlKSB7XG4gICAgbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stcmVwZWF0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBtYXNrLXNpemUoJHZhbHVlKSB7XG4gICAgbWFzay1zaXplOiAkdmFsdWU7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2staW1hZ2UoJHBhcmFtcy4uLikge1xuICAgIG1hc2staW1hZ2U6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gbWFzay1yZXBlYXQoJHBhcmFtcy4uLikge1xuICAgIG1hc2stcmVwZWF0OiAkcGFyYW1zO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbXMuLi4pIHtcbiAgICAtbW96LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW1zO1xuICAgIC1vLWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgYm94LXNoYWRvdzogJHBhcmFtcztcbn1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRwYXJhbXM7XG4gICAgYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbn1cblxuQG1peGluIHRyYW5zZm9ybSgkcGFyYW1zLi4uKSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1vei10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW8tdHJhbnNmb3JtOiAkcGFyYW1zO1xuICAgIC1tcy10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgdHJhbnNmb3JtOiAkcGFyYW1zO1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","// tslint:disable:no-access-missing-member\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n OnInit,\n QueryList,\n TemplateRef,\n Type,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Question } from '../../../../models/question.interface';\nimport { QuestionService } from '../../../../services/sites/question.service';\nimport { FileQuestionComponent } from '../file-upload/file-upload.component';\nimport { GroupQuestionComponent } from '../group-collapse/group-collapse.component';\nimport { InputTextMultipleComponent } from '../input-text-multiple/input-text-multiple.component';\nimport { InputTextComponent } from '../input-text/input-text.component';\nimport { QuestionComponent } from '../question/question.component';\nimport { SelectChoicesBlocComponent } from '../select-choices-bloc/select-choices-bloc.component';\nimport { SelectChoicesInputComponent } from '../select-choices-input/select-choices-input.component';\nimport { SelectChoicesComponent } from '../select-choices/select-choices.component';\nimport { SelectDropdownComponent } from '../select-dropdown/select-dropdown.component';\n\n@Component({\n selector: 'ga-question-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\n/**\n * Component to create a modal, that then creates questions for the modal.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with properties attribute at the format {questions: [... any question objects]}\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format [{key: string, value: string}]\n */\nexport class ModalQuestionComponent extends QuestionComponent implements OnInit, AfterViewInit {\n // Container to set the questions component in the ng-template places\n rootViewContainer: ViewContainerRef;\n\n // Values of the questions components\n private values: Array<{ key: string; value: any }> = [];\n\n // Get all the questions components from the ng-template.s\n @ViewChildren('questionModal', { read: ViewContainerRef }) questionItems: QueryList;\n\n modalProgress = 0;\n\n constructor(\n private factoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private questionService: QuestionService\n ) {\n super();\n }\n\n ngOnInit() {}\n\n /**\n * After view initialized, replace all the ng-template by the questions\n */\n ngAfterViewInit() {\n this.config.properties.questions.forEach((question, index) => {\n const vcr = this.questionItems.toArray()[index];\n this.addQuestion(question, vcr);\n });\n this.cdr.detectChanges();\n }\n\n /**\n * Create, add a question at the place, then subscribe to any changes of the question value\n * @param config: question config\n * @param vcr: DOM element where the question component will be placed (vcr = ViewContainerRef).\n */\n private addQuestion(config, vcr) {\n this.rootViewContainer = vcr;\n const obsAll = this.createQuestion(this.data, config);\n if (obsAll.change) {\n obsAll.change.subscribe(value => {\n if (Array.isArray(value)) {\n value.forEach(item => {\n this.addOrUpdate(item);\n });\n } else {\n this.addOrUpdate(value);\n }\n this.updateProgress();\n });\n }\n if (obsAll.fileUpload) {\n obsAll.fileUpload.subscribe(value => {\n this.uploadFile.emit(value);\n });\n }\n }\n\n /**\n * Create the question element and return the observable for modifications\n * @param data from db\n * @param config: question config\n * @returns {any}: object containing EventEmitters to subscribe for actions on question emit\n */\n createQuestion(data, config) {\n let typeComponent: Type = null;\n switch (config.type) {\n case 'simple-choices':\n typeComponent = SelectChoicesComponent;\n break;\n case 'simple-choices-bloc':\n typeComponent = SelectChoicesBlocComponent;\n break;\n case 'input-text':\n typeComponent = InputTextComponent;\n break;\n case 'select-dropdown':\n typeComponent = SelectDropdownComponent;\n break;\n case 'input-text-multiple':\n typeComponent = InputTextMultipleComponent;\n break;\n case 'select-choices-input':\n typeComponent = SelectChoicesInputComponent;\n break;\n case 'file':\n typeComponent = FileQuestionComponent;\n break;\n case 'group':\n typeComponent = GroupQuestionComponent;\n break;\n }\n if (typeComponent) {\n return this.questionService.addComponent(\n data,\n config,\n this.siteId,\n this.zoneId,\n typeComponent,\n this.rootViewContainer\n );\n } else {\n return null;\n }\n }\n\n /**\n * Update the values property by adding it to the list if not existing. Otherwise, update it.\n * @param {{key: string; value: any}} item: value from question\n */\n private addOrUpdate(item: { key: string; value: any }) {\n if (item) {\n const temp = this.values.find(x => x.key === item.key);\n if (!temp) {\n this.values.push(item);\n } else {\n temp.value = item.value;\n }\n this.valueChange.emit(this.values);\n }\n }\n\n close(modal) {\n modal.hide();\n }\n\n /**\n * Update modal progression\n */\n updateProgress() {\n const tmpProgress = {\n total: 0,\n filled: 0,\n };\n this.config.properties.questions.forEach(question => {\n this.groupProgress(tmpProgress, question);\n });\n this.modalProgress = (tmpProgress.filled / tmpProgress.total) * 100;\n }\n\n /**\n * Compute the progress for groups (or not)\n * @param tmpProgress: progress follow-up up object ({total: number, filled: number}).\n * @param info: question config\n */\n private groupProgress(tmpProgress, info) {\n if (info.type === 'group') {\n // For a group, only one question needs to be filled to be considered as completed.\n const grpProgress = { total: 0, filled: 0 };\n info.properties.questions.forEach(q => {\n this.manageProgress(grpProgress, q, true);\n });\n tmpProgress.total += 1;\n tmpProgress.filled += grpProgress.filled > 0 ? 1 : 0;\n } else {\n this.manageProgress(tmpProgress, info);\n }\n }\n\n /**\n * Compute progress for each \"classic\" question type.\n * @param tmpProgress: progress follow-up up object ({total: number, filled: number}).\n * @param info: question config\n * @param {boolean} isGroup: is the question part of a group.\n */\n private manageProgress(tmpProgress, info, isGroup = false) {\n // These two types have a key at a different place than others.\n const multipleTypes = ['input-text-multiple', 'select-choices-input'];\n\n if (multipleTypes.find(x => x === info.type)) {\n if (info.properties && info.properties.values) {\n // Compute the progress for the question that have multiple answers.\n const mtProgress = { total: 0, filled: 0 };\n mtProgress.total += info.properties.values.length;\n info.properties.values.forEach(item => {\n if (item) {\n const val = this.values.find(y => y.key === item.key);\n const filled = val ? (isGroup ? val.value[0] : val.value) : false;\n mtProgress.filled += filled ? 1 : 0;\n }\n });\n // For select-choices-input, at least one needs to be filled\n // to be considered as completed.\n if (info.type === 'select-choices-input') {\n tmpProgress.total++;\n tmpProgress.filled += mtProgress.filled > 0 ? 1 : 0;\n } else {\n tmpProgress.total += mtProgress.total;\n tmpProgress.filled += mtProgress.filled;\n }\n }\n } else {\n const val = this.values.find(y => y.key === info.properties.key);\n const filled = val ? (isGroup ? val.value[0] : val.value) : false;\n tmpProgress.filled += filled ? 1 : 0;\n tmpProgress.total++;\n }\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9xdWVzdGlvbi9xdWVzdGlvbi5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Question } from '../../../../models/question.interface';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ga-question',\n templateUrl: './question.component.html',\n styleUrls: ['./question.component.scss'],\n})\n/**\n * Question component that all others question will extends.\n * Files are managed here as multiple components can upload files.\n */\nexport class QuestionComponent implements Question {\n @Input() data: any[];\n @Input() config: any;\n @Input() siteId: string;\n @Input() zoneId: string;\n @Output() valueChange: EventEmitter = new EventEmitter();\n @Output() uploadFile: EventEmitter = new EventEmitter();\n\n // Unique identifier for the component at creation. So that each component's tag can have a unique id.\n // Created because of groups, without it, tags id were used multiple times.\n public uniqueId: number;\n\n // File object of the question. Set at init or after upload.\n public fileLoaded: { _id: string; originalname: string } = null;\n // Files uploaded. Only one accepted for now.\n private files: File[] = [];\n // Key of the file data dor DB.\n private fileKey: string = null;\n\n constructor() {\n this.uniqueId = nextId++;\n }\n\n /**\n * Get the column size for the questions label\n * @returns {string} width of 3/12 (md)\n */\n getQuestionColumnSize(): string {\n return 'col-md-3';\n }\n\n /**\n * Get the columns size for the answers.\n * @returns {string} width of 9/12 (md)\n */\n getAnswerColumnSize(): string {\n return 'col-md-9';\n }\n\n /**\n * Emit an event for the LegacyDataComponent to upload a file.\n * @param files: files to upload\n */\n fileUpload(files) {\n this.files = files;\n const uploadNotification = new EventEmitter();\n uploadNotification.subscribe(f => {\n this.fileLoaded = f;\n });\n this.uploadFile.emit({\n key: this.fileKey,\n files: this.files,\n notif: uploadNotification,\n });\n }\n\n /**\n * Set the fileKey property.\n * @param fileKey: key of the file in DB.\n */\n protected setFileKey(fileKey) {\n this.fileKey = fileKey;\n }\n}\n","export default \".inactive {\\n background-color: #ffffff;\\n color: #607188;\\n}\\n\\n.inactive:hover {\\n color: white;\\n}\\n\\n.label-switch-bloc {\\n margin-top: 5px;\\n margin-bottom: 5px;\\n}\\n\\n.icon-switch-bloc {\\n height: 35px;\\n width: 35px;\\n}\\n\\n.select-bloc:first-child {\\n padding-left: 0;\\n}\\n\\n.form-group {\\n margin: 0px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9zZWxlY3QtY2hvaWNlcy1ibG9jL3NlbGVjdC1jaG9pY2VzLWJsb2MuY29tcG9uZW50LnNjc3MiLCIvdXNyL3NyYy9hcHAvc3JjL2FwcC9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9xdWVzdGlvbnMvc2VsZWN0LWNob2ljZXMtYmxvYy9zZWxlY3QtY2hvaWNlcy1ibG9jLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0kseUJBQUE7RUFDQSxjQ3NCUztBQ3ZCYjs7QUZJQTtFQUNJLFlBQUE7QUVESjs7QUZJQTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtBRURKOztBRklBO0VBQ0ksWUFBQTtFQUNBLFdBQUE7QUVESjs7QUZJQTtFQUNJLGVBQUE7QUVESjs7QUZJQTtFQUNJLFdBQUE7QUVESiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9zZWxlY3QtY2hvaWNlcy1ibG9jL3NlbGVjdC1jaG9pY2VzLWJsb2MuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4uaW5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xufVxuXG4uaW5hY3RpdmU6aG92ZXIge1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmxhYmVsLXN3aXRjaC1ibG9jIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uaWNvbi1zd2l0Y2gtYmxvYyB7XG4gICAgaGVpZ2h0OiAzNXB4O1xuICAgIHdpZHRoOiAzNXB4O1xufVxuXG4uc2VsZWN0LWJsb2M6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmZvcm0tZ3JvdXAge1xuICAgIG1hcmdpbjogMHB4O1xufVxuIiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iLCIuaW5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBjb2xvcjogIzYwNzE4ODtcbn1cblxuLmluYWN0aXZlOmhvdmVyIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4ubGFiZWwtc3dpdGNoLWJsb2Mge1xuICBtYXJnaW4tdG9wOiA1cHg7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLmljb24tc3dpdGNoLWJsb2Mge1xuICBoZWlnaHQ6IDM1cHg7XG4gIHdpZHRoOiAzNXB4O1xufVxuXG4uc2VsZWN0LWJsb2M6Zmlyc3QtY2hpbGQge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cbi5mb3JtLWdyb3VwIHtcbiAgbWFyZ2luOiAwcHg7XG59Il19 */\"","// tslint:disable:no-access-missing-member\nimport { AfterContentInit, AfterViewInit, Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { QuestionComponent } from '../question/question.component';\n\n@Component({\n selector: 'ga-question-select-choices-bloc',\n templateUrl: './select-choices-bloc.component.html',\n styleUrls: ['./select-choices-bloc.component.scss'],\n})\n/**\n * Component to create a question with pre-determined answers with images. Can be one or multiple choices.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with properties attribute at the format {key: string, multiple: boolean, values: [{label: string, value: string, img: string}]}\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format {key: string, value: string}\n */\nexport class SelectChoicesBlocComponent extends QuestionComponent implements OnInit {\n // If multiple answers are allowed by the config file\n multiple = false;\n\n // Values entered by the user.\n values: string[] = [];\n\n // Choices bloc where there is no img or the image loading failed\n imgErrors: string[] = [];\n\n // Bloc mouse over\n mouseover = '';\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n if (this.config.properties.multiple) {\n this.multiple = true;\n }\n\n // Get then Set values from db\n const dbValues = this.data.find(x => x.key === this.config.properties.key);\n this.values = dbValues && dbValues.value ? dbValues.value.split(',') : [];\n this.updateValues();\n }\n\n getClass(elem) {\n return this.values.find(x => x === elem.value) ? ' active' : ' inactive';\n }\n\n onChanges(val): void {\n if (!this.multiple) {\n this.values[0] = val;\n } else {\n const search = this.values.find(x => x === val);\n if (search) {\n this.values = this.values.filter(i => i !== search);\n } else {\n this.values.push(val);\n }\n }\n this.updateValues();\n }\n\n private updateValues() {\n const empty = this.values.length === 0;\n this.valueChange.emit({\n key: this.config.properties.key,\n value: !empty ? this.values.join(',') : null,\n });\n }\n\n onMouseOver(value) {\n this.mouseover = value;\n }\n\n onMouseOut(value) {\n if (this.mouseover === value) {\n this.mouseover = '';\n }\n }\n\n imgError(img) {\n this.imgErrors.push(img);\n }\n\n hasImgError(img) {\n return !this.imgErrors.find(x => x === img);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9zZWxlY3QtY2hvaWNlcy1pbnB1dC9zZWxlY3QtY2hvaWNlcy1pbnB1dC5jb21wb25lbnQuc2NzcyJ9 */\"","// tslint:disable:no-access-missing-member\nimport { Component, OnInit } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { QuestionComponent } from '../question/question.component';\n\n@Component({\n selector: 'ga-question-select-choices-input',\n templateUrl: './select-choices-input.component.html',\n styleUrls: ['./select-choices-input.component.scss'],\n})\n/**\n * Component to create a question with pre-determined answers (radios or checkboxes) and inputs answers. Can be one or multiple choices.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with properties attribute at the format\n * {multiple: boolean, values: [{label: string, key: string, type: string, unit: string(opt.)}]}\n * Available types : text, number, color, date, datetime-local, email, month, tel, time, url, week.\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format {key: string, value: string}\n */\nexport class SelectChoicesInputComponent extends QuestionComponent implements OnInit {\n multiple = false;\n\n questionForm: FormGroup;\n\n // Answers possible\n values: any[] = [];\n\n allowedTypes = [\n 'text',\n 'number',\n 'color',\n 'date',\n 'datetime-local',\n 'email',\n 'month',\n 'tel',\n 'time',\n 'url',\n 'week',\n ];\n\n constructor(private fb: FormBuilder) {\n super();\n }\n\n ngOnInit(): void {\n if (this.config.properties.multiple) {\n this.multiple = true;\n }\n // Get different possibilities from the config file\n if (this.config.properties.values) {\n this.config.properties.values.forEach(item => {\n const dbValue = this.data.find(x => x.key === item.key);\n // Push all selections possible\n this.values.push({\n key: item.key,\n selected: dbValue && dbValue.value, // Is it selected as init or not, yes if value from db\n value: dbValue && dbValue.value ? dbValue.value : null, // Values from db\n label: item.label, // Label of the input/answer\n unit: item.unit, // Unit to display on the right, or complementary information\n type: item.type, // Type on the input text\n });\n });\n }\n\n // If not multiple (=> radio), get the default selected value;\n const existingValue = this.values.find(x => x.selected);\n\n this.questionForm = this.fb.group({\n questions: this.buildQuestionsCB(),\n singleAnswer: new FormControl(existingValue ? existingValue.key : null),\n inputs: this.buildInputs(),\n });\n\n this.onChanges();\n this.updateValues(this.questionForm.getRawValue());\n }\n\n get questions(): FormArray {\n return this.questionForm.get('questions') as FormArray;\n }\n\n get inputs(): FormArray {\n return this.questionForm.get('inputs') as FormArray;\n }\n\n onChanges() {\n this.questionForm.valueChanges.subscribe(val => {\n this.updateValues(val);\n });\n }\n\n private updateValues(val = null) {\n const res = [];\n if (val) {\n for (let i = 0; i < this.values.length; i++) {\n let itemValue = null;\n if (this.multiple) {\n itemValue = val.questions[i] ? val.inputs[i] : null;\n } else {\n itemValue = val.singleAnswer === this.values[i].key ? val.inputs[i] : null;\n }\n res.push({\n key: this.values[i].key,\n value: itemValue,\n });\n }\n }\n this.valueChange.emit(res);\n }\n\n buildQuestionsCB() {\n const arr = this.values.map(q => {\n return this.fb.control(q.selected);\n });\n return this.fb.array(arr);\n }\n\n buildInputs() {\n const arr = this.values.map(q => {\n return this.fb.control(q.value);\n });\n return this.fb.array(arr);\n }\n\n isMultiple() {\n return this.multiple;\n }\n\n getTextType(index: number) {\n if (this.values[index]) {\n if (this.allowedTypes.find(x => x === this.values[index].type)) {\n return this.values[index].type;\n }\n }\n return 'text';\n }\n}\n","export default \".upload-file-btn,\\n.file-uploaded-name {\\n margin-top: 0.4em;\\n}\\n\\n.select-choices__label {\\n margin-left: 5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9zZWxlY3QtY2hvaWNlcy9zZWxlY3QtY2hvaWNlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvcXVlc3Rpb25zL3NlbGVjdC1jaG9pY2VzL3NlbGVjdC1jaG9pY2VzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVJLGlCQUFBO0FDQ0o7O0FEQ0E7RUFDSSxnQkFBQTtBQ0VKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvcXVlc3Rpb25zL3NlbGVjdC1jaG9pY2VzL3NlbGVjdC1jaG9pY2VzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnVwbG9hZC1maWxlLWJ0bixcbi5maWxlLXVwbG9hZGVkLW5hbWUge1xuICAgIG1hcmdpbi10b3A6IDAuNGVtO1xufVxuLnNlbGVjdC1jaG9pY2VzX19sYWJlbCB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cbiIsIi51cGxvYWQtZmlsZS1idG4sXG4uZmlsZS11cGxvYWRlZC1uYW1lIHtcbiAgbWFyZ2luLXRvcDogMC40ZW07XG59XG5cbi5zZWxlY3QtY2hvaWNlc19fbGFiZWwge1xuICBtYXJnaW4tbGVmdDogNXB4O1xufSJdfQ== */\"","// tslint:disable:no-access-missing-member\nimport { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { QuestionService } from 'app/shared/services/sites/question.service';\nimport { UploadFilesComponent } from '../../../upload/upload-files/upload-files.component';\nimport { QuestionComponent } from '../question/question.component';\n\n@Component({\n selector: 'ga-question-select-choices',\n templateUrl: './select-choices.component.html',\n styleUrls: ['./select-choices.component.scss'],\n providers: [FormBuilder],\n})\n/**\n * Component to create a question with pre-determined answers (radios or checkboxes). Can be one or multiple choices. Also contains file upload possibility.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with properties attribute at the format {key: string, multiple: boolean, values: [{label: string, value: string}]}\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format {key: string, value: string}\n */\nexport class SelectChoicesComponent extends QuestionComponent implements OnInit {\n // Multiple answers allowed (radio/checkbox)\n multiple = false;\n\n questionForm: FormGroup;\n\n // Values entered by the user\n values: string[] = [];\n\n // Upload component\n @ViewChild('upload', { static: false }) private uploadComponent: UploadFilesComponent;\n\n // Is file uploaded allowed from config file for this question\n fileAccepted = false;\n\n // Checkboxes items for reactive form binding.\n checkboxes: Array<{ label: string; value: string; allowFile: boolean; selected: boolean }> = [];\n\n constructor(private fb: FormBuilder, private questionService: QuestionService) {\n super();\n }\n\n ngOnInit(): void {\n // Set the fileKey property if the fileKey defined.\n if (this.config.properties.fileKey) {\n super.setFileKey(this.config.properties.fileKey);\n }\n // Get values from db values\n const questionValues = this.data.find(x => x.key === this.config.properties.key);\n\n // Set values from db values\n if (questionValues && questionValues.value) {\n if (!Array.isArray(questionValues.value)) {\n this.values = questionValues.value.split(',');\n }\n }\n\n // Get initial values in case of not mulitple for radio button\n const initVal = this.multiple ? this.values : this.values[0] ? this.values[0] : null;\n\n // Set the checkboxes properties if multiple allowed\n if (this.config.properties.multiple) {\n this.multiple = true;\n this.config.properties.values.forEach(val => {\n this.checkboxes.push({\n label: val.label,\n value: val.value,\n allowFile: val.allowFile ? val.allowFile : false,\n selected: Boolean(this.values.find(x => x === val.value)),\n });\n });\n }\n\n this.questionForm = this.fb.group({\n radio: this.fb.control(initVal),\n checkbox: this.buildQuestionsCB(),\n });\n this.onChanges();\n this.updateValues();\n\n // If file accepted, get the file information already uploaded by the user.\n if (this.fileAccepted) {\n const initFile = this.data.find(x => x.key === this.config.properties.fileKey);\n\n if (initFile && initFile.value) {\n this.questionService\n .getUploadFile(initFile.value)\n .then(fileRes => {\n this.fileLoaded = fileRes;\n })\n .catch(err => {\n this.fileLoaded = {\n _id: null,\n originalname: 'Erreur lors de la récupération votre fichier',\n };\n });\n }\n }\n }\n\n onChanges(): void {\n this.questionForm.valueChanges.subscribe(val => {\n if (!this.multiple) {\n this.values[0] = val.radio;\n } else {\n this.values = [];\n this.checkboxes.forEach((cb, i) => {\n if (val.checkbox[i]) {\n this.values.push(cb.value);\n }\n });\n }\n this.updateValues();\n });\n }\n\n isFileAccepted() {\n return this.fileAccepted;\n }\n\n /**\n * Event when a user click to upload a file\n */\n clickOnInput() {\n if (this.uploadComponent) {\n this.uploadComponent.clickOnInput();\n }\n }\n\n /**\n * Update value when user input changes\n */\n private updateValues() {\n let tmpFileAccepted = false;\n this.values.forEach(item => {\n if (this.config.properties.values.find(x => x.value === item && x.allowFile)) {\n tmpFileAccepted = true;\n }\n });\n this.fileAccepted = tmpFileAccepted;\n\n const empty = this.values.length === 0;\n const res = [\n {\n key: this.config.properties.key,\n value: !empty ? this.values.join(',') : null,\n },\n ];\n this.valueChange.emit(res);\n }\n\n /**\n * Initiate the checkboxes control\n * @returns {FormArray}\n */\n buildQuestionsCB() {\n const arr = this.checkboxes.map(q => {\n return this.fb.control(q.selected);\n });\n return this.fb.array(arr);\n }\n\n get checkbox(): FormArray {\n return this.questionForm.get('checkbox') as FormArray;\n }\n\n /**\n * Delete the file\n */\n deleteFile() {\n const key = this.config.properties.fileKey;\n const valueToDelete = {\n site: this.siteId,\n zone: this.zoneId,\n keys: [key],\n fileId: this.fileLoaded._id,\n };\n\n this.questionService.deleteFiles(valueToDelete).then(res => {\n this.fileLoaded = null;\n });\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3F1ZXN0aW9ucy9zZWxlY3QtZHJvcGRvd24vc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzIn0= */\"","// tslint:disable:no-access-missing-member\nimport { Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { QuestionComponent } from '../question/question.component';\n\n@Component({\n selector: 'ga-question-select-dropdown',\n templateUrl: './select-dropdown.component.html',\n styleUrls: ['./select-dropdown.component.scss'],\n})\n/**\n * Component to create an select question with single or multiple choice.\n * @Input data : User data at the format [{key: string, value: string}]\n * @Input config : Question from the config file with properties attribute at the format {key: string, multiple: boolean, values: [{label: string, value: string}}\n * @Ouput valueChange : event that gives the data each time it's changed by the user at the format {key: string, value: string}\n */\nexport class SelectDropdownComponent extends QuestionComponent implements OnInit {\n questionForm: FormGroup;\n\n // Value from the database. Will needed to be set in ngOnInit with data\n value: string[] = [];\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n // Get value from db\n const dbValue = this.data.find(x => x.key === this.config.properties.key);\n\n this.value = dbValue && dbValue.value ? dbValue.value.split(',') : [];\n // If only one value allowed, just keep the first one.\n if (this.value.length > 1 && !this.multiple) {\n this.value.splice(1);\n }\n this.questionForm = new FormGroup({\n question: new FormControl(this.noValue ? null : this.value),\n });\n this.onChanges();\n this.updateValues();\n }\n\n onChanges() {\n this.questionForm.valueChanges.subscribe(val => {\n if (Array.isArray(val.question)) {\n this.value = val.question;\n } else {\n this.value = [];\n this.value.push(val.question);\n }\n this.updateValues();\n });\n }\n\n private updateValues() {\n const empty = this.value.length === 0;\n this.valueChange.emit({\n key: this.config.properties.key,\n value: !empty ? this.value.join(',') : null,\n });\n }\n\n get multiple() {\n return this.config.properties.multiple;\n }\n\n get noValue() {\n return this.value.length === 0;\n }\n}\n","export default \".table {\\n margin-bottom: 0;\\n}\\n\\ntd {\\n vertical-align: middle;\\n font-size: 14px;\\n}\\n\\n.svg-icon {\\n height: 33px;\\n width: 33px;\\n}\\n\\n.checkbox {\\n width: 24px;\\n max-width: 24px;\\n font-size: 18px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3NlbGVjdC1wZGxzL3NlbGVjdC1wZGxzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zaXRlcy9zZWxlY3QtcGRscy9zZWxlY3QtcGRscy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGdCQUFBO0FDQ0o7O0FERUE7RUFDSSxzQkFBQTtFQUNBLGVBQUE7QUNDSjs7QURFQTtFQUNJLFlBQUE7RUFDQSxXQUFBO0FDQ0o7O0FERUE7RUFDSSxXQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3NlbGVjdC1wZGxzL3NlbGVjdC1wZGxzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG50ZCB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5zdmctaWNvbiB7XG4gICAgaGVpZ2h0OiAzM3B4O1xuICAgIHdpZHRoOiAzM3B4O1xufVxuXG4uY2hlY2tib3gge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIG1heC13aWR0aDogMjRweDtcbiAgICBmb250LXNpemU6IDE4cHg7XG59XG4iLCIudGFibGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG50ZCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnN2Zy1pY29uIHtcbiAgaGVpZ2h0OiAzM3B4O1xuICB3aWR0aDogMzNweDtcbn1cblxuLmNoZWNrYm94IHtcbiAgd2lkdGg6IDI0cHg7XG4gIG1heC13aWR0aDogMjRweDtcbiAgZm9udC1zaXplOiAxOHB4O1xufSJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ga-sites-select-pdls',\n templateUrl: './select-pdls.component.html',\n styleUrls: ['./select-pdls.component.scss'],\n})\nexport class SitesSelectPdlsComponent implements OnInit {\n @Input() pdls: any[] = [];\n @Input() routingReferencesInZone: any = [];\n\n @Output() select: EventEmitter = new EventEmitter();\n @Output() unselect: EventEmitter = new EventEmitter();\n\n constructor() {}\n ngOnInit() {}\n\n // returns true if routingReferencesInZone contains the PDL\n isPDLActive(pdl): boolean {\n return this.routingReferencesInZone.some(routingReference => {\n return routingReference._id === pdl._id;\n });\n }\n\n getCheckBoxClass(pdl): string {\n if (this.isPDLActive(pdl)) {\n return 'fa-check-square';\n }\n\n return 'fa-square-o';\n }\n\n onCheckBoxClick(pdl) {\n const isPDLActive = this.isPDLActive(pdl);\n\n if (isPDLActive) {\n this.unselect.emit(pdl);\n } else {\n this.select.emit(pdl);\n }\n }\n\n getPdlContractDates(pdl, contract) {\n const search = contract.routingReferences.find(x => x.routingReference === pdl._id);\n return {\n dateStart: search ? search.dateStart : '',\n dateEnd: search ? search.dateEnd : '',\n };\n }\n}\n","export default \".table {\\n font-size: 12px;\\n}\\n.table tbody th,\\n.table tbody td {\\n vertical-align: middle;\\n}\\n.fluid-icon {\\n height: 25px;\\n width: 25px;\\n}\\n.fluid-icon-bloc {\\n background-color: lightgrey;\\n margin: 1px;\\n padding: 2px;\\n position: relative;\\n display: inline-block;\\n}\\n.fluid-icon-bloc .fluid-icon {\\n height: 25px;\\n width: 25px;\\n background-color: white;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3NpdGVzLXBkbHMtbGlzdC9zaXRlcy1mbHVpZHMtbGlzdC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvc2l0ZXMtcGRscy1saXN0L3NpdGVzLWZsdWlkcy1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksZUFBQTtBQ0NKO0FERVE7O0VBRUksc0JBQUE7QUNBWjtBREtBO0VBQ0ksWUFBQTtFQUNBLFdBQUE7QUNGSjtBREtBO0VBQ0ksMkJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EscUJBQUE7QUNGSjtBRElJO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtBQ0ZSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2l0ZXMvc2l0ZXMtcGRscy1saXN0L3NpdGVzLWZsdWlkcy1saXN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRhYmxlIHtcbiAgICBmb250LXNpemU6IDEycHg7XG5cbiAgICB0Ym9keSB7XG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZmx1aWQtaWNvbiB7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIHdpZHRoOiAyNXB4O1xufVxuXG4uZmx1aWQtaWNvbi1ibG9jIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZXk7XG4gICAgbWFyZ2luOiAxcHg7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAuZmx1aWQtaWNvbiB7XG4gICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIH1cbn1cbiIsIi50YWJsZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi50YWJsZSB0Ym9keSB0aCxcbi50YWJsZSB0Ym9keSB0ZCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5mbHVpZC1pY29uIHtcbiAgaGVpZ2h0OiAyNXB4O1xuICB3aWR0aDogMjVweDtcbn1cblxuLmZsdWlkLWljb24tYmxvYyB7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTtcbiAgbWFyZ2luOiAxcHg7XG4gIHBhZGRpbmc6IDJweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uZmx1aWQtaWNvbi1ibG9jIC5mbHVpZC1pY29uIHtcbiAgaGVpZ2h0OiAyNXB4O1xuICB3aWR0aDogMjVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59Il19 */\"","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { RuleSitesInterface } from 'app/shared/models/rule-sites-attribution.interface';\nimport { ColorService } from 'app/shared/services/color/color.service';\nimport { SitesService } from 'app/shared/services/sites/sites.service';\nimport * as clone from 'clone';\nimport { PaginationService } from '../../pagination/front/pagination-front.service';\n\n@Component({\n selector: 'ga-sites-fluids-list',\n templateUrl: './sites-fluids-list.component.html',\n styleUrls: ['./sites-fluids-list.component.scss'],\n providers: [PaginationService],\n})\nexport class SitesFluidsListComponent implements OnInit, OnChanges {\n private _sites: RuleSitesInterface;\n\n @Input()\n set sites(sites: RuleSitesInterface) {\n const val = clone(sites);\n this.updateSites(val);\n }\n get sites(): RuleSitesInterface {\n return this._sites;\n }\n\n @Input() fluids: string[];\n\n constructor(\n private colorService: ColorService,\n private siteService: SitesService,\n private paginationService: PaginationService\n ) {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.sites) {\n const val = clone(changes.sites.currentValue);\n this.updateSites(val);\n }\n }\n\n private updateSites(sites: RuleSitesInterface) {\n sites.sitesMatching.sort(this.sortListAlphabetically);\n this.setAddresses(sites.sitesMatching);\n this.setSiteRfs(sites.sitesMatching);\n this._sites = sites;\n }\n\n /**\n * Aggregate in one new array 'routingReferencesNum' the reference numbers found in the sites' routing references.\n * This list routingReferencesNum is displayed in the sites table\n * @param sites\n */\n private setSiteRfs(sites) {\n sites.forEach(site => {\n site.routingReferencesNum = site.routingReferences.map(rf => rf.reference);\n });\n }\n\n /**\n * Set in each site a new property 'googleAddress' a clear aggregation of the address properties in one String\n * @param sites\n */\n private setAddresses(sites) {\n sites.forEach(site => {\n site.googleAddress = this.getSiteAddress(site);\n });\n }\n\n /**\n * Returns a clear aggregation of the site's address properties in one String\n * @param site\n * @return {string}\n */\n private getSiteAddress(site) {\n return this.siteService.getAddressToDisplay(site);\n }\n\n /**\n * Returns the fluid's color if the site has at least one contract related to that fluid.\n * @param fluid\n * @param site\n * @return {string}\n */\n getFluidColor(fluid, site) {\n if (!site.routingReferences || !site.routingReferences.length) {\n return;\n }\n const hasFluid = site.routingReferences.some(rf => {\n return rf.energyType === fluid;\n });\n if (hasFluid) {\n return this.colorService.getSecondRgbColor(fluid);\n }\n return;\n }\n\n onPaginationChanged() {\n this.sites.pagination.start = this.paginationService.pagination.indexStart;\n this.sites.pagination.end = this.paginationService.pagination.indexEnd;\n }\n\n get sitesSorted() {\n return this.sites.sitesMatching.slice(\n this.paginationService.pagination.indexStart,\n this.paginationService.pagination.indexEnd + 1\n );\n }\n\n /** UTILS */\n private sortListAlphabetically(siteA, siteB) {\n const a = siteA.complement;\n const b = siteB.complement;\n return a > b ? 1 : a < b ? -1 : 0;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NpdGVzL3pvbmUvc2l0ZS16b25lLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ga-site-zone',\n templateUrl: './site-zone.component.html',\n styleUrls: ['./site-zone.component.scss'],\n})\nexport class SiteZoneComponent implements OnInit {\n @Input() zone: any;\n @Input() colWidth: number | string = 12;\n\n constructor() {}\n ngOnInit() {}\n\n get getColClass() {\n return 'col-md-' + this.colWidth;\n }\n}\n","export default \".ga-upload-files-tile-content {\\n width: 100%;\\n height: 100%;\\n -webkit-box-pack: center;\\n justify-content: center;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n flex-direction: column;\\n padding: 30px;\\n border: 1px dashed #aaaaaa;\\n border-radius: 2px;\\n background-color: white;\\n -webkit-transition: all 0.4s;\\n transition: all 0.4s;\\n}\\n.ga-upload-files-tile-content.drag-over {\\n background-color: #ebebeb;\\n border-color: #ebebeb;\\n}\\n.upload-img-collect {\\n height: 150px;\\n width: 250px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: #a5b2c3;\\n}\\n.upload-img-admin {\\n height: 300px;\\n width: 300px;\\n -webkit-mask-position: center;\\n mask-position: center;\\n -webkit-mask-size: contain;\\n mask-size: contain;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n background-color: white;\\n}\\n.upload-label {\\n font-size: 19px;\\n font-weight: bold;\\n line-height: 1;\\n margin: 20px 0 20px 0;\\n color: #a5b2c3;\\n}\\n.upload-sublabel {\\n line-height: 1;\\n margin: 0 0 20px 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3VwbG9hZC91cGxvYWQtZmlsZXMtdGlsZS91cGxvYWQtZmlsZXMtdGlsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdXBsb2FkL3VwbG9hZC1maWxlcy10aWxlL3VwbG9hZC1maWxlcy10aWxlLmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9taXhpbnMuc2NzcyIsIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9zdHlsZXMvY29sb3JzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHdCQUFBO1VBQUEsdUJBQUE7RUFDQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsNEJBQUE7RUFBQSw2QkFBQTtVQUFBLHNCQUFBO0VBQ0EsYUFBQTtFQUNBLDBCQUFBO0VBQ0Esa0JBQUE7RUFDQSx1QkFBQTtFQUNBLDRCQUFBO0VBQUEsb0JBQUE7QUNGSjtBRElJO0VBQ0kseUJBQUE7RUFDQSxxQkFBQTtBQ0ZSO0FETUE7RUVyQkksYUZzQmlCO0VFckJqQixZRnFCd0I7RUVwQnhCLDZCQUFBO1VBQUEscUJBQUE7RUFDQSwwQkFBQTtVQUFBLGtCQUFBO0VBQ0EsOEJBQUE7VUFBQSxzQkFBQTtFQUdJLHlCQ1lDO0FGS1Q7QURBQTtFRXhCSSxhRnlCaUI7RUV4QmpCLFlGd0J3QjtFRXZCeEIsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLDBCQUFBO1VBQUEsa0JBQUE7RUFDQSw4QkFBQTtVQUFBLHNCQUFBO0VBR0ksdUJGa0IyQjtBQ1FuQztBRExBO0VBQ0ksZUFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0VBQ0EsY0dkSztBRnNCVDtBRExBO0VBQ0ksY0FBQTtFQUNBLGtCQUFBO0FDUUoiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLWZpbGVzLXRpbGUvdXBsb2FkLWZpbGVzLXRpbGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9jb2xvcnMnO1xuXG4uZ2EtdXBsb2FkLWZpbGVzLXRpbGUtY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHJnYigxNzAsIDE3MCwgMTcwKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNHM7XG5cbiAgICAmLmRyYWctb3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7XG4gICAgfVxufVxuXG4udXBsb2FkLWltZy1jb2xsZWN0IHtcbiAgICBAaW5jbHVkZSBzdmdJY29uKDE1MHB4LCAyNTBweCwgJHVwbG9hZCk7XG59XG4udXBsb2FkLWltZy1hZG1pbiB7XG4gICAgQGluY2x1ZGUgc3ZnSWNvbigzMDBweCwgMzAwcHgsIHdoaXRlKTtcbn1cblxuLnVwbG9hZC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxOXB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIG1hcmdpbjogMjBweCAwIDIwcHggMDtcbiAgICBjb2xvcjogJHVwbG9hZDtcbn1cblxuLnVwbG9hZC1zdWJsYWJlbCB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xufVxuIiwiLmdhLXVwbG9hZC1maWxlcy10aWxlLWNvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZzogMzBweDtcbiAgYm9yZGVyOiAxcHggZGFzaGVkICNhYWFhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzO1xufVxuLmdhLXVwbG9hZC1maWxlcy10aWxlLWNvbnRlbnQuZHJhZy1vdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ViZWJlYjtcbiAgYm9yZGVyLWNvbG9yOiAjZWJlYmViO1xufVxuXG4udXBsb2FkLWltZy1jb2xsZWN0IHtcbiAgaGVpZ2h0OiAxNTBweDtcbiAgd2lkdGg6IDI1MHB4O1xuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E1YjJjMztcbn1cblxuLnVwbG9hZC1pbWctYWRtaW4ge1xuICBoZWlnaHQ6IDMwMHB4O1xuICB3aWR0aDogMzAwcHg7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLnVwbG9hZC1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTlweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBtYXJnaW46IDIwcHggMCAyMHB4IDA7XG4gIGNvbG9yOiAjYTViMmMzO1xufVxuXG4udXBsb2FkLXN1YmxhYmVsIHtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIG1hcmdpbjogMCAwIDIwcHggMDtcbn0iLCJAbWl4aW4gc3ZnSWNvbigkaGVpZ2h0LCAkd2lkdGgsICRjb2xvcjogbnVsbCwgJHVybDogbnVsbCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIEBpZiAoJGNvbG9yKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR1cmwpIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCR1cmwpO1xuICAgIH1cbn1cblxuQG1peGluIGJhY2tncm91bmQtb3BhY2l0eSgkY29sb3IsICRvcGFjaXR5OiAwLjUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7IC8qIFRoZSBGYWxsYmFjayAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkdmFsdWUpIHtcbiAgICBtYXNrLXJlcGVhdDogJHZhbHVlO1xuICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6ICR2YWx1ZTtcbn1cblxuQG1peGluIG1hc2stc2l6ZSgkdmFsdWUpIHtcbiAgICBtYXNrLXNpemU6ICR2YWx1ZTtcbiAgICAtd2Via2l0LW1hc2stc2l6ZTogJHZhbHVlO1xufVxuXG5AbWl4aW4gbWFzay1pbWFnZSgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1pbWFnZTogJHBhcmFtcztcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6ICRwYXJhbXM7XG59XG5cbkBtaXhpbiBtYXNrLXJlcGVhdCgkcGFyYW1zLi4uKSB7XG4gICAgbWFzay1yZXBlYXQ6ICRwYXJhbXM7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogJHBhcmFtcztcbn1cblxuQG1peGluIGJveC1zaGFkb3coJHBhcmFtcy4uLikge1xuICAgIC1tb3otYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRwYXJhbXM7XG4gICAgLW8tYm94LXNoYWRvdzogJHBhcmFtcztcbiAgICBib3gtc2hhZG93OiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcGFyYW1zLi4uKSB7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtcztcbiAgICBib3JkZXItcmFkaXVzOiAkcGFyYW1zO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtKCRwYXJhbXMuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtbW96LXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICAtby10cmFuc2Zvcm06ICRwYXJhbXM7XG4gICAgLW1zLXRyYW5zZm9ybTogJHBhcmFtcztcbiAgICB0cmFuc2Zvcm06ICRwYXJhbXM7XG59XG4iLCIkYWNjdWVpbDogI2YwYTYyYTtcbiRjYXJ0b2dyYXBoaWU6ICM4OWE2MzA7XG4kY29sbGVjdGU6ICM4ZGJlNGE7XG4kYW5hbHlzZTogIzcwYzI4MztcbiRlbmVyZ2llOiAjZDNiZjk2O1xuJGVuZXJneS1zZWNvbmRhcnk6ICM2NzljNDY7XG4kdmVoaWN1bGVzOiAjZGY3YzNhO1xuJGRvY3VtZW50czogI2Q4YTYzZTtcbiRjb250cmF0czogI2Q4YTYzZTtcbiRyc2U6ICM0NDlkODQ7XG4kdmVpbGxlOiAjYjUzNzMxO1xuJG1hbmFnZXJzOiAjZDA1MzE5O1xuJHByb2ZpbDogI2NjNTE1NztcbiRwZGY6ICNlZTU3NDc7XG4kZ2F6OiAjNWFjNmJjO1xuJGVsZWN0cmljaXRlOiAjZjJiZjA0O1xuJGVhdTogIzQyODFiODtcbiRmdWVsOiAjZGY3YzNhO1xuJGhlYXRpbmc6ICNhYjJmNTI7XG4kY29vbGluZzogIzI4YmFlMTtcbiR1cGxvYWQ6ICNhNWIyYzM7XG4kcHJvZmlsZXRvcDogI2RmZTZlZjtcbiRlcnJvcjogI2RiNGI0NztcbiRzdWNjZXNzOiBncmVlbjtcbiR3YXJuaW5nOiBvcmFuZ2U7XG4kYWRtaW46ICNkYjRiNDc7XG4kdGV4dC1jb2xvcjogIzYwNzE4ODtcbiRuYXZiYXI6ICMyZjNiNDA7XG4kbmF2YmFyLXRvcDogI2E1YjVjYjtcbiRzcGVjaWZpYzogI2YyODQ1YztcbiRkb2N1bWVudHM6ICNhN2IyOWQ7XG4kbWFya2VyZ3JlZW46ICMzOWM2NTk7XG4kY2libGVzOiAjZDNiZjk2O1xuJGZhY3R1cmVzOiAjZDhhNjNlO1xuJGJvcmRlcmdyZXk6ICNkOWQ5ZDk7XG4kZGp1OiAjMjhiYWUxO1xuJHBhZ2Vjb250YWluZXI6ICNmMGYwZjA7XG4kYWxlcnRzLW1hbmFnZW1lbnQ6ICRhZG1pbjtcbiRib3gtY29udGVudDogI2VlZTtcbiR3aGl0ZTogI2ZmZjtcbiRkYXJrZ3JleTogIzUxNjA3MztcbiRjaGVja2JveC1iYWNrZ3JvdW5kOiAjZTNlM2UzO1xuJGNoZWNrbWFyazogI2NjYztcbiR0YWJsZS1ib3JkZXI6ICNlOWVjZWY7XG4kaW5wdXQtYm9yZGVyOiAjY2VkNGRhO1xuJGRyb3Bkb3duLWhvdmVyOiAjZjVmYWZmO1xuJGxpZ2h0Z3JleTogI2E1YjVjYjtcbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { File } from 'app/shared/models/upload-file.interface';\nimport { UploadFilesComponent } from '../upload-files/upload-files.component';\n@Component({\n selector: 'ga-upload-files-tile',\n templateUrl: './upload-files-tile.component.html',\n styleUrls: ['./upload-files-tile.component.scss'],\n})\nexport class UploadFilesTileComponent implements OnInit {\n dragIsOver = false;\n\n @ViewChild('upload', { static: true }) private uploadComponent: UploadFilesComponent;\n\n @Input() data: any = {};\n @Input() accept = '';\n @Input() page = '';\n @Input() disabled = false;\n @Output() filesSelected: EventEmitter = new EventEmitter();\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit() {}\n\n onfilesSelected(files: File[]) {\n // if the drag&drop zone is disabled, prevent the files from being added to the list\n if (!this.disabled) {\n this.filesSelected.emit(files);\n }\n }\n\n addDragStyle() {\n this.dragIsOver = true;\n }\n\n removeDragStyle() {\n this.dragIsOver = false;\n }\n\n clickOnInput() {\n this.uploadComponent.clickOnInput();\n }\n\n getImgUrlStyle(url) {\n return this.sanitizer.bypassSecurityTrustStyle(`-webkit-mask-image: url(${url})`);\n }\n\n isUploadCollect() {\n return this.data.imgUrl && this.page === 'collect';\n }\n\n isUploadAdmin() {\n return this.data.imgUrl && (this.page === 'company_logo' || this.page === 'user_logo');\n }\n}\n","export default \".ga-upload-files {\\n width: 100%;\\n height: 100%;\\n}\\n\\n.files-input {\\n display: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3VwbG9hZC91cGxvYWQtZmlsZXMvdXBsb2FkLWZpbGVzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLWZpbGVzL3VwbG9hZC1maWxlcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7RUFDQSxZQUFBO0FDQ0o7O0FERUE7RUFDSSxhQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLWZpbGVzL3VwbG9hZC1maWxlcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5nYS11cGxvYWQtZmlsZXMge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLmZpbGVzLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLmdhLXVwbG9hZC1maWxlcyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5maWxlcy1pbnB1dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59Il19 */\"","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'ga-upload-files',\n templateUrl: './upload-files.component.html',\n styleUrls: ['./upload-files.component.scss'],\n})\nexport class UploadFilesComponent implements OnInit {\n @ViewChild('fileInput', { static: false }) fileInput: ElementRef;\n\n @Input() accept = '';\n @Input() multiple = true;\n @Output() filesSelected: EventEmitter = new EventEmitter();\n @Output() dragOver: EventEmitter = new EventEmitter();\n @Output() dragLeave: EventEmitter = new EventEmitter();\n @Output() fileRejected: EventEmitter = new EventEmitter();\n\n constructor() {}\n ngOnInit() {}\n\n fileChange(e) {\n const files = Array.from(e.target.files);\n\n if (files.length) {\n this.filesSelected.emit(files);\n }\n }\n\n onDragEnter(e) {\n this.disableDefault(e);\n }\n\n addDragStyle(e) {\n this.disableDefault(e);\n this.dragOver.emit();\n }\n\n removeDragStyle(e) {\n this.disableDefault(e);\n this.dragLeave.emit();\n }\n\n onDrop(e) {\n this.disableDefault(e);\n this.dragLeave.emit();\n\n const files: any[] = Array.from(e.dataTransfer.files);\n const acceptedTypes = this.accept.split(',');\n const rejectedFiles: any[] = [];\n const acceptedFiles: any[] = files.filter(file => {\n const accepted = acceptedTypes.some(type => {\n if (!type || !file.name) {\n return false;\n }\n return Boolean(file.name.toLocaleLowerCase().endsWith(type.toLowerCase()));\n });\n if (!accepted) {\n rejectedFiles.push(file);\n }\n return accepted;\n });\n\n if (acceptedFiles.length) {\n // change default property 'name' to 'filename' to make things easier during object comparison from the model\n acceptedFiles.forEach(file => {\n file.filename = file.name;\n delete file.name;\n });\n\n this.filesSelected.emit(acceptedFiles);\n } else {\n this.filesSelected.emit(null);\n }\n if (rejectedFiles.length) {\n this.fileRejected.emit(rejectedFiles);\n }\n }\n\n // used in parent to click on input file\n clickOnInput() {\n this.fileInput.nativeElement.click();\n }\n\n private disableDefault(e) {\n e.stopPropagation();\n e.preventDefault();\n }\n}\n","export default \".ga-upload-list {\\n position: relative;\\n width: 100%;\\n}\\n\\ntr td:first-child {\\n padding-left: 10px;\\n}\\n\\ntr td:last-child {\\n padding-right: 10px;\\n}\\n\\n.upload-item {\\n border-bottom: 1px solid lightgrey;\\n font-size: 0.75rem;\\n}\\n\\n.upload-item td {\\n height: 35px;\\n}\\n\\n.column-content {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 10px;\\n}\\n\\n.column-progress progress-bar {\\n width: 100%;\\n border-color: white;\\n}\\n\\n.column-progress .percent-value {\\n margin-left: 12px;\\n white-space: nowrap;\\n min-width: 50px;\\n}\\n\\n.column-size {\\n white-space: nowrap;\\n}\\n\\n.column-extension .extension-icon {\\n width: 36px;\\n}\\n\\n.column-message .message-icon {\\n font-size: 20px;\\n}\\n\\n.column-message .message-text {\\n margin-left: 12px;\\n}\\n\\n.column-action .citron-btn {\\n height: 40px;\\n max-width: 180px;\\n margin: 0 5px;\\n white-space: nowrap;\\n padding-left: 12px;\\n padding-right: 12px;\\n}\\n\\n.column-action .citron-btn:disabled {\\n cursor: not-allowed !important;\\n background: #dddddd;\\n}\\n\\n.line-active {\\n background-color: rgba(141, 190, 74, 0.5);\\n color: #fff;\\n}\\n\\n.line-active .citron-btn {\\n color: white;\\n background-color: #8dbe4a;\\n border: 1px solid white;\\n}\\n\\ntbody tr {\\n cursor: pointer;\\n}\\n\\ntbody tr:hover {\\n background-color: rgba(141, 190, 74, 0.5);\\n}\\n\\ntbody tr:hover .citron-btn {\\n color: white;\\n background-color: #8dbe4a;\\n border: 1px solid white;\\n}\\n\\ntbody tr:hover .citron-btn:hover {\\n background-color: white;\\n color: #8dbe4a;\\n border: 1px solid #8dbe4a;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3VwbG9hZC91cGxvYWQtbGlzdC91cGxvYWQtbGlzdC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdXBsb2FkL3VwbG9hZC1saXN0L3VwbG9hZC1saXN0LmNvbXBvbmVudC5zY3NzIiwiL3Vzci9zcmMvYXBwL3NyYy9hcHAvc2hhcmVkL3N0eWxlcy9jb2xvcnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtBQ0RKOztBREtJO0VBQ0ksa0JBQUE7QUNGUjs7QURLSTtFQUNJLG1CQUFBO0FDSFI7O0FET0E7RUFDSSxrQ0FBQTtFQUNBLGtCQUFBO0FDSko7O0FES0k7RUFDSSxZQUFBO0FDSFI7O0FET0E7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0EsYUFBQTtBQ0pKOztBRFFJO0VBQ0ksV0FBQTtFQUNBLG1CQUFBO0FDTFI7O0FEUUk7RUFDSSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtBQ05SOztBRFVBO0VBQ0ksbUJBQUE7QUNQSjs7QURXSTtFQUNJLFdBQUE7QUNSUjs7QURhSTtFQUNJLGVBQUE7QUNWUjs7QURhSTtFQUNJLGlCQUFBO0FDWFI7O0FEZ0JJO0VBQ0ksWUFBQTtFQUNBLGdCQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtBQ2JSOztBRGVRO0VBQ0ksOEJBQUE7RUFDQSxtQkFBQTtBQ2JaOztBRGtCQTtFQUNJLHlDQUFBO0VBQ0EsV0FBQTtBQ2ZKOztBRGlCSTtFQUNJLFlBQUE7RUFDQSx5QkVwRkc7RUZxRkgsdUJBQUE7QUNmUjs7QURtQkE7RUFDSSxlQUFBO0FDaEJKOztBRGtCSTtFQUNJLHlDQUFBO0FDaEJSOztBRGtCUTtFQUNJLFlBQUE7RUFDQSx5QkVqR0Q7RUZrR0MsdUJBQUE7QUNoQlo7O0FEa0JZO0VBQ0ksdUJBQUE7RUFDQSxjRXRHTDtFRnVHSyx5QkFBQTtBQ2hCaEIiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLWxpc3QvdXBsb2FkLWxpc3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzLnNjc3MnO1xuXG4uZ2EtdXBsb2FkLWxpc3Qge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxudHIge1xuICAgICYgdGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgfVxuXG4gICAgJiB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB9XG59XG5cbi51cGxvYWQtaXRlbSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgdGQge1xuICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgfVxufVxuXG4uY29sdW1uLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4uY29sdW1uLXByb2dyZXNzIHtcbiAgICBwcm9ncmVzcy1iYXIge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAucGVyY2VudC12YWx1ZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBtaW4td2lkdGg6IDUwcHg7XG4gICAgfVxufVxuXG4uY29sdW1uLXNpemUge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jb2x1bW4tZXh0ZW5zaW9uIHtcbiAgICAuZXh0ZW5zaW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICB9XG59XG5cbi5jb2x1bW4tbWVzc2FnZSB7XG4gICAgLm1lc3NhZ2UtaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB9XG5cbiAgICAubWVzc2FnZS10ZXh0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgfVxufVxuXG4uY29sdW1uLWFjdGlvbiB7XG4gICAgLmNpdHJvbi1idG4ge1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIG1heC13aWR0aDogMTgwcHg7XG4gICAgICAgIG1hcmdpbjogMCA1cHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTJweDtcblxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5saW5lLWFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sbGVjdGUsIDAuNSk7XG4gICAgY29sb3I6ICNmZmY7XG5cbiAgICAuY2l0cm9uLWJ0biB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3RlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcbiAgICB9XG59XG5cbnRib2R5IHRyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sbGVjdGUsIDAuNSk7XG5cbiAgICAgICAgLmNpdHJvbi1idG4ge1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3RlO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sbGVjdGU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbGxlY3RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmdhLXVwbG9hZC1saXN0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbn1cblxudHIgdGQ6Zmlyc3QtY2hpbGQge1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG50ciB0ZDpsYXN0LWNoaWxkIHtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbn1cblxuLnVwbG9hZC1pdGVtIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuLnVwbG9hZC1pdGVtIHRkIHtcbiAgaGVpZ2h0OiAzNXB4O1xufVxuXG4uY29sdW1uLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4uY29sdW1uLXByb2dyZXNzIHByb2dyZXNzLWJhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xufVxuLmNvbHVtbi1wcm9ncmVzcyAucGVyY2VudC12YWx1ZSB7XG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBtaW4td2lkdGg6IDUwcHg7XG59XG5cbi5jb2x1bW4tc2l6ZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jb2x1bW4tZXh0ZW5zaW9uIC5leHRlbnNpb24taWNvbiB7XG4gIHdpZHRoOiAzNnB4O1xufVxuXG4uY29sdW1uLW1lc3NhZ2UgLm1lc3NhZ2UtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cbi5jb2x1bW4tbWVzc2FnZSAubWVzc2FnZS10ZXh0IHtcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG59XG5cbi5jb2x1bW4tYWN0aW9uIC5jaXRyb24tYnRuIHtcbiAgaGVpZ2h0OiA0MHB4O1xuICBtYXgtd2lkdGg6IDE4MHB4O1xuICBtYXJnaW46IDAgNXB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEycHg7XG59XG4uY29sdW1uLWFjdGlvbiAuY2l0cm9uLWJ0bjpkaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogI2RkZGRkZDtcbn1cblxuLmxpbmUtYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDEsIDE5MCwgNzQsIDAuNSk7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmxpbmUtYWN0aXZlIC5jaXRyb24tYnRuIHtcbiAgY29sb3I6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGRiZTRhO1xuICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcbn1cblxudGJvZHkgdHIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG50Ym9keSB0cjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQxLCAxOTAsIDc0LCAwLjUpO1xufVxudGJvZHkgdHI6aG92ZXIgLmNpdHJvbi1idG4ge1xuICBjb2xvcjogd2hpdGU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZGJlNGE7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xufVxudGJvZHkgdHI6aG92ZXIgLmNpdHJvbi1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgY29sb3I6ICM4ZGJlNGE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ZGJlNGE7XG59IiwiJGFjY3VlaWw6ICNmMGE2MmE7XG4kY2FydG9ncmFwaGllOiAjODlhNjMwO1xuJGNvbGxlY3RlOiAjOGRiZTRhO1xuJGFuYWx5c2U6ICM3MGMyODM7XG4kZW5lcmdpZTogI2QzYmY5NjtcbiRlbmVyZ3ktc2Vjb25kYXJ5OiAjNjc5YzQ2O1xuJHZlaGljdWxlczogI2RmN2MzYTtcbiRkb2N1bWVudHM6ICNkOGE2M2U7XG4kY29udHJhdHM6ICNkOGE2M2U7XG4kcnNlOiAjNDQ5ZDg0O1xuJHZlaWxsZTogI2I1MzczMTtcbiRtYW5hZ2VyczogI2QwNTMxOTtcbiRwcm9maWw6ICNjYzUxNTc7XG4kcGRmOiAjZWU1NzQ3O1xuJGdhejogIzVhYzZiYztcbiRlbGVjdHJpY2l0ZTogI2YyYmYwNDtcbiRlYXU6ICM0MjgxYjg7XG4kZnVlbDogI2RmN2MzYTtcbiRoZWF0aW5nOiAjYWIyZjUyO1xuJGNvb2xpbmc6ICMyOGJhZTE7XG4kdXBsb2FkOiAjYTViMmMzO1xuJHByb2ZpbGV0b3A6ICNkZmU2ZWY7XG4kZXJyb3I6ICNkYjRiNDc7XG4kc3VjY2VzczogZ3JlZW47XG4kd2FybmluZzogb3JhbmdlO1xuJGFkbWluOiAjZGI0YjQ3O1xuJHRleHQtY29sb3I6ICM2MDcxODg7XG4kbmF2YmFyOiAjMmYzYjQwO1xuJG5hdmJhci10b3A6ICNhNWI1Y2I7XG4kc3BlY2lmaWM6ICNmMjg0NWM7XG4kZG9jdW1lbnRzOiAjYTdiMjlkO1xuJG1hcmtlcmdyZWVuOiAjMzljNjU5O1xuJGNpYmxlczogI2QzYmY5NjtcbiRmYWN0dXJlczogI2Q4YTYzZTtcbiRib3JkZXJncmV5OiAjZDlkOWQ5O1xuJGRqdTogIzI4YmFlMTtcbiRwYWdlY29udGFpbmVyOiAjZjBmMGYwO1xuJGFsZXJ0cy1tYW5hZ2VtZW50OiAkYWRtaW47XG4kYm94LWNvbnRlbnQ6ICNlZWU7XG4kd2hpdGU6ICNmZmY7XG4kZGFya2dyZXk6ICM1MTYwNzM7XG4kY2hlY2tib3gtYmFja2dyb3VuZDogI2UzZTNlMztcbiRjaGVja21hcms6ICNjY2M7XG4kdGFibGUtYm9yZGVyOiAjZTllY2VmO1xuJGlucHV0LWJvcmRlcjogI2NlZDRkYTtcbiRkcm9wZG93bi1ob3ZlcjogI2Y1ZmFmZjtcbiRsaWdodGdyZXk6ICNhNWI1Y2I7XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CollectService } from 'app/pages/collect/collect.service';\nimport { PaginationService } from 'app/shared/components/pagination/front/pagination-front.service';\nimport { PaginationIndexes } from 'app/shared/components/pagination/pagination.interface';\nimport { UploadStateList } from 'app/shared/constants/upload-state-list.constants';\nimport { Upload, UploadFile } from 'app/shared/models/upload-file.interface';\nimport { UploadService } from 'app/shared/services/files/upload.service';\nimport { PageService } from 'app/shared/services/page/page.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-upload-list',\n templateUrl: './upload-list.component.html',\n styleUrls: ['./upload-list.component.scss'],\n providers: [PageService, PaginationService],\n})\nexport class UploadListComponent implements OnInit {\n @Input() files: Upload[] = [];\n\n @Output() removeFileClick: EventEmitter = new EventEmitter();\n @Output() reextractFileClick: EventEmitter = new EventEmitter();\n @Output() forceExtractClick: EventEmitter = new EventEmitter();\n @Input() currentLineSelected = -1;\n @Output() selectElement = new EventEmitter();\n @Input() disableActions = false;\n\n /** Files to display including pagination */\n public filesSorted: Upload[] = [];\n\n constructor(\n private collectService: CollectService,\n private uploadService: UploadService,\n private paginationService: PaginationService\n ) {}\n\n ngOnInit() {}\n\n async openFileInTab(file: Upload) {\n try {\n await this.uploadService.openFileInTab(file.id);\n } catch (e) {\n Swal.fire(\n 'Toutes nos excuses',\n 'Le fichier est inaccessible pour le moment. Veuillez réessayer ultérieurement.',\n 'warning'\n );\n }\n }\n\n getIconClass(state: string): string {\n return this.collectService.infos[this.collectService.stateInfo[state].type].icon;\n }\n\n getMessage(file: Upload): string {\n const message = this.collectService.stateInfo[file.state].message;\n return this.isFileMultiChunk(file.identificationPattern)\n ? message + ' (niv. ' + file.identificationPattern.cutters.length + ')'\n : message;\n }\n\n getColor(state: string): string {\n return this.collectService.infos[this.collectService.stateInfo[state].type].color;\n }\n\n getPercent(file: Upload): number {\n const stateInfo = this.collectService.stateInfo[file.state] || { percent: null };\n return stateInfo.percent || file.percent;\n }\n\n async reextract(file: Upload) {\n const result = await Swal.fire({\n title: 'Êtes-vous sur ?',\n text: '',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Ré-extraire',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n });\n\n if (result.value) {\n this.reextractFileClick.emit(file);\n }\n }\n\n async removeFile(file: Upload) {\n const result = await Swal.fire({\n title: 'Êtes-vous sur ?',\n text: '',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#009688',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Supprimer',\n cancelButtonText: 'Annuler',\n customClass: {\n confirmButton: 'btn btn-success',\n cancelButton: 'btn btn-danger',\n },\n buttonsStyling: false,\n });\n\n if (result.value) {\n this.removeFileClick.emit(file);\n }\n }\n\n forceExtract(file: Upload) {\n this.forceExtractClick.emit(file);\n }\n\n canBeRemoved(state: string): boolean {\n return (\n state === UploadStateList.MULTI_UNCOMPLETED ||\n state === UploadStateList.PATTERN_MISSING ||\n state === UploadStateList.PROPERTY_MISSING ||\n state === UploadStateList.UNTOUCHED ||\n state === UploadStateList.ERROR ||\n state === UploadStateList.NO_PATTERNS ||\n state === UploadStateList.JOBS_DONE ||\n state === UploadStateList.HAS_CHUNKS_NO_PATTERNS ||\n state === UploadStateList.QUALITY_CHECK_FAILED\n );\n }\n\n public canForceQuality(state: string): boolean {\n return state === UploadStateList.QUALITY_CHECK_FAILED;\n }\n\n canGeolocForce(state: string): boolean {\n return state === UploadStateList.MULTI_UNCOMPLETED || state === UploadStateList.ERROR;\n }\n\n getLineActiveClass(index) {\n return index === this.currentLineSelected ? 'line-active' : '';\n }\n\n selectFile(index) {\n this.currentLineSelected = index;\n this.selectElement.emit(index);\n }\n\n isFileMultiChunk(identificationPattern) {\n return identificationPattern && identificationPattern.cutters && identificationPattern.cutters.length;\n }\n\n public updateFileSorted(indexes: PaginationIndexes) {\n this.filesSorted = this.files.slice(indexes.indexStart, indexes.indexEnd + 1);\n }\n}\n","export default \".ga-upload-report {\\n width: 100%;\\n}\\n\\n.upload-line {\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n padding: 10px 10px;\\n height: 40px;\\n width: 100%;\\n border-bottom: 1px solid #d9d9d9;\\n}\\n\\n.upload-img-container {\\n margin-right: 20px;\\n}\\n\\n.upload-img-container img {\\n width: 18px;\\n}\\n\\n.upload-text-container {\\n -webkit-box-flex: 1;\\n flex: 1;\\n font-size: 12px;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n justify-content: space-between;\\n}\\n\\n.upload-text-container .error-ident {\\n margin-left: 38px;\\n}\\n\\n.citron-btn {\\n font-size: 12px;\\n padding: 5px 16px;\\n min-width: 200px;\\n}\\n\\n.citron-btn:disabled {\\n cursor: not-allowed !important;\\n background: #dddddd;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3VwbG9hZC91cGxvYWQtcmVwb3J0L3VwbG9hZC1yZXBvcnQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3VwbG9hZC91cGxvYWQtcmVwb3J0L3VwbG9hZC1yZXBvcnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxXQUFBO0FDREo7O0FESUE7RUFDSSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx5QkFBQTtVQUFBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGdDQUFBO0FDREo7O0FESUE7RUFDSSxrQkFBQTtBQ0RKOztBREdJO0VBQ0ksV0FBQTtBQ0RSOztBREtBO0VBQ0ksbUJBQUE7VUFBQSxPQUFBO0VBQ0EsZUFBQTtFQUNBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLHlCQUFBO1VBQUEsbUJBQUE7RUFDQSx5QkFBQTtVQUFBLDhCQUFBO0FDRko7O0FESUk7RUFDSSxpQkFBQTtBQ0ZSOztBRE1BO0VBQ0ksZUFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QUNISjs7QURLSTtFQUNJLDhCQUFBO0VBQ0EsbUJBQUE7QUNIUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3VwbG9hZC91cGxvYWQtcmVwb3J0L3VwbG9hZC1yZXBvcnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvY29sb3JzJztcblxuLmdhLXVwbG9hZC1yZXBvcnQge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4udXBsb2FkLWxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxMHB4IDEwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyZ3JleTtcbn1cblxuLnVwbG9hZC1pbWctY29udGFpbmVyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cbiAgICBpbWcge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICB9XG59XG5cbi51cGxvYWQtdGV4dC1jb250YWluZXIge1xuICAgIGZsZXg6IDE7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAuZXJyb3ItaWRlbnQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMzhweDtcbiAgICB9XG59XG5cbi5jaXRyb24tYnRuIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgcGFkZGluZzogNXB4IDE2cHg7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG4gICAgfVxufVxuIiwiLmdhLXVwbG9hZC1yZXBvcnQge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnVwbG9hZC1saW5lIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTBweCAxMHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbn1cblxuLnVwbG9hZC1pbWctY29udGFpbmVyIHtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuLnVwbG9hZC1pbWctY29udGFpbmVyIGltZyB7XG4gIHdpZHRoOiAxOHB4O1xufVxuXG4udXBsb2FkLXRleHQtY29udGFpbmVyIHtcbiAgZmxleDogMTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG4udXBsb2FkLXRleHQtY29udGFpbmVyIC5lcnJvci1pZGVudCB7XG4gIG1hcmdpbi1sZWZ0OiAzOHB4O1xufVxuXG4uY2l0cm9uLWJ0biB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgcGFkZGluZzogNXB4IDE2cHg7XG4gIG1pbi13aWR0aDogMjAwcHg7XG59XG4uY2l0cm9uLWJ0bjpkaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogI2RkZGRkZDtcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UploadErrorList } from '../../../constants/upload-error-list.constants';\nimport { UploadStateList } from '../../../constants/upload-state-list.constants';\n\n@Component({\n selector: 'ga-upload-report',\n templateUrl: './upload-report.component.html',\n styleUrls: ['./upload-report.component.scss'],\n})\nexport class UploadReportComponent implements OnInit {\n @Input() files: any[];\n @Input() disableActions = false;\n\n constructor() {}\n ngOnInit() {}\n\n getTotalNbFilesMsg() {\n if (this.files && this.files.length > 1) {\n return this.files.length + ' fichiers déposés';\n } else {\n return this.files.length + ' fichier déposé';\n }\n }\n\n getTotalSuccessMsg() {\n const nb = this.getNumberOfSuccessFiles();\n if (nb > 1) {\n return nb + ' fichiers ajoutés avec succès à la bibliothèque';\n } else {\n return nb + ' fichier ajouté avec succès à la bibliothèque';\n }\n }\n\n getNumberOfSuccessFiles(): number {\n return this.files.reduce((memo, file) => {\n return file.state === UploadStateList.JOBS_DONE ? ++memo : memo;\n }, 0);\n }\n\n getTotalErrorsMsg() {\n const nb = this.getNumberOfErrorFiles();\n if (nb > 1) {\n return nb + ' fichiers présentant des erreurs';\n } else {\n return nb + ' fichier présentant des erreurs';\n }\n }\n\n getNumberOfErrorFiles(): number {\n return this.files.reduce((memo, file) => {\n return this.isErrorFile(file.state) ? ++memo : memo;\n }, 0);\n }\n\n private isErrorFile(state: string): boolean {\n return (\n state === UploadStateList.MULTI_UNCOMPLETED ||\n state === UploadStateList.PROPERTY_MISSING ||\n state === UploadStateList.ERROR ||\n state === UploadStateList.PATTERN_MISSING ||\n state === UploadStateList.QUALITY_CHECK_FAILED ||\n state === UploadStateList.NO_PATTERNS ||\n state === UploadStateList.HAS_CHUNKS_NO_PATTERNS\n );\n }\n\n getTotalPendingMsg() {\n const nb = this.getNumberOfPendingFiles();\n if (nb > 1) {\n return nb + ' fichiers en attente d’extraction';\n } else {\n return nb + ' fichier en attente d’extraction';\n }\n }\n\n getNumberOfPendingFiles(): number {\n return this.files.reduce((memo, file) => {\n return this.isPendingFile(file.state) ? ++memo : memo;\n }, 0);\n }\n\n private isPendingFile(state: string): boolean {\n return state === UploadStateList.UNTOUCHED;\n }\n\n private isErrorGeolocFile(state: string, stack: string): boolean {\n return state === UploadStateList.ERROR && stack === UploadErrorList.MISSING_GEOLOC;\n }\n\n private isErrorDatesFile(state: string, stack: string): boolean {\n return state === UploadStateList.ERROR && stack === UploadErrorList.MISSING_DATE;\n }\n\n getErrorGeolocMsg() {\n const nb = this.getNbErrorGeoloc();\n if (nb > 1) {\n return 'dont ' + nb + ' ayant leur adresse invalide';\n } else {\n return 'dont ' + nb + ' ayant son adresse invalide';\n }\n }\n\n getNbErrorGeoloc(): number {\n return this.files.reduce((memo, file) => {\n return this.isErrorGeolocFile(file.state, file.stack) ? ++memo : memo;\n }, 0);\n }\n\n getErrorDatesMsg() {\n const nb = this.getNbErrorDates();\n if (nb > 1) {\n return 'dont ' + nb + ' ayant leurs dates invalides';\n } else {\n return 'dont ' + nb + ' ayant ses dates invalides';\n }\n }\n\n getNbErrorDates(): number {\n return this.files.reduce((memo, file) => {\n return this.isErrorDatesFile(file.state, file.stack) ? ++memo : memo;\n }, 0);\n }\n\n getErrorUploadMsg() {\n const nb = this.getNbErrorUpload();\n if (nb > 1) {\n return nb + \" fichiers n'ont pas été uploadés\";\n } else {\n return nb + \" fichier n'a pas été uploadé\";\n }\n }\n\n getNbErrorUpload(): number {\n return this.files.reduce((memo, file) => {\n return this.isErrorUploadFile(file.state) ? ++memo : memo;\n }, 0);\n }\n\n // pdf text content couldn't be extracted - document not uploaded - disappears on refresh\n private isErrorUploadFile(state: string): boolean {\n return state === UploadStateList.UPLOAD_ERROR;\n }\n}\n","export default \".form-control:disabled,\\n.form-control[readonly] {\\n background-color: #e9ecef !important;\\n opacity: 1;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3ZlaGljbGVzL2VkaXQvdmVoaWNsZS1lZGl0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy92ZWhpY2xlcy9lZGl0L3ZlaGljbGUtZWRpdC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7RUFFSSxvQ0FBQTtFQUNBLFVBQUE7QUNESiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3ZlaGljbGVzL2VkaXQvdmVoaWNsZS1lZGl0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi8uLi8uLi8uLi8uLi9zaGFyZWQvc3R5bGVzL2NvbG9ycy5zY3NzJztcblxuLmZvcm0tY29udHJvbDpkaXNhYmxlZCxcbi5mb3JtLWNvbnRyb2xbcmVhZG9ubHldIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYm9yZGVyICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMTtcbn1cbiIsIi5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQsXG4uZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWYgIWltcG9ydGFudDtcbiAgb3BhY2l0eTogMTtcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { Vehicle, VehiclePopulated } from 'app/shared/models/vehicle.interface';\n\nimport { Attribute, AttributeType } from 'app/shared/models/attribute.interface';\nimport { VehiclesService } from 'app/shared/services/vehicles/vehicles.service';\nimport * as moment from 'moment';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'ga-vehicle-edit',\n templateUrl: './vehicle-edit.component.html',\n styleUrls: ['./vehicle-edit.component.scss'],\n})\nexport class VehicleEditComponent implements OnInit {\n /**\n * Vehicle to display and edit\n */\n @Input() vehicle: VehiclePopulated;\n\n /**\n * Triggered when a vehicle is updated\n */\n @Output() vehicleUpdated: EventEmitter = new EventEmitter(true);\n\n /**\n * Vehicle reactive form\n */\n vehicleForm: FormGroup;\n\n /**\n * List of all types of fuel available\n */\n fuelTypes: string[] = [];\n\n /**\n * List of all available vehicle categories\n */\n categories: Attribute[] = [];\n\n /**\n * List of all available vehicle makes\n */\n makes: Attribute[] = [];\n\n /**\n * List of all available vehicle models for the vehicle's make\n */\n models: Attribute[] = [];\n\n /**\n * Is vehicle being currently saved\n */\n isSaving = false;\n\n constructor(private vehiclesService: VehiclesService) {}\n\n ngOnInit() {\n const dateIn = this.vehicle.dateIn ? moment.utc(this.vehicle.dateIn).format('YYYY-MM-DD') : null;\n const dateOut = this.vehicle.dateOut ? moment.utc(this.vehicle.dateOut).format('YYYY-MM-DD') : null;\n this.vehicleForm = new FormGroup({\n registrationNumber: new FormControl({ value: this.vehicle.registrationNumber, disabled: true }),\n name: new FormControl(this.vehicle.name, [Validators.required]),\n fuelType: new FormControl(this.vehicle.fuelType),\n isHybrid: new FormControl(this.vehicle.isHybrid),\n category: new FormControl(this.vehicle.category),\n make: new FormControl(this.vehicle.make),\n model: new FormControl(this.vehicle.model),\n dateIn: new FormControl(dateIn),\n dateOut: new FormControl(dateOut),\n consumptionCity: new FormControl(this.vehicle.consumption.city),\n consumptionCombined: new FormControl(this.vehicle.consumption.combined),\n consumptionHighway: new FormControl(this.vehicle.consumption.highway),\n });\n\n this.getSetCategories();\n this.getSetMakes();\n this.getSetFuelTypes();\n\n this.onChanges();\n }\n\n /**\n * Set reactive form changes behaviors\n */\n onChanges() {\n this.vehicleForm.get('make').valueChanges.subscribe(val => {\n this.vehicleForm.get('model').setValue(null);\n this.getSetModels(val);\n });\n }\n\n /**\n * Save vehicle then triggers save event\n */\n async saveVehicle() {\n try {\n this.isSaving = true;\n const values = Object.assign({}, this.vehicleForm.value);\n /**\n * Dates returned at format , we need to format them at ISO format.\n */\n if (values.dateIn) {\n values.dateIn = moment.utc(values.dateIn).toISOString();\n }\n if (values.dateOut) {\n values.dateOut = moment.utc(values.dateOut).toISOString();\n }\n\n values.consumption = {\n city: values.consumptionCity,\n combined: values.consumptionCombined,\n highway: values.consumptionHighway,\n };\n delete values.consumptionCity;\n delete values.consumptionCombined;\n delete values.consumptionHighway;\n\n // Save vehicle with vehicle service\n const vehicleSaved = await this.vehiclesService.update(this.vehicle._id, values);\n this.vehicleUpdated.emit(vehicleSaved);\n } catch (e) {\n Swal.fire('Erreur lors de la sauvegarde', `Merci d'essayer de nouveau ultérieurement`, 'error');\n }\n this.isSaving = false;\n }\n\n /**\n * Get and set all vehicles categories\n * @returns {Promise}\n */\n async getSetCategories(): Promise {\n try {\n const categories = await this.vehiclesService.getCategories();\n this.categories = categories;\n } catch (e) {\n this.categories = [this.createErrorAttribute('vehicleCategory')];\n Swal.fire(\n 'Erreur de la récupération des segments automobiles',\n `Merci d'essayer de nouveau ultérieurement`,\n 'error'\n );\n }\n }\n\n /**\n * Get and set all vehicles makes\n * @returns {Promise}\n */\n async getSetMakes(): Promise {\n try {\n const makes = await this.vehiclesService.getMakes();\n this.makes = makes;\n } catch (e) {\n this.makes = [this.createErrorAttribute('vehicleMake')];\n Swal.fire(\n 'Erreur lors de la récupération des constructeurs automobiles',\n `Merci d'essayer de nouveau ultérieurement`,\n 'error'\n );\n }\n }\n\n /**\n * Get all vehicles models for a given make\n * @param {string} makeId - id of make to get model from\n * @returns {Promise}\n */\n async getSetModels(makeId: string): Promise {\n try {\n const models = await this.vehiclesService.getModels(makeId);\n this.models = models;\n } catch (e) {\n this.models = [this.createErrorAttribute('vehicleModel')];\n Swal.fire(\n 'Erreur lors de la récupération des modèles automobiles',\n `Merci d'essayer de nouveau ultérieurement`,\n 'error'\n );\n }\n }\n\n /**\n * Get all vehicles fluids types available\n * @returns {Promise}\n */\n async getSetFuelTypes(): Promise {\n try {\n const fuelTypes = await this.vehiclesService.getFuelTypes();\n this.fuelTypes = fuelTypes;\n } catch (e) {\n Swal.fire(\n 'Erreur lors de la récupération des différents types de carburant',\n `Merci d'essayer de nouveau ultérieurement`,\n 'error'\n );\n }\n }\n\n /**\n * Create an error attribute tobe displayed in list\n * @param {AttributeType} type - type of attribute\n * @returns {Attribute}\n */\n private createErrorAttribute(type: AttributeType): Attribute {\n return {\n _id: 'error',\n type,\n name: 'Erreur',\n key: null,\n parent: null,\n organization: null,\n createdAt: null,\n updatedAt: null,\n };\n }\n}\n","export const CompanyRoles = {\n USERS: 'users',\n VIEWERS: 'viewers',\n};\n","export const ExtractErrorList = {\n UPLOAD_ALREADY_EXTRACTED: 'upload_already_extracted',\n CHUNKS_ALREADY_EXTRACTED: 'chunks_already_extracted',\n NEED_FORCE_GEOLOC: 'need_geolocationForced',\n WRONG_UPLOADID: 'upload_not_found',\n MISSING_IDENTIFICATION_PATTERNS: 'identificationPatterns_not_found',\n WRONG_USERID: 'user_not_found',\n WRONG_COMPANYID: 'company_not_found',\n UPLOAD_CANT_FORCE_GEOLOC: 'upload_forceGeoloc_validAddress',\n CHUNKS_CANT_FORCE_GEOLOC: 'chunks_forceGeoloc_validAddress',\n CHUNKS_DIFFERENT_UPLOAD: 'wrong_chunksid_selected',\n};\n","export const ManagerTypes = {\n ENERGY_MANAGER: 'energymanager',\n DATA_MANAGER: 'datamanager',\n};\n","export const materialTypes = {\n EMISSION: 'emission',\n HEAT: 'chauffage',\n COLD: 'froid',\n};\n","export const UploadErrorList = {\n MISSING_GEOLOC: 'missing_geoloc',\n MISSING_DATE: 'missing_dates',\n ALREADY_UPLOADED: 'file_already_uploaded',\n MISSING_UPLOAD_GROUP: 'missing_upload_group',\n PDF_TEXT_EXTRACTION_IMPOSSIBLE: 'pdf_text_extraction_failed',\n SAVING_VALIDATION: 'saving_validation_error',\n SAVING_UNKNOWN: 'saving_unknown_error',\n PRODUCT_NOT_FOUND: 'product_not_found',\n ALREADY_EXTRACTING: 'upload_already_extracting',\n QUALITY_CHECK_FAILED: 'quality_check_failed',\n EMPTY_FILE: 'empty_file',\n REGEX_TIMEOUT: 'regex_timeout',\n};\n","export const UploadStateList = {\n UPLOADING: 'uploading',\n UNTOUCHED: 'untouched',\n UPLOAD_ERROR: 'upload_error',\n EXTRACTING: 'extracting',\n PATTERN_MISSING: 'pattern_missing',\n NO_PATTERNS: 'no_patterns',\n ERROR: 'error',\n PROPERTY_MISSING: 'property_missing',\n MULTI_UNCOMPLETED: 'multi_uncompleted',\n JOBS_DONE: 'jobs_done',\n NOTHING: 'nothing',\n HAS_CHUNKS_NO_PATTERNS: 'has_chunks_no_patterns',\n ARCHIVED: 'archived',\n IN_PROGRESS: 'in_progress',\n QUALITY_CHECK_FAILED: 'quality_check_failed',\n};\n","export const UserTypes = {\n ENERGY_MANAGER: 'energymanager',\n ADMIN: 'admin',\n USER: 'user',\n USER_ADMIN: 'useradmin',\n};\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { FeatureToggleService } from 'app/shared/services/feature-toggle/feature-toggle.service';\n\n@Directive({\n selector: '[featureToggle]',\n})\nexport class FeatureToggleDirective implements OnInit {\n @Input() featureToggle: string;\n\n constructor(\n private featureToggleService: FeatureToggleService,\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef\n ) {}\n\n ngOnInit() {\n if (this.featureToggleService.isEnabled(this.featureToggle)) {\n // If feature enabled, create targeted element\n this.viewContainer.createEmbeddedView(this.templateRef);\n } else {\n // Otherwise don't display element\n this.viewContainer.clear();\n }\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[gaListPanel]',\n})\n/**\n * Directive specific to the List-Panel element\n * This element contains a list of cards\n * Clicking on one of those recenter it in the scrollbar\n */\nexport class ListPanelDirective {\n constructor() {}\n\n @HostListener('click', ['$event.target'])\n onClick(button) {\n button.scrollIntoView({\n block: 'center',\n behavior: 'smooth',\n });\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { NavDropdownDirective } from './nav-dropdown.directive';\n@Directive({\n selector: '[appNavDropdownToggle]',\n})\nexport class NavDropdownToggleDirective {\n constructor(private dropdown: NavDropdownDirective) {}\n\n @HostListener('click', ['$event'])\n toggleOpen($event: any) {\n $event.preventDefault();\n this.dropdown.toggle();\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[appNavDropdown]',\n})\nexport class NavDropdownDirective {\n constructor(private el: ElementRef) {}\n\n toggle() {\n this.el.nativeElement.classList.toggle('open');\n }\n}\n","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, OnInit, Output } from '@angular/core';\n\n@Directive({\n selector: '[appOffClick]',\n})\nexport class OffClickDirective {\n @Output() offClick = new EventEmitter();\n\n @HostBinding('class.open') isOpen: boolean;\n\n constructor(private elemRef: ElementRef) {}\n\n @HostListener('document:click', ['$event'])\n @HostListener('document:touchstart', ['$event'])\n toggle(event) {\n if (!this.elemRef.nativeElement.contains(event.target)) {\n this.offClick.emit(true);\n }\n }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\ndeclare var $: any; // <-- let typescript compiler know your referencing a var that was already declared\n\n@Directive({\n // tslint:disable-next-line\n selector: 'scrollbar',\n // tslint:disable-next-line\n host: { class: 'mCustomScrollbar' }, //<-- Make sure you add the class\n})\nexport class ScrollbarDirective implements OnInit {\n el: ElementRef;\n\n constructor(el: ElementRef) {\n this.el = el;\n }\n\n ngOnInit() {\n $(this.el.nativeElement).mCustomScrollbar({\n autoHideScrollbar: false,\n theme: 'light',\n advanced: {\n updateOnContentResize: true,\n },\n });\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport class Animations {\n public static slideInOut = trigger('slideInOut', [\n state(\n 'true',\n style({\n height: '*',\n })\n ),\n state(\n 'false',\n style({\n height: '0px',\n })\n ),\n transition('1 => 0', [animate('200ms linear')]),\n transition('0 => 1', [animate('200ms linear')]),\n ]);\n\n public static slideInOutHorizontal = trigger('slideInOutHorizontal', [\n state(\n 'true',\n style({\n // width: '*'\n })\n ),\n state(\n 'false',\n style({\n display: 'none',\n })\n ),\n transition('1 => 0', [animate('0s linear')]),\n transition('0 => 1', [animate('0s linear')]),\n ]);\n}\n","export enum CONTRACTUAL_DATA_SOURCE {\n ENEDIS = 'enedis_cdtc_v1',\n}\n\n/** Represents the identifiers of a contractual data item. */\nexport interface Identifiers extends Record {}\n\n/** Represents the values of a property of a contractual data item. */\nexport interface DataProperty {\n key: string;\n values: Array<{\n _id?: string;\n value: unknown;\n startDate?: Date;\n endDate?: Date;\n }>;\n}\n\n/** Represents the synchronizations history for each source of data for one contractual data item. */\nexport interface SourceSynchronizations {\n source: string;\n lastSync: {\n syncId: string;\n requestedAt: string;\n completedAt?: string;\n };\n}\n\n/** Represents a contractual data item. */\nexport interface ContractualData {\n identifiers: Identifiers;\n data?: DataProperty[];\n synchronizations?: SourceSynchronizations[];\n}\n","/**\n * Information about an external provider and its activation for the entity\n */\nexport interface ExternalProvider {\n /** Data provider name. Can be enedis or greenAlanyzer */\n dataProvider: SOURCE_TYPE;\n /** Client gave an authorization warrant */\n warrantAuthorization?: boolean;\n /** Users and admins can see load curve */\n loadCurveVisualization?: boolean;\n /** Contractual data can be retrieved */\n contractualData?: boolean;\n /** SIRET associated */\n siret?: string;\n}\n\nexport enum SOURCE_TYPE {\n GA = 'ga',\n ENEDIS = 'enedis',\n}\n\nexport enum ENTITY_TYPE {\n SITE = 'site',\n ROUTING_REFERENCE = 'routingreference',\n ZONE = 'zone',\n}\n","export interface FilterConfig {\n type: TypeFilter;\n displayName: string;\n propertyName: string;\n selectedValue: any;\n placeHolder: string;\n data: Array<{\n displayName: string;\n value: string;\n }>;\n multiSelect: boolean;\n multiSelectedValues: any;\n defaultValue: any;\n}\n\nexport enum TypeFilter {\n date,\n select,\n selectAutoComplete,\n treeSelect,\n}\n\nexport interface OptionValue {\n displayName: string;\n value: T;\n selected?: boolean;\n}\n","/**\n * Interface used inside the collect tables components\n */\nexport interface UploadFile {\n id: string;\n uploadId?: string;\n filename: string;\n size: number;\n state: string;\n percent: number;\n group: string;\n fileObject?: File; // file Object containing raw data\n stack: string;\n}\n\n/**\n * Interface of the file expected from a drag&drop zone\n */\nexport interface File {\n filename: string;\n lastModified: number;\n lastModifiedDate: any;\n name: string;\n size: number;\n type: string;\n}\n\n/**\n * Interface of the Upload objects expected from the API\n * Extra attributes can be added in order to be used inside the collect tables components\n */\nexport interface Upload extends UploadFile {\n _id?: string;\n originalname?: string;\n identificationPattern: any;\n clothestPattern?: any;\n chunks?: any[];\n [key: string]: any;\n file: string;\n}\n\n/**\n * Enum having different type of upload forcing\n */\nexport enum ForceType {\n EXTRACT = 'extract',\n QUALITY = 'quality',\n}\n\n/**\n * Contract group information\n */\nexport interface ContractUploadsGroup {\n groupContractProviderEnergy: string;\n energy: string;\n energyType: string;\n provider: { name: string };\n contractType: { name: string };\n count: number;\n error: boolean;\n data: ContractFileChunk[];\n forceType: ForceType;\n}\n\n/**\n * Chunk or upload inside the contract group data\n */\nexport interface ContractFileChunk {\n id: string;\n filename: string;\n size: number;\n identificationPattern: any;\n state: string;\n stack: string;\n _id?: string;\n uploadId?: string;\n chunkId?: string;\n missingProperties?: string[];\n requiredProperties?: string[];\n patternId?: string;\n error?: any;\n uploadState?: string;\n}\n\n/**\n * Recap of upload files\n */\nexport interface UploadChunkRecap {\n filename: string;\n missingProperties: string[];\n size: number;\n state: string;\n nbProperties: string[];\n checked: boolean;\n stack: string;\n uploadId: string;\n chunkId: string;\n uploadState: string;\n error: any;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as moment from 'moment';\n\n// use french local\nmoment.locale('fr-fr');\n\nconst defaultFormat = 'DD/MM/YYYY';\n\n@Pipe({\n name: 'formatDate',\n})\nexport class FormatDatePipe implements PipeTransform {\n transform(value: string, format: string = ''): string {\n return value ? moment(value).format(format || defaultFormat) : null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst sizes = ['bit', 'Ko', 'Mo', 'Go'];\nconst k = 1000;\n\n@Pipe({\n name: 'formatFileSize',\n})\nexport class FormatFileSizePipe implements PipeTransform {\n transform(value: number): string {\n if (value === 0) {\n return '0 Ko';\n }\n\n const i = Math.floor(Math.log(value) / Math.log(k));\n const result = Math.round(value / Math.pow(k, i));\n\n return result + ' ' + sizes[i];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UtilsService } from '../services/utils/utils.service';\n\ninterface Options {\n unit?: string;\n type?: string;\n replaceZero?: boolean;\n replaceNull?: boolean;\n excludedValues?: number[];\n replaceStringKey?: string;\n}\n\n@Pipe({\n name: 'formatNumberUnit',\n})\nexport class FormatNumberUnitPipe implements PipeTransform {\n constructor(private utilsService: UtilsService) {}\n\n /**\n * Return the formated value to display\n * @param {number|null} value\n * @param {Option?} customOptions - options to get the required format\n * @param {string?} options.unit - also used to get the corred nb of decimal values\n * @param {string?} options.type - used to get the correct nb of decimal values when there is no unit\n * @param {number[]?} excludedValues - replace specific values with required string\n * @param {string?} replaceStringKey - to get the string replacing wrong value\n * @returns {string} value to display\n */\n transform(value: number | null, customOptions: Options = {}): string {\n const options = {\n unit: '',\n type: null,\n excludedValues: [],\n replaceStringKey: 'dash',\n };\n\n Object.assign(options, customOptions);\n\n const replaceString = {\n dashUnit: '-' + options.unit,\n dash: '-',\n };\n\n const isExcluded = options.excludedValues.includes(value);\n\n if (isExcluded) {\n return replaceString[options.replaceStringKey];\n }\n\n return this.utilsService.getNumberAndUnitToDisplay(value, options.unit, options.type);\n }\n\n /**\n * Returns true if the value is not a number and is undefined\n * @param {*} value - to test\n * @returns {boolean}\n */\n isUndefined(value: any): boolean {\n return typeof value !== 'number' && !value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UtilsService } from '../services/utils/utils.service';\n\n@Pipe({\n name: 'formatNumber',\n})\nexport class FormatNumberPipe implements PipeTransform {\n constructor(private utilsService: UtilsService) {}\n\n transform(value: number, defaultIfFinite: any = '', digits: number = 0): string {\n return this.utilsService.formateNumber(value, defaultIfFinite, digits);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { CollectService } from 'app/pages/collect/collect.service';\nimport { UploadErrorList } from '../constants/upload-error-list.constants';\nimport { UploadChunkRecap } from '../models/upload-file.interface';\n\n@Pipe({\n name: 'getStackMsg',\n})\nexport class GetStackMsgPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n private sanitizeInput(input: string): SafeHtml {\n // Regular expression to remove