@provoly/dashboard 1.3.7 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -2
- package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +47 -18
- package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +6 -2
- package/admin/components/admin-fields/admin-fields.component.d.ts +4 -1
- package/admin/components/admin-fields/store/admin-fields.model.d.ts +1 -1
- package/admin/components/admin-fields/store/fields.actions.d.ts +19 -12
- package/admin/components/admin-fields/store/fields.effects.d.ts +16 -3
- package/admin/i18n/en.translations.d.ts +33 -14
- package/admin/i18n/fr.translations.d.ts +33 -14
- package/components/checkbox/checkbox.component.d.ts +4 -2
- package/components/data-format/data-format.pipe.d.ts +11 -1
- package/components/paginator/index.d.ts +5 -0
- package/components/paginator/paginator.component.d.ts +19 -0
- package/components/paginator/paginator.module.d.ts +10 -0
- package/components/paginator/public-api.d.ts +3 -0
- package/components/paginator/style/_o-pry-paginator.scss +11 -0
- package/components/paginator/style/css.component.d.ts +5 -0
- package/dataset/components/dataset-detail/dataset-detail.component.d.ts +5 -8
- package/dataset/dataset.module.d.ts +1 -1
- package/dataset/i18n/en.translations.d.ts +0 -12
- package/dataset/i18n/fr.translations.d.ts +0 -12
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +4 -6
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +10 -12
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +6 -5
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +2 -2
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +142 -63
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +7 -8
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +15 -11
- package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +1 -1
- package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +6 -5
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +12 -6
- package/esm2022/admin/i18n/en.translations.mjs +34 -15
- package/esm2022/admin/i18n/fr.translations.mjs +34 -15
- package/esm2022/components/checkbox/checkbox.component.mjs +15 -7
- package/esm2022/components/data-format/data-format.pipe.mjs +88 -7
- package/esm2022/components/paginator/paginator.component.mjs +51 -0
- package/esm2022/components/paginator/paginator.module.mjs +20 -0
- package/esm2022/components/paginator/provoly-dashboard-components-paginator.mjs +5 -0
- package/esm2022/components/paginator/public-api.mjs +4 -0
- package/esm2022/components/paginator/style/css.component.mjs +11 -0
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +16 -26
- package/esm2022/dataset/dataset.module.mjs +2 -5
- package/esm2022/dataset/i18n/en.translations.mjs +1 -13
- package/esm2022/dataset/i18n/fr.translations.mjs +2 -14
- package/esm2022/import/components/form/import-form.component.mjs +174 -0
- package/esm2022/import/components/list/import-list.component.mjs +73 -0
- package/esm2022/import/components/version-modal/version-modal.component.mjs +26 -0
- package/esm2022/import/i18n/en.translations.mjs +16 -2
- package/esm2022/import/i18n/fr.translations.mjs +16 -2
- package/esm2022/import/import-routing.module.mjs +3 -3
- package/esm2022/import/import.module.mjs +25 -10
- package/esm2022/import/public-api.mjs +4 -2
- package/esm2022/import/style/css.component.mjs +2 -2
- package/esm2022/lib/core/components/select/select.component.mjs +3 -3
- package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +8 -8
- package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +48 -0
- package/esm2022/lib/core/components/{modal-status/modal-status.module.mjs → status-modal/status-modal.module.mjs} +9 -9
- package/esm2022/lib/core/core.module.mjs +5 -5
- package/esm2022/lib/core/i18n/en.translations.mjs +39 -6
- package/esm2022/lib/core/i18n/fr.translations.mjs +41 -6
- package/esm2022/lib/core/model/admin-api.model.mjs +5 -69
- package/esm2022/lib/core/model/widget-analytic-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/public-api.mjs +3 -3
- package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
- package/esm2022/lib/core/store/class/class.selectors.mjs +2 -2
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +3 -3
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +7 -4
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +5 -3
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +3 -11
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +23 -5
- package/esm2022/lib/core/store/field/field.interface.mjs +1 -3
- package/esm2022/lib/core/store/field/field.service.mjs +7 -2
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +3 -11
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +2 -2
- package/esm2022/lib/dashboard/item-utils.mjs +5 -5
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -4
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -19
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -26
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
- package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +3 -2
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +4 -4
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +4 -5
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
- package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +5 -6
- package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +17 -19
- package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -4
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +54 -37
- package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +4 -16
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +9 -9
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +30 -32
- package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +2 -5
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +2 -2
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +6 -10
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +18 -14
- package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +9 -5
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
- package/esm2022/widgets/widget-table/public-api.mjs +1 -2
- package/esm2022/widgets/widget-table/widget-table.module.mjs +12 -7
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -15
- package/esm2022/widgets/widget-tile/widget-tile.module.mjs +8 -4
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +249 -126
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-checkbox.mjs +14 -6
- package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-data-format.mjs +88 -7
- package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-paginator.mjs +82 -0
- package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-dataset.mjs +21 -58
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +249 -116
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +15 -16
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +4 -4
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +20 -21
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +53 -36
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +3 -15
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +9 -9
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +4 -4
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +36 -45
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +32 -38
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +16 -17
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +286 -338
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/components/{import.component.d.ts → form/import-form.component.d.ts} +8 -4
- package/import/components/list/import-list.component.d.ts +34 -0
- package/import/components/version-modal/version-modal.component.d.ts +13 -0
- package/import/i18n/en.translations.d.ts +14 -0
- package/import/i18n/fr.translations.d.ts +14 -0
- package/import/import.module.d.ts +13 -10
- package/import/public-api.d.ts +3 -1
- package/import/style/_o-import.scss +50 -6
- package/lib/core/components/share/legacy-share/share.component.d.ts +1 -1
- package/lib/core/components/{modal-status/modal-status.component.d.ts → status-modal/status-modal.component.d.ts} +10 -6
- package/lib/core/components/{modal-status/modal-status.module.d.ts → status-modal/status-modal.module.d.ts} +5 -5
- package/lib/core/core.module.d.ts +2 -2
- package/lib/core/i18n/en.translations.d.ts +33 -0
- package/lib/core/i18n/fr.translations.d.ts +35 -0
- package/lib/core/model/admin-api.model.d.ts +6 -8
- package/lib/core/model/widget-analytic-manifest.interface.d.ts +0 -3
- package/lib/core/model/widget-table-manifest.interface.d.ts +2 -0
- package/lib/core/public-api.d.ts +2 -2
- package/lib/core/store/class/class.interface.d.ts +2 -1
- package/lib/core/store/class/class.selectors.d.ts +10 -10
- package/lib/core/store/data-source/data-source.actions.d.ts +21 -1
- package/lib/core/store/data-source/data-source.effects.d.ts +11 -1
- package/lib/core/store/data-source/data-source.model.d.ts +3 -2
- package/lib/core/store/data-source/data-source.reducer.d.ts +1 -0
- package/lib/core/store/data-source/data-source.selectors.d.ts +3 -3
- package/lib/core/store/data-source/data-source.service.d.ts +11 -2
- package/lib/core/store/field/field.interface.d.ts +8 -4
- package/lib/core/store/field/field.service.d.ts +1 -0
- package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +1 -1
- package/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.d.ts +3 -7
- package/lib/dashboard/item-utils.d.ts +1 -1
- package/lib/dashboard/store/dashboard.actions.d.ts +0 -11
- package/lib/dashboard/store/dashboard.effects.d.ts +0 -3
- package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +2 -1
- package/package.json +18 -12
- package/styles/base/_utils.scss +9 -1
- package/styles/components/_a-btn.scss +7 -0
- package/styles/components/_a-table.scss +2 -16
- package/styles/layout/_o-workspace.scss +1 -0
- package/tooltips/attribute/attribute-tooltip.component.d.ts +6 -6
- package/tooltips/attribute/attribute-tooltip.module.d.ts +2 -1
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +16 -3
- package/widgets/widget-analytic/component/widget-analytic.component.d.ts +2 -3
- package/widgets/widget-detail/component/widget-detail.component.d.ts +1 -4
- package/widgets/widget-table/component/widget-table.component.d.ts +1 -0
- package/widgets/widget-table/expand-value/expand-value.component.d.ts +4 -2
- package/widgets/widget-table/public-api.d.ts +0 -1
- package/widgets/widget-table/widget-table.module.d.ts +9 -8
- package/widgets/widget-tile/component/widget-tile.component.d.ts +1 -0
- package/widgets/widget-tile/widget-tile.module.d.ts +2 -1
- package/esm2022/import/components/import.component.mjs +0 -167
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +0 -45
- package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +0 -24
- package/widgets/widget-table/expand-value/format-number.pipe.d.ts +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-import.mjs","sources":["../../../../projects/provoly/dashboard/import/store/import.actions.ts","../../../../projects/provoly/dashboard/import/store/import.reducer.ts","../../../../projects/provoly/dashboard/import/store/import.selectors.ts","../../../../projects/provoly/dashboard/import/style/css.component.ts","../../../../projects/provoly/dashboard/import/components/import.component.ts","../../../../projects/provoly/dashboard/import/components/import.component.html","../../../../projects/provoly/dashboard/import/i18n/en.translations.ts","../../../../projects/provoly/dashboard/import/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/import/import-routing.module.ts","../../../../projects/provoly/dashboard/import/store/import.service.ts","../../../../projects/provoly/dashboard/import/store/import.effects.ts","../../../../projects/provoly/dashboard/import/import.module.ts","../../../../projects/provoly/dashboard/import/provoly-dashboard-import.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { DatasetVersion } from '@provoly/dashboard';\n\nexport const ImportActions = {\n upload: createAction(\n '[Import] import data',\n props<{\n file: File;\n dataset: string;\n fileType: string;\n normalizeGeo?: boolean;\n datasetVersionInformation: Partial<DatasetVersion>;\n }>()\n ),\n uploadSuccess: createAction('[Import] import data successful', props<{ uploadedDataset: Partial<DatasetVersion> }>()),\n uploadFailure: createAction('[Import] import data failure', props<{ errors: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { ImportActions } from './import.actions';\nimport { DatasetVersion } from '@provoly/dashboard';\n\nexport const importFeatureKey = '@pry/import';\n\nexport interface ImportState {\n loading: boolean;\n uploadedDataset?: Partial<DatasetVersion>;\n}\n\nexport const initialImportState: ImportState = {\n loading: false\n};\n\nexport const importReducer = createReducer(\n initialImportState,\n on(ImportActions.upload, (state) => ({\n ...state,\n loading: true\n })),\n on(ImportActions.uploadSuccess, (state, action) => ({\n ...state,\n loading: false,\n uploadedDataset: action.uploadedDataset\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromPipeline from './import.reducer';\n\nconst feature = createFeatureSelector<fromPipeline.ImportState>(fromPipeline.importFeatureKey);\n\nconst loading = createSelector(feature, (state) => state.loading);\nconst uploadedDataset = createSelector(feature, (state) => state?.uploadedDataset);\n\nexport const ImportSelectors = {\n loading,\n uploadedDataset\n};\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-import-css',\n template: '',\n styleUrls: ['./_o-import.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryImportCssComponent {}\n","import { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceService,\n DateUtils,\n PryDatasetType,\n PryI18nService,\n PrySnackbarService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { map, Observable, take } from 'rxjs';\nimport { ImportActions } from '../store/import.actions';\nimport { ImportSelectors } from '../store/import.selectors';\nimport { withLatestFrom } from 'rxjs/operators';\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\n\ntype FileExtension = 'csv' | 'zip';\n\ninterface ImportForm {\n fileType: FormControl<FileExtension>;\n file: FormControl<File | null>;\n dataset: FormControl<Dataset | null>;\n normalizeGeo: FormControl<boolean>;\n productionDate: FormControl<string>;\n producer: FormControl<string>;\n additionalInformation: FormControl<string | null>;\n}\n\n@Component({\n selector: 'pry-import',\n templateUrl: './import.component.html'\n})\nexport class PryImportComponent extends SubscriptionnerDirective implements OnDestroy {\n datasets$: Observable<Dataset[]>;\n loading$: Observable<boolean>;\n\n @ViewChild('message') message!: ElementRef<HTMLDivElement>;\n showMessage: boolean = false;\n\n maxDate = DateUtils.formatDate(new Date());\n\n form = new FormGroup<ImportForm>({\n fileType: new FormControl('csv', {\n validators: [Validators.required],\n nonNullable: true\n }),\n file: new FormControl(null, Validators.required),\n dataset: new FormControl(null, Validators.required),\n normalizeGeo: new FormControl(false, { nonNullable: true }),\n productionDate: new FormControl(this.maxDate, {\n validators: [Validators.required, DateUtils.onlyPastDateValidator],\n nonNullable: true\n }),\n producer: new FormControl('', {\n validators: [Validators.required],\n nonNullable: true\n }),\n additionalInformation: new FormControl(null)\n });\n\n fileTypes: { [key in FileExtension]: { label: string; value: FileExtension; extension: string } } = {\n csv: {\n label: 'Csv',\n value: 'csv',\n extension: '.csv'\n },\n zip: {\n label: 'Shapefile',\n value: 'zip',\n extension: '.zip'\n }\n };\n\n constructor(\n private store: Store,\n private dsService: DataSourceService,\n private snackbar: PrySnackbarService,\n private i18nService: PryI18nService\n ) {\n super();\n store.dispatch(DataSourceActions.dataset.loadDataset());\n this.store.dispatch(DataSourceActions.dataset.listVersions());\n this.datasets$ = store\n .select(DataSourceSelectors.datasets)\n .pipe(\n map((datasets) =>\n datasets\n .filter((dataset) => dataset.type === PryDatasetType.CLOSED)\n .sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1))\n )\n );\n this.loading$ = store.select(ImportSelectors.loading);\n\n this.subscriptions.add(\n this.form\n .get('dataset')\n ?.valueChanges.pipe(withLatestFrom(this.store.select(DataSourceSelectors.datasetVersions)))\n .subscribe(([dataset, versions]) => {\n this.clearMessage();\n if (\n dataset &&\n versions.some(\n (version) =>\n version.dataset === dataset.id && (version.state === 'ACTIVE' || version.state === 'INDEXING')\n )\n ) {\n this.getLastActiveVersion(dataset);\n } else {\n this.form.patchValue({ producer: '', productionDate: DateUtils.formatDate(new Date()) });\n this.producer.markAsPristine();\n }\n })\n );\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.clearMessage();\n }\n\n get fileType(): AbstractControl<FileExtension> {\n return this.form.controls['fileType'];\n }\n\n get file(): AbstractControl<File | null> {\n return this.form.controls['file'];\n }\n\n get dataset(): AbstractControl<Dataset | null> {\n return this.form.controls['dataset'];\n }\n\n get normalizeGeo(): AbstractControl<boolean> {\n return this.form.controls['normalizeGeo'];\n }\n\n get productionDate(): AbstractControl<string> {\n return this.form.controls['productionDate'];\n }\n\n get producer(): AbstractControl<string> {\n return this.form.controls['producer'];\n }\n\n uploadedChange($event: File): void {\n if ($event.size > 1024 * 1024 * 1024 * 2) {\n this.snackbar.open({\n type: 'error',\n message: this.i18nService.instant('@pry.import.tooLarge', { current: this.getFileSize($event.size) })\n });\n } else {\n this.form.patchValue({ file: $event });\n }\n }\n\n submit(): void {\n const { file, dataset, fileType, normalizeGeo, producer, productionDate, additionalInformation } = this.form.value;\n if (file && dataset && fileType) {\n this.store.dispatch(\n ImportActions.upload({\n file,\n fileType,\n normalizeGeo,\n dataset: dataset.id,\n datasetVersionInformation: {\n productionDate: productionDate ? new Date(productionDate).toISOString() : undefined,\n producer,\n additionalInformation: !!additionalInformation ? additionalInformation : undefined\n }\n })\n );\n this.showMessage = true;\n setTimeout(() => this.message.nativeElement.scrollIntoView({ behavior: 'smooth' }));\n this.form.patchValue({ file: null });\n }\n }\n\n getFileSize(size: number): string {\n if (size >= 1024 && size < 1024 * 1024) {\n return `${(size / 1024).toFixed(1)} KB`;\n } else if (size >= 1024 * 1024 && size < 1024 * 1024 * 1024) {\n return `${(size / (1024 * 1024)).toFixed(1)} MB`;\n } else if (size >= 1024 * 1024 * 1024) {\n return `${(size / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n }\n return `${size} bytes`;\n }\n\n getLastActiveVersion(dataset: Dataset): void {\n this.subscriptions.add(\n this.dsService\n .getLastActiveDatasetVersion(dataset.id)\n .pipe(take(1))\n .subscribe((version) => {\n if (version && version.producer) this.form.patchValue({ producer: version.producer });\n })\n );\n }\n\n clearMessage(): void {\n if (this.showMessage) this.showMessage = false;\n }\n\n protected readonly Object = Object;\n protected readonly PryDatasetType = PryDatasetType;\n}\n","<pry-import-css></pry-import-css>\n<div class=\"o-import\">\n <h1 class=\"a-h1\">{{ '@pry.import.title' | i18n }}</h1>\n <div class=\"u-display-flex\">\n <form class=\"o-import__form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"datasets\">{{ '@pry.import.fileType' | i18n }}</label>\n <pry-select\n formControlName=\"fileType\"\n id=\"fileType\"\n [items]=\"Object.values(fileTypes)\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"upload_input\">\n {{ '@pry.import.uploadTitle' + fileType.value | i18n }}\n </label>\n <p>{{ '@pry.import.warning' | i18n }}</p>\n <div class=\"o-file-input\">\n @if (file.value?.size) {\n <div class=\"o-import__file\">\n <pry-icon iconSvg=\"download\"></pry-icon>\n <h3>{{ file.value?.name }}</h3>\n <span>{{ getFileSize(file.value?.size ?? 0) }}</span>\n </div>\n }\n <pry-upload\n id=\"upload_input\"\n [accept]=\"fileTypes[fileType.value].extension\"\n mode=\"files\"\n (uploadedFile)=\"uploadedChange($event)\"\n labelTranslate=\"@pry.import.selectFile\"\n ></pry-upload>\n </div>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"datasets\">{{ '@pry.import.datasetImport' | i18n }}</label>\n <pry-select\n formControlName=\"dataset\"\n id=\"datasets\"\n [items]=\"datasets$ | async\"\n [placeholder]=\"'@pry.import.dataset' | i18n\"\n bindLabel=\"name\"\n [autocomplete]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox formControlName=\"normalizeGeo\">{{ '@pry.import.normalize' | i18n }}</pry-checkbox>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\">{{ '@pry.dataset.version.productionDate' | i18n }}</label>\n <input\n formControlName=\"productionDate\"\n id=\"productionDate\"\n class=\"a-form-field\"\n type=\"datetime-local\"\n [max]=\"maxDate\"\n [attr.aria-invalid]=\"productionDate.invalid\"\n />\n @if (productionDate.invalid) {\n <label id=\"productionDate-error\" for=\"productionDate\" class=\"a-label a-label--help -error\">\n @if (productionDate.errors?.['required']) {\n <span>{{ '@pry.dataset.form.obligatory' | i18n }}</span>\n } @else if (productionDate.errors?.['dateValidator']) {\n <span>{{ '@pry.dataset.form.date' | i18n }}</span>\n }\n </label>\n }\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\">{{ '@pry.dataset.version.producer' | i18n }}</label>\n <input formControlName=\"producer\" id=\"producer\" class=\"a-form-field\" type=\"text\" maxlength=\"100\" />\n @if (producer.touched && producer.invalid) {\n <label id=\"producer-error\" for=\"producer\" class=\"a-label a-label--help -error\">\n @if (producer.errors?.['required']) {\n <span>{{ '@pry.dataset.form.obligatory' | i18n }}</span>\n }\n </label>\n }\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\">{{ '@pry.dataset.version.additionalInformation' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n <div class=\"o-import__actions u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"form.invalid\">\n {{ '@pry.import.import' | i18n }}\n </button>\n </div>\n </form>\n <div class=\"o-import__message\" [class.u-visually-hidden]=\"!showMessage\" #message>\n <span>\n {{ '@pry.import.consultDataset1' | i18n }}\n <strong>{{ dataset.value?.id ?? '' | translateId: { type: 'datasource', output: 'name' } | async }}</strong>\n {{ '@pry.import.consultDataset2' | i18n }}\n </span>\n </div>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n import: {\n title: 'Import data',\n datasetImport: 'Import in :',\n import: 'Import',\n errorTitle: 'Import failed',\n successTitle: 'Import successful',\n uploadTitlezip: 'Choose a .zip file',\n uploadTitlecsv: 'Choose a .csv file',\n warning: 'File must be under 2GB, or must be imported via directly via APIs.',\n tooLarge: 'File is too large ({{current}} > 2GB), please use APIs to import this file.',\n selectFile: 'Select file',\n importedLines: 'imported lines',\n consultDataset1: 'The import is in progress, see the ',\n consultDataset2: ' dataset page to check its condition',\n errors: 'errors',\n error: 'Error on import: {{msg}}',\n errorCode: {\n 409: 'Import already in progress, please try again later.'\n },\n line: 'Line {{line}}: ',\n withoutLine: 'Global errors: ',\n dataset: 'Dataset',\n fileType: 'Select file type',\n code: {\n UNRECOGNIZED: 'Provided file contains a column \"{{name}}\", which is not present in the chosen dataset',\n FILE_MANDATORY: 'No file was provided',\n NO_ATTRIBUTES: 'No corresponding attribute found in uploaded file',\n FORMAT: '\"{{name}}\": \"{{receivedValue}}\" could not be converted to type \"{{type}}\"',\n STORAGE: 'Storage stack trace error: {{elasticError}}'\n },\n normalize: 'Standardize geographic shapes'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n import: {\n title: 'Import de données',\n datasetImport: 'Importer dans un jeu de données:',\n import: 'Importer',\n errorTitle: \"L'import a échoué\",\n successTitle: 'Import de données réussi',\n uploadTitlezip: 'Choisir un fichier .zip',\n uploadTitlecsv: 'Choisir un fichier .csv',\n warning:\n 'Attention, le fichier ne doit pas dépasser 2GB pour être intégrer via cet écran. Le cas échéant, votre fichier devra être importé via les API',\n tooLarge: 'Fichier trop volumineux ({{current}} > 2GB), veuillez utiliser les API pour importer ces données',\n selectFile: 'Sélectionner un fichier',\n importedLines: 'lignes importée(s)',\n consultDataset1: \"L'import est en cours, consultez la page du jeu de données \",\n consultDataset2: ' pour vérifier son état',\n shapefileState: ' pour vérifier son état',\n error: \"Erreur lors de l'import: {{msg}}\",\n errors: 'erreur(s)',\n errorCode: {\n 409: 'Import déjà en cours, veuillez réessayer plus tard.'\n },\n line: 'Ligne {{line}}: ',\n withoutLine: 'Erreurs globales: ',\n dataset: 'Jeu de données',\n fileType: 'Sélectionner un type de fichier',\n code: {\n UNRECOGNIZED:\n \"Le fichier fourni contient une colonne «\\u00A0{{name}}\\u00A0», qui n'est pas présente dans le jeu de données choisi\",\n FILE_MANDATORY: 'Aucun fichier fourni',\n NO_ATTRIBUTES: \"Aucun attribut correspondant n'a été trouvé dans le fichier fourni\",\n FORMAT:\n \"«\\u00A0{{name}}\\u00A0»: «\\u00A0{{receivedValue}}\\u00A0» n'a pas pu être convertie en type «\\u00A0{{type}}\\u00A0»\",\n STORAGE: 'Storage stack trace error: {{elasticError}}'\n },\n normalize: 'Normaliser les formes géographiques'\n }\n }\n};\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PRY_ACCESS_GUARD } from '@provoly/dashboard';\nimport { PryImportComponent } from './components/import.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: PryImportComponent,\n data: {\n access: {\n module: 'dashboard',\n page: 'import'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PryImportRoutingModule {}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, DatasetVersion } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ImportService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n upload(\n file: File,\n datasetId: string,\n fileType: string,\n normalizeGeo: boolean = false,\n datasetVersionInformation: Partial<DatasetVersion>\n ) {\n const formData = new FormData();\n let mimeType = '';\n\n if (fileType === 'csv') {\n mimeType = 'text/csv';\n } else if (fileType === 'zip') {\n mimeType = 'application/shp';\n }\n formData.append('file', new Blob([file], { type: mimeType }), file.name);\n formData.append('normalizeGeo', normalizeGeo.toString());\n formData.append('datasetVersionInformation', JSON.stringify(datasetVersionInformation));\n\n return this.store.select(ConfigSelectors.dataUrl).pipe(\n mergeMap((url) =>\n this.httpClient.post<Partial<DatasetVersion>>(`${url}/imports/dataset/id/${datasetId}`, formData, {\n headers: new HttpHeaders({ 'File-Content-Type': mimeType })\n })\n )\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { PryI18nService, PrySnackbarService } from '@provoly/dashboard';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport { ImportActions } from './import.actions';\nimport { ImportService } from './import.service';\n\n@Injectable()\nexport class ImportEffects {\n upload$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ImportActions.upload),\n mergeMap((action) =>\n this.service\n .upload(action.file, action.dataset, action.fileType, action.normalizeGeo, action.datasetVersionInformation)\n .pipe(\n map((uploadedDataset) => {\n return ImportActions.uploadSuccess({ uploadedDataset: uploadedDataset });\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 400 || error.status === 500) {\n return [ImportActions.uploadFailure({ errors: error.error.itemErrors })];\n } else if (error.status === 409) {\n this.snackbar.open({\n type: 'error',\n message: this.translateService.instant('@pry.import.errorCode.' + error.status)\n });\n return [ImportActions.uploadFailure({ errors: error.error.itemErrors })];\n }\n this.snackbar.open({\n type: 'error',\n message: this.translateService.instant('@pry.import.error', { msg: error.error.message })\n });\n throw error;\n })\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: ImportService,\n private snackbar: PrySnackbarService,\n private translateService: PryI18nService\n ) {}\n}\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { PryCoreModule, PryI18nModule, PryI18nService, PryIconModule, PrySelectModule } from '@provoly/dashboard';\nimport { PryImportComponent } from './components/import.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryImportRoutingModule } from './import-routing.module';\nimport { ImportEffects } from './store/import.effects';\nimport { importFeatureKey, importReducer } from './store/import.reducer';\nimport { PryImportCssComponent } from './style/css.component';\nimport {PryCheckboxModule} from \"@provoly/dashboard/components/checkbox\";\nimport { PryTextEditorModule } from '@provoly/dashboard/components/text-editor';\n\n@NgModule({\n providers: [DatePipe],\n declarations: [PryImportComponent, PryImportCssComponent],\n imports: [\n PryCoreModule,\n PrySelectModule,\n PryI18nModule,\n CommonModule,\n PryIconModule,\n FormsModule,\n PryImportRoutingModule,\n StoreModule.forFeature(importFeatureKey, importReducer),\n EffectsModule.forFeature([ImportEffects]),\n PryCheckboxModule,\n ReactiveFormsModule,\n PryTextEditorModule\n ],\n exports: [PryImportComponent]\n})\nexport class PryImportModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'import', frTranslations);\n this.pryTranslateService.addLangObject('en', 'import', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromPipeline.importFeatureKey","i1","i2","i6.PryImportCssComponent","mergeMap","map","i2.ImportService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-import.mjs","sources":["../../../../projects/provoly/dashboard/import/i18n/en.translations.ts","../../../../projects/provoly/dashboard/import/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/import/store/import.actions.ts","../../../../projects/provoly/dashboard/import/store/import.reducer.ts","../../../../projects/provoly/dashboard/import/store/import.selectors.ts","../../../../projects/provoly/dashboard/import/style/css.component.ts","../../../../projects/provoly/dashboard/import/components/form/import-form.component.ts","../../../../projects/provoly/dashboard/import/components/form/import-form.component.html","../../../../projects/provoly/dashboard/import/import-routing.module.ts","../../../../projects/provoly/dashboard/import/store/import.service.ts","../../../../projects/provoly/dashboard/import/store/import.effects.ts","../../../../projects/provoly/dashboard/import/components/version-modal/version-modal.component.ts","../../../../projects/provoly/dashboard/import/components/version-modal/version-modal.component.html","../../../../projects/provoly/dashboard/import/components/list/import-list.component.ts","../../../../projects/provoly/dashboard/import/components/list/import-list.component.html","../../../../projects/provoly/dashboard/import/import.module.ts","../../../../projects/provoly/dashboard/import/provoly-dashboard-import.ts"],"sourcesContent":["export const enTranslations = {\n '@pry': {\n importList: {\n title: 'List of imported data',\n filter: {\n dsName: 'Name',\n status: 'Import status',\n date: 'Import date'\n },\n dsName: 'Name',\n date: 'Date of creation',\n number: 'Version number',\n status: 'Version status',\n actions: 'Actions'\n },\n import: {\n title: 'Import data',\n datasetImport: 'Import in :',\n import: 'Import',\n errorTitle: 'Import failed',\n successTitle: 'Import successful',\n uploadTitlezip: 'Choose a .zip file',\n uploadTitlecsv: 'Choose a .csv file',\n warning: 'File must be under 2GB, or must be imported via directly via APIs.',\n tooLarge: 'File is too large ({{current}} > 2GB), please use APIs to import this file.',\n selectFile: 'Select file',\n importedLines: 'imported lines',\n consultDataset1: 'The import is in progress, see the ',\n consultDataset2: ' dataset page to check its condition',\n errors: 'errors',\n error: 'Error on import: {{msg}}',\n errorCode: {\n 409: 'Import already in progress, please try again later.'\n },\n line: 'Line {{line}}: ',\n withoutLine: 'Global errors: ',\n dataset: 'Dataset',\n fileType: 'Select file type',\n code: {\n UNRECOGNIZED: 'Provided file contains a column \"{{name}}\", which is not present in the chosen dataset',\n FILE_MANDATORY: 'No file was provided',\n NO_ATTRIBUTES: 'No corresponding attribute found in uploaded file',\n FORMAT: '\"{{name}}\": \"{{receivedValue}}\" could not be converted to type \"{{type}}\"',\n STORAGE: 'Storage stack trace error: {{elasticError}}'\n },\n normalize: 'Standardize geographic shapes',\n multiple: 'Upload multiple files'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n importList: {\n title: 'Liste des données intégrées',\n filter: {\n dsName: 'Nom',\n status: 'Status import',\n date: 'Date import'\n },\n dsName: 'Nom',\n date: 'Date de création de la version',\n number: 'N° Version',\n status: 'Status de version',\n actions: 'Actions'\n },\n import: {\n title: 'Import de données',\n datasetImport: 'Importer dans un jeu de données:',\n import: 'Importer',\n errorTitle: \"L'import a échoué\",\n successTitle: 'Import de données réussi',\n uploadTitlezip: 'Choisir un fichier .zip',\n uploadTitlecsv: 'Choisir un fichier .csv',\n warning:\n 'Attention, le fichier ne doit pas dépasser 2GB pour être intégrer via cet écran. Le cas échéant, votre fichier devra être importé via les API',\n tooLarge: 'Fichier trop volumineux ({{current}} > 2GB), veuillez utiliser les API pour importer ces données',\n selectFile: 'Sélectionner un fichier',\n importedLines: 'lignes importée(s)',\n consultDataset1: \"L'import est en cours, consultez la page du jeu de données \",\n consultDataset2: ' pour vérifier son état',\n shapefileState: ' pour vérifier son état',\n error: \"Erreur lors de l'import: {{msg}}\",\n errors: 'erreur(s)',\n errorCode: {\n 409: 'Import déjà en cours, veuillez réessayer plus tard.'\n },\n line: 'Ligne {{line}}: ',\n withoutLine: 'Erreurs globales: ',\n dataset: 'Jeu de données',\n fileType: 'Sélectionner un type de fichier',\n code: {\n UNRECOGNIZED:\n \"Le fichier fourni contient une colonne «\\u00A0{{name}}\\u00A0», qui n'est pas présente dans le jeu de données choisi\",\n FILE_MANDATORY: 'Aucun fichier fourni',\n NO_ATTRIBUTES: \"Aucun attribut correspondant n'a été trouvé dans le fichier fourni\",\n FORMAT:\n \"«\\u00A0{{name}}\\u00A0»: «\\u00A0{{receivedValue}}\\u00A0» n'a pas pu être convertie en type «\\u00A0{{type}}\\u00A0»\",\n STORAGE: 'Storage stack trace error: {{elasticError}}'\n },\n normalize: 'Normaliser les formes géographiques',\n multiple: 'Import multiple'\n }\n }\n};\n","import { createAction, props } from '@ngrx/store';\nimport { DatasetVersion } from '@provoly/dashboard';\n\nexport const ImportActions = {\n upload: createAction(\n '[Import] import data',\n props<{\n file: File;\n dataset: string;\n fileType: string;\n normalizeGeo?: boolean;\n datasetVersionInformation: Partial<DatasetVersion>;\n }>()\n ),\n uploadSuccess: createAction('[Import] import data successful', props<{ uploadedDataset: Partial<DatasetVersion> }>()),\n uploadFailure: createAction('[Import] import data failure', props<{ errors: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { ImportActions } from './import.actions';\nimport { DatasetVersion } from '@provoly/dashboard';\n\nexport const importFeatureKey = '@pry/import';\n\nexport interface ImportState {\n loading: boolean;\n uploadedDataset?: Partial<DatasetVersion>;\n}\n\nexport const initialImportState: ImportState = {\n loading: false\n};\n\nexport const importReducer = createReducer(\n initialImportState,\n on(ImportActions.upload, (state) => ({\n ...state,\n loading: true\n })),\n on(ImportActions.uploadSuccess, (state, action) => ({\n ...state,\n loading: false,\n uploadedDataset: action.uploadedDataset\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromPipeline from './import.reducer';\n\nconst feature = createFeatureSelector<fromPipeline.ImportState>(fromPipeline.importFeatureKey);\n\nconst loading = createSelector(feature, (state) => state.loading);\nconst uploadedDataset = createSelector(feature, (state) => state?.uploadedDataset);\n\nexport const ImportSelectors = {\n loading,\n uploadedDataset\n};\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-import-css',\n template: '',\n styleUrls: ['./_o-import.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryImportCssComponent {}\n","import { Component, ElementRef, EventEmitter, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceService,\n DateUtils,\n PryDatasetType,\n PryI18nService,\n PrySnackbarService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { map, Observable, take } from 'rxjs';\nimport { ImportActions } from '../../store/import.actions';\nimport { ImportSelectors } from '../../store/import.selectors';\nimport { withLatestFrom } from 'rxjs/operators';\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\n\ntype FileExtension = 'csv' | 'zip';\n\ninterface ImportForm {\n fileType: FormControl<FileExtension>;\n file: FormControl<File | null>;\n dataset: FormControl<Dataset | null>;\n normalizeGeo: FormControl<boolean>;\n productionDate: FormControl<string>;\n producer: FormControl<string>;\n additionalInformation: FormControl<string | null>;\n}\n\n@Component({\n selector: 'pry-import-form',\n templateUrl: './import-form.component.html'\n})\nexport class PryImportFormComponent extends SubscriptionnerDirective implements OnDestroy {\n datasets$: Observable<Dataset[]>;\n loading$: Observable<boolean>;\n\n @ViewChild('message') message!: ElementRef<HTMLDivElement>;\n showMessage: boolean = false;\n\n maxDate = DateUtils.formatDate(new Date());\n\n form = new FormGroup<ImportForm>({\n fileType: new FormControl('csv', {\n validators: [Validators.required],\n nonNullable: true\n }),\n file: new FormControl(null, Validators.required),\n dataset: new FormControl(null, Validators.required),\n normalizeGeo: new FormControl(false, { nonNullable: true }),\n productionDate: new FormControl(this.maxDate, {\n validators: [Validators.required, DateUtils.onlyPastDateValidator],\n nonNullable: true\n }),\n producer: new FormControl('', {\n validators: [Validators.required],\n nonNullable: true\n }),\n additionalInformation: new FormControl(null)\n });\n\n fileTypes: { [key in FileExtension]: { label: string; value: FileExtension; extension: string } } = {\n csv: {\n label: 'Csv',\n value: 'csv',\n extension: '.csv'\n },\n zip: {\n label: 'Shapefile',\n value: 'zip',\n extension: '.zip'\n }\n };\n\n multipleImports = false;\n @Output() multipleImportsValue = new EventEmitter<boolean>();\n @Output() formSubmitted = new EventEmitter<void>();\n\n constructor(\n private store: Store,\n private dsService: DataSourceService,\n private snackbar: PrySnackbarService,\n private i18nService: PryI18nService\n ) {\n super();\n store.dispatch(DataSourceActions.dataset.loadDataset());\n this.store.dispatch(DataSourceActions.dataset.listVersions({}));\n this.datasets$ = store\n .select(DataSourceSelectors.datasets)\n .pipe(\n map((datasets) =>\n datasets\n .filter((dataset) => dataset.type === PryDatasetType.CLOSED)\n .sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1))\n )\n );\n this.loading$ = store.select(ImportSelectors.loading);\n\n this.subscriptions.add(\n this.form.get('dataset')?.valueChanges.subscribe((dataset) => {\n this.clearMessage();\n if (dataset && dataset.activeVersion) {\n this.getLastActiveVersion(dataset);\n } else {\n this.form.patchValue({ producer: '', productionDate: DateUtils.formatDate(new Date()) });\n this.producer.markAsPristine();\n }\n })\n );\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.clearMessage();\n }\n\n get fileType(): AbstractControl<FileExtension> {\n return this.form.controls['fileType'];\n }\n\n get file(): AbstractControl<File | null> {\n return this.form.controls['file'];\n }\n\n get dataset(): AbstractControl<Dataset | null> {\n return this.form.controls['dataset'];\n }\n\n get normalizeGeo(): AbstractControl<boolean> {\n return this.form.controls['normalizeGeo'];\n }\n\n get productionDate(): AbstractControl<string> {\n return this.form.controls['productionDate'];\n }\n\n get producer(): AbstractControl<string> {\n return this.form.controls['producer'];\n }\n\n uploadedChange($event: File): void {\n if ($event.size > 1024 * 1024 * 1024 * 2) {\n this.snackbar.open({\n type: 'error',\n message: this.i18nService.instant('@pry.import.tooLarge', { current: this.getFileSize($event.size) })\n });\n } else {\n this.form.patchValue({ file: $event });\n }\n }\n\n submit(): void {\n const { file, dataset, fileType, normalizeGeo, producer, productionDate, additionalInformation } = this.form.value;\n if (file && dataset && fileType) {\n this.store.dispatch(\n ImportActions.upload({\n file,\n fileType,\n normalizeGeo,\n dataset: dataset.id,\n datasetVersionInformation: {\n productionDate: productionDate ? new Date(productionDate).toISOString() : undefined,\n producer,\n additionalInformation: !!additionalInformation ? additionalInformation : undefined\n }\n })\n );\n this.showMessage = true;\n setTimeout(() => this.message.nativeElement.scrollIntoView({ behavior: 'smooth' }));\n this.form.patchValue({ file: null });\n this.formSubmitted.emit();\n }\n }\n\n getFileSize(size: number): string {\n if (size >= 1024 && size < 1024 * 1024) {\n return `${(size / 1024).toFixed(1)} KB`;\n } else if (size >= 1024 * 1024 && size < 1024 * 1024 * 1024) {\n return `${(size / (1024 * 1024)).toFixed(1)} MB`;\n } else if (size >= 1024 * 1024 * 1024) {\n return `${(size / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n }\n return `${size} bytes`;\n }\n\n getLastActiveVersion(dataset: Dataset): void {\n this.subscriptions.add(\n this.dsService\n .getLastActiveDatasetVersion(dataset.id)\n .pipe(take(1))\n .subscribe((version) => {\n if (version && version.producer) this.form.patchValue({ producer: version.producer });\n })\n );\n }\n\n clearMessage(): void {\n if (this.showMessage) this.showMessage = false;\n }\n\n multipleImportChange() {\n this.multipleImports = !this.multipleImports;\n this.multipleImportsValue.emit(this.multipleImports);\n }\n\n protected readonly Object = Object;\n protected readonly PryDatasetType = PryDatasetType;\n}\n","<pry-import-css></pry-import-css>\n<div class=\"o-import u-display-flex -column\">\n <div class=\"o-import__header u-display-flex -justify-space-between\">\n <h1 class=\"a-h1\">{{ '@pry.import.title' | i18n }}</h1>\n <pry-checkbox [ngModel]=\"multipleImports\" (click)=\"multipleImportChange()\">\n {{ '@pry.import.multiple' | i18n }}\n </pry-checkbox>\n </div>\n <div class=\"o-import__form-container u-display-flex\">\n <form class=\"o-import__form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"datasets\">{{ '@pry.import.fileType' | i18n }}</label>\n <pry-select\n formControlName=\"fileType\"\n id=\"fileType\"\n [items]=\"Object.values(fileTypes)\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"upload_input\">\n {{ '@pry.import.uploadTitle' + fileType.value | i18n }}\n </label>\n <p>{{ '@pry.import.warning' | i18n }}</p>\n <div class=\"o-file-input\">\n @if (file.value?.size) {\n <div class=\"o-import__file\">\n <pry-icon iconSvg=\"download\"></pry-icon>\n <h3>{{ file.value?.name }}</h3>\n <span>{{ getFileSize(file.value?.size ?? 0) }}</span>\n </div>\n }\n <pry-upload\n id=\"upload_input\"\n [accept]=\"fileTypes[fileType.value].extension\"\n mode=\"files\"\n (uploadedFile)=\"uploadedChange($event)\"\n labelTranslate=\"@pry.import.selectFile\"\n ></pry-upload>\n </div>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"datasets\">{{ '@pry.import.datasetImport' | i18n }}</label>\n <pry-select\n formControlName=\"dataset\"\n id=\"datasets\"\n [items]=\"datasets$ | async\"\n [placeholder]=\"'@pry.import.dataset' | i18n\"\n bindLabel=\"name\"\n [autocomplete]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox formControlName=\"normalizeGeo\" inputId=\"normalizeGeo\">{{\n '@pry.import.normalize' | i18n\n }}</pry-checkbox>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"productionDate\">{{ '@pry.dataset.version.productionDate' | i18n }}</label>\n <input\n formControlName=\"productionDate\"\n id=\"productionDate\"\n class=\"a-form-field\"\n type=\"datetime-local\"\n [max]=\"maxDate\"\n [attr.aria-invalid]=\"productionDate.invalid\"\n />\n @if (productionDate.invalid) {\n <label id=\"productionDate-error\" for=\"productionDate\" class=\"a-label a-label--help -error\">\n @if (productionDate.errors?.['required']) {\n <span>{{ '@pry.dataset.form.obligatory' | i18n }}</span>\n } @else if (productionDate.errors?.['dateValidator']) {\n <span>{{ '@pry.dataset.form.date' | i18n }}</span>\n }\n </label>\n }\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"producer\">{{ '@pry.dataset.version.producer' | i18n }}</label>\n <input formControlName=\"producer\" id=\"producer\" class=\"a-form-field\" type=\"text\" maxlength=\"100\" />\n @if (producer.touched && producer.invalid) {\n <label id=\"producer-error\" for=\"producer\" class=\"a-label a-label--help -error\">\n @if (producer.errors?.['required']) {\n <span>{{ '@pry.dataset.form.obligatory' | i18n }}</span>\n }\n </label>\n }\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-h3\" for=\"additionalInformation\">{{ '@pry.dataset.version.additionalInformation' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\" id=\"additionalInformation\"></pry-text-editor>\n </div>\n <div class=\"o-import__actions u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"form.invalid\">\n {{ '@pry.import.import' | i18n }}\n </button>\n </div>\n </form>\n <div class=\"o-import__message\" [class.u-visually-hidden]=\"!showMessage\" #message>\n <span>\n {{ '@pry.import.consultDataset1' | i18n }}\n <strong>{{ dataset.value?.id ?? '' | translateId: { type: 'datasource', output: 'name' } | async }}</strong>\n {{ '@pry.import.consultDataset2' | i18n }}\n </span>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PRY_ACCESS_GUARD } from '@provoly/dashboard';\nimport { PryImportFormComponent } from './components/form/import-form.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: PryImportFormComponent,\n data: {\n access: {\n module: 'dashboard',\n page: 'import'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PryImportRoutingModule {}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors, DatasetVersion } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ImportService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n upload(\n file: File,\n datasetId: string,\n fileType: string,\n normalizeGeo: boolean = false,\n datasetVersionInformation: Partial<DatasetVersion>\n ) {\n const formData = new FormData();\n let mimeType = '';\n\n if (fileType === 'csv') {\n mimeType = 'text/csv';\n } else if (fileType === 'zip') {\n mimeType = 'application/shp';\n }\n formData.append('file', new Blob([file], { type: mimeType }), file.name);\n formData.append('normalizeGeo', normalizeGeo.toString());\n formData.append('datasetVersionInformation', JSON.stringify(datasetVersionInformation));\n\n return this.store.select(ConfigSelectors.dataUrl).pipe(\n mergeMap((url) =>\n this.httpClient.post<Partial<DatasetVersion>>(`${url}/imports/dataset/id/${datasetId}`, formData, {\n headers: new HttpHeaders({ 'File-Content-Type': mimeType })\n })\n )\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { PryI18nService, PrySnackbarService } from '@provoly/dashboard';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport { ImportActions } from './import.actions';\nimport { ImportService } from './import.service';\n\n@Injectable()\nexport class ImportEffects {\n upload$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ImportActions.upload),\n mergeMap((action) =>\n this.service\n .upload(action.file, action.dataset, action.fileType, action.normalizeGeo, action.datasetVersionInformation)\n .pipe(\n map((uploadedDataset) => {\n return ImportActions.uploadSuccess({ uploadedDataset: uploadedDataset });\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 400 || error.status === 500) {\n return [ImportActions.uploadFailure({ errors: error.error.itemErrors })];\n } else if (error.status === 409) {\n this.snackbar.open({\n type: 'error',\n message: this.translateService.instant('@pry.import.errorCode.' + error.status)\n });\n return [ImportActions.uploadFailure({ errors: error.error.itemErrors })];\n }\n this.snackbar.open({\n type: 'error',\n message: this.translateService.instant('@pry.import.error', { msg: error.error.message })\n });\n throw error;\n })\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: ImportService,\n private snackbar: PrySnackbarService,\n private translateService: PryI18nService\n ) {}\n}\n","import { Component, Inject, input } from '@angular/core';\nimport { DatasetVersion, PRY_DIALOG_DATA, PryDialogRef } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-version-modal',\n templateUrl: './version-modal.component.html'\n})\nexport class PryVersionModalComponent {\n version: DatasetVersion;\n\n constructor(\n private dialogRef: PryDialogRef<PryVersionModalComponent>,\n @Inject(PRY_DIALOG_DATA)\n private data: { version: DatasetVersion }\n ) {\n this.version = this.data.version;\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","<pry-import-css></pry-import-css>\n<div class=\"m-version-modal o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.toolbox.about' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"close()\">\n <pry-icon iconSvg=\"close\" [height]=\"20\" [width]=\"20\"></pry-icon>\n <h4 class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</h4>\n </button>\n </div>\n </div>\n @if (version) {\n <ul class=\"m-version-modal__list u-display-flex -column -gap-20\">\n <li>\n <h4 class=\"bold\">{{ '@pry.dataset.version.name' | i18n }}</h4>\n <span>{{ version.dataset.name }}</span>\n </li>\n <li>\n <h4>{{ '@pry.dataset.version.number' | i18n }}</h4>\n <span>{{ version.version }}</span>\n </li>\n <li>\n <h4 class=\"a-h4\">{{ '@pry.dataset.version.importDate' | i18n }}</h4>\n <span>{{ version.productionDate }}</span>\n </li>\n <li>\n <h4>{{ '@pry.dataset.version.stateTitle' | i18n }}</h4>\n <span>{{\n version.id === version.dataset.activeVersion?.id\n ? '@pry.dataset.version.state.currentlyActive'\n : ('@pry.dataset.version.state.' + version.state | i18n)\n }}</span>\n </li>\n <li>\n <h4>{{ '@pry.dataset.version.fileName' | i18n }}</h4>\n <span>{{ version.fileName }}</span>\n </li>\n <li>\n <h4>{{ '@pry.dataset.version.producer' | i18n }}</h4>\n <span>{{ version.producer }}</span>\n </li>\n @if (version.additionalInformation) {\n <li>\n <h4>{{ '@pry.dataset.version.additionalInformation' | i18n }}</h4>\n <span>{{ version.additionalInformation | mdToHtml }}</span>\n </li>\n }\n </ul>\n }\n</div>\n","import { Component, input, OnInit } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\nimport {\n Dataset,\n DatasetVersion,\n DataSourceActions,\n DataSourceSelectors,\n PryDialogService,\n PrySortChange,\n PryStatusModalComponent,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { PryVersionModalComponent } from '../version-modal/version-modal.component';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'pry-import-list',\n templateUrl: './import-list.component.html'\n})\nexport class PryImportListComponent extends SubscriptionnerDirective implements OnInit {\n loadDataAction = input<Action>(DataSourceActions.dataset.listVersions({}));\n refreshClick = input<Observable<void>>();\n\n datasets$: Observable<Dataset[]>;\n possibleStatus = ['LOADING', 'INDEXING', 'INACTIVE', 'ERROR', 'ACTIVE', 'DELETING', 'DELETE_ERROR'];\n datasetVersions$: Observable<DatasetVersion[]>;\n totalVersionCount$: Observable<number>;\n filters: { dataset?: string; status?: string; dateMin?: string; dateMax?: string } = {\n dataset: undefined,\n status: undefined,\n dateMin: undefined,\n dateMax: undefined\n };\n sort: { orderBy?: 'DATASET_NAME' | 'DATE'; sortBy?: 'asc' | 'desc' } = {};\n\n constructor(\n private store: Store,\n private dialog: PryDialogService\n ) {\n super();\n this.store.dispatch(DataSourceActions.dataset.loadDataset());\n this.datasets$ = this.store.select(DataSourceSelectors.datasets);\n this.datasetVersions$ = this.store.select(DataSourceSelectors.datasetVersions);\n this.totalVersionCount$ = this.store.select(DataSourceSelectors.totalVersionCount);\n }\n\n ngOnInit() {\n this.subscriptions.add(this.refreshClick()?.subscribe(() => this.loadData()));\n }\n\n clearFilters(): void {\n this.filters = { dataset: undefined, status: undefined, dateMin: undefined, dateMax: undefined };\n }\n\n loadData(): void {\n this.store.dispatch({\n ...this.loadDataAction(),\n limit: 10,\n ...this.filters,\n ...this.sort\n });\n }\n\n openInfoModal(version: DatasetVersion) {\n this.dialog.open(PryVersionModalComponent, {\n data: { version },\n overlayConfig: {\n positionStrategy: new GlobalPositionStrategy().centerVertically().right('20px'),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n }\n });\n }\n\n openErrorModal(version: DatasetVersion) {\n this.dialog.open(PryStatusModalComponent, {\n data: { version }\n });\n }\n\n sortChange($event: PrySortChange) {\n this.sort.sortBy = $event.direction as 'asc' | 'desc';\n this.sort.orderBy = $event.active as 'DATASET_NAME' | 'DATE';\n this.loadData();\n }\n}\n","<pry-import-css></pry-import-css>\n<div class=\"o-import-list u-display-flex -column -gap-20\">\n <h1 class=\"a-h1\">{{ '@pry.importList.title' | i18n }}</h1>\n <div class=\"o-import-list__filters u-display-flex -gap-20\">\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\" #dsRef>\n <label class=\"a-label m-filter__label\" for=\"dataset_name_filter\">\n {{ '@pry.importList.filter.dsName' | i18n }} : \n </label>\n <pry-select\n id=\"dataset_name_filter\"\n [items]=\"datasets$ | async\"\n [(ngModel)]=\"filters.dataset\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [elementRef]=\"dsRef\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\" #statusRef>\n <label class=\"a-label m-filter__label\" for=\"import_status\">\n {{ '@pry.importList.filter.status' | i18n }} : \n </label>\n <pry-select\n id=\"import_status\"\n [items]=\"possibleStatus\"\n [(ngModel)]=\"filters.status\"\n [clearable]=\"true\"\n aria-labelledby=\"item-label\"\n [elementRef]=\"statusRef\"\n i18nPrefix=\"@pry.dataset.version.stateFilter.\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <fieldset class=\"u-display-flex -align-center\">\n <legend class=\"a-label m-filter__label\">{{ '@pry.importList.filter.date' | i18n }} : </legend>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMin\" />\n <span class=\"m-filter__date-input-separator\"> - </span>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMax\" />\n </fieldset>\n </div>\n <button type=\"button\" class=\"a-btn a-btn--icon-only u-self-center\" (click)=\"clearFilters()\">\n <pry-icon iconSvg=\"clear_filter\" [width]=\"30\" [height]=\"30\"></pry-icon>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"loadData()\">\n {{ '@pry.toolbox.apply' | i18n }}\n <pry-icon iconSvg=\"refresh_filter\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n </div>\n <div class=\"o-import-list__content\">\n <table class=\"a-table\" prySortTable (prySortChange)=\"sortChange($event)\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th id=\"import_list_header_dataset\" prySortHeader=\"DATASET_NAME\">\n {{ '@pry.importList.dsName' | i18n }}\n </th>\n <th>{{ '@pry.importList.number' | i18n }}</th>\n <th id=\"import_list_header_date\" prySortHeader=\"DATE\" (sortChange)=\"sortChange($event)\">\n {{ '@pry.importList.date' | i18n }}\n </th>\n <th>{{ '@pry.importList.status' | i18n }}</th>\n <th>{{ '@pry.importList.actions' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (version of datasetVersions$ | async; track version.id) {\n <tr>\n <td>{{ version.dataset.name }}</td>\n <td>\n {{ version.version }}\n </td>\n <td>\n {{ version.productionDate | date: 'dd/MM/yyyy HH:mm' }}\n </td>\n <td class=\"u-display-flex -align-center -cell-with-icon\">\n @if (version.state === 'ACTIVE') {\n <pry-icon iconSvg=\"check\" class=\"check\" [height]=\"20\" [width]=\"20\"></pry-icon>\n } @else if (version.state === 'WARNING' || version.state === 'ERROR') {\n <pry-icon iconSvg=\"warning-triangle\" class=\"warning\" [height]=\"20\" [width]=\"20\"></pry-icon>\n }\n {{\n version.id === version.dataset.activeVersion?.id\n ? '@pry.dataset.version.state.currentlyActive'\n : ('@pry.dataset.version.state.' + version.state | i18n)\n }}\n </td>\n @if (version.state === 'ACTIVE' || version.state === 'INACTIVE') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openInfoModal(version)\">Consulter</button>\n </td>\n } @else if (version.state === 'ERROR' || version.state === 'WARNING') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openErrorModal(version)\">\n {{ version.state === 'ERROR' ? 'Consulter erreurs' : 'Consulter warnings' }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <pry-paginator\n [action]=\"loadDataAction()\"\n [nbPerPage]=\"10\"\n [totalItemNb]=\"(totalVersionCount$ | async)!\"\n class=\"u-self-center\"\n ></pry-paginator>\n</div>\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n PryCoreModule,\n PryDatePickerModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PrySinceDateModule, PrySortModule\n} from '@provoly/dashboard';\n\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryImportRoutingModule } from './import-routing.module';\nimport { ImportEffects } from './store/import.effects';\nimport { importFeatureKey, importReducer } from './store/import.reducer';\nimport { PryImportCssComponent } from './style/css.component';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryTextEditorModule } from '@provoly/dashboard/components/text-editor';\nimport { PryImportFormComponent } from './components/form/import-form.component';\nimport { PryImportListComponent } from './components/list/import-list.component';\nimport { PryPaginatorModule } from '@provoly/dashboard/components/paginator';\nimport { PryVersionModalComponent } from './components/version-modal/version-modal.component';\n\n@NgModule({\n providers: [DatePipe],\n declarations: [PryImportFormComponent, PryImportCssComponent, PryImportListComponent, PryVersionModalComponent],\n imports: [\n PryCoreModule,\n PrySelectModule,\n PryI18nModule,\n CommonModule,\n PryIconModule,\n FormsModule,\n PryImportRoutingModule,\n StoreModule.forFeature(importFeatureKey, importReducer),\n EffectsModule.forFeature([ImportEffects]),\n PryCheckboxModule,\n ReactiveFormsModule,\n PryTextEditorModule,\n PryDatePickerModule,\n PrySinceDateModule,\n PryPaginatorModule,\n PrySortModule\n ],\n exports: [PryImportFormComponent, PryImportListComponent, PryVersionModalComponent]\n})\nexport class PryImportModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'import', frTranslations);\n this.pryTranslateService.addLangObject('en', 'import', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromPipeline.importFeatureKey","i6.PryImportCssComponent","i7","i1","i2","mergeMap","map","i2.ImportService","i3","i2.PryImportCssComponent","i4","i5.PryImportCssComponent"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
|
12
12
|
import * as i1 from '@ngrx/store';
|
|
13
13
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
|
|
14
14
|
import * as i3 from '@provoly/dashboard';
|
|
15
|
-
import { SubscriptionnerDirective, NamedQueryTypes, ClassSelectors, PryVisibilityType, DataSourceSelectors, DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID, ConfigActions, DataSourceActions, PRY_DIALOG_DATA, defaultMenuStructure, DashboardGridLayout, DashboardSelectors, DashboardActions, PryDialogConfirmComponent, DatasourceUtils, SearchActions,
|
|
15
|
+
import { SubscriptionnerDirective, NamedQueryTypes, ClassSelectors, PryVisibilityType, DataSourceSelectors, DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID, ConfigActions, DataSourceActions, PRY_DIALOG_DATA, defaultMenuStructure, DashboardGridLayout, DashboardSelectors, DashboardActions, PryDialogConfirmComponent, DatasourceUtils, SearchActions, FieldType, OPERATOR_OPTIONS, FieldSelectors, FieldActions, ClassActions, PryCoreModule, PryIconModule, PrySelectModule, PryToggleModule, PryOverlayModule, PryDashboardModule, PryShareModule, PryDatePickerModule, PryI18nModule } from '@provoly/dashboard';
|
|
16
16
|
import * as i6 from '@provoly/dashboard/components/card';
|
|
17
17
|
import { PryCardModule } from '@provoly/dashboard/components/card';
|
|
18
18
|
import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
|
|
@@ -21,7 +21,7 @@ import { PryExpandPanelModule } from '@provoly/dashboard/components/expand-panel
|
|
|
21
21
|
import * as i6$1 from '@provoly/dashboard/components/filter';
|
|
22
22
|
import { PryFilterModule } from '@provoly/dashboard/components/filter';
|
|
23
23
|
import { map, take, Subscription, BehaviorSubject, combineLatest, combineLatestWith, filter, switchMap, Subject, tap, of } from 'rxjs';
|
|
24
|
-
import { map as map$1, debounceTime,
|
|
24
|
+
import { map as map$1, debounceTime, distinctUntilChanged, filter as filter$1, switchMap as switchMap$1, take as take$1, delay, withLatestFrom, mergeMap, first, catchError } from 'rxjs/operators';
|
|
25
25
|
import { v4 } from 'uuid';
|
|
26
26
|
import equal from 'fast-deep-equal/es6';
|
|
27
27
|
import * as i5$1 from '@angular/cdk/bidi';
|
|
@@ -677,8 +677,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
677
677
|
|
|
678
678
|
class PrySearchSelectAttributeComponent {
|
|
679
679
|
set id(val) {
|
|
680
|
-
this._attributes$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(filter((id) => id !== null), switchMap((id) => this.store.select(ClassSelectors.classById(id))), filter((clazz) => clazz !== undefined),
|
|
681
|
-
const attributes = [...(clazz.attributes ?? [])].filter((attr) =>
|
|
680
|
+
this._attributes$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(filter((id) => id !== null), switchMap((id) => this.store.select(ClassSelectors.classById(id))), filter((clazz) => clazz !== undefined), map((clazz) => {
|
|
681
|
+
const attributes = [...(clazz.attributes ?? [])].filter((attr) => attr.field.type !== FieldType.RAW);
|
|
682
682
|
return attributes.sort((a, b) => a.name.localeCompare(b.name));
|
|
683
683
|
}));
|
|
684
684
|
}
|
|
@@ -796,8 +796,8 @@ class PrySearchConditionComponent {
|
|
|
796
796
|
assignOperatorOption$(attributeId) {
|
|
797
797
|
this.operatorOptions$ = this.store
|
|
798
798
|
.select(SearchMonoClassSelectors.selectMonoClassSearchAttributeById(attributeId))
|
|
799
|
-
.pipe(filter((attr) => attr !== undefined),
|
|
800
|
-
const fieldType = field.type;
|
|
799
|
+
.pipe(filter((attr) => attr !== undefined), map((attr) => {
|
|
800
|
+
const fieldType = attr.field.type;
|
|
801
801
|
if (fieldType === FieldType.STRING || fieldType === FieldType.KEYWORD) {
|
|
802
802
|
return OPERATOR_OPTIONS.filter((el) => el.type === 'string');
|
|
803
803
|
}
|
|
@@ -920,7 +920,7 @@ class PrySearchOrderComponent {
|
|
|
920
920
|
this.order$ = this.store.select(SearchMonoClassSelectors.order);
|
|
921
921
|
this.classes$ = this.store.select(ClassSelectors.classes);
|
|
922
922
|
this.fields$ = this.store.select(FieldSelectors.fields);
|
|
923
|
-
this.variableAttributes$ = combineLatest([this.monoClassId$, this.classes$]).pipe(map$1(([classId, classes]) => classes.find((clazz) => clazz.id === classId)?.attributes ?? []),
|
|
923
|
+
this.variableAttributes$ = combineLatest([this.monoClassId$, this.classes$]).pipe(map$1(([classId, classes]) => classes.find((clazz) => clazz.id === classId)?.attributes ?? []), map$1((attrs) => attrs.filter((attr) => attr.field.type !== FieldType.RAW)), map$1((attrs) => attrs.concat({
|
|
924
924
|
name: this.translateService.instant('@pry.search.composed.orderNone'),
|
|
925
925
|
id: 'null'
|
|
926
926
|
})), distinctUntilChanged((p, c) => equal(p, c)));
|
|
@@ -1034,7 +1034,7 @@ class SearchMultiClassService {
|
|
|
1034
1034
|
const availableFields = [
|
|
1035
1035
|
...new Set(availableClasses.reduce((acc, c) => {
|
|
1036
1036
|
const fieldsByClass = c.attributes
|
|
1037
|
-
.map((a) => fields.find((f) => f.id === a.field))
|
|
1037
|
+
.map((a) => fields.find((f) => f.id === a.field.id))
|
|
1038
1038
|
.filter((f) => f !== undefined);
|
|
1039
1039
|
fieldsByClass.forEach((f) => {
|
|
1040
1040
|
classesByFields[f.id] = classesByFields[f.id] ? [...classesByFields[f.id], c.name] : [c.name];
|
|
@@ -1052,7 +1052,7 @@ class SearchMultiClassService {
|
|
|
1052
1052
|
const selectedFields = this.getSelectedFields(conditions);
|
|
1053
1053
|
const availableClasses = this.getClassesIntersectFields(selectedFields, classes);
|
|
1054
1054
|
return condition
|
|
1055
|
-
? availableClasses.filter((c) => c.attributes.find((a) => a.field === condition.field))
|
|
1055
|
+
? availableClasses.filter((c) => c.attributes.find((a) => a.field.id === condition.field))
|
|
1056
1056
|
: availableClasses;
|
|
1057
1057
|
}
|
|
1058
1058
|
getPatternForField(field) {
|
|
@@ -1080,7 +1080,7 @@ class SearchMultiClassService {
|
|
|
1080
1080
|
getClassesIntersectFields(fields, classes) {
|
|
1081
1081
|
return fields?.length > 0
|
|
1082
1082
|
? classes.filter((c) => {
|
|
1083
|
-
const fieldsInClass = c.attributes.map((a) => a.field);
|
|
1083
|
+
const fieldsInClass = c.attributes.map((a) => a.field.id);
|
|
1084
1084
|
const intersect = fields.filter((field) => fieldsInClass.includes(field)).length;
|
|
1085
1085
|
return intersect === fields.length;
|
|
1086
1086
|
})
|
|
@@ -2270,7 +2270,7 @@ class SearchMonoClassService {
|
|
|
2270
2270
|
}
|
|
2271
2271
|
else {
|
|
2272
2272
|
const id = masterId ?? v4();
|
|
2273
|
-
const field = this.getFieldFromAttribute(cond?.attribute, classes
|
|
2273
|
+
const field = this.getFieldFromAttribute(cond?.attribute, classes);
|
|
2274
2274
|
const condition = field
|
|
2275
2275
|
? {
|
|
2276
2276
|
id,
|
|
@@ -2314,14 +2314,13 @@ class SearchMonoClassService {
|
|
|
2314
2314
|
return '^.+$';
|
|
2315
2315
|
}
|
|
2316
2316
|
}
|
|
2317
|
-
getFieldFromAttribute(attributeId, classes
|
|
2317
|
+
getFieldFromAttribute(attributeId, classes) {
|
|
2318
2318
|
if (!attributeId) {
|
|
2319
2319
|
return undefined;
|
|
2320
2320
|
}
|
|
2321
|
-
|
|
2321
|
+
return classes
|
|
2322
2322
|
.reduce((acc, clazz) => [...acc, ...clazz.attributes], [])
|
|
2323
|
-
.find((a) => a.id === attributeId);
|
|
2324
|
-
return fields.find((f) => f.id === attribute?.field);
|
|
2323
|
+
.find((a) => a.id === attributeId)?.field;
|
|
2325
2324
|
}
|
|
2326
2325
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchMonoClassService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2327
2326
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchMonoClassService, providedIn: 'root' }); }
|
|
@@ -2343,7 +2342,7 @@ class SearchMonoClassEffects {
|
|
|
2343
2342
|
const condition = this.searchMonoClassService.initNormalizedConditionComposed(null);
|
|
2344
2343
|
return SearchMonoClassActions.addFirstNormalizedCondition({ condition });
|
|
2345
2344
|
})));
|
|
2346
|
-
this.addNormalizedConditionAttribute$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.addNormalizedConditionAttributeForConditionId), mergeMap((action) => combineLatest([of(action), this.store.select(FieldSelectors.fieldById(action.attribute.field))]).pipe(first())), map$1(([action, field]) => {
|
|
2345
|
+
this.addNormalizedConditionAttribute$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.addNormalizedConditionAttributeForConditionId), mergeMap((action) => combineLatest([of(action), this.store.select(FieldSelectors.fieldById(action.attribute.field.id))]).pipe(first())), map$1(([action, field]) => {
|
|
2347
2346
|
const pattern = this.searchMonoClassService.getPatternForField(field);
|
|
2348
2347
|
const isDate = field.type === FieldType.INSTANT;
|
|
2349
2348
|
const condition = {
|