geonetwork-ui 2.5.0-dev.50bf7a85a → 2.5.0-dev.5d0c263b8
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/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +11 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -2
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +20 -17
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +25 -9
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +14 -13
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +8 -8
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
- package/esm2022/libs/feature/editor/src/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -5
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -11
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
- package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +15 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
- package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +50 -35
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +23 -3
- package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +88 -7
- package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
- package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +6 -4
- package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
- package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
- package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +10 -3
- package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
- package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
- package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
- package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +19 -11
- package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +13 -9
- package/esm2022/translations/de.json +5 -77
- package/esm2022/translations/en.json +5 -77
- package/esm2022/translations/es.json +3 -75
- package/esm2022/translations/fr.json +17 -89
- package/esm2022/translations/it.json +22 -93
- package/esm2022/translations/nl.json +3 -75
- package/esm2022/translations/pt.json +3 -75
- package/fesm2022/geonetwork-ui.mjs +583 -949
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
- package/libs/feature/editor/src/index.d.ts +1 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +1 -0
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
- package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
- package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +5 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts +11 -9
- package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +0 -1
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +23 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/widgets/src/index.d.ts +0 -1
- package/libs/ui/widgets/src/index.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts +1 -1
- package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
- package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
- package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
- package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
- package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +19 -17
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +22 -16
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +44 -13
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +24 -26
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +165 -0
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -9
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
- package/src/libs/feature/editor/src/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +3 -3
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +1 -0
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +10 -10
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
- package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
- package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
- package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
- package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
- package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +3 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +7 -0
- package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +3 -1
- package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +2 -2
- package/src/libs/ui/elements/src/lib/image-input/image-input.component.html +20 -15
- package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +49 -35
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +21 -9
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +13 -0
- package/src/libs/ui/inputs/src/index.ts +0 -1
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +36 -19
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +85 -2
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
- package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +3 -2
- package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +1 -1
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
- package/src/libs/ui/widgets/src/index.ts +0 -1
- package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +36 -11
- package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.ts +9 -1
- package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
- package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
- package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
- package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
- package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
- package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
- package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +34 -11
- package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
- package/translations/de.json +5 -77
- package/translations/en.json +5 -77
- package/translations/es.json +3 -75
- package/translations/fr.json +17 -89
- package/translations/it.json +22 -93
- package/translations/nl.json +3 -75
- package/translations/pt.json +3 -75
- package/translations/sk.json +3 -75
- package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
- package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
- package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
- package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
- package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
- package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
- package/src/libs/data-access/datafeeder/src/index.ts +0 -1
- package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
- package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
- package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
- package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
- package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
- package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
- package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
- package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
- package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
- package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
- package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
- package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
- package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
- package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
- package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
- package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
- package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
- package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
- package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
- package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
- package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
- package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
- package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
- package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
- package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
- package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
|
@@ -16,7 +16,7 @@ import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-comp
|
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
17
|
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, first as first$1, share, pairwise, delay, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
18
|
import * as i1$2 from '@angular/common';
|
|
19
|
-
import { CommonModule, NgOptimizedImage, DatePipe, NgIf } from '@angular/common';
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgOptimizedImage, DatePipe, NgIf } from '@angular/common';
|
|
20
20
|
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, timer, takeUntil, EMPTY, mergeMap as mergeMap$1, startWith as startWith$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
|
|
21
21
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
22
22
|
import chroma from 'chroma-js';
|
|
@@ -26,7 +26,7 @@ import { createAction, props, createReducer, on, createFeatureSelector, createSe
|
|
|
26
26
|
import EmblaCarousel from 'embla-carousel';
|
|
27
27
|
import * as i2$2 from '@ng-icons/core';
|
|
28
28
|
import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
30
|
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matMoreHoriz, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
31
31
|
import * as i1$4 from '@angular/material/tooltip';
|
|
32
32
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
@@ -37,12 +37,11 @@ import * as i1$6 from '@angular/material/autocomplete';
|
|
|
37
37
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
38
38
|
import * as i3 from 'ngx-dropzone';
|
|
39
39
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
40
|
-
import * as i5 from 'ngx-chips';
|
|
41
40
|
import { TagInputModule } from 'ngx-chips';
|
|
42
41
|
import * as i1$5 from '@angular/material/progress-spinner';
|
|
43
42
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
44
43
|
import tippy from 'tippy.js';
|
|
45
|
-
import { matErrorOutlineOutline, matCloudDownloadOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline,
|
|
44
|
+
import { matErrorOutlineOutline, matInfoOutline, matCloudDownloadOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matHomeWorkOutline, matSwipeOutline, matLayersOutline, matAddCircleOutlineOutline } from '@ng-icons/material-icons/outline';
|
|
46
45
|
import * as i2 from '@angular/material/core';
|
|
47
46
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
48
47
|
import * as i1$7 from '@angular/material/checkbox';
|
|
@@ -1843,7 +1842,9 @@ function writeSpatialRepresentation$1(record, rootEl) {
|
|
|
1843
1842
|
pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:spatialRepresentationType', 'gmd:MD_SpatialRepresentationTypeCode'), writeAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_SpatialRepresentationTypeCode'), writeAttribute('codeListValue', record.spatialRepresentation))(rootEl);
|
|
1844
1843
|
}
|
|
1845
1844
|
function writeGraphicOverviews(record, rootEl) {
|
|
1846
|
-
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:graphicOverview'), appendChildren(...record.overviews
|
|
1845
|
+
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:graphicOverview'), appendChildren(...record.overviews
|
|
1846
|
+
.filter((overview) => overview.url)
|
|
1847
|
+
.map((overview) => pipe(createNestedElement('gmd:graphicOverview', 'gmd:MD_BrowseGraphic'), appendChildren(pipe(createElement('gmd:fileName'), writeCharacterString(overview.url.toString()))), 'description' in overview
|
|
1847
1848
|
? appendChildren(pipe(createElement('gmd:fileDescription'), writeCharacterString(overview.description)))
|
|
1848
1849
|
: noop))))(rootEl);
|
|
1849
1850
|
}
|
|
@@ -18621,8 +18622,6 @@ var de = {
|
|
|
18621
18622
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
18622
18623
|
"chart.type.pie": "Kreisdiagramm",
|
|
18623
18624
|
"dashboard.catalog.allRecords": "Metadatenkatalog",
|
|
18624
|
-
"dashboard.catalog.contacts": "Kontakte",
|
|
18625
|
-
"dashboard.catalog.thesaurus": "Thesaurus",
|
|
18626
18625
|
"dashboard.createRecord": "Neuer Eintrag",
|
|
18627
18626
|
"dashboard.importRecord": "",
|
|
18628
18627
|
"dashboard.importRecord.importExternal": "",
|
|
@@ -18635,29 +18634,10 @@ var de = {
|
|
|
18635
18634
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
18636
18635
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
18637
18636
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
18638
|
-
"dashboard.records.templates": "Vorlagen",
|
|
18639
18637
|
"dashboard.records.userDetail": "Name",
|
|
18640
18638
|
"dashboard.records.userEmail": "E-Mail",
|
|
18641
18639
|
"dashboard.records.username": "Benutzername",
|
|
18642
18640
|
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
18643
|
-
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
18644
|
-
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
18645
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
18646
|
-
"datafeeder.analysisProgressBar.subtitle": "Die Analyse kann einige Minuten dauern. Bitte warten Sie.",
|
|
18647
|
-
"datafeeder.analysisProgressBar.title": "Analyse in Bearbeitung",
|
|
18648
|
-
"datafeeder.datasetValidation.datasetInformation": "Der bereitgestellte Datensatz enthält {number} Elemente",
|
|
18649
|
-
"datafeeder.datasetValidation.submitButton": "OK, meine Daten sind korrekt",
|
|
18650
|
-
"datafeeder.datasetValidation.title": "Stellen Sie sicher, dass Ihre Daten korrekt sind",
|
|
18651
|
-
"datafeeder.datasetValidation.unknown": " - ",
|
|
18652
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
18653
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
18654
|
-
"datafeeder.form.abstract": "Wie würden Sie Ihren Datensatz beschreiben?",
|
|
18655
|
-
"datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
|
|
18656
|
-
"datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
|
|
18657
|
-
"datafeeder.form.dropdown": "Für welche Skala wurde er erstellt?",
|
|
18658
|
-
"datafeeder.form.tags": "Wählen Sie einen oder mehrere Tage aus, die zu Ihrem Datensatz passen",
|
|
18659
|
-
"datafeeder.form.title": "Geben Sie Ihrem Datensatz den besten Titel",
|
|
18660
|
-
"datafeeder.formsPage.title": "Erzählen Sie uns mehr über Ihren Datensatz",
|
|
18661
18641
|
"datafeeder.month.april": "April",
|
|
18662
18642
|
"datafeeder.month.august": "August",
|
|
18663
18643
|
"datafeeder.month.december": "Dezember",
|
|
@@ -18670,59 +18650,6 @@ var de = {
|
|
|
18670
18650
|
"datafeeder.month.november": "November",
|
|
18671
18651
|
"datafeeder.month.october": "Oktober",
|
|
18672
18652
|
"datafeeder.month.september": "September",
|
|
18673
|
-
"datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist.",
|
|
18674
|
-
"datafeeder.publish.illustration.title": "Ein weiterer Datensatz \n zum Veröffentlichen?",
|
|
18675
|
-
"datafeeder.publish.subtitle": "Das Veröffentlichen kann einige Minuten dauern.",
|
|
18676
|
-
"datafeeder.publish.title": "Vielen Dank! \n Ihr Datensatz wird veröffentlicht",
|
|
18677
|
-
"datafeeder.publish.upload": "Jetzt hochladen",
|
|
18678
|
-
"datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
|
|
18679
|
-
"datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
|
|
18680
|
-
"datafeeder.publishSuccess.mapViewer": "Kartenviewer",
|
|
18681
|
-
"datafeeder.publishSuccess.ogcFeature": "",
|
|
18682
|
-
"datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
|
|
18683
|
-
"datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
|
|
18684
|
-
"datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
|
|
18685
|
-
"datafeeder.summarizePage.illustration": "Kein Fehler? Los geht's!",
|
|
18686
|
-
"datafeeder.summarizePage.previous": "Zurück",
|
|
18687
|
-
"datafeeder.summarizePage.submit": "Absenden",
|
|
18688
|
-
"datafeeder.summarizePage.title": "Sie sind fast fertig...",
|
|
18689
|
-
"datafeeder.upload.acceptedFormats": "Akzeptierte Dateiformate:",
|
|
18690
|
-
"datafeeder.upload.checkboxLabel": "Ich besitze die Rechte zur Veröffentlichung dieses Datensatzes",
|
|
18691
|
-
"datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geografischen Datensatz enthält",
|
|
18692
|
-
"datafeeder.upload.error.subtitle.cantOpenFile": "Bitte überprüfen Sie, ob die Datei gültig ist",
|
|
18693
|
-
"datafeeder.upload.error.subtitle.fileFormat": "Beachten Sie: Nur SHP-Dateien",
|
|
18694
|
-
"datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximale Dateigröße {size} MB",
|
|
18695
|
-
"datafeeder.upload.error.title.analysis": "Fehler während der Datensatzanalyse",
|
|
18696
|
-
"datafeeder.upload.error.title.cantOpenFile": "Fehler beim Öffnen der Datei",
|
|
18697
|
-
"datafeeder.upload.error.title.fileFormat": "Das ausgewählte Dateiformat wird nicht unterstützt",
|
|
18698
|
-
"datafeeder.upload.error.title.fileHasntSelected": "Keine Datei ausgewählt",
|
|
18699
|
-
"datafeeder.upload.error.title.fileSize": "Die Dateigröße ist zu groß",
|
|
18700
|
-
"datafeeder.upload.error.title.noRightsToSendData": "Sie dürfen diesen Datensatz nicht veröffentlichen",
|
|
18701
|
-
"datafeeder.upload.illustration.enrichment": "Anreicherung",
|
|
18702
|
-
"datafeeder.upload.illustration.import": "Import",
|
|
18703
|
-
"datafeeder.upload.illustration.title": "Das Hinzufügen von Daten \n war noch nie so einfach",
|
|
18704
|
-
"datafeeder.upload.illustration.validation": "Validierung",
|
|
18705
|
-
"datafeeder.upload.illustration.verification": "Überprüfung",
|
|
18706
|
-
"datafeeder.upload.inputLabel": "Importieren Sie Ihre Datei",
|
|
18707
|
-
"datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
|
|
18708
|
-
"datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
|
|
18709
|
-
"datafeeder.upload.uploadButton": "Hochladen",
|
|
18710
|
-
"datafeeder.validation.csv.delimiter": "",
|
|
18711
|
-
"datafeeder.validation.csv.delimiter.comma": "",
|
|
18712
|
-
"datafeeder.validation.csv.delimiter.semicolon": "",
|
|
18713
|
-
"datafeeder.validation.csv.lat.field": "",
|
|
18714
|
-
"datafeeder.validation.csv.lng.field": "",
|
|
18715
|
-
"datafeeder.validation.csv.quote.double": "",
|
|
18716
|
-
"datafeeder.validation.csv.quote.none": "",
|
|
18717
|
-
"datafeeder.validation.csv.quote.simple": "",
|
|
18718
|
-
"datafeeder.validation.csv.quoteChar": "",
|
|
18719
|
-
"datafeeder.validation.encoding": "Codierung",
|
|
18720
|
-
"datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
|
|
18721
|
-
"datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
|
|
18722
|
-
"datafeeder.validation.projection": "Raumbezugssystem:",
|
|
18723
|
-
"datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem aus",
|
|
18724
|
-
"datafeeder.validation.sample.title": "Und eine Beispielentität aus dem Datensatz",
|
|
18725
|
-
"datafeeder.wizard.emptyRequiredValuesMessage": "Bitte füllen Sie die obligatorischen Felder aus",
|
|
18726
18653
|
"datafeeder.wizardSummarize.createdAt": "Erstellt am",
|
|
18727
18654
|
"datafeeder.wizardSummarize.scale": "Maßstab",
|
|
18728
18655
|
"datahub.header.datasets": "Datensätze",
|
|
@@ -19026,9 +18953,10 @@ var de = {
|
|
|
19026
18953
|
"record.action.download": "Herunterladen",
|
|
19027
18954
|
"record.action.duplicate": "",
|
|
19028
18955
|
"record.action.duplicating": "",
|
|
18956
|
+
"record.action.rollback": "",
|
|
19029
18957
|
"record.action.view": "Anzeigen",
|
|
19030
18958
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
19031
|
-
"record.feature.limit": "Die
|
|
18959
|
+
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
19032
18960
|
"record.metadata.about": "Beschreibung",
|
|
19033
18961
|
"record.metadata.api": "API",
|
|
19034
18962
|
"record.metadata.api.form.closeButton": "Schließen",
|
|
@@ -19146,8 +19074,10 @@ var de = {
|
|
|
19146
19074
|
"search.error.receivedError": "Ein Fehler ist aufgetreten",
|
|
19147
19075
|
"search.error.recordHasnolink": "",
|
|
19148
19076
|
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
19149
|
-
"search.field.any.placeholder": "Suche
|
|
19077
|
+
"search.field.any.placeholder": "Suche im katalog ...",
|
|
19150
19078
|
"search.field.sortBy": "Sortieren nach:",
|
|
19079
|
+
"search.filters.availableServices.download": "",
|
|
19080
|
+
"search.filters.availableServices.view": "",
|
|
19151
19081
|
"search.filters.changeDate": "Letzte Aktualisierung",
|
|
19152
19082
|
"search.filters.clear": "Zurücksetzen",
|
|
19153
19083
|
"search.filters.contact": "Kontakte",
|
|
@@ -19203,7 +19133,6 @@ var de = {
|
|
|
19203
19133
|
"tooltip.url.open": "URL öffnen",
|
|
19204
19134
|
"ui.readLess": "Weniger lesen",
|
|
19205
19135
|
"ui.readMore": "Weiterlesen",
|
|
19206
|
-
"wfs.aggregations.notsupported": "",
|
|
19207
19136
|
"wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
|
|
19208
19137
|
"wfs.featuretype.notfound": "Kein passender Feature-Typ wurde im Dienst gefunden",
|
|
19209
19138
|
"wfs.geojsongml.notsupported": "Dieser Dienst unterstützt das GeoJSON- oder GML-Format nicht",
|
|
@@ -19238,8 +19167,6 @@ var en = {
|
|
|
19238
19167
|
"chart.type.lineSmooth": "smooth line chart",
|
|
19239
19168
|
"chart.type.pie": "pie chart",
|
|
19240
19169
|
"dashboard.catalog.allRecords": "Datasets",
|
|
19241
|
-
"dashboard.catalog.contacts": "Contacts",
|
|
19242
|
-
"dashboard.catalog.thesaurus": "Thesaurus",
|
|
19243
19170
|
"dashboard.createRecord": "New dataset",
|
|
19244
19171
|
"dashboard.importRecord": "Import",
|
|
19245
19172
|
"dashboard.importRecord.importExternal": "Import an external file",
|
|
@@ -19252,29 +19179,10 @@ var en = {
|
|
|
19252
19179
|
"dashboard.records.myDraft": "My drafts",
|
|
19253
19180
|
"dashboard.records.myRecords": "My datasets",
|
|
19254
19181
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
19255
|
-
"dashboard.records.templates": "Templates",
|
|
19256
19182
|
"dashboard.records.userDetail": "Name",
|
|
19257
19183
|
"dashboard.records.userEmail": "Email",
|
|
19258
19184
|
"dashboard.records.username": "Username",
|
|
19259
19185
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
19260
|
-
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
19261
|
-
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
19262
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
19263
|
-
"datafeeder.analysisProgressBar.subtitle": "The analysis may take several minutes, please wait.",
|
|
19264
|
-
"datafeeder.analysisProgressBar.title": "Analysis in progress",
|
|
19265
|
-
"datafeeder.datasetValidation.datasetInformation": "The provided dataset contains {number} entities",
|
|
19266
|
-
"datafeeder.datasetValidation.submitButton": "OK, my data is correct",
|
|
19267
|
-
"datafeeder.datasetValidation.title": "Make sure your data is correct",
|
|
19268
|
-
"datafeeder.datasetValidation.unknown": " - ",
|
|
19269
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
|
|
19270
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
|
|
19271
|
-
"datafeeder.form.abstract": "How would you describe your dataset?",
|
|
19272
|
-
"datafeeder.form.datepicker": "Do you know when the dataset was created?",
|
|
19273
|
-
"datafeeder.form.description": "Finally, please describe the process used to create the dataset",
|
|
19274
|
-
"datafeeder.form.dropdown": "For which scale was it created?",
|
|
19275
|
-
"datafeeder.form.tags": "Select one or more tags that fit your dataset",
|
|
19276
|
-
"datafeeder.form.title": "Give your dataset the best title",
|
|
19277
|
-
"datafeeder.formsPage.title": "Tell us more about your dataset",
|
|
19278
19186
|
"datafeeder.month.april": "April",
|
|
19279
19187
|
"datafeeder.month.august": "August",
|
|
19280
19188
|
"datafeeder.month.december": "December",
|
|
@@ -19287,59 +19195,6 @@ var en = {
|
|
|
19287
19195
|
"datafeeder.month.november": "November",
|
|
19288
19196
|
"datafeeder.month.october": "October",
|
|
19289
19197
|
"datafeeder.month.september": "September",
|
|
19290
|
-
"datafeeder.publish.hint": "You can safely exit this page, you will be notified when the process is over",
|
|
19291
|
-
"datafeeder.publish.illustration.title": "Another dataset \n to publish?",
|
|
19292
|
-
"datafeeder.publish.subtitle": "Publishing may take several minutes.",
|
|
19293
|
-
"datafeeder.publish.title": "Thank you! \n Your dataset is being published",
|
|
19294
|
-
"datafeeder.publish.upload": "Upload it now",
|
|
19295
|
-
"datafeeder.publishSuccess.geonetworkRecord": "Metadata record",
|
|
19296
|
-
"datafeeder.publishSuccess.illustration.title": "Done, all is good!",
|
|
19297
|
-
"datafeeder.publishSuccess.mapViewer": "Map viewer",
|
|
19298
|
-
"datafeeder.publishSuccess.ogcFeature": "OGC API",
|
|
19299
|
-
"datafeeder.publishSuccess.subtitle": "View your data in:",
|
|
19300
|
-
"datafeeder.publishSuccess.title": "Congratulations! \n Your dataset has been published",
|
|
19301
|
-
"datafeeder.publishSuccess.uploadAnotherData": "Upload another dataset",
|
|
19302
|
-
"datafeeder.summarizePage.illustration": "No mistake? Let's go!",
|
|
19303
|
-
"datafeeder.summarizePage.previous": "Previous",
|
|
19304
|
-
"datafeeder.summarizePage.submit": "Submit",
|
|
19305
|
-
"datafeeder.summarizePage.title": "You're almost there...",
|
|
19306
|
-
"datafeeder.upload.acceptedFormats": "Accepted file formats:",
|
|
19307
|
-
"datafeeder.upload.checkboxLabel": "I hold the rights to publish this dataset",
|
|
19308
|
-
"datafeeder.upload.error.subtitle.analysis": "Check that the file contains a valid geospatial dataset",
|
|
19309
|
-
"datafeeder.upload.error.subtitle.cantOpenFile": "Please check that the file is valid",
|
|
19310
|
-
"datafeeder.upload.error.subtitle.fileFormat": "Remember: only SHP",
|
|
19311
|
-
"datafeeder.upload.error.subtitle.fileSize": "Remember: {size} MB maximum",
|
|
19312
|
-
"datafeeder.upload.error.title.analysis": "Error during the dataset analysis",
|
|
19313
|
-
"datafeeder.upload.error.title.cantOpenFile": "Error while opening the file",
|
|
19314
|
-
"datafeeder.upload.error.title.fileFormat": "The selected file format is not supported",
|
|
19315
|
-
"datafeeder.upload.error.title.fileHasntSelected": "No file selected",
|
|
19316
|
-
"datafeeder.upload.error.title.fileSize": "The file size is too large",
|
|
19317
|
-
"datafeeder.upload.error.title.noRightsToSendData": "You are not allowed to publish this dataset",
|
|
19318
|
-
"datafeeder.upload.illustration.enrichment": "Enrichment",
|
|
19319
|
-
"datafeeder.upload.illustration.import": "Import",
|
|
19320
|
-
"datafeeder.upload.illustration.title": "Adding data \n has never been easier",
|
|
19321
|
-
"datafeeder.upload.illustration.validation": "Validation",
|
|
19322
|
-
"datafeeder.upload.illustration.verification": "Verification",
|
|
19323
|
-
"datafeeder.upload.inputLabel": "Import your file",
|
|
19324
|
-
"datafeeder.upload.maxFileSize": "Maximum file size is {size} MB",
|
|
19325
|
-
"datafeeder.upload.title": "Upload your dataset",
|
|
19326
|
-
"datafeeder.upload.uploadButton": "Upload",
|
|
19327
|
-
"datafeeder.validation.csv.delimiter": "Delimiter",
|
|
19328
|
-
"datafeeder.validation.csv.delimiter.comma": "Comma",
|
|
19329
|
-
"datafeeder.validation.csv.delimiter.semicolon": "Semicolon",
|
|
19330
|
-
"datafeeder.validation.csv.lat.field": "Latitude column",
|
|
19331
|
-
"datafeeder.validation.csv.lng.field": "Longitude column",
|
|
19332
|
-
"datafeeder.validation.csv.quote.double": "Double quote",
|
|
19333
|
-
"datafeeder.validation.csv.quote.none": "None",
|
|
19334
|
-
"datafeeder.validation.csv.quote.simple": "Single quote",
|
|
19335
|
-
"datafeeder.validation.csv.quoteChar": "Quote separator",
|
|
19336
|
-
"datafeeder.validation.encoding": "Encoding",
|
|
19337
|
-
"datafeeder.validation.extent.title": "Here is the dataset extent",
|
|
19338
|
-
"datafeeder.validation.extent.title.unknown": "The projection system is unknown",
|
|
19339
|
-
"datafeeder.validation.projection": "Spatial reference system:",
|
|
19340
|
-
"datafeeder.validation.projection.unknown": "Choose a spatial reference system",
|
|
19341
|
-
"datafeeder.validation.sample.title": "And a sample entity from the dataset",
|
|
19342
|
-
"datafeeder.wizard.emptyRequiredValuesMessage": "Please fill in mandatory fields",
|
|
19343
19198
|
"datafeeder.wizardSummarize.createdAt": "Created at",
|
|
19344
19199
|
"datafeeder.wizardSummarize.scale": "Scale",
|
|
19345
19200
|
"datahub.header.datasets": "Datasets",
|
|
@@ -19643,9 +19498,10 @@ var en = {
|
|
|
19643
19498
|
"record.action.download": "Download",
|
|
19644
19499
|
"record.action.duplicate": "Duplicate",
|
|
19645
19500
|
"record.action.duplicating": "Duplicating...",
|
|
19501
|
+
"record.action.rollback": "Rollback",
|
|
19646
19502
|
"record.action.view": "View",
|
|
19647
19503
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19648
|
-
"record.feature.limit": "
|
|
19504
|
+
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19649
19505
|
"record.metadata.about": "Description",
|
|
19650
19506
|
"record.metadata.api": "API",
|
|
19651
19507
|
"record.metadata.api.form.closeButton": "Close",
|
|
@@ -19763,8 +19619,10 @@ var en = {
|
|
|
19763
19619
|
"search.error.receivedError": "An error was received",
|
|
19764
19620
|
"search.error.recordHasnolink": "This dataset currently has no link yet, please come back later.",
|
|
19765
19621
|
"search.error.recordNotFound": "The dataset with identifier \"{ id }\" could not be found.",
|
|
19766
|
-
"search.field.any.placeholder": "Search
|
|
19622
|
+
"search.field.any.placeholder": "Search in the catalog ...",
|
|
19767
19623
|
"search.field.sortBy": "Sort by:",
|
|
19624
|
+
"search.filters.availableServices.download": "",
|
|
19625
|
+
"search.filters.availableServices.view": "",
|
|
19768
19626
|
"search.filters.changeDate": "Updated",
|
|
19769
19627
|
"search.filters.clear": "Reset",
|
|
19770
19628
|
"search.filters.contact": "Contacts",
|
|
@@ -19820,7 +19678,6 @@ var en = {
|
|
|
19820
19678
|
"tooltip.url.open": "Open URL",
|
|
19821
19679
|
"ui.readLess": "Read less",
|
|
19822
19680
|
"ui.readMore": "Read more",
|
|
19823
|
-
"wfs.aggregations.notsupported": "Aggregations are currently not supported for WFS services",
|
|
19824
19681
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
19825
19682
|
"wfs.featuretype.notfound": "No matching feature type was found in the service",
|
|
19826
19683
|
"wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
|
|
@@ -19855,8 +19712,6 @@ var es = {
|
|
|
19855
19712
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
19856
19713
|
"chart.type.pie": "gráfico circular",
|
|
19857
19714
|
"dashboard.catalog.allRecords": "",
|
|
19858
|
-
"dashboard.catalog.contacts": "",
|
|
19859
|
-
"dashboard.catalog.thesaurus": "",
|
|
19860
19715
|
"dashboard.createRecord": "",
|
|
19861
19716
|
"dashboard.importRecord": "",
|
|
19862
19717
|
"dashboard.importRecord.importExternal": "",
|
|
@@ -19869,29 +19724,10 @@ var es = {
|
|
|
19869
19724
|
"dashboard.records.myDraft": "Mis borradores",
|
|
19870
19725
|
"dashboard.records.myRecords": "Mis Registros",
|
|
19871
19726
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
19872
|
-
"dashboard.records.templates": "",
|
|
19873
19727
|
"dashboard.records.userDetail": "",
|
|
19874
19728
|
"dashboard.records.userEmail": "",
|
|
19875
19729
|
"dashboard.records.username": "",
|
|
19876
19730
|
"dashboard.records.users": "",
|
|
19877
|
-
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
19878
|
-
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
19879
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
19880
|
-
"datafeeder.analysisProgressBar.subtitle": "",
|
|
19881
|
-
"datafeeder.analysisProgressBar.title": "",
|
|
19882
|
-
"datafeeder.datasetValidation.datasetInformation": "",
|
|
19883
|
-
"datafeeder.datasetValidation.submitButton": "",
|
|
19884
|
-
"datafeeder.datasetValidation.title": "",
|
|
19885
|
-
"datafeeder.datasetValidation.unknown": "",
|
|
19886
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
19887
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
19888
|
-
"datafeeder.form.abstract": "",
|
|
19889
|
-
"datafeeder.form.datepicker": "",
|
|
19890
|
-
"datafeeder.form.description": "",
|
|
19891
|
-
"datafeeder.form.dropdown": "",
|
|
19892
|
-
"datafeeder.form.tags": "",
|
|
19893
|
-
"datafeeder.form.title": "",
|
|
19894
|
-
"datafeeder.formsPage.title": "",
|
|
19895
19731
|
"datafeeder.month.april": "",
|
|
19896
19732
|
"datafeeder.month.august": "",
|
|
19897
19733
|
"datafeeder.month.december": "",
|
|
@@ -19904,59 +19740,6 @@ var es = {
|
|
|
19904
19740
|
"datafeeder.month.november": "",
|
|
19905
19741
|
"datafeeder.month.october": "",
|
|
19906
19742
|
"datafeeder.month.september": "",
|
|
19907
|
-
"datafeeder.publish.hint": "",
|
|
19908
|
-
"datafeeder.publish.illustration.title": "",
|
|
19909
|
-
"datafeeder.publish.subtitle": "",
|
|
19910
|
-
"datafeeder.publish.title": "",
|
|
19911
|
-
"datafeeder.publish.upload": "",
|
|
19912
|
-
"datafeeder.publishSuccess.geonetworkRecord": "",
|
|
19913
|
-
"datafeeder.publishSuccess.illustration.title": "",
|
|
19914
|
-
"datafeeder.publishSuccess.mapViewer": "",
|
|
19915
|
-
"datafeeder.publishSuccess.ogcFeature": "",
|
|
19916
|
-
"datafeeder.publishSuccess.subtitle": "",
|
|
19917
|
-
"datafeeder.publishSuccess.title": "",
|
|
19918
|
-
"datafeeder.publishSuccess.uploadAnotherData": "",
|
|
19919
|
-
"datafeeder.summarizePage.illustration": "",
|
|
19920
|
-
"datafeeder.summarizePage.previous": "",
|
|
19921
|
-
"datafeeder.summarizePage.submit": "",
|
|
19922
|
-
"datafeeder.summarizePage.title": "",
|
|
19923
|
-
"datafeeder.upload.acceptedFormats": "",
|
|
19924
|
-
"datafeeder.upload.checkboxLabel": "",
|
|
19925
|
-
"datafeeder.upload.error.subtitle.analysis": "",
|
|
19926
|
-
"datafeeder.upload.error.subtitle.cantOpenFile": "",
|
|
19927
|
-
"datafeeder.upload.error.subtitle.fileFormat": "",
|
|
19928
|
-
"datafeeder.upload.error.subtitle.fileSize": "",
|
|
19929
|
-
"datafeeder.upload.error.title.analysis": "",
|
|
19930
|
-
"datafeeder.upload.error.title.cantOpenFile": "",
|
|
19931
|
-
"datafeeder.upload.error.title.fileFormat": "",
|
|
19932
|
-
"datafeeder.upload.error.title.fileHasntSelected": "",
|
|
19933
|
-
"datafeeder.upload.error.title.fileSize": "",
|
|
19934
|
-
"datafeeder.upload.error.title.noRightsToSendData": "",
|
|
19935
|
-
"datafeeder.upload.illustration.enrichment": "",
|
|
19936
|
-
"datafeeder.upload.illustration.import": "",
|
|
19937
|
-
"datafeeder.upload.illustration.title": "",
|
|
19938
|
-
"datafeeder.upload.illustration.validation": "",
|
|
19939
|
-
"datafeeder.upload.illustration.verification": "",
|
|
19940
|
-
"datafeeder.upload.inputLabel": "",
|
|
19941
|
-
"datafeeder.upload.maxFileSize": "",
|
|
19942
|
-
"datafeeder.upload.title": "",
|
|
19943
|
-
"datafeeder.upload.uploadButton": "",
|
|
19944
|
-
"datafeeder.validation.csv.delimiter": "",
|
|
19945
|
-
"datafeeder.validation.csv.delimiter.comma": "Coma",
|
|
19946
|
-
"datafeeder.validation.csv.delimiter.semicolon": "Punto y coma",
|
|
19947
|
-
"datafeeder.validation.csv.lat.field": "",
|
|
19948
|
-
"datafeeder.validation.csv.lng.field": "",
|
|
19949
|
-
"datafeeder.validation.csv.quote.double": "Comillas dobles",
|
|
19950
|
-
"datafeeder.validation.csv.quote.none": "Ninguno",
|
|
19951
|
-
"datafeeder.validation.csv.quote.simple": "Comillas simples",
|
|
19952
|
-
"datafeeder.validation.csv.quoteChar": "",
|
|
19953
|
-
"datafeeder.validation.encoding": "",
|
|
19954
|
-
"datafeeder.validation.extent.title": "",
|
|
19955
|
-
"datafeeder.validation.extent.title.unknown": "",
|
|
19956
|
-
"datafeeder.validation.projection": "",
|
|
19957
|
-
"datafeeder.validation.projection.unknown": "",
|
|
19958
|
-
"datafeeder.validation.sample.title": "",
|
|
19959
|
-
"datafeeder.wizard.emptyRequiredValuesMessage": "",
|
|
19960
19743
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
19961
19744
|
"datafeeder.wizardSummarize.scale": "",
|
|
19962
19745
|
"datahub.header.datasets": "",
|
|
@@ -20260,6 +20043,7 @@ var es = {
|
|
|
20260
20043
|
"record.action.download": "",
|
|
20261
20044
|
"record.action.duplicate": "",
|
|
20262
20045
|
"record.action.duplicating": "",
|
|
20046
|
+
"record.action.rollback": "",
|
|
20263
20047
|
"record.action.view": "",
|
|
20264
20048
|
"record.externalViewer.open": "",
|
|
20265
20049
|
"record.feature.limit": "",
|
|
@@ -20382,6 +20166,8 @@ var es = {
|
|
|
20382
20166
|
"search.error.recordNotFound": "",
|
|
20383
20167
|
"search.field.any.placeholder": "",
|
|
20384
20168
|
"search.field.sortBy": "",
|
|
20169
|
+
"search.filters.availableServices.download": "",
|
|
20170
|
+
"search.filters.availableServices.view": "",
|
|
20385
20171
|
"search.filters.changeDate": "Última actualización",
|
|
20386
20172
|
"search.filters.clear": "",
|
|
20387
20173
|
"search.filters.contact": "",
|
|
@@ -20437,7 +20223,6 @@ var es = {
|
|
|
20437
20223
|
"tooltip.url.open": "",
|
|
20438
20224
|
"ui.readLess": "",
|
|
20439
20225
|
"ui.readMore": "",
|
|
20440
|
-
"wfs.aggregations.notsupported": "",
|
|
20441
20226
|
"wfs.feature.limit": "",
|
|
20442
20227
|
"wfs.featuretype.notfound": "",
|
|
20443
20228
|
"wfs.geojsongml.notsupported": "",
|
|
@@ -20472,8 +20257,6 @@ var fr = {
|
|
|
20472
20257
|
"chart.type.lineSmooth": "ligne lisse",
|
|
20473
20258
|
"chart.type.pie": "camembert",
|
|
20474
20259
|
"dashboard.catalog.allRecords": "Jeux de données",
|
|
20475
|
-
"dashboard.catalog.contacts": "Annuaire",
|
|
20476
|
-
"dashboard.catalog.thesaurus": "Thésaurus",
|
|
20477
20260
|
"dashboard.createRecord": "Nouveau jeu de données",
|
|
20478
20261
|
"dashboard.importRecord": "Importer",
|
|
20479
20262
|
"dashboard.importRecord.importExternal": "Importer un jeu de données externe",
|
|
@@ -20486,29 +20269,10 @@ var fr = {
|
|
|
20486
20269
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
20487
20270
|
"dashboard.records.myRecords": "Mes jeux de données",
|
|
20488
20271
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
20489
|
-
"dashboard.records.templates": "Modèles pré-remplis",
|
|
20490
20272
|
"dashboard.records.userDetail": "Nom",
|
|
20491
20273
|
"dashboard.records.userEmail": "Email",
|
|
20492
20274
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
20493
20275
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
20494
|
-
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
20495
|
-
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
20496
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "Échantillonnage \n des données",
|
|
20497
|
-
"datafeeder.analysisProgressBar.subtitle": "L'analyse peut prendre plusieurs minutes, merci de patienter.",
|
|
20498
|
-
"datafeeder.analysisProgressBar.title": "Analyse en cours",
|
|
20499
|
-
"datafeeder.datasetValidation.datasetInformation": "Le jeu de données fourni contient {number} entités",
|
|
20500
|
-
"datafeeder.datasetValidation.submitButton": "OK, mes données sont correctes",
|
|
20501
|
-
"datafeeder.datasetValidation.title": "Vérifiez que vos données sont correctes",
|
|
20502
|
-
"datafeeder.datasetValidation.unknown": " - ",
|
|
20503
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "*Le tableau doit afficher les 5 premières lignes (hors en-tête)<br>Si ce n'est pas le cas, vérifiez que le fichier est bien formaté",
|
|
20504
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "Résumé des 5 premières lignes* du CSV :",
|
|
20505
|
-
"datafeeder.form.abstract": "Comment décrire votre jeu de données ?",
|
|
20506
|
-
"datafeeder.form.datepicker": "Savez-vous quand la donnée a été créée ?",
|
|
20507
|
-
"datafeeder.form.description": "Enfin, décrivez le processus utilisé pour créer la donnée",
|
|
20508
|
-
"datafeeder.form.dropdown": "Et pour quelle échelle ?",
|
|
20509
|
-
"datafeeder.form.tags": "Choisissez un ou plusieurs mots-clés correspondant à vos données",
|
|
20510
|
-
"datafeeder.form.title": "Donnez un titre à votre jeu de données",
|
|
20511
|
-
"datafeeder.formsPage.title": "Dites-nous en plus sur ces données",
|
|
20512
20276
|
"datafeeder.month.april": "Avril",
|
|
20513
20277
|
"datafeeder.month.august": "Août",
|
|
20514
20278
|
"datafeeder.month.december": "Décembre",
|
|
@@ -20521,59 +20285,6 @@ var fr = {
|
|
|
20521
20285
|
"datafeeder.month.november": "Novembre",
|
|
20522
20286
|
"datafeeder.month.october": "Octobre",
|
|
20523
20287
|
"datafeeder.month.september": "Septembre",
|
|
20524
|
-
"datafeeder.publish.hint": "Vous pouvez quitter cette page en toute sécurité, vous serez prévenus quand le processus sera terminé",
|
|
20525
|
-
"datafeeder.publish.illustration.title": "Une autre donnée \n à publier ?",
|
|
20526
|
-
"datafeeder.publish.subtitle": "La publication peut prendre plusieurs minutes.",
|
|
20527
|
-
"datafeeder.publish.title": "Merci! \n Vos données sont en cours de publication",
|
|
20528
|
-
"datafeeder.publish.upload": "Télécharger maintenant",
|
|
20529
|
-
"datafeeder.publishSuccess.geonetworkRecord": "Fiche de métadonnées",
|
|
20530
|
-
"datafeeder.publishSuccess.illustration.title": "Terminé, tout s'est bien passé !",
|
|
20531
|
-
"datafeeder.publishSuccess.mapViewer": "Visualiseur",
|
|
20532
|
-
"datafeeder.publishSuccess.ogcFeature": "OGC API",
|
|
20533
|
-
"datafeeder.publishSuccess.subtitle": "Visualisez vos données :",
|
|
20534
|
-
"datafeeder.publishSuccess.title": "Félicitations! \n Vos données ont été publiées",
|
|
20535
|
-
"datafeeder.publishSuccess.uploadAnotherData": "Importer une autre donnée",
|
|
20536
|
-
"datafeeder.summarizePage.illustration": "Pas d'erreur ? C'est parti !",
|
|
20537
|
-
"datafeeder.summarizePage.previous": "Précédent",
|
|
20538
|
-
"datafeeder.summarizePage.submit": "Publier",
|
|
20539
|
-
"datafeeder.summarizePage.title": "On y est presque...",
|
|
20540
|
-
"datafeeder.upload.acceptedFormats": "Formats de fichier acceptés :",
|
|
20541
|
-
"datafeeder.upload.checkboxLabel": "J'ai le droit de publier cette donnée",
|
|
20542
|
-
"datafeeder.upload.error.subtitle.analysis": "Le fichier transféré contient-il des données géographiques valides ?",
|
|
20543
|
-
"datafeeder.upload.error.subtitle.cantOpenFile": "Vérifiez la validité du fichier sélectionné",
|
|
20544
|
-
"datafeeder.upload.error.subtitle.fileFormat": "Rappel : uniquement des SHP",
|
|
20545
|
-
"datafeeder.upload.error.subtitle.fileSize": "Rappel : {size} Mo maximum",
|
|
20546
|
-
"datafeeder.upload.error.title.analysis": "Erreur lors de l'analyse des données",
|
|
20547
|
-
"datafeeder.upload.error.title.cantOpenFile": "Erreur lors de l'ouverture du fichier",
|
|
20548
|
-
"datafeeder.upload.error.title.fileFormat": "Le format du fichier n'est pas supporté",
|
|
20549
|
-
"datafeeder.upload.error.title.fileHasntSelected": "Aucun fichier n'a été sélectionné",
|
|
20550
|
-
"datafeeder.upload.error.title.fileSize": "La taille du fichier est trop importante",
|
|
20551
|
-
"datafeeder.upload.error.title.noRightsToSendData": "Vous n'avez pas validé les droits de publication",
|
|
20552
|
-
"datafeeder.upload.illustration.enrichment": "Enrichissement",
|
|
20553
|
-
"datafeeder.upload.illustration.import": "Import",
|
|
20554
|
-
"datafeeder.upload.illustration.title": "Ajouter des données n'a jamais été aussi simple",
|
|
20555
|
-
"datafeeder.upload.illustration.validation": "Validation",
|
|
20556
|
-
"datafeeder.upload.illustration.verification": "Vérification",
|
|
20557
|
-
"datafeeder.upload.inputLabel": "Ajouter votre fichier",
|
|
20558
|
-
"datafeeder.upload.maxFileSize": "La taille maximale est {size} Mo",
|
|
20559
|
-
"datafeeder.upload.title": "Importez vos données",
|
|
20560
|
-
"datafeeder.upload.uploadButton": "Transférer",
|
|
20561
|
-
"datafeeder.validation.csv.delimiter": "Séparateur de colonne",
|
|
20562
|
-
"datafeeder.validation.csv.delimiter.comma": "Virgule",
|
|
20563
|
-
"datafeeder.validation.csv.delimiter.semicolon": "Point-virgule",
|
|
20564
|
-
"datafeeder.validation.csv.lat.field": "Colonne latitude",
|
|
20565
|
-
"datafeeder.validation.csv.lng.field": "Colonne longitude",
|
|
20566
|
-
"datafeeder.validation.csv.quote.double": "Double guillemets",
|
|
20567
|
-
"datafeeder.validation.csv.quote.none": "Aucun",
|
|
20568
|
-
"datafeeder.validation.csv.quote.simple": "Simple guillemet",
|
|
20569
|
-
"datafeeder.validation.csv.quoteChar": "Séparateur de texte",
|
|
20570
|
-
"datafeeder.validation.encoding": "Encodage",
|
|
20571
|
-
"datafeeder.validation.extent.title": "Voici l'emprise du jeu de données",
|
|
20572
|
-
"datafeeder.validation.extent.title.unknown": "Le système de projection est inconnu",
|
|
20573
|
-
"datafeeder.validation.projection": "Projection :",
|
|
20574
|
-
"datafeeder.validation.projection.unknown": "Choisissez une projection",
|
|
20575
|
-
"datafeeder.validation.sample.title": "Et un exemple d'objet",
|
|
20576
|
-
"datafeeder.wizard.emptyRequiredValuesMessage": "Veuillez remplir les champs obligatoires",
|
|
20577
20288
|
"datafeeder.wizardSummarize.createdAt": "Créée le",
|
|
20578
20289
|
"datafeeder.wizardSummarize.scale": "Échelle",
|
|
20579
20290
|
"datahub.header.datasets": "Données",
|
|
@@ -20613,7 +20324,7 @@ var fr = {
|
|
|
20613
20324
|
"domain.contact.role.point_of_contact": "Point de contact",
|
|
20614
20325
|
"domain.contact.role.principal_investigator": "Chercheur principal",
|
|
20615
20326
|
"domain.contact.role.processor": "Processeur",
|
|
20616
|
-
"domain.contact.role.publisher": "
|
|
20327
|
+
"domain.contact.role.publisher": "Producteur",
|
|
20617
20328
|
"domain.contact.role.resource_provider": "Fournisseur",
|
|
20618
20329
|
"domain.contact.role.rights_holder": "Détenteur des droits",
|
|
20619
20330
|
"domain.contact.role.sponsor": "Sponsor",
|
|
@@ -20677,7 +20388,7 @@ var fr = {
|
|
|
20677
20388
|
"editor.record.form.constraint.otherConstraints": "Autres contraintes",
|
|
20678
20389
|
"editor.record.form.constraint.securityConstraints": "Contraintes de sécurité",
|
|
20679
20390
|
"editor.record.form.draft.updateAlert": "Depuis la création de ce brouillon, ce jeu de données a été modifié le { date } par { user }. Publier votre version peut supprimer ses modifications. Pour éviter cela, vous pouvez annuler vos changements, ou publier votre version en connaissance de cause.",
|
|
20680
|
-
"editor.record.form.field.abstract": "
|
|
20391
|
+
"editor.record.form.field.abstract": "Description",
|
|
20681
20392
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
20682
20393
|
"editor.record.form.field.contacts.noContact": "Veuillez renseigner au moins un point de contact.",
|
|
20683
20394
|
"editor.record.form.field.contacts.placeholder": "Choisissez un contact",
|
|
@@ -20719,14 +20430,14 @@ var fr = {
|
|
|
20719
20430
|
"editor.record.form.keywords.place.placeholder": "Rechercher une localisation par mot-clé",
|
|
20720
20431
|
"editor.record.form.keywords.place.withoutExtent": "Ce mot-clé n'a pas de localisation géographique associée",
|
|
20721
20432
|
"editor.record.form.keywords.placeholder": "Sélectionnez un mot-clé",
|
|
20722
|
-
"editor.record.form.license.cc-by": "",
|
|
20723
|
-
"editor.record.form.license.cc-by-sa": "",
|
|
20724
|
-
"editor.record.form.license.cc-zero": "",
|
|
20433
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
20434
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
20435
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
20725
20436
|
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
20726
20437
|
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
20727
|
-
"editor.record.form.license.odbl": "",
|
|
20728
|
-
"editor.record.form.license.odc-by": "",
|
|
20729
|
-
"editor.record.form.license.pddl": "",
|
|
20438
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
20439
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
20440
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
20730
20441
|
"editor.record.form.license.unknown": "Inconnue ou absente",
|
|
20731
20442
|
"editor.record.form.page.accessAndContact": "Informations pour l'utilisation",
|
|
20732
20443
|
"editor.record.form.page.description": "Description du jeu de données",
|
|
@@ -20779,7 +20490,7 @@ var fr = {
|
|
|
20779
20490
|
"editor.record.resourceError.closeMessage": "Compris",
|
|
20780
20491
|
"editor.record.resourceError.title": "Erreur avec les pièces jointes",
|
|
20781
20492
|
"editor.record.saveStatus.draftWithChangesPending": "Sauvegardé - Modifications non publiées",
|
|
20782
|
-
"editor.record.saveStatus.recordNotPublished": "",
|
|
20493
|
+
"editor.record.saveStatus.recordNotPublished": "Sauvegardé - non publié",
|
|
20783
20494
|
"editor.record.saveStatus.recordUpToDate": "Sauvegardé - Jeu de données à jour",
|
|
20784
20495
|
"editor.record.undo.confirmation.cancelText": "Garder les modifications",
|
|
20785
20496
|
"editor.record.undo.confirmation.confirmText": "Retirer les modifications",
|
|
@@ -20789,7 +20500,7 @@ var fr = {
|
|
|
20789
20500
|
"editor.record.undo.tooltip.enabled": "Cliquer sur ce bouton pour annuler les modifications apportées à ce jeu de données",
|
|
20790
20501
|
"editor.record.upToDate": "Ce jeu de données est à jour",
|
|
20791
20502
|
"editor.sidebar.logout": "Se déconnecter",
|
|
20792
|
-
"editor.sidebar.menu.editor": "",
|
|
20503
|
+
"editor.sidebar.menu.editor": "Editeur",
|
|
20793
20504
|
"editor.temporary.disabled": "Pas encore implémenté",
|
|
20794
20505
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
20795
20506
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -20837,7 +20548,7 @@ var fr = {
|
|
|
20837
20548
|
"map.add.layer": "Ajouter une couche",
|
|
20838
20549
|
"map.add.layer.catalog": "Du catalogue",
|
|
20839
20550
|
"map.add.layer.file": "À partir d'un fichier",
|
|
20840
|
-
"map.add.layer.ogc.api": "",
|
|
20551
|
+
"map.add.layer.ogc.api": "Depuis un service OGC API",
|
|
20841
20552
|
"map.add.layer.wfs": "Depuis un service WFS",
|
|
20842
20553
|
"map.add.layer.wms": "Depuis un service WMS",
|
|
20843
20554
|
"map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
|
|
@@ -20850,7 +20561,7 @@ var fr = {
|
|
|
20850
20561
|
"map.loading.data": "Chargement des données...",
|
|
20851
20562
|
"map.loading.service": "Chargement du service...",
|
|
20852
20563
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
20853
|
-
"map.ogc.urlInput.hint": "",
|
|
20564
|
+
"map.ogc.urlInput.hint": "Entrez l'URL du service OGC API",
|
|
20854
20565
|
"map.select.layer": "Source de données",
|
|
20855
20566
|
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
20856
20567
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
@@ -20877,9 +20588,10 @@ var fr = {
|
|
|
20877
20588
|
"record.action.download": "Télécharger",
|
|
20878
20589
|
"record.action.duplicate": "Dupliquer",
|
|
20879
20590
|
"record.action.duplicating": "Duplication...",
|
|
20591
|
+
"record.action.rollback": "Restaurer",
|
|
20880
20592
|
"record.action.view": "Voir",
|
|
20881
20593
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20882
|
-
"record.feature.limit": "
|
|
20594
|
+
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20883
20595
|
"record.metadata.about": "Description",
|
|
20884
20596
|
"record.metadata.api": "API",
|
|
20885
20597
|
"record.metadata.api.form.closeButton": "Fermer",
|
|
@@ -20997,8 +20709,10 @@ var fr = {
|
|
|
20997
20709
|
"search.error.receivedError": "Erreur retournée",
|
|
20998
20710
|
"search.error.recordHasnolink": "Ce jeu de données n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
|
|
20999
20711
|
"search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
|
|
21000
|
-
"search.field.any.placeholder": "Rechercher
|
|
20712
|
+
"search.field.any.placeholder": "Rechercher dans le catalogue...",
|
|
21001
20713
|
"search.field.sortBy": "Trier par :",
|
|
20714
|
+
"search.filters.availableServices.download": "",
|
|
20715
|
+
"search.filters.availableServices.view": "",
|
|
21002
20716
|
"search.filters.changeDate": "Mise à jour",
|
|
21003
20717
|
"search.filters.clear": "Réinitialiser",
|
|
21004
20718
|
"search.filters.contact": "Contacts",
|
|
@@ -21054,7 +20768,6 @@ var fr = {
|
|
|
21054
20768
|
"tooltip.url.open": "Ouvrir l'URL",
|
|
21055
20769
|
"ui.readLess": "Réduire",
|
|
21056
20770
|
"ui.readMore": "Lire la suite",
|
|
21057
|
-
"wfs.aggregations.notsupported": "Agrégations non supportées pour les services WFS",
|
|
21058
20771
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
21059
20772
|
"wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
|
|
21060
20773
|
"wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
|
|
@@ -21089,8 +20802,6 @@ var it = {
|
|
|
21089
20802
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
21090
20803
|
"chart.type.pie": "grafico a torta",
|
|
21091
20804
|
"dashboard.catalog.allRecords": "Datasets",
|
|
21092
|
-
"dashboard.catalog.contacts": "Contatti",
|
|
21093
|
-
"dashboard.catalog.thesaurus": "Thesauri",
|
|
21094
20805
|
"dashboard.createRecord": "Crea un record",
|
|
21095
20806
|
"dashboard.importRecord": "Importare",
|
|
21096
20807
|
"dashboard.importRecord.importExternal": "Importare un dataset esterno",
|
|
@@ -21103,29 +20814,10 @@ var it = {
|
|
|
21103
20814
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
21104
20815
|
"dashboard.records.myRecords": "I miei dati",
|
|
21105
20816
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
21106
|
-
"dashboard.records.templates": "Modelli precompilati",
|
|
21107
20817
|
"dashboard.records.userDetail": "Nome",
|
|
21108
20818
|
"dashboard.records.userEmail": "Email",
|
|
21109
20819
|
"dashboard.records.username": "Nome utente",
|
|
21110
20820
|
"dashboard.records.users": "utenti",
|
|
21111
|
-
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
21112
|
-
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
21113
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
21114
|
-
"datafeeder.analysisProgressBar.subtitle": "L'analisi potrebbe richiedere alcuni minuti, si prega di attendere.",
|
|
21115
|
-
"datafeeder.analysisProgressBar.title": "Analisi in corso",
|
|
21116
|
-
"datafeeder.datasetValidation.datasetInformation": "Il dataset fornito contiene {number} entità",
|
|
21117
|
-
"datafeeder.datasetValidation.submitButton": "OK, i miei dati sono corretti",
|
|
21118
|
-
"datafeeder.datasetValidation.title": "Controllare che i dati siano corretti",
|
|
21119
|
-
"datafeeder.datasetValidation.unknown": " - ",
|
|
21120
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "*La tabella dovrebbe visualizzare le prime 5 righe (esclusa l'intestazione)<br>In caso contrario, verificare che il file sia formattato correttamente",
|
|
21121
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "Riepilogo delle prime 5 righe del CSV:",
|
|
21122
|
-
"datafeeder.form.abstract": "Come descrivere il suo dataset?",
|
|
21123
|
-
"datafeeder.form.datepicker": "Sa quando è stato creato il suo dataset ?",
|
|
21124
|
-
"datafeeder.form.description": "Infine, descrivere il processo utilizzato per creare il dataset",
|
|
21125
|
-
"datafeeder.form.dropdown": "Per quale scala è stato creato?",
|
|
21126
|
-
"datafeeder.form.tags": "Seleziona uno o più parole chiave che corrispondano al suo dataset",
|
|
21127
|
-
"datafeeder.form.title": "Dà al suo dataset il miglior titolo",
|
|
21128
|
-
"datafeeder.formsPage.title": "Diteci di più sul suo dataset",
|
|
21129
20821
|
"datafeeder.month.april": "Aprile",
|
|
21130
20822
|
"datafeeder.month.august": "Agosto",
|
|
21131
20823
|
"datafeeder.month.december": "Dicembre",
|
|
@@ -21138,59 +20830,6 @@ var it = {
|
|
|
21138
20830
|
"datafeeder.month.november": "Novembre",
|
|
21139
20831
|
"datafeeder.month.october": "Ottobre",
|
|
21140
20832
|
"datafeeder.month.september": "Settembre",
|
|
21141
|
-
"datafeeder.publish.hint": "Puo lasciare questa pagina in sicurezza, sarà avvisato quando il processo sarà completo",
|
|
21142
|
-
"datafeeder.publish.illustration.title": "Un altro dato da pubblicare?",
|
|
21143
|
-
"datafeeder.publish.subtitle": "La pubblicazione potrebbe richiedere alcuni minuti.",
|
|
21144
|
-
"datafeeder.publish.title": "Grazie! \n I suei dati sono in fase di pubblicazione",
|
|
21145
|
-
"datafeeder.publish.upload": "Carica ora",
|
|
21146
|
-
"datafeeder.publishSuccess.geonetworkRecord": "Scheda di metadati",
|
|
21147
|
-
"datafeeder.publishSuccess.illustration.title": "Completato, tutto è andato bene!",
|
|
21148
|
-
"datafeeder.publishSuccess.mapViewer": "Visualizzatore",
|
|
21149
|
-
"datafeeder.publishSuccess.ogcFeature": "OGC API",
|
|
21150
|
-
"datafeeder.publishSuccess.subtitle": "Visualizzare i dati:",
|
|
21151
|
-
"datafeeder.publishSuccess.title": "Congratulazioni! \n I suoi dati sono stati pubblicati",
|
|
21152
|
-
"datafeeder.publishSuccess.uploadAnotherData": "Caricare un altro dato",
|
|
21153
|
-
"datafeeder.summarizePage.illustration": "Nessun errore? Avanti!",
|
|
21154
|
-
"datafeeder.summarizePage.previous": "Precedente",
|
|
21155
|
-
"datafeeder.summarizePage.submit": "Pubblica",
|
|
21156
|
-
"datafeeder.summarizePage.title": "Ci siamo quasi...",
|
|
21157
|
-
"datafeeder.upload.acceptedFormats": "Formati di file accettati:",
|
|
21158
|
-
"datafeeder.upload.checkboxLabel": "Ho il diritto di pubblicare questi dati",
|
|
21159
|
-
"datafeeder.upload.error.subtitle.analysis": "Il file trasferito contiene dati geografici validi?",
|
|
21160
|
-
"datafeeder.upload.error.subtitle.cantOpenFile": "Verifica la validità del file selezionato",
|
|
21161
|
-
"datafeeder.upload.error.subtitle.fileFormat": "Ricorda: solo SHP",
|
|
21162
|
-
"datafeeder.upload.error.subtitle.fileSize": "Ricorda: dimensione massima {size} MB",
|
|
21163
|
-
"datafeeder.upload.error.title.analysis": "Errore durante l'analisi dei dati",
|
|
21164
|
-
"datafeeder.upload.error.title.cantOpenFile": "Errore durante l'apertura del file",
|
|
21165
|
-
"datafeeder.upload.error.title.fileFormat": "Formato del file non supportato",
|
|
21166
|
-
"datafeeder.upload.error.title.fileHasntSelected": "Nessun file selezionato",
|
|
21167
|
-
"datafeeder.upload.error.title.fileSize": "Dimensione del file troppo grande",
|
|
21168
|
-
"datafeeder.upload.error.title.noRightsToSendData": "Non avete validato i diritti di pubblicazione",
|
|
21169
|
-
"datafeeder.upload.illustration.enrichment": "Arricchimento",
|
|
21170
|
-
"datafeeder.upload.illustration.import": "Importazione",
|
|
21171
|
-
"datafeeder.upload.illustration.title": "Aggiungere dati non è mai stato così facile",
|
|
21172
|
-
"datafeeder.upload.illustration.validation": "Validazione",
|
|
21173
|
-
"datafeeder.upload.illustration.verification": "Verifica",
|
|
21174
|
-
"datafeeder.upload.inputLabel": "Aggiunge il suo file",
|
|
21175
|
-
"datafeeder.upload.maxFileSize": "Dimensione massima: {size} MB",
|
|
21176
|
-
"datafeeder.upload.title": "Importa i suoi dati",
|
|
21177
|
-
"datafeeder.upload.uploadButton": "Carica",
|
|
21178
|
-
"datafeeder.validation.csv.delimiter": "Separatore di colonne",
|
|
21179
|
-
"datafeeder.validation.csv.delimiter.comma": "Virgola",
|
|
21180
|
-
"datafeeder.validation.csv.delimiter.semicolon": "Punto e virgola",
|
|
21181
|
-
"datafeeder.validation.csv.lat.field": "Colonna di latitudine",
|
|
21182
|
-
"datafeeder.validation.csv.lng.field": "Colonna di longitudine",
|
|
21183
|
-
"datafeeder.validation.csv.quote.double": "Virgolette doppie",
|
|
21184
|
-
"datafeeder.validation.csv.quote.none": "Nessun",
|
|
21185
|
-
"datafeeder.validation.csv.quote.simple": "Citazione semplice",
|
|
21186
|
-
"datafeeder.validation.csv.quoteChar": "Separatore di testo",
|
|
21187
|
-
"datafeeder.validation.encoding": "Codifica",
|
|
21188
|
-
"datafeeder.validation.extent.title": "Ecco l'estensione del dataset",
|
|
21189
|
-
"datafeeder.validation.extent.title.unknown": "Sistema di proiezione sconosciuto",
|
|
21190
|
-
"datafeeder.validation.projection": "Proiezione:",
|
|
21191
|
-
"datafeeder.validation.projection.unknown": "Seleziona una proiezione",
|
|
21192
|
-
"datafeeder.validation.sample.title": "E un esempio di oggetto",
|
|
21193
|
-
"datafeeder.wizard.emptyRequiredValuesMessage": "Si prega di compilare i campi obbligatori",
|
|
21194
20833
|
"datafeeder.wizardSummarize.createdAt": "Creato il",
|
|
21195
20834
|
"datafeeder.wizardSummarize.scale": "Scala",
|
|
21196
20835
|
"datahub.header.datasets": "Dati",
|
|
@@ -21274,9 +20913,9 @@ var it = {
|
|
|
21274
20913
|
"editor.record.deleteError.title": "Errore durante l'eliminazione",
|
|
21275
20914
|
"editor.record.deleteSuccess.body": "Il dataset è stato eliminato correttamente",
|
|
21276
20915
|
"editor.record.deleteSuccess.title": "Eliminazione riuscita",
|
|
21277
|
-
"editor.record.error.back": "",
|
|
21278
|
-
"editor.record.error.explanation": "",
|
|
21279
|
-
"editor.record.error.message": "",
|
|
20916
|
+
"editor.record.error.back": "Ritorna al catalogo",
|
|
20917
|
+
"editor.record.error.explanation": "Forse non ha accesso a questa pagina oppure questo collegamento potrebbe non essere valido.",
|
|
20918
|
+
"editor.record.error.message": "Qualcosa è andato storto",
|
|
21280
20919
|
"editor.record.form.bottomButtons.comeBackLater": "Ritorna più tardi",
|
|
21281
20920
|
"editor.record.form.bottomButtons.next": "Avanti",
|
|
21282
20921
|
"editor.record.form.bottomButtons.previous": "Precedente",
|
|
@@ -21336,18 +20975,18 @@ var it = {
|
|
|
21336
20975
|
"editor.record.form.keywords.place.placeholder": "Cerca una posizione per parola chiave",
|
|
21337
20976
|
"editor.record.form.keywords.place.withoutExtent": "Questa parola chiave non ha una posizione geografica associata",
|
|
21338
20977
|
"editor.record.form.keywords.placeholder": "Seleziona una parola chiave",
|
|
21339
|
-
"editor.record.form.license.cc-by": "",
|
|
21340
|
-
"editor.record.form.license.cc-by-sa": "",
|
|
21341
|
-
"editor.record.form.license.cc-zero": "",
|
|
20978
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
20979
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
20980
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
21342
20981
|
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
21343
20982
|
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
21344
|
-
"editor.record.form.license.odbl": "",
|
|
21345
|
-
"editor.record.form.license.odc-by": "",
|
|
21346
|
-
"editor.record.form.license.pddl": "",
|
|
20983
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
20984
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
20985
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
21347
20986
|
"editor.record.form.license.unknown": "Sconosciuto o assente",
|
|
21348
20987
|
"editor.record.form.page.accessAndContact": "Informazioni per l'uso",
|
|
21349
20988
|
"editor.record.form.page.description": "Descrizione del dataset",
|
|
21350
|
-
"editor.record.form.page.resources": "",
|
|
20989
|
+
"editor.record.form.page.resources": "Risorse",
|
|
21351
20990
|
"editor.record.form.section.about.description": "Queste informazioni riguardano il dataset",
|
|
21352
20991
|
"editor.record.form.section.about.label": "Informazioni sul dataset",
|
|
21353
20992
|
"editor.record.form.section.annexes.description": "Gli allegati sono risorse facoltative. Sono allegati al dataset e aiutano a comprendere meglio i dati (avviso, ecc.).",
|
|
@@ -21374,7 +21013,7 @@ var it = {
|
|
|
21374
21013
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21375
21014
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21376
21015
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21377
|
-
"editor.record.lock.reason": "",
|
|
21016
|
+
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21378
21017
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21379
21018
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
21380
21019
|
"editor.record.onlineResourceError.closeMessage": "Capito",
|
|
@@ -21396,7 +21035,7 @@ var it = {
|
|
|
21396
21035
|
"editor.record.resourceError.closeMessage": "Capito",
|
|
21397
21036
|
"editor.record.resourceError.title": "Errore con gli allegati",
|
|
21398
21037
|
"editor.record.saveStatus.draftWithChangesPending": "Salvato - Modifiche non pubblicate",
|
|
21399
|
-
"editor.record.saveStatus.recordNotPublished": "",
|
|
21038
|
+
"editor.record.saveStatus.recordNotPublished": "Salvato - non pubblicato",
|
|
21400
21039
|
"editor.record.saveStatus.recordUpToDate": "Salvato - Dataset aggiornato",
|
|
21401
21040
|
"editor.record.undo.confirmation.cancelText": "Mantieni le modifiche",
|
|
21402
21041
|
"editor.record.undo.confirmation.confirmText": "Annulla le modifiche",
|
|
@@ -21406,7 +21045,7 @@ var it = {
|
|
|
21406
21045
|
"editor.record.undo.tooltip.enabled": "Fare clic su questo pulsante per annullare le modifiche apportate a questo dataset",
|
|
21407
21046
|
"editor.record.upToDate": "Questo dataset è aggiornato",
|
|
21408
21047
|
"editor.sidebar.logout": "Esci",
|
|
21409
|
-
"editor.sidebar.menu.editor": "",
|
|
21048
|
+
"editor.sidebar.menu.editor": "Editore",
|
|
21410
21049
|
"editor.temporary.disabled": "Non ancora implementato",
|
|
21411
21050
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
21412
21051
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
@@ -21454,7 +21093,7 @@ var it = {
|
|
|
21454
21093
|
"map.add.layer": "Aggiungere un layer",
|
|
21455
21094
|
"map.add.layer.catalog": "Dal catalogo",
|
|
21456
21095
|
"map.add.layer.file": "Da un file",
|
|
21457
|
-
"map.add.layer.ogc.api": "",
|
|
21096
|
+
"map.add.layer.ogc.api": "Da OGC API",
|
|
21458
21097
|
"map.add.layer.wfs": "Da un WFS",
|
|
21459
21098
|
"map.add.layer.wms": "Da un WMS",
|
|
21460
21099
|
"map.addFromFile.placeholder": "Clicca o trascina un file qui",
|
|
@@ -21467,7 +21106,7 @@ var it = {
|
|
|
21467
21106
|
"map.loading.data": "Caricamento dati...",
|
|
21468
21107
|
"map.loading.service": "Caricamento del servizio...",
|
|
21469
21108
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
21470
|
-
"map.ogc.urlInput.hint": "",
|
|
21109
|
+
"map.ogc.urlInput.hint": "Inserisci URL del servizio OGC API",
|
|
21471
21110
|
"map.select.layer": "Sorgente dati",
|
|
21472
21111
|
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
21473
21112
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
@@ -21493,10 +21132,11 @@ var it = {
|
|
|
21493
21132
|
"record.action.delete": "Elimina",
|
|
21494
21133
|
"record.action.download": "Scarica",
|
|
21495
21134
|
"record.action.duplicate": "Duplicato",
|
|
21496
|
-
"record.action.duplicating": "",
|
|
21135
|
+
"record.action.duplicating": "Duplicazione",
|
|
21136
|
+
"record.action.rollback": "Annulla",
|
|
21497
21137
|
"record.action.view": "Visualizza",
|
|
21498
21138
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21499
|
-
"record.feature.limit": "La
|
|
21139
|
+
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21500
21140
|
"record.metadata.about": "Descrizione",
|
|
21501
21141
|
"record.metadata.api": "API",
|
|
21502
21142
|
"record.metadata.api.form.closeButton": "Chiude",
|
|
@@ -21614,8 +21254,10 @@ var it = {
|
|
|
21614
21254
|
"search.error.receivedError": "Errore restituito",
|
|
21615
21255
|
"search.error.recordHasnolink": "Questo dataset non ha ancora alcun collegamento, riprova più tardi.",
|
|
21616
21256
|
"search.error.recordNotFound": "Impossibile trovare questi dati.",
|
|
21617
|
-
"search.field.any.placeholder": "Cerca
|
|
21257
|
+
"search.field.any.placeholder": "Cerca del catalogo...",
|
|
21618
21258
|
"search.field.sortBy": "Ordina per:",
|
|
21259
|
+
"search.filters.availableServices.download": "",
|
|
21260
|
+
"search.filters.availableServices.view": "",
|
|
21619
21261
|
"search.filters.changeDate": "Aggiornato",
|
|
21620
21262
|
"search.filters.clear": "Ripristina",
|
|
21621
21263
|
"search.filters.contact": "Contatti",
|
|
@@ -21671,7 +21313,7 @@ var it = {
|
|
|
21671
21313
|
"tooltip.url.open": "Aprire l'URL",
|
|
21672
21314
|
"ui.readLess": "Ridurre",
|
|
21673
21315
|
"ui.readMore": "Leggere di più",
|
|
21674
|
-
"wfs.aggregations.notsupported": "",
|
|
21316
|
+
"wfs.aggregations.notsupported": "Aggregazioni non supportate per i servizi WFS",
|
|
21675
21317
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
21676
21318
|
"wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
|
|
21677
21319
|
"wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
|
|
@@ -21706,8 +21348,6 @@ var nl = {
|
|
|
21706
21348
|
"chart.type.lineSmooth": "glad lijndiagram",
|
|
21707
21349
|
"chart.type.pie": "cirkeldiagram",
|
|
21708
21350
|
"dashboard.catalog.allRecords": "",
|
|
21709
|
-
"dashboard.catalog.contacts": "",
|
|
21710
|
-
"dashboard.catalog.thesaurus": "",
|
|
21711
21351
|
"dashboard.createRecord": "",
|
|
21712
21352
|
"dashboard.importRecord": "",
|
|
21713
21353
|
"dashboard.importRecord.importExternal": "",
|
|
@@ -21720,29 +21360,10 @@ var nl = {
|
|
|
21720
21360
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
21721
21361
|
"dashboard.records.myRecords": "Mijn Records",
|
|
21722
21362
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
21723
|
-
"dashboard.records.templates": "",
|
|
21724
21363
|
"dashboard.records.userDetail": "",
|
|
21725
21364
|
"dashboard.records.userEmail": "",
|
|
21726
21365
|
"dashboard.records.username": "",
|
|
21727
21366
|
"dashboard.records.users": "",
|
|
21728
|
-
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
21729
|
-
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
21730
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
21731
|
-
"datafeeder.analysisProgressBar.subtitle": "",
|
|
21732
|
-
"datafeeder.analysisProgressBar.title": "",
|
|
21733
|
-
"datafeeder.datasetValidation.datasetInformation": "",
|
|
21734
|
-
"datafeeder.datasetValidation.submitButton": "",
|
|
21735
|
-
"datafeeder.datasetValidation.title": "",
|
|
21736
|
-
"datafeeder.datasetValidation.unknown": "",
|
|
21737
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
21738
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
21739
|
-
"datafeeder.form.abstract": "",
|
|
21740
|
-
"datafeeder.form.datepicker": "",
|
|
21741
|
-
"datafeeder.form.description": "",
|
|
21742
|
-
"datafeeder.form.dropdown": "",
|
|
21743
|
-
"datafeeder.form.tags": "",
|
|
21744
|
-
"datafeeder.form.title": "",
|
|
21745
|
-
"datafeeder.formsPage.title": "",
|
|
21746
21367
|
"datafeeder.month.april": "",
|
|
21747
21368
|
"datafeeder.month.august": "",
|
|
21748
21369
|
"datafeeder.month.december": "",
|
|
@@ -21755,59 +21376,6 @@ var nl = {
|
|
|
21755
21376
|
"datafeeder.month.november": "",
|
|
21756
21377
|
"datafeeder.month.october": "",
|
|
21757
21378
|
"datafeeder.month.september": "",
|
|
21758
|
-
"datafeeder.publish.hint": "",
|
|
21759
|
-
"datafeeder.publish.illustration.title": "",
|
|
21760
|
-
"datafeeder.publish.subtitle": "",
|
|
21761
|
-
"datafeeder.publish.title": "",
|
|
21762
|
-
"datafeeder.publish.upload": "",
|
|
21763
|
-
"datafeeder.publishSuccess.geonetworkRecord": "",
|
|
21764
|
-
"datafeeder.publishSuccess.illustration.title": "",
|
|
21765
|
-
"datafeeder.publishSuccess.mapViewer": "",
|
|
21766
|
-
"datafeeder.publishSuccess.ogcFeature": "",
|
|
21767
|
-
"datafeeder.publishSuccess.subtitle": "",
|
|
21768
|
-
"datafeeder.publishSuccess.title": "",
|
|
21769
|
-
"datafeeder.publishSuccess.uploadAnotherData": "",
|
|
21770
|
-
"datafeeder.summarizePage.illustration": "",
|
|
21771
|
-
"datafeeder.summarizePage.previous": "",
|
|
21772
|
-
"datafeeder.summarizePage.submit": "",
|
|
21773
|
-
"datafeeder.summarizePage.title": "",
|
|
21774
|
-
"datafeeder.upload.acceptedFormats": "",
|
|
21775
|
-
"datafeeder.upload.checkboxLabel": "",
|
|
21776
|
-
"datafeeder.upload.error.subtitle.analysis": "",
|
|
21777
|
-
"datafeeder.upload.error.subtitle.cantOpenFile": "",
|
|
21778
|
-
"datafeeder.upload.error.subtitle.fileFormat": "",
|
|
21779
|
-
"datafeeder.upload.error.subtitle.fileSize": "",
|
|
21780
|
-
"datafeeder.upload.error.title.analysis": "",
|
|
21781
|
-
"datafeeder.upload.error.title.cantOpenFile": "",
|
|
21782
|
-
"datafeeder.upload.error.title.fileFormat": "",
|
|
21783
|
-
"datafeeder.upload.error.title.fileHasntSelected": "",
|
|
21784
|
-
"datafeeder.upload.error.title.fileSize": "",
|
|
21785
|
-
"datafeeder.upload.error.title.noRightsToSendData": "",
|
|
21786
|
-
"datafeeder.upload.illustration.enrichment": "",
|
|
21787
|
-
"datafeeder.upload.illustration.import": "",
|
|
21788
|
-
"datafeeder.upload.illustration.title": "",
|
|
21789
|
-
"datafeeder.upload.illustration.validation": "",
|
|
21790
|
-
"datafeeder.upload.illustration.verification": "",
|
|
21791
|
-
"datafeeder.upload.inputLabel": "",
|
|
21792
|
-
"datafeeder.upload.maxFileSize": "",
|
|
21793
|
-
"datafeeder.upload.title": "",
|
|
21794
|
-
"datafeeder.upload.uploadButton": "",
|
|
21795
|
-
"datafeeder.validation.csv.delimiter": "",
|
|
21796
|
-
"datafeeder.validation.csv.delimiter.comma": "",
|
|
21797
|
-
"datafeeder.validation.csv.delimiter.semicolon": "",
|
|
21798
|
-
"datafeeder.validation.csv.lat.field": "",
|
|
21799
|
-
"datafeeder.validation.csv.lng.field": "",
|
|
21800
|
-
"datafeeder.validation.csv.quote.double": "",
|
|
21801
|
-
"datafeeder.validation.csv.quote.none": "",
|
|
21802
|
-
"datafeeder.validation.csv.quote.simple": "",
|
|
21803
|
-
"datafeeder.validation.csv.quoteChar": "",
|
|
21804
|
-
"datafeeder.validation.encoding": "",
|
|
21805
|
-
"datafeeder.validation.extent.title": "",
|
|
21806
|
-
"datafeeder.validation.extent.title.unknown": "",
|
|
21807
|
-
"datafeeder.validation.projection": "",
|
|
21808
|
-
"datafeeder.validation.projection.unknown": "",
|
|
21809
|
-
"datafeeder.validation.sample.title": "",
|
|
21810
|
-
"datafeeder.wizard.emptyRequiredValuesMessage": "",
|
|
21811
21379
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
21812
21380
|
"datafeeder.wizardSummarize.scale": "",
|
|
21813
21381
|
"datahub.header.datasets": "",
|
|
@@ -22111,6 +21679,7 @@ var nl = {
|
|
|
22111
21679
|
"record.action.download": "",
|
|
22112
21680
|
"record.action.duplicate": "",
|
|
22113
21681
|
"record.action.duplicating": "",
|
|
21682
|
+
"record.action.rollback": "",
|
|
22114
21683
|
"record.action.view": "",
|
|
22115
21684
|
"record.externalViewer.open": "",
|
|
22116
21685
|
"record.feature.limit": "",
|
|
@@ -22233,6 +21802,8 @@ var nl = {
|
|
|
22233
21802
|
"search.error.recordNotFound": "",
|
|
22234
21803
|
"search.field.any.placeholder": "",
|
|
22235
21804
|
"search.field.sortBy": "",
|
|
21805
|
+
"search.filters.availableServices.download": "",
|
|
21806
|
+
"search.filters.availableServices.view": "",
|
|
22236
21807
|
"search.filters.changeDate": "",
|
|
22237
21808
|
"search.filters.clear": "",
|
|
22238
21809
|
"search.filters.contact": "",
|
|
@@ -22288,7 +21859,6 @@ var nl = {
|
|
|
22288
21859
|
"tooltip.url.open": "",
|
|
22289
21860
|
"ui.readLess": "",
|
|
22290
21861
|
"ui.readMore": "",
|
|
22291
|
-
"wfs.aggregations.notsupported": "",
|
|
22292
21862
|
"wfs.feature.limit": "",
|
|
22293
21863
|
"wfs.featuretype.notfound": "",
|
|
22294
21864
|
"wfs.geojsongml.notsupported": "",
|
|
@@ -22323,8 +21893,6 @@ var pt = {
|
|
|
22323
21893
|
"chart.type.lineSmooth": "gráfico de linha suave",
|
|
22324
21894
|
"chart.type.pie": "gráfico de pizza",
|
|
22325
21895
|
"dashboard.catalog.allRecords": "",
|
|
22326
|
-
"dashboard.catalog.contacts": "",
|
|
22327
|
-
"dashboard.catalog.thesaurus": "",
|
|
22328
21896
|
"dashboard.createRecord": "",
|
|
22329
21897
|
"dashboard.importRecord": "",
|
|
22330
21898
|
"dashboard.importRecord.importExternal": "",
|
|
@@ -22337,29 +21905,10 @@ var pt = {
|
|
|
22337
21905
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
22338
21906
|
"dashboard.records.myRecords": "Meus Registros",
|
|
22339
21907
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
22340
|
-
"dashboard.records.templates": "",
|
|
22341
21908
|
"dashboard.records.userDetail": "",
|
|
22342
21909
|
"dashboard.records.userEmail": "",
|
|
22343
21910
|
"dashboard.records.username": "",
|
|
22344
21911
|
"dashboard.records.users": "",
|
|
22345
|
-
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
22346
|
-
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
22347
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
22348
|
-
"datafeeder.analysisProgressBar.subtitle": "",
|
|
22349
|
-
"datafeeder.analysisProgressBar.title": "",
|
|
22350
|
-
"datafeeder.datasetValidation.datasetInformation": "",
|
|
22351
|
-
"datafeeder.datasetValidation.submitButton": "",
|
|
22352
|
-
"datafeeder.datasetValidation.title": "",
|
|
22353
|
-
"datafeeder.datasetValidation.unknown": "",
|
|
22354
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
22355
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
22356
|
-
"datafeeder.form.abstract": "",
|
|
22357
|
-
"datafeeder.form.datepicker": "",
|
|
22358
|
-
"datafeeder.form.description": "",
|
|
22359
|
-
"datafeeder.form.dropdown": "",
|
|
22360
|
-
"datafeeder.form.tags": "",
|
|
22361
|
-
"datafeeder.form.title": "",
|
|
22362
|
-
"datafeeder.formsPage.title": "",
|
|
22363
21912
|
"datafeeder.month.april": "",
|
|
22364
21913
|
"datafeeder.month.august": "",
|
|
22365
21914
|
"datafeeder.month.december": "",
|
|
@@ -22372,59 +21921,6 @@ var pt = {
|
|
|
22372
21921
|
"datafeeder.month.november": "",
|
|
22373
21922
|
"datafeeder.month.october": "",
|
|
22374
21923
|
"datafeeder.month.september": "",
|
|
22375
|
-
"datafeeder.publish.hint": "",
|
|
22376
|
-
"datafeeder.publish.illustration.title": "",
|
|
22377
|
-
"datafeeder.publish.subtitle": "",
|
|
22378
|
-
"datafeeder.publish.title": "",
|
|
22379
|
-
"datafeeder.publish.upload": "",
|
|
22380
|
-
"datafeeder.publishSuccess.geonetworkRecord": "",
|
|
22381
|
-
"datafeeder.publishSuccess.illustration.title": "",
|
|
22382
|
-
"datafeeder.publishSuccess.mapViewer": "",
|
|
22383
|
-
"datafeeder.publishSuccess.ogcFeature": "",
|
|
22384
|
-
"datafeeder.publishSuccess.subtitle": "",
|
|
22385
|
-
"datafeeder.publishSuccess.title": "",
|
|
22386
|
-
"datafeeder.publishSuccess.uploadAnotherData": "",
|
|
22387
|
-
"datafeeder.summarizePage.illustration": "",
|
|
22388
|
-
"datafeeder.summarizePage.previous": "",
|
|
22389
|
-
"datafeeder.summarizePage.submit": "",
|
|
22390
|
-
"datafeeder.summarizePage.title": "",
|
|
22391
|
-
"datafeeder.upload.acceptedFormats": "",
|
|
22392
|
-
"datafeeder.upload.checkboxLabel": "",
|
|
22393
|
-
"datafeeder.upload.error.subtitle.analysis": "",
|
|
22394
|
-
"datafeeder.upload.error.subtitle.cantOpenFile": "",
|
|
22395
|
-
"datafeeder.upload.error.subtitle.fileFormat": "",
|
|
22396
|
-
"datafeeder.upload.error.subtitle.fileSize": "",
|
|
22397
|
-
"datafeeder.upload.error.title.analysis": "",
|
|
22398
|
-
"datafeeder.upload.error.title.cantOpenFile": "",
|
|
22399
|
-
"datafeeder.upload.error.title.fileFormat": "",
|
|
22400
|
-
"datafeeder.upload.error.title.fileHasntSelected": "",
|
|
22401
|
-
"datafeeder.upload.error.title.fileSize": "",
|
|
22402
|
-
"datafeeder.upload.error.title.noRightsToSendData": "",
|
|
22403
|
-
"datafeeder.upload.illustration.enrichment": "",
|
|
22404
|
-
"datafeeder.upload.illustration.import": "",
|
|
22405
|
-
"datafeeder.upload.illustration.title": "",
|
|
22406
|
-
"datafeeder.upload.illustration.validation": "",
|
|
22407
|
-
"datafeeder.upload.illustration.verification": "",
|
|
22408
|
-
"datafeeder.upload.inputLabel": "",
|
|
22409
|
-
"datafeeder.upload.maxFileSize": "",
|
|
22410
|
-
"datafeeder.upload.title": "",
|
|
22411
|
-
"datafeeder.upload.uploadButton": "",
|
|
22412
|
-
"datafeeder.validation.csv.delimiter": "",
|
|
22413
|
-
"datafeeder.validation.csv.delimiter.comma": "",
|
|
22414
|
-
"datafeeder.validation.csv.delimiter.semicolon": "",
|
|
22415
|
-
"datafeeder.validation.csv.lat.field": "",
|
|
22416
|
-
"datafeeder.validation.csv.lng.field": "",
|
|
22417
|
-
"datafeeder.validation.csv.quote.double": "",
|
|
22418
|
-
"datafeeder.validation.csv.quote.none": "",
|
|
22419
|
-
"datafeeder.validation.csv.quote.simple": "",
|
|
22420
|
-
"datafeeder.validation.csv.quoteChar": "",
|
|
22421
|
-
"datafeeder.validation.encoding": "",
|
|
22422
|
-
"datafeeder.validation.extent.title": "",
|
|
22423
|
-
"datafeeder.validation.extent.title.unknown": "",
|
|
22424
|
-
"datafeeder.validation.projection": "",
|
|
22425
|
-
"datafeeder.validation.projection.unknown": "",
|
|
22426
|
-
"datafeeder.validation.sample.title": "",
|
|
22427
|
-
"datafeeder.wizard.emptyRequiredValuesMessage": "",
|
|
22428
21924
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
22429
21925
|
"datafeeder.wizardSummarize.scale": "",
|
|
22430
21926
|
"datahub.header.datasets": "",
|
|
@@ -22728,6 +22224,7 @@ var pt = {
|
|
|
22728
22224
|
"record.action.download": "",
|
|
22729
22225
|
"record.action.duplicate": "",
|
|
22730
22226
|
"record.action.duplicating": "",
|
|
22227
|
+
"record.action.rollback": "",
|
|
22731
22228
|
"record.action.view": "",
|
|
22732
22229
|
"record.externalViewer.open": "",
|
|
22733
22230
|
"record.feature.limit": "",
|
|
@@ -22850,6 +22347,8 @@ var pt = {
|
|
|
22850
22347
|
"search.error.recordNotFound": "",
|
|
22851
22348
|
"search.field.any.placeholder": "",
|
|
22852
22349
|
"search.field.sortBy": "",
|
|
22350
|
+
"search.filters.availableServices.download": "",
|
|
22351
|
+
"search.filters.availableServices.view": "",
|
|
22853
22352
|
"search.filters.changeDate": "",
|
|
22854
22353
|
"search.filters.clear": "",
|
|
22855
22354
|
"search.filters.contact": "",
|
|
@@ -22905,7 +22404,6 @@ var pt = {
|
|
|
22905
22404
|
"tooltip.url.open": "",
|
|
22906
22405
|
"ui.readLess": "",
|
|
22907
22406
|
"ui.readMore": "",
|
|
22908
|
-
"wfs.aggregations.notsupported": "",
|
|
22909
22407
|
"wfs.feature.limit": "",
|
|
22910
22408
|
"wfs.featuretype.notfound": "",
|
|
22911
22409
|
"wfs.geojsongml.notsupported": "",
|
|
@@ -23092,6 +22590,16 @@ class Gn4FieldMapper {
|
|
|
23092
22590
|
isOpenData: (output, source) => this.addExtra({
|
|
23093
22591
|
isOpenData: selectField(source, 'isOpenData') !== 'false',
|
|
23094
22592
|
}, output),
|
|
22593
|
+
featureTypes: (output, source) => this.addExtra({
|
|
22594
|
+
featureTypes: selectField(source, 'featureTypes'),
|
|
22595
|
+
}, output),
|
|
22596
|
+
related: (output, source) => {
|
|
22597
|
+
const fcatSource = selectField(getFirstValue(selectField(selectField(source, 'related'), 'fcats')) ?? {}, '_source');
|
|
22598
|
+
const featureCatalogIdentifier = selectField(fcatSource, 'uuid');
|
|
22599
|
+
return featureCatalogIdentifier
|
|
22600
|
+
? this.addExtra({ featureCatalogIdentifier }, output)
|
|
22601
|
+
: output;
|
|
22602
|
+
},
|
|
23095
22603
|
isPublishedToAll: (output, source) => this.addExtra({
|
|
23096
22604
|
isPublishedToAll: selectField(source, 'isPublishedToAll'),
|
|
23097
22605
|
}, output),
|
|
@@ -23617,16 +23125,26 @@ class ElasticsearchService {
|
|
|
23617
23125
|
].filter(Boolean);
|
|
23618
23126
|
return queryParts.length > 0 ? queryParts : undefined;
|
|
23619
23127
|
}
|
|
23128
|
+
mustNotFilters() {
|
|
23129
|
+
return [
|
|
23130
|
+
{
|
|
23131
|
+
...this.queryFilterOnValues('resourceType', [
|
|
23132
|
+
'service',
|
|
23133
|
+
'map',
|
|
23134
|
+
'map/static',
|
|
23135
|
+
'mapDigital',
|
|
23136
|
+
]),
|
|
23137
|
+
},
|
|
23138
|
+
{
|
|
23139
|
+
query_string: {
|
|
23140
|
+
query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
23141
|
+
},
|
|
23142
|
+
},
|
|
23143
|
+
];
|
|
23144
|
+
}
|
|
23620
23145
|
buildPayloadQuery({ any, ...fieldSearchFilters }, configFilters, uuids, geometry) {
|
|
23621
23146
|
const must = [];
|
|
23622
|
-
const must_not =
|
|
23623
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23624
|
-
'service',
|
|
23625
|
-
'map',
|
|
23626
|
-
'map/static',
|
|
23627
|
-
'mapDigital',
|
|
23628
|
-
]),
|
|
23629
|
-
};
|
|
23147
|
+
const must_not = this.mustNotFilters();
|
|
23630
23148
|
const should = [];
|
|
23631
23149
|
const filter = [this.queryFilterOnValues('isTemplate', 'n')];
|
|
23632
23150
|
if (any) {
|
|
@@ -23712,14 +23230,7 @@ class ElasticsearchService {
|
|
|
23712
23230
|
},
|
|
23713
23231
|
},
|
|
23714
23232
|
],
|
|
23715
|
-
must_not:
|
|
23716
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23717
|
-
'service',
|
|
23718
|
-
'map',
|
|
23719
|
-
'map/static',
|
|
23720
|
-
'mapDigital',
|
|
23721
|
-
]),
|
|
23722
|
-
},
|
|
23233
|
+
must_not: this.mustNotFilters(),
|
|
23723
23234
|
},
|
|
23724
23235
|
},
|
|
23725
23236
|
_source: ['resourceTitleObject', 'uuid'],
|
|
@@ -23936,9 +23447,29 @@ class Gn4Repository {
|
|
|
23936
23447
|
}
|
|
23937
23448
|
getRecord(uniqueIdentifier) {
|
|
23938
23449
|
return this.gn4SearchApi
|
|
23939
|
-
.search('bucket',
|
|
23450
|
+
.search('bucket', ['fcats'], JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
|
|
23940
23451
|
.pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
|
|
23941
23452
|
}
|
|
23453
|
+
getFeatureCatalog(record, visited = new Set() // prevent looping
|
|
23454
|
+
) {
|
|
23455
|
+
if (record.extras &&
|
|
23456
|
+
record.extras['featureTypes'] &&
|
|
23457
|
+
record.extras['featureTypes'][0]?.attributeTable &&
|
|
23458
|
+
Array.isArray(record.extras['featureTypes'][0].attributeTable)) {
|
|
23459
|
+
return of({
|
|
23460
|
+
attributes: record.extras['featureTypes'][0]?.attributeTable?.map((attr) => ({
|
|
23461
|
+
name: attr.name,
|
|
23462
|
+
title: attr.definition,
|
|
23463
|
+
})),
|
|
23464
|
+
});
|
|
23465
|
+
}
|
|
23466
|
+
const featureCatalogIdentifier = record.extras['featureCatalogIdentifier'];
|
|
23467
|
+
if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
|
|
23468
|
+
visited.add(featureCatalogIdentifier);
|
|
23469
|
+
return this.getRecord(featureCatalogIdentifier).pipe(switchMap((record) => record ? this.getFeatureCatalog(record, visited) : of(null)));
|
|
23470
|
+
}
|
|
23471
|
+
return of(null);
|
|
23472
|
+
}
|
|
23942
23473
|
getSimilarRecords(similarTo) {
|
|
23943
23474
|
return this.gn4SearchApi
|
|
23944
23475
|
.search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo, 3)))
|
|
@@ -24015,14 +23546,10 @@ class Gn4Repository {
|
|
|
24015
23546
|
return this.getExternalRecordAsXml(recordDownloadUrl).pipe(exhaustMap(async (fetchedRecordAsXml) => {
|
|
24016
23547
|
const converter = findConverterForDocument(fetchedRecordAsXml);
|
|
24017
23548
|
const record = await converter.readRecord(fetchedRecordAsXml);
|
|
24018
|
-
const tempId = this.generateTemporaryId();
|
|
24019
23549
|
record.title = `${record.title} (Copy)`;
|
|
24020
|
-
record
|
|
24021
|
-
|
|
24022
|
-
|
|
24023
|
-
this._draftsChanged.next();
|
|
24024
|
-
return tempId;
|
|
24025
|
-
}), catchError((error) => {
|
|
23550
|
+
await converter.writeRecord(record, fetchedRecordAsXml);
|
|
23551
|
+
return this.saveRecord(record, '', false);
|
|
23552
|
+
}), exhaustMap((uuidObservable) => uuidObservable), catchError((error) => {
|
|
24026
23553
|
return throwError(() => error);
|
|
24027
23554
|
}));
|
|
24028
23555
|
}
|
|
@@ -25673,18 +25200,19 @@ class Gn4PlatformService {
|
|
|
25673
25200
|
return combineLatest([
|
|
25674
25201
|
this.recordsApiService.getAssociatedResources(record.uniqueIdentifier),
|
|
25675
25202
|
this.recordsApiService.getAllResources(record.uniqueIdentifier),
|
|
25676
|
-
]).pipe(map$1(([
|
|
25677
|
-
|
|
25678
|
-
|
|
25679
|
-
|
|
25680
|
-
...(
|
|
25681
|
-
|
|
25682
|
-
|
|
25683
|
-
|
|
25684
|
-
.map((
|
|
25685
|
-
|
|
25686
|
-
|
|
25687
|
-
|
|
25203
|
+
]).pipe(map$1(([associated, attachments]) => {
|
|
25204
|
+
const { onlines = [], thumbnails = [] } = associated;
|
|
25205
|
+
const urlsToKeep = [
|
|
25206
|
+
...(Array.isArray(onlines) ? onlines : []),
|
|
25207
|
+
...(Array.isArray(thumbnails) ? thumbnails : []),
|
|
25208
|
+
].map((resource) => Object.values(resource.url)[0]);
|
|
25209
|
+
const fileToDelete = attachments
|
|
25210
|
+
.filter((attachment) => !urlsToKeep.includes(attachment.url))
|
|
25211
|
+
.map((attachment) => attachment.filename);
|
|
25212
|
+
return fileToDelete;
|
|
25213
|
+
}), mergeMap((filesToDelete) => filesToDelete.length
|
|
25214
|
+
? forkJoin(filesToDelete.map((filename) => this.recordsApiService.delResource(record.uniqueIdentifier, filename))).pipe(map$1(() => undefined))
|
|
25215
|
+
: of(undefined)), catchError((error) => {
|
|
25688
25216
|
console.error('Error while cleaning attachments:', error);
|
|
25689
25217
|
throw error;
|
|
25690
25218
|
}));
|
|
@@ -26324,66 +25852,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26324
25852
|
args: [{ selector: 'gn-ui-color-scale', template: "<div class=\"flex flex-row items-center\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">primary</div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-black\"\n title=\"primary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darkest\"\n title=\"primary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darker\"\n title=\"primary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary border-2 border-primary-darkest\"\n title=\"primary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lighter\"\n title=\"primary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lightest\"\n title=\"primary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-white\"\n title=\"primary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">\n secondary\n </div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-black\"\n title=\"secondary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darkest\"\n title=\"secondary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darker\"\n title=\"secondary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary border-2 border-secondary-darkest\"\n title=\"secondary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lighter\"\n title=\"secondary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lightest\"\n title=\"secondary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-white\"\n title=\"secondary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">main</div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-main\" title=\"main\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-900\" title=\"gray-900\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-800\" title=\"gray-800\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-700\" title=\"gray-700\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-600\" title=\"gray-600\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-500\" title=\"gray-500\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-400\" title=\"gray-400\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-300\" title=\"gray-300\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-200\" title=\"gray-200\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-100\" title=\"gray-100\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-50\" title=\"gray-50\"></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-background\"\n title=\"background\"\n ></div>\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32\">background</div>\n</div>\n" }]
|
|
26325
25853
|
}] });
|
|
26326
25854
|
|
|
26327
|
-
class StepBarComponent {
|
|
26328
|
-
constructor(cdr) {
|
|
26329
|
-
this.cdr = cdr;
|
|
26330
|
-
this.currentStep = 1;
|
|
26331
|
-
this.type = 'default';
|
|
26332
|
-
}
|
|
26333
|
-
get stepCounter() {
|
|
26334
|
-
return new Array(this.steps);
|
|
26335
|
-
}
|
|
26336
|
-
get color() {
|
|
26337
|
-
switch (this.type) {
|
|
26338
|
-
case 'default':
|
|
26339
|
-
return {
|
|
26340
|
-
outerBar: 'bg-gray-200',
|
|
26341
|
-
innerBar: 'bg-gray-100',
|
|
26342
|
-
};
|
|
26343
|
-
case 'primary':
|
|
26344
|
-
return {
|
|
26345
|
-
outerBar: 'bg-primary',
|
|
26346
|
-
innerBar: 'bg-primary-lighter',
|
|
26347
|
-
};
|
|
26348
|
-
case 'secondary':
|
|
26349
|
-
return {
|
|
26350
|
-
outerBar: 'bg-secondary',
|
|
26351
|
-
innerBar: 'bg-secondary-lighter',
|
|
26352
|
-
};
|
|
26353
|
-
}
|
|
26354
|
-
}
|
|
26355
|
-
getCircleColor(index) {
|
|
26356
|
-
return index === this.currentStep
|
|
26357
|
-
? 'bg-black'
|
|
26358
|
-
: index < this.currentStep
|
|
26359
|
-
? 'bg-white'
|
|
26360
|
-
: this.color.innerBar;
|
|
26361
|
-
}
|
|
26362
|
-
getChecked(index) {
|
|
26363
|
-
return index + 1 < this.currentStep;
|
|
26364
|
-
}
|
|
26365
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepBarComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26366
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StepBarComponent, selector: "gn-ui-step-bar", inputs: { steps: "steps", currentStep: "currentStep", type: "type" }, ngImport: i0, template: "<div class=\"relative flex flex-col justify-center\">\n <div class=\"flex justify-between ml-16 mr-16 z-10 circle-steps\">\n <div\n *ngFor=\"let step of stepCounter; let i = index\"\n class=\"shadow-md rounded-full h-6 w-6 {{ getCircleColor(i + 1) }}\"\n >\n <span class=\"icon-check pl-1\" *ngIf=\"getChecked(i)\"></span>\n </div>\n </div>\n <div\n class=\"absolute rounded-lg right-0 w-full {{ color.outerBar }} h-2 z-0\"\n ></div>\n</div>\n", styles: [".icon-check{color:var(--color-primary)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
26367
|
-
}
|
|
26368
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepBarComponent, decorators: [{
|
|
26369
|
-
type: Component,
|
|
26370
|
-
args: [{ selector: 'gn-ui-step-bar', template: "<div class=\"relative flex flex-col justify-center\">\n <div class=\"flex justify-between ml-16 mr-16 z-10 circle-steps\">\n <div\n *ngFor=\"let step of stepCounter; let i = index\"\n class=\"shadow-md rounded-full h-6 w-6 {{ getCircleColor(i + 1) }}\"\n >\n <span class=\"icon-check pl-1\" *ngIf=\"getChecked(i)\"></span>\n </div>\n </div>\n <div\n class=\"absolute rounded-lg right-0 w-full {{ color.outerBar }} h-2 z-0\"\n ></div>\n</div>\n", styles: [".icon-check{color:var(--color-primary)}\n"] }]
|
|
26371
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { steps: [{
|
|
26372
|
-
type: Input
|
|
26373
|
-
}], currentStep: [{
|
|
26374
|
-
type: Input
|
|
26375
|
-
}], type: [{
|
|
26376
|
-
type: Input
|
|
26377
|
-
}] } });
|
|
26378
|
-
|
|
26379
25855
|
class UiWidgetsModule {
|
|
26380
25856
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiWidgetsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26381
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiWidgetsModule, declarations: [ColorScaleComponent
|
|
25857
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiWidgetsModule, declarations: [ColorScaleComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26382
25858
|
FormsModule,
|
|
26383
25859
|
ReactiveFormsModule,
|
|
26384
25860
|
TagInputModule,
|
|
26385
25861
|
UtilSharedModule,
|
|
26386
|
-
MatProgressSpinnerModule]
|
|
25862
|
+
MatProgressSpinnerModule] }); }
|
|
26387
25863
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiWidgetsModule, imports: [CommonModule,
|
|
26388
25864
|
TranslateModule.forChild(),
|
|
26389
25865
|
NgxDropzoneModule,
|
|
@@ -26396,7 +25872,7 @@ class UiWidgetsModule {
|
|
|
26396
25872
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiWidgetsModule, decorators: [{
|
|
26397
25873
|
type: NgModule,
|
|
26398
25874
|
args: [{
|
|
26399
|
-
declarations: [ColorScaleComponent
|
|
25875
|
+
declarations: [ColorScaleComponent],
|
|
26400
25876
|
imports: [
|
|
26401
25877
|
CommonModule,
|
|
26402
25878
|
TranslateModule.forChild(),
|
|
@@ -26407,7 +25883,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26407
25883
|
UtilSharedModule,
|
|
26408
25884
|
MatProgressSpinnerModule,
|
|
26409
25885
|
],
|
|
26410
|
-
exports: [
|
|
25886
|
+
exports: [],
|
|
26411
25887
|
}]
|
|
26412
25888
|
}] });
|
|
26413
25889
|
|
|
@@ -26439,14 +25915,20 @@ class ProgressBarComponent {
|
|
|
26439
25915
|
innerBar: 'bg-secondary-lighter',
|
|
26440
25916
|
text: 'text-white',
|
|
26441
25917
|
};
|
|
25918
|
+
case 'light':
|
|
25919
|
+
return {
|
|
25920
|
+
outerBar: 'bg-primary-white',
|
|
25921
|
+
innerBar: 'bg-primary',
|
|
25922
|
+
text: 'text-main',
|
|
25923
|
+
};
|
|
26442
25924
|
}
|
|
26443
25925
|
}
|
|
26444
25926
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26445
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n
|
|
25927
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[6px] w-full {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm h-full\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"], dependencies: [{ kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }] }); }
|
|
26446
25928
|
}
|
|
26447
25929
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
26448
25930
|
type: Component,
|
|
26449
|
-
args: [{ selector: 'gn-ui-progress-bar', standalone: true, template: "<div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n
|
|
25931
|
+
args: [{ selector: 'gn-ui-progress-bar', standalone: true, imports: [NgSwitch, NgSwitchCase, NgSwitchDefault], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[6px] w-full {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm h-full\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }]
|
|
26450
25932
|
}], propDecorators: { value: [{
|
|
26451
25933
|
type: Input
|
|
26452
25934
|
}], type: [{
|
|
@@ -26643,29 +26125,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26643
26125
|
}] } });
|
|
26644
26126
|
|
|
26645
26127
|
class AutocompleteComponent {
|
|
26128
|
+
get displayEnterBtn() {
|
|
26129
|
+
return this.enterButton && this.allowSubmit && !this.searchActive;
|
|
26130
|
+
}
|
|
26131
|
+
getExtraClass() {
|
|
26132
|
+
if (this.allowSubmit) {
|
|
26133
|
+
if (this.enterButton) {
|
|
26134
|
+
return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+var(--icon-padding))] inset-y-[--icon-padding]';
|
|
26135
|
+
}
|
|
26136
|
+
else {
|
|
26137
|
+
return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+0.25*var(--icon-width))] inset-y-[calc(0.25*var(--icon-width))]';
|
|
26138
|
+
}
|
|
26139
|
+
}
|
|
26140
|
+
else {
|
|
26141
|
+
if (!this.enterButton) {
|
|
26142
|
+
return 'border rounded-lg absolute w-8 h-8 right-2 inset-y-2';
|
|
26143
|
+
}
|
|
26144
|
+
}
|
|
26145
|
+
return 'border rounded-lg absolute w-8 h-8';
|
|
26146
|
+
}
|
|
26646
26147
|
constructor(cdRef) {
|
|
26647
26148
|
this.cdRef = cdRef;
|
|
26149
|
+
this.enterButton = false;
|
|
26648
26150
|
this.clearOnSelection = false;
|
|
26649
26151
|
this.preventCompleteOnSelection = false;
|
|
26650
26152
|
this.autoFocus = false;
|
|
26651
26153
|
this.minCharacterCount = 3;
|
|
26652
26154
|
// this will show a submit button next to the input; if false, a search icon will appear on the left
|
|
26653
26155
|
this.allowSubmit = false;
|
|
26156
|
+
this.forceTrackPosition = false;
|
|
26654
26157
|
this.itemSelected = new EventEmitter();
|
|
26655
26158
|
this.inputSubmitted = new EventEmitter();
|
|
26656
26159
|
this.inputCleared = new EventEmitter();
|
|
26160
|
+
this.isSearchActive = new EventEmitter();
|
|
26657
26161
|
this.control = new UntypedFormControl();
|
|
26658
26162
|
this.cancelEnter = true;
|
|
26659
26163
|
this.selectionSubject = new ReplaySubject(1);
|
|
26660
26164
|
this.lastInputValue$ = new ReplaySubject(1);
|
|
26661
26165
|
this.error = null;
|
|
26662
26166
|
this.subscription = new Subscription();
|
|
26167
|
+
this.lastPosition = null;
|
|
26168
|
+
this.enterBtnPosition = 0;
|
|
26169
|
+
this.searchActive = false;
|
|
26663
26170
|
this.displayWithFn = (item) => item.toString();
|
|
26664
26171
|
this.displayWithFnInternal = (item) => {
|
|
26665
26172
|
if (item === null || item === undefined)
|
|
26666
26173
|
return null;
|
|
26667
26174
|
return this.displayWithFn(item);
|
|
26668
26175
|
};
|
|
26176
|
+
/**
|
|
26177
|
+
* !!! This function is used only for web component mode,
|
|
26178
|
+
* the autocomplete dropdown may not update its position
|
|
26179
|
+
* if the page or container is disabling wind scroll.
|
|
26180
|
+
*/
|
|
26181
|
+
this.trackPosition = () => {
|
|
26182
|
+
const dropdownOpened = this.triggerRef && this.triggerRef.panelOpen;
|
|
26183
|
+
const rect = this.inputRef.nativeElement.getBoundingClientRect();
|
|
26184
|
+
if (dropdownOpened &&
|
|
26185
|
+
(!this.lastPosition ||
|
|
26186
|
+
rect.top !== this.lastPosition.top ||
|
|
26187
|
+
rect.left !== this.lastPosition.left)) {
|
|
26188
|
+
this.triggerRef.updatePosition();
|
|
26189
|
+
}
|
|
26190
|
+
this.lastPosition = rect;
|
|
26191
|
+
requestAnimationFrame(this.trackPosition);
|
|
26192
|
+
};
|
|
26669
26193
|
}
|
|
26670
26194
|
ngOnChanges(changes) {
|
|
26671
26195
|
const { value } = changes;
|
|
@@ -26673,6 +26197,14 @@ class AutocompleteComponent {
|
|
|
26673
26197
|
const previousTextValue = this.displayWithFnInternal(value.previousValue);
|
|
26674
26198
|
const currentTextValue = this.displayWithFnInternal(value.currentValue);
|
|
26675
26199
|
if (previousTextValue !== currentTextValue) {
|
|
26200
|
+
if (currentTextValue) {
|
|
26201
|
+
this.searchActive = true;
|
|
26202
|
+
this.isSearchActive.emit(true);
|
|
26203
|
+
}
|
|
26204
|
+
else {
|
|
26205
|
+
this.searchActive = false;
|
|
26206
|
+
this.isSearchActive.emit(false);
|
|
26207
|
+
}
|
|
26676
26208
|
this.updateInputValue(value.currentValue);
|
|
26677
26209
|
}
|
|
26678
26210
|
}
|
|
@@ -26717,9 +26249,23 @@ class AutocompleteComponent {
|
|
|
26717
26249
|
this.inputRef.nativeElement.focus();
|
|
26718
26250
|
this.cdRef.detectChanges();
|
|
26719
26251
|
}
|
|
26252
|
+
this.startTrackingPosition();
|
|
26253
|
+
}
|
|
26254
|
+
/**
|
|
26255
|
+
* !!! This function is used only for web component mode,
|
|
26256
|
+
* the autocomplete dropdown may not update its position
|
|
26257
|
+
* if the page or container is disabling wind scroll.
|
|
26258
|
+
*/
|
|
26259
|
+
startTrackingPosition() {
|
|
26260
|
+
if (this.forceTrackPosition) {
|
|
26261
|
+
requestAnimationFrame(this.trackPosition);
|
|
26262
|
+
}
|
|
26720
26263
|
}
|
|
26721
26264
|
ngOnDestroy() {
|
|
26722
26265
|
this.subscription?.unsubscribe();
|
|
26266
|
+
if (this.intervalIdPosition) {
|
|
26267
|
+
clearInterval(this.intervalIdPosition);
|
|
26268
|
+
}
|
|
26723
26269
|
}
|
|
26724
26270
|
updateInputValue(value) {
|
|
26725
26271
|
if (value) {
|
|
@@ -26731,6 +26277,8 @@ class AutocompleteComponent {
|
|
|
26731
26277
|
}
|
|
26732
26278
|
clear() {
|
|
26733
26279
|
this.inputRef.nativeElement.value = '';
|
|
26280
|
+
this.searchActive = false;
|
|
26281
|
+
this.isSearchActive.emit(false);
|
|
26734
26282
|
this.inputCleared.emit();
|
|
26735
26283
|
this.selectionSubject
|
|
26736
26284
|
.pipe(take(1))
|
|
@@ -26739,6 +26287,8 @@ class AutocompleteComponent {
|
|
|
26739
26287
|
}
|
|
26740
26288
|
handleEnter(any) {
|
|
26741
26289
|
if (!this.cancelEnter && this.allowSubmit) {
|
|
26290
|
+
this.isSearchActive.emit(true);
|
|
26291
|
+
this.searchActive = true;
|
|
26742
26292
|
this.inputSubmitted.emit(any);
|
|
26743
26293
|
}
|
|
26744
26294
|
}
|
|
@@ -26766,16 +26316,22 @@ class AutocompleteComponent {
|
|
|
26766
26316
|
this.control.setValue('');
|
|
26767
26317
|
}
|
|
26768
26318
|
}
|
|
26319
|
+
handleInput(event) {
|
|
26320
|
+
this.searchActive = false;
|
|
26321
|
+
this.isSearchActive.emit(false);
|
|
26322
|
+
this.enterBtnPosition = event.target['value'].length * 8 + 80;
|
|
26323
|
+
}
|
|
26769
26324
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26770
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", preventCompleteOnSelection: "preventCompleteOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, providers: [
|
|
26325
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", enterButton: "enterButton", action: "action", value: "value", clearOnSelection: "clearOnSelection", preventCompleteOnSelection: "preventCompleteOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", forceTrackPosition: "forceTrackPosition", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared", isSearchActive: "isSearchActive" }, providers: [
|
|
26771
26326
|
provideIcons({
|
|
26772
26327
|
iconoirSearch,
|
|
26773
26328
|
matClose,
|
|
26329
|
+
iconoirLongArrowDownLeft,
|
|
26774
26330
|
}),
|
|
26775
26331
|
provideNgIconsConfig({
|
|
26776
|
-
size: '1.
|
|
26332
|
+
size: '1.75rem',
|
|
26777
26333
|
}),
|
|
26778
|
-
], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <input\n
|
|
26334
|
+
], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26779
26335
|
}
|
|
26780
26336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
26781
26337
|
type: Component,
|
|
@@ -26791,13 +26347,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26791
26347
|
provideIcons({
|
|
26792
26348
|
iconoirSearch,
|
|
26793
26349
|
matClose,
|
|
26350
|
+
iconoirLongArrowDownLeft,
|
|
26794
26351
|
}),
|
|
26795
26352
|
provideNgIconsConfig({
|
|
26796
|
-
size: '1.
|
|
26353
|
+
size: '1.75rem',
|
|
26797
26354
|
}),
|
|
26798
|
-
], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <input\n
|
|
26355
|
+
], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
26799
26356
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
|
|
26800
26357
|
type: Input
|
|
26358
|
+
}], enterButton: [{
|
|
26359
|
+
type: Input
|
|
26801
26360
|
}], action: [{
|
|
26802
26361
|
type: Input
|
|
26803
26362
|
}], value: [{
|
|
@@ -26812,12 +26371,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26812
26371
|
type: Input
|
|
26813
26372
|
}], allowSubmit: [{
|
|
26814
26373
|
type: Input
|
|
26374
|
+
}], forceTrackPosition: [{
|
|
26375
|
+
type: Input
|
|
26815
26376
|
}], itemSelected: [{
|
|
26816
26377
|
type: Output
|
|
26817
26378
|
}], inputSubmitted: [{
|
|
26818
26379
|
type: Output
|
|
26819
26380
|
}], inputCleared: [{
|
|
26820
26381
|
type: Output
|
|
26382
|
+
}], isSearchActive: [{
|
|
26383
|
+
type: Output
|
|
26821
26384
|
}], triggerRef: [{
|
|
26822
26385
|
type: ViewChild,
|
|
26823
26386
|
args: [MatAutocompleteTrigger]
|
|
@@ -26925,72 +26488,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26925
26488
|
type: Output
|
|
26926
26489
|
}] } });
|
|
26927
26490
|
|
|
26928
|
-
class ChipsInputComponent {
|
|
26929
|
-
onChange(event) {
|
|
26930
|
-
this.rawChange.next(event);
|
|
26931
|
-
}
|
|
26932
|
-
constructor(http, translate) {
|
|
26933
|
-
this.http = http;
|
|
26934
|
-
this.translate = translate;
|
|
26935
|
-
this.required = false;
|
|
26936
|
-
this.loadOnce = false;
|
|
26937
|
-
this.autocompleteItems = [];
|
|
26938
|
-
this.invalid = false;
|
|
26939
|
-
this.items = [];
|
|
26940
|
-
this.requestAutocompleteItems = (text) => {
|
|
26941
|
-
if (this.url) {
|
|
26942
|
-
if (this.loadOnce && this.loadedItems) {
|
|
26943
|
-
return this.loadedItems;
|
|
26944
|
-
}
|
|
26945
|
-
const url = this.url(text);
|
|
26946
|
-
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
26947
|
-
return this.http
|
|
26948
|
-
.get(url.replace('${lang}', lang))
|
|
26949
|
-
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
26950
|
-
}
|
|
26951
|
-
else {
|
|
26952
|
-
return of(this.autocompleteItems || []);
|
|
26953
|
-
}
|
|
26954
|
-
};
|
|
26955
|
-
this.rawChange = new Subject();
|
|
26956
|
-
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
26957
|
-
this.subscription = new Subscription();
|
|
26958
|
-
}
|
|
26959
|
-
ngOnInit() {
|
|
26960
|
-
if (this.loadOnce) {
|
|
26961
|
-
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
26962
|
-
}
|
|
26963
|
-
this.items = this.selectedItems;
|
|
26964
|
-
this.subscription = this.rawChange
|
|
26965
|
-
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
26966
|
-
.subscribe();
|
|
26967
|
-
this.rawChange.next(this.items);
|
|
26968
|
-
}
|
|
26969
|
-
ngOnDestroy() {
|
|
26970
|
-
this.subscription.unsubscribe();
|
|
26971
|
-
}
|
|
26972
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChipsInputComponent, deps: [{ token: i1.HttpClient }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26973
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: { url: "url", placeholder: "placeholder", selectedItems: "selectedItems", required: "required", loadOnce: "loadOnce", autocompleteItems: "autocompleteItems" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.TagInputComponent, selector: "tag-input", inputs: ["separatorKeys", "separatorKeyCodes", "placeholder", "secondaryPlaceholder", "maxItems", "validators", "asyncValidators", "onlyFromAutocomplete", "errorMessages", "theme", "onTextChangeDebounce", "inputId", "inputClass", "clearOnBlur", "hideForm", "addOnBlur", "addOnPaste", "pasteSplitPattern", "blinkIfDupe", "removable", "editable", "allowDupes", "modelAsStrings", "trimTags", "inputText", "ripple", "tabindex", "disable", "dragZone", "onRemoving", "onAdding", "animationDuration"], outputs: ["onAdd", "onRemove", "onSelect", "onFocus", "onBlur", "onTextChange", "onPaste", "onValidationError", "onTagEdited", "inputTextChange"] }, { kind: "component", type: i5.TagInputDropdown, selector: "tag-input-dropdown", inputs: ["offset", "focusFirstElement", "showDropdownIfEmpty", "autocompleteObservable", "minimumTextLength", "limitItemsTo", "displayBy", "identifyBy", "matchingFn", "appendToBody", "keepOpen", "dynamicUpdate", "zIndex", "autocompleteItems"] }] }); }
|
|
26974
|
-
}
|
|
26975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
26976
|
-
type: Component,
|
|
26977
|
-
args: [{ selector: 'gn-ui-chips-input', template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"] }]
|
|
26978
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.TranslateService }], propDecorators: { url: [{
|
|
26979
|
-
type: Input
|
|
26980
|
-
}], placeholder: [{
|
|
26981
|
-
type: Input
|
|
26982
|
-
}], selectedItems: [{
|
|
26983
|
-
type: Input
|
|
26984
|
-
}], required: [{
|
|
26985
|
-
type: Input
|
|
26986
|
-
}], loadOnce: [{
|
|
26987
|
-
type: Input
|
|
26988
|
-
}], autocompleteItems: [{
|
|
26989
|
-
type: Input
|
|
26990
|
-
}], itemsChange: [{
|
|
26991
|
-
type: Output
|
|
26992
|
-
}] } });
|
|
26993
|
-
|
|
26994
26491
|
class CopyTextButtonComponent {
|
|
26995
26492
|
constructor() {
|
|
26996
26493
|
this.displayText = true;
|
|
@@ -27668,8 +27165,8 @@ class UrlInputComponent {
|
|
|
27668
27165
|
this.inputValue = '';
|
|
27669
27166
|
}
|
|
27670
27167
|
ngOnChanges(changes) {
|
|
27671
|
-
if (changes['
|
|
27672
|
-
this.inputValue =
|
|
27168
|
+
if (changes['resetUrlOnChange']) {
|
|
27169
|
+
this.inputValue = '';
|
|
27673
27170
|
}
|
|
27674
27171
|
}
|
|
27675
27172
|
handleInput(event) {
|
|
@@ -27698,7 +27195,7 @@ class UrlInputComponent {
|
|
|
27698
27195
|
}
|
|
27699
27196
|
}
|
|
27700
27197
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UrlInputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27701
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UrlInputComponent, isStandalone: true, selector: "gn-ui-url-input", inputs: { value: "value", extraClass: "extraClass", placeholder: "placeholder", disabled: "disabled", showValidateButton: "showValidateButton" }, outputs: { valueChange: "valueChange", uploadClick: "uploadClick" }, providers: [
|
|
27198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UrlInputComponent, isStandalone: true, selector: "gn-ui-url-input", inputs: { value: "value", extraClass: "extraClass", placeholder: "placeholder", disabled: "disabled", showValidateButton: "showValidateButton", resetUrlOnChange: "resetUrlOnChange" }, outputs: { valueChange: "valueChange", uploadClick: "uploadClick" }, providers: [
|
|
27702
27199
|
provideIcons({ iconoirLink, iconoirArrowUp }),
|
|
27703
27200
|
provideNgIconsConfig({
|
|
27704
27201
|
size: '1.5em',
|
|
@@ -27723,6 +27220,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27723
27220
|
type: Input
|
|
27724
27221
|
}], showValidateButton: [{
|
|
27725
27222
|
type: Input
|
|
27223
|
+
}], resetUrlOnChange: [{
|
|
27224
|
+
type: Input
|
|
27726
27225
|
}], valueChange: [{
|
|
27727
27226
|
type: Output
|
|
27728
27227
|
}], uploadClick: [{
|
|
@@ -27788,7 +27287,7 @@ class FileInputComponent {
|
|
|
27788
27287
|
provideNgIconsConfig({
|
|
27789
27288
|
size: '1.5em',
|
|
27790
27289
|
}),
|
|
27791
|
-
], ngImport: i0, template: "<div class=\"w-full flex flex-col gap-[16px]\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !isUploadInProgress && !disabled,\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"isUploadInProgress || disabled ? null : 0\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n (keydown.enter)=\"fileInput.click()\"\n >\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirCloudUpload\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"isUploadInProgress\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">\n {{ getPrimaryText() | translate: { sizeMB: maxSizeMB.toFixed(0) } }}\n </p>\n <p\n class=\"text-sm\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-primary cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <p class=\"w-full flex flex-row items-center justify-stretch gap-[16px]\">\n <span class=\"border-b border-gray-300 grow\"></span>\n <span class=\"text-sm font-medium text-gray-500 or-input-url\" translate>\n input.file.orInputUrl</span\n >\n <span class=\"border-b border-gray-300 grow\"></span>\n </p>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"isUploadInProgress || disabled\"\n (uploadClick)=\"handleUrlChange($event)\"\n ></gn-ui-url-input>\n </label>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27290
|
+
], ngImport: i0, template: "<div class=\"w-full flex flex-col gap-[16px]\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !isUploadInProgress && !disabled,\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"isUploadInProgress || disabled ? null : 0\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n (keydown.enter)=\"fileInput.click()\"\n >\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirCloudUpload\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"isUploadInProgress\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">\n {{ getPrimaryText() | translate: { sizeMB: maxSizeMB.toFixed(0) } }}\n </p>\n <p\n class=\"text-sm\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-primary cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <p class=\"w-full flex flex-row items-center justify-stretch gap-[16px]\">\n <span class=\"border-b border-gray-300 grow\"></span>\n <span class=\"text-sm font-medium text-gray-500 or-input-url\" translate>\n input.file.orInputUrl</span\n >\n <span class=\"border-b border-gray-300 grow\"></span>\n </p>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"isUploadInProgress || disabled\"\n (uploadClick)=\"handleUrlChange($event)\"\n ></gn-ui-url-input>\n </label>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27792
27291
|
}
|
|
27793
27292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileInputComponent, decorators: [{
|
|
27794
27293
|
type: Component,
|
|
@@ -28070,7 +27569,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28070
27569
|
class UiInputsModule {
|
|
28071
27570
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28072
27571
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiInputsModule, declarations: [DragAndDropFileInputComponent,
|
|
28073
|
-
ChipsInputComponent,
|
|
28074
27572
|
DropdownMultiselectComponent,
|
|
28075
27573
|
ViewportIntersectorComponent,
|
|
28076
27574
|
CheckboxComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
@@ -28098,7 +27596,6 @@ class UiInputsModule {
|
|
|
28098
27596
|
ButtonComponent,
|
|
28099
27597
|
DragAndDropFileInputComponent,
|
|
28100
27598
|
TextAreaComponent,
|
|
28101
|
-
ChipsInputComponent,
|
|
28102
27599
|
DropdownMultiselectComponent,
|
|
28103
27600
|
ViewportIntersectorComponent,
|
|
28104
27601
|
CheckToggleComponent,
|
|
@@ -28143,7 +27640,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28143
27640
|
args: [{
|
|
28144
27641
|
declarations: [
|
|
28145
27642
|
DragAndDropFileInputComponent,
|
|
28146
|
-
ChipsInputComponent,
|
|
28147
27643
|
DropdownMultiselectComponent,
|
|
28148
27644
|
ViewportIntersectorComponent,
|
|
28149
27645
|
CheckboxComponent,
|
|
@@ -28189,7 +27685,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28189
27685
|
ButtonComponent,
|
|
28190
27686
|
DragAndDropFileInputComponent,
|
|
28191
27687
|
TextAreaComponent,
|
|
28192
|
-
ChipsInputComponent,
|
|
28193
27688
|
DropdownMultiselectComponent,
|
|
28194
27689
|
ViewportIntersectorComponent,
|
|
28195
27690
|
CheckToggleComponent,
|
|
@@ -28855,7 +28350,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28855
28350
|
|
|
28856
28351
|
class MarkdownParserComponent {
|
|
28857
28352
|
get parsedMarkdown() {
|
|
28858
|
-
return marked.parse(this.textContent);
|
|
28353
|
+
return marked.parse(this.textContent ?? '');
|
|
28859
28354
|
}
|
|
28860
28355
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28861
28356
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent", whitoutStyles: "whitoutStyles" }, ngImport: i0, template: "<div\n [class]=\"whitoutStyles ? '' : 'markdown-body'\"\n [innerHTML]=\"parsedMarkdown\"\n></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0;line-height:1.5;word-wrap:break-word;height:100%}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body :first-child{margin-top:0}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -28941,7 +28436,15 @@ class MetadataQualityComponent {
|
|
|
28941
28436
|
}
|
|
28942
28437
|
}
|
|
28943
28438
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28944
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityComponent, isStandalone: true, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" },
|
|
28439
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityComponent, isStandalone: true, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, providers: [
|
|
28440
|
+
provideIcons({
|
|
28441
|
+
matInfoOutline,
|
|
28442
|
+
}),
|
|
28443
|
+
provideNgIconsConfig({
|
|
28444
|
+
size: '1.2em',
|
|
28445
|
+
strokeWidth: '1.5px',
|
|
28446
|
+
}),
|
|
28447
|
+
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"smaller ? 'leading-[8px] min-w-[120px]' : 'min-w-[200px]'\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28945
28448
|
}
|
|
28946
28449
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
28947
28450
|
type: Component,
|
|
@@ -28951,7 +28454,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28951
28454
|
ProgressBarComponent,
|
|
28952
28455
|
MetadataQualityItemComponent,
|
|
28953
28456
|
TranslateModule,
|
|
28954
|
-
|
|
28457
|
+
NgIcon,
|
|
28458
|
+
], providers: [
|
|
28459
|
+
provideIcons({
|
|
28460
|
+
matInfoOutline,
|
|
28461
|
+
}),
|
|
28462
|
+
provideNgIconsConfig({
|
|
28463
|
+
size: '1.2em',
|
|
28464
|
+
strokeWidth: '1.5px',
|
|
28465
|
+
}),
|
|
28466
|
+
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"smaller ? 'leading-[8px] min-w-[120px]' : 'min-w-[200px]'\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
28955
28467
|
}], propDecorators: { metadata: [{
|
|
28956
28468
|
type: Input
|
|
28957
28469
|
}], smaller: [{
|
|
@@ -28966,11 +28478,11 @@ class RecordPreviewRowComponent extends RecordPreviewComponent {
|
|
|
28966
28478
|
this.elementRef = elementRef;
|
|
28967
28479
|
}
|
|
28968
28480
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordPreviewRowComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28969
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordPreviewRowComponent, selector: "gn-ui-record-preview-row", usesInheritance: true, ngImport: i0, template: "<a\n class=\"group container-lg mx-auto flex cursor-pointer flex-wrap sm:flex-nowrap\"\n [title]=\"record.title\"\n [attr.href]=\"linkHref\"\n>\n <div class=\"shrink-0 w-full sm:w-52\">\n <div\n class=\"overflow-hidden bg-gray-100 rounded-lg w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full object-cover object-left-top\"\n [thumbnailUrl]=\"[\n record.overviews?.[0]?.url?.toString(),\n organization?.logoUrl?.toString(),\n ]\"\n [fit]=\"['cover', 'contain']\"\n ></gn-ui-thumbnail>\n </div>\n </div>\n <div\n class=\"content grid grow relative sm:pl-6 sm:pr-12\"\n style=\"grid-template-columns: auto 70px\"\n >\n <div class=\"mb-3 mt-5 sm:mt-2\">\n <div\n class=\"font-title text-21 text-title line-clamp-2 col-start-1 col-span-2 sm:line-clamp-1 group-hover:text-primary transition-colors\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </div>\n </div>\n <div\n class=\"abstract mt-4 mb-5 h-36 line-clamp-6 col-start-1 col-span-2 row-start-3 sm:mb-2 sm:h-[4.5rem] sm:line-clamp-3 sm:row-start-2 sm:mt-0\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n whitoutStyles=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n class=\"text-primary opacity-45 uppercase col-start-1 col-span-2 row-start-2 sm:truncate sm:row-start-3 sm:col-span-1\"\n data-cy=\"recordOrg\"\n [class]=\"metadataQualityDisplay ? 'limit-organisation-with-quality' : ''\"\n >\n {{ organization?.name }}\n </div>\n <div\n class=\"icons flex flex-row col-start-1 row-start-4 sm:col-start-2 sm:row-start-3 sm:absolute sm:right-[0.4em]\"\n >\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matCloudDownloadOutline\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matMapOutline\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"metadataQualityDisplay\"\n class=\"col-start-2 row-start-4 sm:row-start-3 absolute right-[4em] sm:right-[5em]\"\n >\n <gn-ui-metadata-quality\n smaller=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"text-right col-start-3 row-start-4 sm:absolute sm:col-start-2 sm:row-start-1 sm:top-[-1.125em] sm:right-[0.4em]\"\n data-cy=\"recordFav\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n</a>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28481
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordPreviewRowComponent, selector: "gn-ui-record-preview-row", usesInheritance: true, ngImport: i0, template: "<a\n class=\"group container-lg mx-auto flex cursor-pointer flex-wrap sm:flex-nowrap\"\n [title]=\"record.title\"\n [attr.href]=\"linkHref\"\n>\n <div class=\"shrink-0 w-full sm:w-52\">\n <div\n class=\"overflow-hidden bg-gray-100 rounded-lg w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full object-cover object-left-top\"\n [thumbnailUrl]=\"[\n record.overviews?.[0]?.url?.toString(),\n organization?.logoUrl?.toString(),\n ]\"\n [fit]=\"['cover', 'contain']\"\n ></gn-ui-thumbnail>\n </div>\n </div>\n <div\n class=\"content grid grow relative sm:pl-6 sm:pr-12\"\n style=\"grid-template-columns: auto 70px\"\n >\n <div class=\"mb-3 mt-5 sm:mt-2\">\n <div\n class=\"font-title text-21 text-title line-clamp-2 col-start-1 col-span-2 sm:line-clamp-1 group-hover:text-primary transition-colors\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </div>\n </div>\n <div\n class=\"abstract mt-4 mb-5 h-36 line-clamp-6 col-start-1 col-span-2 row-start-3 sm:mb-2 sm:h-[4.5rem] sm:line-clamp-3 sm:row-start-2 sm:mt-0\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n whitoutStyles=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n class=\"text-primary opacity-45 uppercase col-start-1 col-span-2 row-start-2 sm:truncate sm:row-start-3 sm:col-span-1\"\n data-cy=\"recordOrg\"\n [class]=\"metadataQualityDisplay ? 'limit-organisation-with-quality' : ''\"\n >\n {{ organization?.name }}\n </div>\n <div\n class=\"icons flex flex-row col-start-1 row-start-4 sm:col-start-2 sm:row-start-3 sm:absolute sm:right-[0.4em]\"\n >\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matCloudDownloadOutline\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matMapOutline\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"metadataQualityDisplay\"\n class=\"col-start-2 row-start-4 sm:row-start-3 absolute right-[4em] sm:right-[5em]\"\n >\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"text-right col-start-3 row-start-4 sm:absolute sm:col-start-2 sm:row-start-1 sm:top-[-1.125em] sm:right-[0.4em]\"\n data-cy=\"recordFav\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n</a>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28970
28482
|
}
|
|
28971
28483
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordPreviewRowComponent, decorators: [{
|
|
28972
28484
|
type: Component,
|
|
28973
|
-
args: [{ selector: 'gn-ui-record-preview-row', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"group container-lg mx-auto flex cursor-pointer flex-wrap sm:flex-nowrap\"\n [title]=\"record.title\"\n [attr.href]=\"linkHref\"\n>\n <div class=\"shrink-0 w-full sm:w-52\">\n <div\n class=\"overflow-hidden bg-gray-100 rounded-lg w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full object-cover object-left-top\"\n [thumbnailUrl]=\"[\n record.overviews?.[0]?.url?.toString(),\n organization?.logoUrl?.toString(),\n ]\"\n [fit]=\"['cover', 'contain']\"\n ></gn-ui-thumbnail>\n </div>\n </div>\n <div\n class=\"content grid grow relative sm:pl-6 sm:pr-12\"\n style=\"grid-template-columns: auto 70px\"\n >\n <div class=\"mb-3 mt-5 sm:mt-2\">\n <div\n class=\"font-title text-21 text-title line-clamp-2 col-start-1 col-span-2 sm:line-clamp-1 group-hover:text-primary transition-colors\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </div>\n </div>\n <div\n class=\"abstract mt-4 mb-5 h-36 line-clamp-6 col-start-1 col-span-2 row-start-3 sm:mb-2 sm:h-[4.5rem] sm:line-clamp-3 sm:row-start-2 sm:mt-0\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n whitoutStyles=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n class=\"text-primary opacity-45 uppercase col-start-1 col-span-2 row-start-2 sm:truncate sm:row-start-3 sm:col-span-1\"\n data-cy=\"recordOrg\"\n [class]=\"metadataQualityDisplay ? 'limit-organisation-with-quality' : ''\"\n >\n {{ organization?.name }}\n </div>\n <div\n class=\"icons flex flex-row col-start-1 row-start-4 sm:col-start-2 sm:row-start-3 sm:absolute sm:right-[0.4em]\"\n >\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matCloudDownloadOutline\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matMapOutline\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"metadataQualityDisplay\"\n class=\"col-start-2 row-start-4 sm:row-start-3 absolute right-[4em] sm:right-[5em]\"\n >\n <gn-ui-metadata-quality\n smaller=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"text-right col-start-3 row-start-4 sm:absolute sm:col-start-2 sm:row-start-1 sm:top-[-1.125em] sm:right-[0.4em]\"\n data-cy=\"recordFav\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n</a>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"] }]
|
|
28485
|
+
args: [{ selector: 'gn-ui-record-preview-row', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"group container-lg mx-auto flex cursor-pointer flex-wrap sm:flex-nowrap\"\n [title]=\"record.title\"\n [attr.href]=\"linkHref\"\n>\n <div class=\"shrink-0 w-full sm:w-52\">\n <div\n class=\"overflow-hidden bg-gray-100 rounded-lg w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full object-cover object-left-top\"\n [thumbnailUrl]=\"[\n record.overviews?.[0]?.url?.toString(),\n organization?.logoUrl?.toString(),\n ]\"\n [fit]=\"['cover', 'contain']\"\n ></gn-ui-thumbnail>\n </div>\n </div>\n <div\n class=\"content grid grow relative sm:pl-6 sm:pr-12\"\n style=\"grid-template-columns: auto 70px\"\n >\n <div class=\"mb-3 mt-5 sm:mt-2\">\n <div\n class=\"font-title text-21 text-title line-clamp-2 col-start-1 col-span-2 sm:line-clamp-1 group-hover:text-primary transition-colors\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </div>\n </div>\n <div\n class=\"abstract mt-4 mb-5 h-36 line-clamp-6 col-start-1 col-span-2 row-start-3 sm:mb-2 sm:h-[4.5rem] sm:line-clamp-3 sm:row-start-2 sm:mt-0\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n whitoutStyles=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n class=\"text-primary opacity-45 uppercase col-start-1 col-span-2 row-start-2 sm:truncate sm:row-start-3 sm:col-span-1\"\n data-cy=\"recordOrg\"\n [class]=\"metadataQualityDisplay ? 'limit-organisation-with-quality' : ''\"\n >\n {{ organization?.name }}\n </div>\n <div\n class=\"icons flex flex-row col-start-1 row-start-4 sm:col-start-2 sm:row-start-3 sm:absolute sm:right-[0.4em]\"\n >\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matCloudDownloadOutline\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mx-1\"\n name=\"matMapOutline\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"metadataQualityDisplay\"\n class=\"col-start-2 row-start-4 sm:row-start-3 absolute right-[4em] sm:right-[5em]\"\n >\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"text-right col-start-3 row-start-4 sm:absolute sm:col-start-2 sm:row-start-1 sm:top-[-1.125em] sm:right-[0.4em]\"\n data-cy=\"recordFav\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n</a>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"] }]
|
|
28974
28486
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
28975
28487
|
|
|
28976
28488
|
class RecordPreviewTextComponent extends RecordPreviewComponent {
|
|
@@ -29429,6 +28941,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29429
28941
|
}] } });
|
|
29430
28942
|
|
|
29431
28943
|
class ImageInputComponent {
|
|
28944
|
+
get altText() {
|
|
28945
|
+
return this._altText;
|
|
28946
|
+
}
|
|
28947
|
+
set altText(value) {
|
|
28948
|
+
if (value !== 'KO' && this._altText === 'KO') {
|
|
28949
|
+
//This is a dataset rollback after upload error
|
|
28950
|
+
this.resetErrors();
|
|
28951
|
+
}
|
|
28952
|
+
this._altText = value;
|
|
28953
|
+
}
|
|
29432
28954
|
get isUploadInProgress() {
|
|
29433
28955
|
return this.uploadProgress !== undefined;
|
|
29434
28956
|
}
|
|
@@ -29443,11 +28965,14 @@ class ImageInputComponent {
|
|
|
29443
28965
|
this.altTextChange = new EventEmitter();
|
|
29444
28966
|
this.dragFilesOver = false;
|
|
29445
28967
|
this.showUrlInput = false;
|
|
29446
|
-
this.
|
|
28968
|
+
this.imageFileError = this.uploadError;
|
|
29447
28969
|
this.showAltTextInput = false;
|
|
29448
28970
|
}
|
|
28971
|
+
getIsActionBlocked() {
|
|
28972
|
+
return this.isUploadInProgress || this.disabled;
|
|
28973
|
+
}
|
|
29449
28974
|
getPrimaryText() {
|
|
29450
|
-
if (this.
|
|
28975
|
+
if (this.imageFileError) {
|
|
29451
28976
|
return marker('input.image.uploadErrorLabel');
|
|
29452
28977
|
}
|
|
29453
28978
|
if (this.uploadProgress) {
|
|
@@ -29456,8 +28981,8 @@ class ImageInputComponent {
|
|
|
29456
28981
|
return marker('input.image.selectFileLabel');
|
|
29457
28982
|
}
|
|
29458
28983
|
getSecondaryText() {
|
|
29459
|
-
if (this.
|
|
29460
|
-
return
|
|
28984
|
+
if (this.imageFileError) {
|
|
28985
|
+
return '\u00A0'; // (only to keep same spacing, next step is to handle "Retry")
|
|
29461
28986
|
}
|
|
29462
28987
|
if (this.uploadProgress) {
|
|
29463
28988
|
return marker('input.image.uploadProgressCancel');
|
|
@@ -29471,26 +28996,35 @@ class ImageInputComponent {
|
|
|
29471
28996
|
}
|
|
29472
28997
|
}
|
|
29473
28998
|
handleDropFiles(files) {
|
|
29474
|
-
|
|
29475
|
-
|
|
29476
|
-
|
|
29477
|
-
|
|
29478
|
-
|
|
28999
|
+
this.resetErrors();
|
|
29000
|
+
const validFiles = this.filterTypeImage(files);
|
|
29001
|
+
if (validFiles.length > 0) {
|
|
29002
|
+
this.showUrlInput = false;
|
|
29003
|
+
this.resizeAndEmit(validFiles[0]);
|
|
29004
|
+
}
|
|
29005
|
+
else {
|
|
29006
|
+
this.imageFileError = true;
|
|
29007
|
+
this.handleAltTextChange('KO');
|
|
29479
29008
|
}
|
|
29480
29009
|
}
|
|
29481
29010
|
handleFileInput(event) {
|
|
29011
|
+
this.resetErrors();
|
|
29482
29012
|
const inputFiles = Array.from(event.target.files);
|
|
29483
29013
|
const validFiles = this.filterTypeImage(inputFiles);
|
|
29484
29014
|
if (validFiles.length > 0) {
|
|
29485
29015
|
this.resizeAndEmit(validFiles[0]);
|
|
29486
29016
|
}
|
|
29017
|
+
else {
|
|
29018
|
+
this.imageFileError = true;
|
|
29019
|
+
this.handleAltTextChange('KO');
|
|
29020
|
+
}
|
|
29487
29021
|
}
|
|
29488
29022
|
displayUrlInput() {
|
|
29489
29023
|
this.uploadCancel.emit();
|
|
29490
29024
|
this.showUrlInput = true;
|
|
29491
29025
|
}
|
|
29492
29026
|
async downloadUrl(url) {
|
|
29493
|
-
this.
|
|
29027
|
+
this.resetErrors();
|
|
29494
29028
|
const name = url.split('/').pop();
|
|
29495
29029
|
try {
|
|
29496
29030
|
const response = await firstValueFrom(this.http.head(url, { observe: 'response' }));
|
|
@@ -29504,7 +29038,8 @@ class ImageInputComponent {
|
|
|
29504
29038
|
this.fileChange.emit(file);
|
|
29505
29039
|
},
|
|
29506
29040
|
error: () => {
|
|
29507
|
-
this.
|
|
29041
|
+
this.imageFileError = true;
|
|
29042
|
+
this.handleAltTextChange('KO');
|
|
29508
29043
|
this.cd.markForCheck();
|
|
29509
29044
|
this.urlChange.emit(url);
|
|
29510
29045
|
},
|
|
@@ -29512,36 +29047,28 @@ class ImageInputComponent {
|
|
|
29512
29047
|
}
|
|
29513
29048
|
}
|
|
29514
29049
|
catch {
|
|
29515
|
-
this.
|
|
29050
|
+
this.imageFileError = true;
|
|
29051
|
+
this.handleAltTextChange('KO');
|
|
29516
29052
|
this.cd.markForCheck();
|
|
29517
29053
|
return;
|
|
29518
29054
|
}
|
|
29519
29055
|
}
|
|
29520
29056
|
handleSecondaryTextClick(event) {
|
|
29521
|
-
if (this.
|
|
29522
|
-
this.
|
|
29523
|
-
}
|
|
29524
|
-
else if (this.uploadProgress) {
|
|
29525
|
-
this.handleCancel();
|
|
29057
|
+
if (this.uploadProgress) {
|
|
29058
|
+
this.handleCancelUpload();
|
|
29526
29059
|
event.preventDefault();
|
|
29527
29060
|
}
|
|
29528
29061
|
}
|
|
29529
|
-
|
|
29062
|
+
handleCancelUpload() {
|
|
29530
29063
|
this.uploadCancel.emit();
|
|
29531
29064
|
}
|
|
29532
|
-
handleRetry() {
|
|
29533
|
-
switch (this.lastUploadType) {
|
|
29534
|
-
case 'file':
|
|
29535
|
-
this.fileChange.emit(this.lastUploadContent);
|
|
29536
|
-
break;
|
|
29537
|
-
case 'url':
|
|
29538
|
-
this.urlChange.emit(this.lastUploadContent);
|
|
29539
|
-
break;
|
|
29540
|
-
}
|
|
29541
|
-
}
|
|
29542
29065
|
handleDelete() {
|
|
29543
29066
|
this.delete.emit();
|
|
29544
29067
|
}
|
|
29068
|
+
resetErrors() {
|
|
29069
|
+
this.imageFileError = false;
|
|
29070
|
+
this.uploadError = false;
|
|
29071
|
+
}
|
|
29545
29072
|
toggleAltTextInput() {
|
|
29546
29073
|
this.showAltTextInput = !this.showAltTextInput;
|
|
29547
29074
|
}
|
|
@@ -29561,7 +29088,7 @@ class ImageInputComponent {
|
|
|
29561
29088
|
});
|
|
29562
29089
|
}
|
|
29563
29090
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29564
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: {
|
|
29091
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { previewUrl: "previewUrl", altText: "altText", maxSizeMB: "maxSizeMB", uploadProgress: "uploadProgress", uploadError: "uploadError", disabled: "disabled" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, providers: [
|
|
29565
29092
|
provideIcons({
|
|
29566
29093
|
iconoirMediaImage,
|
|
29567
29094
|
iconoirFramePlusIn,
|
|
@@ -29573,7 +29100,7 @@ class ImageInputComponent {
|
|
|
29573
29100
|
provideNgIconsConfig({
|
|
29574
29101
|
size: '1.5rem',
|
|
29575
29102
|
}),
|
|
29576
|
-
], ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-80 h-full flex flex-col gap-2\">\n <gn-ui-image-overlay-preview class=\"h-48\" [imageUrl]=\"previewUrl\">\n </gn-ui-image-overlay-preview>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n
|
|
29103
|
+
], ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-80 h-full flex flex-col gap-2\">\n <gn-ui-image-overlay-preview class=\"h-48\" [imageUrl]=\"previewUrl\">\n </gn-ui-image-overlay-preview>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n ></gn-ui-text-input>\n <div class=\"flex flex-row gap-2 mt-2\">\n <gn-ui-button\n type=\"gray\"\n (buttonClick)=\"handleDelete()\"\n data-cy=\"delete-image\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirBin\"></ng-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n type=\"gray\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"me-1 text-primary\"></ng-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !getIsActionBlocked(),\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"getIsActionBlocked() ? null : 0\"\n (keydown.enter)=\"fileInput.click()\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress && !imageFileError\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirMediaImage\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n\n <div\n *ngIf=\"isUploadInProgress && !imageFileError\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n\n <div class=\"w-14 h-14 rounded-md bg-gray-50 grid\" *ngIf=\"imageFileError\">\n <ng-icon\n name=\"iconoirMediaImageXmark\"\n class=\"place-self-center text-rose-500\"\n data-cy=\"imgErrorIcon\"\n ></ng-icon>\n </div>\n\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\" data-cy=\"imgInputMsgPrimary\">\n {{ getPrimaryText() | translate }}\n </p>\n <p\n class=\"text-sm\"\n data-cy=\"imgInputMsgSecondary\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n #fileInput\n accept=\"image/*\"\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n </label>\n\n <div *ngIf=\"!showUrlInput\" class=\"flex-none mt-2\">\n <gn-ui-button\n data-cy=\"imgUrlBtn\"\n (buttonClick)=\"displayUrlInput()\"\n type=\"gray\"\n [disabled]=\"disabled\"\n [extraClass]=\"disabled && 'cursor-not-allowed'\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirLink\"></ng-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n\n <gn-ui-url-input\n *ngIf=\"showUrlInput\"\n class=\"mt-3.5\"\n data-cy=\"imgUrlInput\"\n (uploadClick)=\"downloadUrl($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n >\n </gn-ui-url-input>\n </div>\n</ng-template>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: ["imageUrl"], outputs: ["isPlaceholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29577
29104
|
}
|
|
29578
29105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
29579
29106
|
type: Component,
|
|
@@ -29599,13 +29126,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29599
29126
|
provideNgIconsConfig({
|
|
29600
29127
|
size: '1.5rem',
|
|
29601
29128
|
}),
|
|
29602
|
-
], template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-80 h-full flex flex-col gap-2\">\n <gn-ui-image-overlay-preview class=\"h-48\" [imageUrl]=\"previewUrl\">\n </gn-ui-image-overlay-preview>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n
|
|
29603
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: {
|
|
29604
|
-
type: Input
|
|
29605
|
-
}], previewUrl: [{
|
|
29129
|
+
], template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-80 h-full flex flex-col gap-2\">\n <gn-ui-image-overlay-preview class=\"h-48\" [imageUrl]=\"previewUrl\">\n </gn-ui-image-overlay-preview>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n ></gn-ui-text-input>\n <div class=\"flex flex-row gap-2 mt-2\">\n <gn-ui-button\n type=\"gray\"\n (buttonClick)=\"handleDelete()\"\n data-cy=\"delete-image\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirBin\"></ng-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n type=\"gray\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"me-1 text-primary\"></ng-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !getIsActionBlocked(),\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"getIsActionBlocked() ? null : 0\"\n (keydown.enter)=\"fileInput.click()\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress && !imageFileError\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirMediaImage\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n\n <div\n *ngIf=\"isUploadInProgress && !imageFileError\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n\n <div class=\"w-14 h-14 rounded-md bg-gray-50 grid\" *ngIf=\"imageFileError\">\n <ng-icon\n name=\"iconoirMediaImageXmark\"\n class=\"place-self-center text-rose-500\"\n data-cy=\"imgErrorIcon\"\n ></ng-icon>\n </div>\n\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\" data-cy=\"imgInputMsgPrimary\">\n {{ getPrimaryText() | translate }}\n </p>\n <p\n class=\"text-sm\"\n data-cy=\"imgInputMsgSecondary\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n #fileInput\n accept=\"image/*\"\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n </label>\n\n <div *ngIf=\"!showUrlInput\" class=\"flex-none mt-2\">\n <gn-ui-button\n data-cy=\"imgUrlBtn\"\n (buttonClick)=\"displayUrlInput()\"\n type=\"gray\"\n [disabled]=\"disabled\"\n [extraClass]=\"disabled && 'cursor-not-allowed'\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirLink\"></ng-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n\n <gn-ui-url-input\n *ngIf=\"showUrlInput\"\n class=\"mt-3.5\"\n data-cy=\"imgUrlInput\"\n (uploadClick)=\"downloadUrl($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n >\n </gn-ui-url-input>\n </div>\n</ng-template>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
|
|
29130
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { previewUrl: [{
|
|
29606
29131
|
type: Input
|
|
29607
29132
|
}], altText: [{
|
|
29608
29133
|
type: Input
|
|
29134
|
+
}], maxSizeMB: [{
|
|
29135
|
+
type: Input
|
|
29609
29136
|
}], uploadProgress: [{
|
|
29610
29137
|
type: Input
|
|
29611
29138
|
}], uploadError: [{
|
|
@@ -30275,7 +29802,7 @@ class ApplicationBannerComponent {
|
|
|
30275
29802
|
matWarning,
|
|
30276
29803
|
}),
|
|
30277
29804
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
30278
|
-
], ngImport: i0, template: "<div\n *ngIf=\"message && bannerOpen\"\n class=\"absolute
|
|
29805
|
+
], ngImport: i0, template: "<div\n *ngIf=\"message && bannerOpen\"\n class=\"absolute left-0 right-0 text-wrap bg-white mt-4 max-h-24\"\n>\n <div\n class=\"flex flex-row py-2.5 px-5 gap-5 justify-start border max-h-20\"\n [ngClass]=\"classList\"\n >\n <div [ngClass]=\"message.length > 200 ? 'pt-5' : 'pt-1'\">\n <ng-icon [name]=\"icon\"></ng-icon>\n </div>\n <div class=\"flex flex-col justify-start gap-2.5\">\n <span *ngIf=\"title\" class=\"font-bold\">{{ title }}</span>\n <span class=\"font-medium max-w-2xl\" [innerHTML]=\"message\"></span>\n </div>\n <button\n *ngIf=\"closeEnabled\"\n class=\"self-start\"\n type=\"button\"\n (click)=\"closeMessage()\"\n >\n <ng-icon name=\"matCloseOutline\"> </ng-icon>\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30279
29806
|
}
|
|
30280
29807
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApplicationBannerComponent, decorators: [{
|
|
30281
29808
|
type: Component,
|
|
@@ -30287,7 +29814,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30287
29814
|
matWarning,
|
|
30288
29815
|
}),
|
|
30289
29816
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
30290
|
-
], template: "<div\n *ngIf=\"message && bannerOpen\"\n class=\"absolute
|
|
29817
|
+
], template: "<div\n *ngIf=\"message && bannerOpen\"\n class=\"absolute left-0 right-0 text-wrap bg-white mt-4 max-h-24\"\n>\n <div\n class=\"flex flex-row py-2.5 px-5 gap-5 justify-start border max-h-20\"\n [ngClass]=\"classList\"\n >\n <div [ngClass]=\"message.length > 200 ? 'pt-5' : 'pt-1'\">\n <ng-icon [name]=\"icon\"></ng-icon>\n </div>\n <div class=\"flex flex-col justify-start gap-2.5\">\n <span *ngIf=\"title\" class=\"font-bold\">{{ title }}</span>\n <span class=\"font-medium max-w-2xl\" [innerHTML]=\"message\"></span>\n </div>\n <button\n *ngIf=\"closeEnabled\"\n class=\"self-start\"\n type=\"button\"\n (click)=\"closeMessage()\"\n >\n <ng-icon name=\"matCloseOutline\"> </ng-icon>\n </button>\n </div>\n</div>\n" }]
|
|
30291
29818
|
}], propDecorators: { message: [{
|
|
30292
29819
|
type: Input
|
|
30293
29820
|
}], title: [{
|
|
@@ -30585,6 +30112,7 @@ class ActionMenuComponent {
|
|
|
30585
30112
|
this.duplicate = new EventEmitter();
|
|
30586
30113
|
this.delete = new EventEmitter();
|
|
30587
30114
|
this.closeActionMenu = new EventEmitter();
|
|
30115
|
+
this.rollback = new EventEmitter();
|
|
30588
30116
|
this.sectionDisplayed = 'mainMenu';
|
|
30589
30117
|
}
|
|
30590
30118
|
openMenu() {
|
|
@@ -30595,11 +30123,16 @@ class ActionMenuComponent {
|
|
|
30595
30123
|
this.cdr.markForCheck();
|
|
30596
30124
|
}
|
|
30597
30125
|
displayDeleteMenu() {
|
|
30598
|
-
this.
|
|
30126
|
+
if (this.isDraftPage) {
|
|
30127
|
+
this.sectionDisplayed = 'rollbackMenu';
|
|
30128
|
+
}
|
|
30129
|
+
else {
|
|
30130
|
+
this.sectionDisplayed = 'deleteMenu';
|
|
30131
|
+
}
|
|
30599
30132
|
this.cdr.markForCheck();
|
|
30600
30133
|
}
|
|
30601
30134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$b.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30602
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span translate>record.action.delete</span></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
30135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
30603
30136
|
}
|
|
30604
30137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
30605
30138
|
type: Component,
|
|
@@ -30610,17 +30143,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30610
30143
|
MatDialogModule,
|
|
30611
30144
|
ConfirmationDialogComponent,
|
|
30612
30145
|
TranslateModule,
|
|
30613
|
-
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span translate>record.action.delete</span></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
30146
|
+
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
30614
30147
|
}], ctorParameters: () => [{ type: i1$b.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
30615
30148
|
type: Input
|
|
30616
30149
|
}], canDelete: [{
|
|
30617
30150
|
type: Input
|
|
30151
|
+
}], isDraftPage: [{
|
|
30152
|
+
type: Input
|
|
30618
30153
|
}], duplicate: [{
|
|
30619
30154
|
type: Output
|
|
30620
30155
|
}], delete: [{
|
|
30621
30156
|
type: Output
|
|
30622
30157
|
}], closeActionMenu: [{
|
|
30623
30158
|
type: Output
|
|
30159
|
+
}], rollback: [{
|
|
30160
|
+
type: Output
|
|
30624
30161
|
}], trigger: [{
|
|
30625
30162
|
type: ViewChild,
|
|
30626
30163
|
args: [MatMenuTrigger]
|
|
@@ -30645,6 +30182,7 @@ class ResultsTableComponent {
|
|
|
30645
30182
|
this.recordClick = new EventEmitter();
|
|
30646
30183
|
this.duplicateRecord = new EventEmitter();
|
|
30647
30184
|
this.deleteRecord = new EventEmitter();
|
|
30185
|
+
this.rollbackDraft = new EventEmitter();
|
|
30648
30186
|
this.recordsSelectedChange = new EventEmitter();
|
|
30649
30187
|
this.isActionMenuOpen = false;
|
|
30650
30188
|
}
|
|
@@ -30723,6 +30261,10 @@ class ResultsTableComponent {
|
|
|
30723
30261
|
this.deleteRecord.emit(item);
|
|
30724
30262
|
this.closeActionMenu();
|
|
30725
30263
|
}
|
|
30264
|
+
handleRollback(item) {
|
|
30265
|
+
this.rollbackDraft.emit(item);
|
|
30266
|
+
this.closeActionMenu();
|
|
30267
|
+
}
|
|
30726
30268
|
setSortBy(col, order) {
|
|
30727
30269
|
this.sortByChange.emit([col, order]);
|
|
30728
30270
|
}
|
|
@@ -30747,7 +30289,7 @@ class ResultsTableComponent {
|
|
|
30747
30289
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30748
30290
|
}
|
|
30749
30291
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1$9.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30750
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
|
|
30292
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete", "isDraftPage"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
|
|
30751
30293
|
}
|
|
30752
30294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30753
30295
|
type: Component,
|
|
@@ -30761,7 +30303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30761
30303
|
ActionMenuComponent,
|
|
30762
30304
|
NgIconComponent,
|
|
30763
30305
|
CdkOverlayOrigin,
|
|
30764
|
-
], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
30306
|
+
], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
30765
30307
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30766
30308
|
type: Input
|
|
30767
30309
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -30786,6 +30328,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30786
30328
|
type: Output
|
|
30787
30329
|
}], deleteRecord: [{
|
|
30788
30330
|
type: Output
|
|
30331
|
+
}], rollbackDraft: [{
|
|
30332
|
+
type: Output
|
|
30789
30333
|
}], recordsSelectedChange: [{
|
|
30790
30334
|
type: Output
|
|
30791
30335
|
}], actionMenuButtons: [{
|
|
@@ -31799,8 +31343,11 @@ class FuzzySearchComponent {
|
|
|
31799
31343
|
this.searchService = searchService;
|
|
31800
31344
|
this.recordsRepository = recordsRepository;
|
|
31801
31345
|
this.autoFocus = false;
|
|
31346
|
+
this.forceTrackPosition = false;
|
|
31347
|
+
this.enterButton = false;
|
|
31802
31348
|
this.itemSelected = new EventEmitter();
|
|
31803
31349
|
this.inputSubmitted = new EventEmitter();
|
|
31350
|
+
this.isSearchActive = new EventEmitter();
|
|
31804
31351
|
this.displayWithFn = (record) => record.title;
|
|
31805
31352
|
this.autoCompleteAction = (query) => this.recordsRepository
|
|
31806
31353
|
.fuzzySearch(query)
|
|
@@ -31840,21 +31387,30 @@ class FuzzySearchComponent {
|
|
|
31840
31387
|
this.searchService.updateFilters({ any: '' });
|
|
31841
31388
|
}
|
|
31842
31389
|
}
|
|
31390
|
+
handleSearchActive(event) {
|
|
31391
|
+
this.isSearchActive.emit(event);
|
|
31392
|
+
}
|
|
31843
31393
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31844
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31394
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus", forceTrackPosition: "forceTrackPosition", enterButton: "enterButton" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", isSearchActive: "isSearchActive" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31845
31395
|
}
|
|
31846
31396
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, decorators: [{
|
|
31847
31397
|
type: Component,
|
|
31848
|
-
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n></gn-ui-autocomplete>\n" }]
|
|
31398
|
+
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n" }]
|
|
31849
31399
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: RecordsRepositoryInterface }], propDecorators: { autocomplete: [{
|
|
31850
31400
|
type: ViewChild,
|
|
31851
31401
|
args: [AutocompleteComponent]
|
|
31852
31402
|
}], autoFocus: [{
|
|
31853
31403
|
type: Input
|
|
31404
|
+
}], forceTrackPosition: [{
|
|
31405
|
+
type: Input
|
|
31406
|
+
}], enterButton: [{
|
|
31407
|
+
type: Input
|
|
31854
31408
|
}], itemSelected: [{
|
|
31855
31409
|
type: Output
|
|
31856
31410
|
}], inputSubmitted: [{
|
|
31857
31411
|
type: Output
|
|
31412
|
+
}], isSearchActive: [{
|
|
31413
|
+
type: Output
|
|
31858
31414
|
}] } });
|
|
31859
31415
|
|
|
31860
31416
|
class RecordsMetricsComponent {
|
|
@@ -33042,7 +32598,7 @@ class ResultsTableContainerComponent {
|
|
|
33042
32598
|
this.subscription.unsubscribe();
|
|
33043
32599
|
}
|
|
33044
32600
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }, { token: NotificationsService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33045
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDuplicating: "isDuplicating" }, outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n *ngIf=\"searchFacade.results$ | async as records\"\n [records]=\"records\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n [canDelete]=\"canDelete\"\n [canDuplicate]=\"canDuplicate\"\n [isDuplicating]=\"isDuplicating\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete", "isDraftPage", "isDuplicating"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "recordsSelectedChange"] }] }); }
|
|
32601
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDuplicating: "isDuplicating" }, outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n *ngIf=\"searchFacade.results$ | async as records\"\n [records]=\"records\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n [canDelete]=\"canDelete\"\n [canDuplicate]=\"canDuplicate\"\n [isDuplicating]=\"isDuplicating\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete", "isDraftPage", "isDuplicating"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "rollbackDraft", "recordsSelectedChange"] }] }); }
|
|
33046
32602
|
}
|
|
33047
32603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
33048
32604
|
type: Component,
|
|
@@ -34913,7 +34469,7 @@ class AddLayerFromCatalogComponent {
|
|
|
34913
34469
|
ADDLAYER: new ResultsLayoutConfigItem(AddLayerRecordPreviewComponent, 'py-2', '', 'flex flex-col divide-y divide-y-grey-50'),
|
|
34914
34470
|
},
|
|
34915
34471
|
},
|
|
34916
|
-
], ngImport: i0, template: "<div class=\"h-full text-sm\">\n <gn-ui-fuzzy-search></gn-ui-fuzzy-search>\n <gn-ui-results-list-container\n layout=\"ADDLAYER\"\n ></gn-ui-results-list-container>\n</div>\n", styles: ["::ng-deep .mat-tab-body-wrapper{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: FeatureSearchModule }, { kind: "component", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: ["autoFocus"], outputs: ["itemSelected", "inputSubmitted"] }, { kind: "component", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: ["metadataQualityDisplay", "layout", "showMore"], outputs: ["mdSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34472
|
+
], ngImport: i0, template: "<div class=\"h-full text-sm\">\n <gn-ui-fuzzy-search></gn-ui-fuzzy-search>\n <gn-ui-results-list-container\n layout=\"ADDLAYER\"\n ></gn-ui-results-list-container>\n</div>\n", styles: ["::ng-deep .mat-tab-body-wrapper{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: FeatureSearchModule }, { kind: "component", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: ["autoFocus", "forceTrackPosition", "enterButton"], outputs: ["itemSelected", "inputSubmitted", "isSearchActive"] }, { kind: "component", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: ["metadataQualityDisplay", "layout", "showMore"], outputs: ["mdSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34917
34473
|
}
|
|
34918
34474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddLayerFromCatalogComponent, decorators: [{
|
|
34919
34475
|
type: Component,
|
|
@@ -35191,6 +34747,9 @@ const loadFullMetadata = createAction('[Metadata view] Load full metadata', prop
|
|
|
35191
34747
|
const setIncompleteMetadata = createAction('[Metadata view] Set incomplete metadata', props());
|
|
35192
34748
|
const loadFullMetadataSuccess = createAction('[Metadata view] Load full metadata success', props());
|
|
35193
34749
|
const loadFullMetadataFailure = createAction('[Metadata view] Load full metadata failure', props());
|
|
34750
|
+
const loadFeatureCatalog = createAction("[Metadata view] Load metadata's feature catalog", props());
|
|
34751
|
+
const loadFeatureCatalogSuccess = createAction('[Metadata view] Load metadata feature catalog success', props());
|
|
34752
|
+
const loadFeatureCatalogFailure = createAction('[Metadata view] Load metadata feature catalog failure', props());
|
|
35194
34753
|
const closeMetadata = createAction('[Metadata view] close');
|
|
35195
34754
|
/*
|
|
35196
34755
|
Related actions
|
|
@@ -35216,6 +34775,9 @@ var mdview_actions = /*#__PURE__*/Object.freeze({
|
|
|
35216
34775
|
addUserFeedbackFailure: addUserFeedbackFailure,
|
|
35217
34776
|
addUserFeedbackSuccess: addUserFeedbackSuccess,
|
|
35218
34777
|
closeMetadata: closeMetadata,
|
|
34778
|
+
loadFeatureCatalog: loadFeatureCatalog,
|
|
34779
|
+
loadFeatureCatalogFailure: loadFeatureCatalogFailure,
|
|
34780
|
+
loadFeatureCatalogSuccess: loadFeatureCatalogSuccess,
|
|
35219
34781
|
loadFullMetadata: loadFullMetadata,
|
|
35220
34782
|
loadFullMetadataFailure: loadFullMetadataFailure,
|
|
35221
34783
|
loadFullMetadataSuccess: loadFullMetadataSuccess,
|
|
@@ -35233,6 +34795,8 @@ const initialMetadataViewState = {
|
|
|
35233
34795
|
loadingFull: false,
|
|
35234
34796
|
allUserFeedbacksLoading: false,
|
|
35235
34797
|
addUserFeedbackLoading: false,
|
|
34798
|
+
featureCatalogLoading: false,
|
|
34799
|
+
featureCatalogError: null,
|
|
35236
34800
|
};
|
|
35237
34801
|
const metadataViewReducer = createReducer(initialMetadataViewState,
|
|
35238
34802
|
/*
|
|
@@ -35292,6 +34856,22 @@ on(loadUserFeedbacks, (state) => ({
|
|
|
35292
34856
|
error: { otherError, notFound },
|
|
35293
34857
|
addUserFeedbackLoading: false,
|
|
35294
34858
|
allUserFeedbacksLoading: false,
|
|
34859
|
+
})),
|
|
34860
|
+
/**
|
|
34861
|
+
* FeatureCatalog reducers
|
|
34862
|
+
*/
|
|
34863
|
+
on(loadFeatureCatalog, (state) => ({
|
|
34864
|
+
...state,
|
|
34865
|
+
featureCatalogError: null,
|
|
34866
|
+
featureCatalogLoading: true,
|
|
34867
|
+
})), on(loadFeatureCatalogSuccess, (state, { datasetCatalog }) => ({
|
|
34868
|
+
...state,
|
|
34869
|
+
featureCatalog: datasetCatalog,
|
|
34870
|
+
featureCatalogLoading: false,
|
|
34871
|
+
})), on(loadFeatureCatalogFailure, (state, { error }) => ({
|
|
34872
|
+
...state,
|
|
34873
|
+
featureCatalogError: error,
|
|
34874
|
+
featureCatalogLoading: false,
|
|
35295
34875
|
})));
|
|
35296
34876
|
function reducer$1(metadataViewState, action) {
|
|
35297
34877
|
return metadataViewReducer(metadataViewState, action);
|
|
@@ -35320,6 +34900,11 @@ const getChartConfig = createSelector(getMdViewState, (state) => state.chartConf
|
|
|
35320
34900
|
const getUserFeedbacks = createSelector(getMdViewState, (state) => state.userFeedbacks);
|
|
35321
34901
|
const getAllUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.allUserFeedbacksLoading);
|
|
35322
34902
|
const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.addUserFeedbackLoading);
|
|
34903
|
+
/*
|
|
34904
|
+
Feature Catalog Selectors
|
|
34905
|
+
*/
|
|
34906
|
+
const getFeatureCatalog = createSelector(getMdViewState, (state) => state.featureCatalog);
|
|
34907
|
+
const getFeatureCatalogIsLoading = createSelector(getMdViewState, (state) => state.featureCatalogLoading);
|
|
35323
34908
|
|
|
35324
34909
|
class FetchError {
|
|
35325
34910
|
constructor(type, info, httpStatus = 0) {
|
|
@@ -35435,20 +35020,23 @@ function fetchHeaders(url) {
|
|
|
35435
35020
|
return parseHeaders(response.headers);
|
|
35436
35021
|
});
|
|
35437
35022
|
}
|
|
35438
|
-
function fetchDataAsText(url) {
|
|
35439
|
-
|
|
35023
|
+
function fetchDataAsText(url, cacheActive) {
|
|
35024
|
+
const fetchFactory = () => sharedFetch(url)
|
|
35440
35025
|
.catch((error) => {
|
|
35441
35026
|
throw FetchError.corsOrNetwork(error.message);
|
|
35442
35027
|
})
|
|
35443
35028
|
.then(async (response) => {
|
|
35444
35029
|
if (!response.ok) {
|
|
35445
|
-
|
|
35030
|
+
const clonedResponse = response.clone();
|
|
35031
|
+
throw FetchError.http(response.status, await clonedResponse.text());
|
|
35446
35032
|
}
|
|
35447
|
-
|
|
35448
|
-
|
|
35033
|
+
const clonedResponse = response.clone();
|
|
35034
|
+
return clonedResponse.text();
|
|
35035
|
+
});
|
|
35036
|
+
return cacheActive ? useCache(fetchFactory, url, 'asText') : fetchFactory();
|
|
35449
35037
|
}
|
|
35450
|
-
function fetchDataAsArrayBuffer(url) {
|
|
35451
|
-
|
|
35038
|
+
function fetchDataAsArrayBuffer(url, cacheActive) {
|
|
35039
|
+
const fetchFactory = () => sharedFetch(url)
|
|
35452
35040
|
.catch((error) => {
|
|
35453
35041
|
throw FetchError.corsOrNetwork(error.message);
|
|
35454
35042
|
})
|
|
@@ -35458,7 +35046,8 @@ function fetchDataAsArrayBuffer(url) {
|
|
|
35458
35046
|
}
|
|
35459
35047
|
// convert to a numeric array so that we can store the response in cache
|
|
35460
35048
|
return Array.from(new Uint8Array(await response.arrayBuffer()));
|
|
35461
|
-
})
|
|
35049
|
+
});
|
|
35050
|
+
return (cacheActive ? useCache(fetchFactory, url, 'asArrayBuffer') : fetchFactory()).then((array) => {
|
|
35462
35051
|
return new Uint8Array(array).buffer;
|
|
35463
35052
|
});
|
|
35464
35053
|
}
|
|
@@ -35604,68 +35193,6 @@ function getJsonDataItemsProxy(items) {
|
|
|
35604
35193
|
});
|
|
35605
35194
|
}
|
|
35606
35195
|
|
|
35607
|
-
class BaseReader {
|
|
35608
|
-
constructor(url) {
|
|
35609
|
-
this.url = url;
|
|
35610
|
-
this.selected = null;
|
|
35611
|
-
this.groupedBy = null;
|
|
35612
|
-
this.aggregations = null;
|
|
35613
|
-
this.filter = null;
|
|
35614
|
-
this.sort = null;
|
|
35615
|
-
this.startIndex = null;
|
|
35616
|
-
this.count = null;
|
|
35617
|
-
}
|
|
35618
|
-
load() {
|
|
35619
|
-
throw new Error('not implemented');
|
|
35620
|
-
}
|
|
35621
|
-
get properties() {
|
|
35622
|
-
throw new Error('not implemented');
|
|
35623
|
-
}
|
|
35624
|
-
get info() {
|
|
35625
|
-
throw new Error('not implemented');
|
|
35626
|
-
}
|
|
35627
|
-
read() {
|
|
35628
|
-
throw new Error('not implemented');
|
|
35629
|
-
}
|
|
35630
|
-
selectAll() {
|
|
35631
|
-
this.groupedBy = null;
|
|
35632
|
-
this.aggregations = null;
|
|
35633
|
-
this.selected = null;
|
|
35634
|
-
this.filter = null;
|
|
35635
|
-
this.startIndex = null;
|
|
35636
|
-
this.count = null;
|
|
35637
|
-
return this;
|
|
35638
|
-
}
|
|
35639
|
-
select(...selectedFields) {
|
|
35640
|
-
this.selected = selectedFields;
|
|
35641
|
-
this.aggregations = null; // clear aggregations & groups when selecting fields
|
|
35642
|
-
this.groupedBy = null;
|
|
35643
|
-
return this;
|
|
35644
|
-
}
|
|
35645
|
-
groupBy(...groupBy) {
|
|
35646
|
-
this.groupedBy = groupBy;
|
|
35647
|
-
this.selected = null; // clear normal field selection when aggregating
|
|
35648
|
-
return this;
|
|
35649
|
-
}
|
|
35650
|
-
aggregate(...aggregations) {
|
|
35651
|
-
this.aggregations = aggregations;
|
|
35652
|
-
return this;
|
|
35653
|
-
}
|
|
35654
|
-
where(filter) {
|
|
35655
|
-
this.filter = filter;
|
|
35656
|
-
return this;
|
|
35657
|
-
}
|
|
35658
|
-
orderBy(...fieldSorts) {
|
|
35659
|
-
this.sort = fieldSorts;
|
|
35660
|
-
return this;
|
|
35661
|
-
}
|
|
35662
|
-
limit(startIndex, count) {
|
|
35663
|
-
this.startIndex = startIndex;
|
|
35664
|
-
this.count = count;
|
|
35665
|
-
return this;
|
|
35666
|
-
}
|
|
35667
|
-
}
|
|
35668
|
-
|
|
35669
35196
|
function filterToSql(filter) {
|
|
35670
35197
|
const operator = filter[0];
|
|
35671
35198
|
const args = filter.slice(1);
|
|
@@ -35759,7 +35286,80 @@ function generateSqlQuery(selected = null, filter = null, sort = null, startInde
|
|
|
35759
35286
|
return sqlSelect + sqlFrom + sqlGroupBy + sqlOrderBy + sqlWhere + sqlLimit;
|
|
35760
35287
|
}
|
|
35761
35288
|
|
|
35762
|
-
class
|
|
35289
|
+
class BaseReader {
|
|
35290
|
+
constructor(url) {
|
|
35291
|
+
this.url = url;
|
|
35292
|
+
this.selected = null;
|
|
35293
|
+
this.groupedBy = null;
|
|
35294
|
+
this.aggregations = null;
|
|
35295
|
+
this.filter = null;
|
|
35296
|
+
this.sort = null;
|
|
35297
|
+
this.startIndex = null;
|
|
35298
|
+
this.count = null;
|
|
35299
|
+
}
|
|
35300
|
+
load() {
|
|
35301
|
+
throw new Error('not implemented');
|
|
35302
|
+
}
|
|
35303
|
+
get properties() {
|
|
35304
|
+
throw new Error('not implemented');
|
|
35305
|
+
}
|
|
35306
|
+
get info() {
|
|
35307
|
+
throw new Error('not implemented');
|
|
35308
|
+
}
|
|
35309
|
+
read() {
|
|
35310
|
+
throw new Error('not implemented');
|
|
35311
|
+
}
|
|
35312
|
+
selectAll() {
|
|
35313
|
+
this.groupedBy = null;
|
|
35314
|
+
this.aggregations = null;
|
|
35315
|
+
this.selected = null;
|
|
35316
|
+
this.filter = null;
|
|
35317
|
+
this.startIndex = null;
|
|
35318
|
+
this.count = null;
|
|
35319
|
+
return this;
|
|
35320
|
+
}
|
|
35321
|
+
select(...selectedFields) {
|
|
35322
|
+
this.selected = selectedFields;
|
|
35323
|
+
this.aggregations = null; // clear aggregations & groups when selecting fields
|
|
35324
|
+
this.groupedBy = null;
|
|
35325
|
+
return this;
|
|
35326
|
+
}
|
|
35327
|
+
groupBy(...groupBy) {
|
|
35328
|
+
this.groupedBy = groupBy;
|
|
35329
|
+
this.selected = null; // clear normal field selection when aggregating
|
|
35330
|
+
return this;
|
|
35331
|
+
}
|
|
35332
|
+
aggregate(...aggregations) {
|
|
35333
|
+
this.aggregations = aggregations;
|
|
35334
|
+
return this;
|
|
35335
|
+
}
|
|
35336
|
+
where(filter) {
|
|
35337
|
+
this.filter = filter;
|
|
35338
|
+
return this;
|
|
35339
|
+
}
|
|
35340
|
+
orderBy(...fieldSorts) {
|
|
35341
|
+
this.sort = fieldSorts;
|
|
35342
|
+
return this;
|
|
35343
|
+
}
|
|
35344
|
+
limit(startIndex, count) {
|
|
35345
|
+
this.startIndex = startIndex;
|
|
35346
|
+
this.count = count;
|
|
35347
|
+
return this;
|
|
35348
|
+
}
|
|
35349
|
+
}
|
|
35350
|
+
|
|
35351
|
+
class BaseCacheReader extends BaseReader {
|
|
35352
|
+
constructor(url, cacheActive = true) {
|
|
35353
|
+
super(url);
|
|
35354
|
+
this.url = url;
|
|
35355
|
+
this.cacheActive = cacheActive;
|
|
35356
|
+
}
|
|
35357
|
+
setCacheActive(value) {
|
|
35358
|
+
this.cacheActive = value;
|
|
35359
|
+
}
|
|
35360
|
+
}
|
|
35361
|
+
|
|
35362
|
+
class BaseFileReader extends BaseCacheReader {
|
|
35763
35363
|
getData() {
|
|
35764
35364
|
throw new Error('not implemented');
|
|
35765
35365
|
}
|
|
@@ -35823,7 +35423,7 @@ function parseCsv(text) {
|
|
|
35823
35423
|
}
|
|
35824
35424
|
class CsvReader extends BaseFileReader {
|
|
35825
35425
|
getData() {
|
|
35826
|
-
return fetchDataAsText(this.url).then(parseCsv);
|
|
35426
|
+
return fetchDataAsText(this.url, this.cacheActive).then(parseCsv);
|
|
35827
35427
|
}
|
|
35828
35428
|
}
|
|
35829
35429
|
|
|
@@ -35840,7 +35440,7 @@ function parseJson(text) {
|
|
|
35840
35440
|
}
|
|
35841
35441
|
class JsonReader extends BaseFileReader {
|
|
35842
35442
|
getData() {
|
|
35843
|
-
return fetchDataAsText(this.url).then(parseJson);
|
|
35443
|
+
return fetchDataAsText(this.url, this.cacheActive).then(parseJson);
|
|
35844
35444
|
}
|
|
35845
35445
|
}
|
|
35846
35446
|
|
|
@@ -35859,7 +35459,7 @@ function parseGeojson(text) {
|
|
|
35859
35459
|
}
|
|
35860
35460
|
class GeojsonReader extends BaseFileReader {
|
|
35861
35461
|
getData() {
|
|
35862
|
-
return fetchDataAsText(this.url).then(parseGeojson);
|
|
35462
|
+
return fetchDataAsText(this.url, this.cacheActive).then(parseGeojson);
|
|
35863
35463
|
}
|
|
35864
35464
|
}
|
|
35865
35465
|
|
|
@@ -35881,7 +35481,7 @@ function parseExcel(buffer) {
|
|
|
35881
35481
|
}
|
|
35882
35482
|
class ExcelReader extends BaseFileReader {
|
|
35883
35483
|
getData() {
|
|
35884
|
-
return fetchDataAsArrayBuffer(this.url).then(parseExcel);
|
|
35484
|
+
return fetchDataAsArrayBuffer(this.url, this.cacheActive).then(parseExcel);
|
|
35885
35485
|
}
|
|
35886
35486
|
}
|
|
35887
35487
|
|
|
@@ -35908,19 +35508,21 @@ function parseGml(text, namespace, version) {
|
|
|
35908
35508
|
throw Error("Couldn't retrieve namespace url");
|
|
35909
35509
|
}
|
|
35910
35510
|
class GmlReader extends BaseFileReader {
|
|
35911
|
-
constructor(url, namespace, version) {
|
|
35511
|
+
constructor(url, namespace, version, cacheActive = true) {
|
|
35912
35512
|
super(url);
|
|
35513
|
+
this.url = url;
|
|
35913
35514
|
this.namespace = namespace;
|
|
35914
35515
|
this.version = version;
|
|
35516
|
+
this.cacheActive = cacheActive;
|
|
35915
35517
|
}
|
|
35916
35518
|
getData() {
|
|
35917
|
-
return fetchDataAsText(this.url).then((text) => parseGml(text, this.namespace, this.version));
|
|
35519
|
+
return fetchDataAsText(this.url, this.cacheActive).then((text) => parseGml(text, this.namespace, this.version));
|
|
35918
35520
|
}
|
|
35919
35521
|
}
|
|
35920
35522
|
|
|
35921
|
-
class WfsReader extends
|
|
35922
|
-
constructor(url, wfsEndpoint, featureTypeName) {
|
|
35923
|
-
super(url);
|
|
35523
|
+
class WfsReader extends BaseCacheReader {
|
|
35524
|
+
constructor(url, wfsEndpoint, featureTypeName, cacheActive) {
|
|
35525
|
+
super(url, cacheActive);
|
|
35924
35526
|
this.endpoint = wfsEndpoint;
|
|
35925
35527
|
this.featureTypeName = featureTypeName;
|
|
35926
35528
|
this.version = this.endpoint.getVersion();
|
|
@@ -35975,9 +35577,9 @@ class WfsReader extends BaseReader {
|
|
|
35975
35577
|
throw new Error('wfs.geojsongml.notsupported');
|
|
35976
35578
|
}
|
|
35977
35579
|
}
|
|
35978
|
-
getData() {
|
|
35979
|
-
if (
|
|
35980
|
-
|
|
35580
|
+
async getData(aggregation, groupedBy) {
|
|
35581
|
+
if (aggregation || groupedBy) {
|
|
35582
|
+
return { items: await this.getQueryData() };
|
|
35981
35583
|
}
|
|
35982
35584
|
const asJson = this.endpoint.supportsJson(this.featureTypeName);
|
|
35983
35585
|
const attributes = this.selected ?? undefined;
|
|
@@ -35997,19 +35599,26 @@ class WfsReader extends BaseReader {
|
|
|
35997
35599
|
// Direct update on string url to prevent encoding of +A and +D
|
|
35998
35600
|
url = `${url}${finalUrl.search ? '&' : ''}SORTBY=${sorts}`;
|
|
35999
35601
|
}
|
|
36000
|
-
return fetchDataAsText(url).then((text) => asJson
|
|
35602
|
+
return fetchDataAsText(url, this.cacheActive).then((text) => asJson
|
|
36001
35603
|
? parseGeojson(text)
|
|
36002
35604
|
: parseGml(text, this.featureTypeName, this.version));
|
|
36003
35605
|
}
|
|
35606
|
+
async getQueryData() {
|
|
35607
|
+
const items = (await this.getData()).items;
|
|
35608
|
+
const jsonItems = getJsonDataItemsProxy(items);
|
|
35609
|
+
const query = generateSqlQuery(this.selected, this.filter, this.sort, this.startIndex, this.count, this.groupedBy, this.aggregations);
|
|
35610
|
+
const result = await import('alasql').then((module) => module.default(query, [jsonItems]));
|
|
35611
|
+
return result.map(jsonToGeojsonFeature);
|
|
35612
|
+
}
|
|
36004
35613
|
load() {
|
|
36005
35614
|
// Nothing to load for Wfs
|
|
36006
35615
|
}
|
|
36007
35616
|
async read() {
|
|
36008
|
-
return (await this.getData()).items;
|
|
35617
|
+
return (await this.getData(this.aggregations, this.groupedBy)).items;
|
|
36009
35618
|
}
|
|
36010
35619
|
}
|
|
36011
35620
|
|
|
36012
|
-
async function openDataset(url, typeHint, options) {
|
|
35621
|
+
async function openDataset(url, typeHint, options, cacheActive) {
|
|
36013
35622
|
const fileType = await inferDatasetType(url, typeHint);
|
|
36014
35623
|
let reader;
|
|
36015
35624
|
try {
|
|
@@ -36033,6 +35642,7 @@ async function openDataset(url, typeHint, options) {
|
|
|
36033
35642
|
reader = await WfsReader.createReader(url, options.wfsFeatureType);
|
|
36034
35643
|
break;
|
|
36035
35644
|
}
|
|
35645
|
+
reader.setCacheActive(cacheActive);
|
|
36036
35646
|
reader.load();
|
|
36037
35647
|
return reader;
|
|
36038
35648
|
}
|
|
@@ -36049,8 +35659,8 @@ async function openDataset(url, typeHint, options) {
|
|
|
36049
35659
|
* 2. otherwise, look for a Content-Type header in the response with a supported mime type
|
|
36050
35660
|
* 3. if no valid mime type was found, look for an explicit file extension in the url (.csv, .geojson etc.)
|
|
36051
35661
|
*/
|
|
36052
|
-
async function readDataset(url, typeHint, options) {
|
|
36053
|
-
const reader = await openDataset(url, typeHint, options);
|
|
35662
|
+
async function readDataset(url, typeHint, options, cacheActive = true) {
|
|
35663
|
+
const reader = await openDataset(url, typeHint, options, cacheActive);
|
|
36054
35664
|
try {
|
|
36055
35665
|
return await reader.read();
|
|
36056
35666
|
}
|
|
@@ -36211,18 +35821,18 @@ class DataService {
|
|
|
36211
35821
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
36212
35822
|
}));
|
|
36213
35823
|
}
|
|
36214
|
-
readAsGeoJson(link) {
|
|
36215
|
-
return this.getDataset(link).pipe(switchMap$1((dataset) => dataset.selectAll().read()), map$1((features) => ({
|
|
35824
|
+
readAsGeoJson(link, cacheActive) {
|
|
35825
|
+
return this.getDataset(link, cacheActive).pipe(switchMap$1((dataset) => dataset.selectAll().read()), map$1((features) => ({
|
|
36216
35826
|
type: 'FeatureCollection',
|
|
36217
35827
|
features,
|
|
36218
35828
|
})));
|
|
36219
35829
|
}
|
|
36220
|
-
getDataset(link) {
|
|
35830
|
+
getDataset(link, cacheActive) {
|
|
36221
35831
|
if (link.type === 'service' && link.accessServiceProtocol === 'wfs') {
|
|
36222
35832
|
const wfsUrlEndpoint = this.proxy.getProxiedUrl(link.url.toString());
|
|
36223
35833
|
return from(openDataset(wfsUrlEndpoint, 'wfs', {
|
|
36224
35834
|
wfsFeatureType: link.name,
|
|
36225
|
-
}));
|
|
35835
|
+
}, cacheActive));
|
|
36226
35836
|
}
|
|
36227
35837
|
else if (link.type === 'download') {
|
|
36228
35838
|
const linkProxifiedUrl = this.proxy.getProxiedUrl(link.url.toString());
|
|
@@ -36230,18 +35840,18 @@ class DataService {
|
|
|
36230
35840
|
const supportedType = SupportedTypes.indexOf(format) > -1
|
|
36231
35841
|
? format
|
|
36232
35842
|
: undefined;
|
|
36233
|
-
return from(openDataset(linkProxifiedUrl, supportedType)).pipe();
|
|
35843
|
+
return from(openDataset(linkProxifiedUrl, supportedType, undefined, cacheActive)).pipe();
|
|
36234
35844
|
}
|
|
36235
35845
|
else if (link.type === 'service' &&
|
|
36236
35846
|
link.accessServiceProtocol === 'esriRest') {
|
|
36237
35847
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
36238
|
-
return from(openDataset(url, 'geojson')).pipe();
|
|
35848
|
+
return from(openDataset(url, 'geojson', undefined, cacheActive)).pipe();
|
|
36239
35849
|
}
|
|
36240
35850
|
else if (link.type === 'service' &&
|
|
36241
35851
|
link.accessServiceProtocol === 'ogcFeatures') {
|
|
36242
35852
|
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
36243
35853
|
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
36244
|
-
return openDataset(geojsonUrl, 'geojson');
|
|
35854
|
+
return openDataset(geojsonUrl, 'geojson', undefined, cacheActive);
|
|
36245
35855
|
}), tap$1((url) => {
|
|
36246
35856
|
if (url === null) {
|
|
36247
35857
|
throw new Error('wfs.geojsongml.notsupported');
|
|
@@ -36640,7 +36250,7 @@ class DataTableComponent {
|
|
|
36640
36250
|
}
|
|
36641
36251
|
}
|
|
36642
36252
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36643
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36253
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36644
36254
|
}
|
|
36645
36255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
36646
36256
|
type: Component,
|
|
@@ -36654,7 +36264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36654
36264
|
LoadingMaskComponent,
|
|
36655
36265
|
PopupAlertComponent,
|
|
36656
36266
|
LetDirective,
|
|
36657
|
-
], providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], selector: 'gn-ui-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"] }]
|
|
36267
|
+
], providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], selector: 'gn-ui-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"] }]
|
|
36658
36268
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { dataset: [{
|
|
36659
36269
|
type: Input
|
|
36660
36270
|
}], activeId: [{
|
|
@@ -36806,6 +36416,7 @@ class ChartViewComponent {
|
|
|
36806
36416
|
this.dataService = dataService;
|
|
36807
36417
|
this.changeDetector = changeDetector;
|
|
36808
36418
|
this.translateService = translateService;
|
|
36419
|
+
this.cacheActive = true;
|
|
36809
36420
|
this.currentLink$ = new BehaviorSubject(null);
|
|
36810
36421
|
this.aggregation$ = new BehaviorSubject('sum');
|
|
36811
36422
|
this.xProperty$ = new BehaviorSubject(undefined);
|
|
@@ -36835,7 +36446,7 @@ class ChartViewComponent {
|
|
|
36835
36446
|
this.dataset$ = this.currentLink$.pipe(filter((link) => !!link), switchMap$1((link) => {
|
|
36836
36447
|
this.error = null;
|
|
36837
36448
|
this.loading = true;
|
|
36838
|
-
return this.dataService.getDataset(link).pipe(catchError((error) => {
|
|
36449
|
+
return this.dataService.getDataset(link, this.cacheActive).pipe(catchError((error) => {
|
|
36839
36450
|
this.handleError(error);
|
|
36840
36451
|
return EMPTY;
|
|
36841
36452
|
}));
|
|
@@ -36904,7 +36515,7 @@ class ChartViewComponent {
|
|
|
36904
36515
|
this.changeDetector.detectChanges();
|
|
36905
36516
|
}
|
|
36906
36517
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36907
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36518
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { cacheActive: "cacheActive", link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36908
36519
|
}
|
|
36909
36520
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
36910
36521
|
type: Component,
|
|
@@ -36916,7 +36527,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36916
36527
|
LoadingMaskComponent,
|
|
36917
36528
|
PopupAlertComponent,
|
|
36918
36529
|
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
36919
|
-
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: {
|
|
36530
|
+
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36531
|
+
type: Input
|
|
36532
|
+
}], link: [{
|
|
36920
36533
|
type: Input
|
|
36921
36534
|
}], aggregation: [{
|
|
36922
36535
|
type: Input
|
|
@@ -37089,6 +36702,7 @@ class TableViewComponent {
|
|
|
37089
36702
|
constructor(dataService, translateService) {
|
|
37090
36703
|
this.dataService = dataService;
|
|
37091
36704
|
this.translateService = translateService;
|
|
36705
|
+
this.cacheActive = true;
|
|
37092
36706
|
this.currentLink$ = new BehaviorSubject(null);
|
|
37093
36707
|
this.loading = false;
|
|
37094
36708
|
this.error = null;
|
|
@@ -37106,7 +36720,7 @@ class TableViewComponent {
|
|
|
37106
36720
|
}), startWith(undefined), shareReplay(1));
|
|
37107
36721
|
}
|
|
37108
36722
|
getDatasetReader(link) {
|
|
37109
|
-
return this.dataService.getDataset(link);
|
|
36723
|
+
return this.dataService.getDataset(link, this.cacheActive);
|
|
37110
36724
|
}
|
|
37111
36725
|
onTableSelect(event) {
|
|
37112
36726
|
console.log(event);
|
|
@@ -37129,7 +36743,7 @@ class TableViewComponent {
|
|
|
37129
36743
|
this.loading = false;
|
|
37130
36744
|
}
|
|
37131
36745
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36746
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { cacheActive: "cacheActive", link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37133
36747
|
}
|
|
37134
36748
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
|
|
37135
36749
|
type: Component,
|
|
@@ -37140,7 +36754,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37140
36754
|
PopupAlertComponent,
|
|
37141
36755
|
TranslateModule,
|
|
37142
36756
|
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
37143
|
-
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: {
|
|
36757
|
+
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36758
|
+
type: Input
|
|
36759
|
+
}], link: [{
|
|
37144
36760
|
type: Input
|
|
37145
36761
|
}] } });
|
|
37146
36762
|
|
|
@@ -37159,7 +36775,15 @@ class MdViewFacade {
|
|
|
37159
36775
|
this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
|
|
37160
36776
|
this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
|
|
37161
36777
|
this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
|
|
36778
|
+
this.featureCatalog$ = this.store.pipe(select(getFeatureCatalog));
|
|
37162
36779
|
this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
|
|
36780
|
+
this.isHighUpdateFrequency$ = this.metadata$.pipe(map$1((record) => {
|
|
36781
|
+
if (record.updateFrequency instanceof Object) {
|
|
36782
|
+
return (record.updateFrequency.per === 'day' &&
|
|
36783
|
+
record.updateFrequency.updatedTimes > 1);
|
|
36784
|
+
}
|
|
36785
|
+
return record.updateFrequency === 'continual';
|
|
36786
|
+
}));
|
|
37163
36787
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
37164
36788
|
this.related$ = this.store.pipe(select(getRelated));
|
|
37165
36789
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
@@ -37255,6 +36879,11 @@ class MdViewEffects {
|
|
|
37255
36879
|
}
|
|
37256
36880
|
return loadFullMetadataSuccess({ full: record });
|
|
37257
36881
|
}), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
|
|
36882
|
+
this.loadFeatureCatalog$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), filter(({ full }) => full !== undefined), switchMap$1(({ full }) => this.recordsRepository.getFeatureCatalog(full)), map$1((featureCatalog) => loadFeatureCatalogSuccess({
|
|
36883
|
+
datasetCatalog: featureCatalog,
|
|
36884
|
+
})), catchError((error) => of(loadFeatureCatalogFailure({
|
|
36885
|
+
error: error.message,
|
|
36886
|
+
})))));
|
|
37258
36887
|
/*
|
|
37259
36888
|
Related effects
|
|
37260
36889
|
*/
|
|
@@ -37840,10 +37469,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37840
37469
|
}] } });
|
|
37841
37470
|
|
|
37842
37471
|
class DataViewComponent {
|
|
37472
|
+
set exceedsLimit(value) {
|
|
37473
|
+
this.excludeWfs$.next(value);
|
|
37474
|
+
}
|
|
37843
37475
|
constructor(mdViewFacade) {
|
|
37844
37476
|
this.mdViewFacade = mdViewFacade;
|
|
37845
37477
|
this.displaySource = true;
|
|
37846
37478
|
this.chartConfig$ = new BehaviorSubject(null);
|
|
37479
|
+
this.cacheActive$ = this.mdViewFacade.isHighUpdateFrequency$.pipe(map$1((highF) => !highF));
|
|
37480
|
+
this.hidePreview = false;
|
|
37481
|
+
this.excludeWfs$ = new BehaviorSubject(false);
|
|
37847
37482
|
this.compatibleDataLinks$ = combineLatest([
|
|
37848
37483
|
this.mdViewFacade.dataLinks$,
|
|
37849
37484
|
this.mdViewFacade.geoDataLinks$,
|
|
@@ -37854,7 +37489,7 @@ class DataViewComponent {
|
|
|
37854
37489
|
}));
|
|
37855
37490
|
this.dropdownChoices$ = this.compatibleDataLinks$.pipe(tap$1((links) => {
|
|
37856
37491
|
if (links.indexOf(this.selectedLink$.value) === -1) {
|
|
37857
|
-
this.
|
|
37492
|
+
this.selectLink(JSON.stringify(links[0]));
|
|
37858
37493
|
}
|
|
37859
37494
|
}), map$1((links) => links.map((link) => ({
|
|
37860
37495
|
label: getLinkLabel(link),
|
|
@@ -37868,10 +37503,20 @@ class DataViewComponent {
|
|
|
37868
37503
|
selectLink(linkAsString) {
|
|
37869
37504
|
const link = JSON.parse(linkAsString);
|
|
37870
37505
|
link.url = new URL(link.url);
|
|
37871
|
-
this.
|
|
37506
|
+
this.excludeWfs$
|
|
37507
|
+
.pipe(tap$1((excludeWfs) => {
|
|
37508
|
+
this.hidePreview =
|
|
37509
|
+
link['accessServiceProtocol'] === 'wfs' &&
|
|
37510
|
+
excludeWfs &&
|
|
37511
|
+
this.mode === 'chart'
|
|
37512
|
+
? true
|
|
37513
|
+
: false;
|
|
37514
|
+
this.selectedLink$.next(link);
|
|
37515
|
+
}))
|
|
37516
|
+
.subscribe();
|
|
37872
37517
|
}
|
|
37873
37518
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37874
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n
|
|
37519
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource", exceedsLimit: "exceedsLimit" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["cacheActive", "link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37875
37520
|
}
|
|
37876
37521
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
37877
37522
|
type: Component,
|
|
@@ -37881,11 +37526,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37881
37526
|
TableViewComponent,
|
|
37882
37527
|
TranslateModule,
|
|
37883
37528
|
ChartViewComponent,
|
|
37884
|
-
|
|
37529
|
+
PopupAlertComponent,
|
|
37530
|
+
], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n" }]
|
|
37885
37531
|
}], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
|
|
37886
37532
|
type: Input
|
|
37887
37533
|
}], displaySource: [{
|
|
37888
37534
|
type: Input
|
|
37535
|
+
}], exceedsLimit: [{
|
|
37536
|
+
type: Input
|
|
37889
37537
|
}], chartConfig$: [{
|
|
37890
37538
|
type: Output
|
|
37891
37539
|
}] } });
|
|
@@ -38057,7 +37705,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38057
37705
|
marker('map.dropdown.placeholder');
|
|
38058
37706
|
marker('wfs.feature.limit');
|
|
38059
37707
|
class MapViewComponent {
|
|
38060
|
-
set
|
|
37708
|
+
set exceedsLimit(value) {
|
|
38061
37709
|
this.excludeWfs$.next(value);
|
|
38062
37710
|
}
|
|
38063
37711
|
toggleLegend() {
|
|
@@ -38076,6 +37724,7 @@ class MapViewComponent {
|
|
|
38076
37724
|
this.changeRef = changeRef;
|
|
38077
37725
|
this.displaySource = true;
|
|
38078
37726
|
this.excludeWfs$ = new BehaviorSubject(false);
|
|
37727
|
+
this.hidePreview = false;
|
|
38079
37728
|
this.showLegend = true;
|
|
38080
37729
|
this.legendExists = false;
|
|
38081
37730
|
this.compatibleMapLinks$ = combineLatest([
|
|
@@ -38102,9 +37751,10 @@ class MapViewComponent {
|
|
|
38102
37751
|
return of([]);
|
|
38103
37752
|
}
|
|
38104
37753
|
if (excludeWfs && link.accessServiceProtocol === 'wfs') {
|
|
38105
|
-
this.
|
|
37754
|
+
this.hidePreview = true;
|
|
38106
37755
|
return of([]);
|
|
38107
37756
|
}
|
|
37757
|
+
this.hidePreview = false;
|
|
38108
37758
|
this.loading = true;
|
|
38109
37759
|
this.error = null;
|
|
38110
37760
|
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
@@ -38174,7 +37824,8 @@ class MapViewComponent {
|
|
|
38174
37824
|
link.accessServiceProtocol === 'esriRest' ||
|
|
38175
37825
|
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
38176
37826
|
link.type === 'download') {
|
|
38177
|
-
|
|
37827
|
+
const cacheActive = true; // TODO implement whether should be true or false
|
|
37828
|
+
return this.dataService.readAsGeoJson(link, cacheActive).pipe(map$1((data) => ({
|
|
38178
37829
|
type: 'geojson',
|
|
38179
37830
|
data,
|
|
38180
37831
|
})));
|
|
@@ -38185,7 +37836,7 @@ class MapViewComponent {
|
|
|
38185
37836
|
this.selectedLinkIndex$.next(link);
|
|
38186
37837
|
}
|
|
38187
37838
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapUtilsService }, { token: DataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38188
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: {
|
|
37839
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38189
37840
|
}
|
|
38190
37841
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
38191
37842
|
type: Component,
|
|
@@ -38201,8 +37852,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38201
37852
|
ExternalViewerButtonComponent,
|
|
38202
37853
|
ButtonComponent,
|
|
38203
37854
|
MapLegendComponent,
|
|
38204
|
-
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <
|
|
38205
|
-
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }], propDecorators: {
|
|
37855
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
|
|
37856
|
+
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }], propDecorators: { exceedsLimit: [{
|
|
38206
37857
|
type: Input
|
|
38207
37858
|
}], displaySource: [{
|
|
38208
37859
|
type: Input
|
|
@@ -38689,8 +38340,8 @@ const DEFAULT_CONFIGURATION = {
|
|
|
38689
38340
|
labelKey: marker('editor.record.form.page.description'),
|
|
38690
38341
|
sections: [
|
|
38691
38342
|
TITLE_SECTION,
|
|
38692
|
-
ABOUT_SECTION,
|
|
38693
38343
|
CLASSIFICATION_SECTION,
|
|
38344
|
+
ABOUT_SECTION,
|
|
38694
38345
|
GEOGRAPHICAL_COVERAGE_SECTION,
|
|
38695
38346
|
],
|
|
38696
38347
|
},
|
|
@@ -39035,9 +38686,8 @@ var WizardFieldType;
|
|
|
39035
38686
|
(function (WizardFieldType) {
|
|
39036
38687
|
WizardFieldType[WizardFieldType["TEXT"] = 0] = "TEXT";
|
|
39037
38688
|
WizardFieldType[WizardFieldType["TEXT_AREA"] = 1] = "TEXT_AREA";
|
|
39038
|
-
WizardFieldType[WizardFieldType["
|
|
39039
|
-
WizardFieldType[WizardFieldType["
|
|
39040
|
-
WizardFieldType[WizardFieldType["DROPDOWN"] = 4] = "DROPDOWN";
|
|
38689
|
+
WizardFieldType[WizardFieldType["DATA_PICKER"] = 2] = "DATA_PICKER";
|
|
38690
|
+
WizardFieldType[WizardFieldType["DROPDOWN"] = 3] = "DROPDOWN";
|
|
39041
38691
|
})(WizardFieldType || (WizardFieldType = {}));
|
|
39042
38692
|
|
|
39043
38693
|
class WizardService {
|
|
@@ -39159,9 +38809,6 @@ class WizardFieldComponent {
|
|
|
39159
38809
|
case WizardFieldType.TEXT: {
|
|
39160
38810
|
return data || '';
|
|
39161
38811
|
}
|
|
39162
|
-
case WizardFieldType.CHIPS: {
|
|
39163
|
-
return data ? JSON.parse(data) : [];
|
|
39164
|
-
}
|
|
39165
38812
|
case WizardFieldType.TEXT_AREA: {
|
|
39166
38813
|
return data || '';
|
|
39167
38814
|
}
|
|
@@ -39191,10 +38838,6 @@ class WizardFieldComponent {
|
|
|
39191
38838
|
this.initializeTextInputListener();
|
|
39192
38839
|
break;
|
|
39193
38840
|
}
|
|
39194
|
-
case WizardFieldType.CHIPS: {
|
|
39195
|
-
this.initializeChipsListener();
|
|
39196
|
-
break;
|
|
39197
|
-
}
|
|
39198
38841
|
case WizardFieldType.TEXT_AREA: {
|
|
39199
38842
|
this.initializeTextAreaListener();
|
|
39200
38843
|
return;
|
|
@@ -39214,11 +38857,6 @@ class WizardFieldComponent {
|
|
|
39214
38857
|
this.wizardService.onWizardWizardFieldDataChanged(this.wizardFieldConfig.id, value);
|
|
39215
38858
|
}));
|
|
39216
38859
|
}
|
|
39217
|
-
initializeChipsListener() {
|
|
39218
|
-
this.subs.add(this.chips.itemsChange.subscribe((items) => {
|
|
39219
|
-
this.wizardService.onWizardWizardFieldDataChanged(this.wizardFieldConfig.id, JSON.stringify(items));
|
|
39220
|
-
}));
|
|
39221
|
-
}
|
|
39222
38860
|
initializeTextAreaListener() {
|
|
39223
38861
|
this.subs.add(this.textArea.valueChange.subscribe((value) => {
|
|
39224
38862
|
this.wizardService.onWizardWizardFieldDataChanged(this.wizardFieldConfig.id, value);
|
|
@@ -39252,7 +38890,7 @@ class WizardFieldComponent {
|
|
|
39252
38890
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
39253
38891
|
},
|
|
39254
38892
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
39255
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "
|
|
38893
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:#fff;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i1$8.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1$8.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39256
38894
|
}
|
|
39257
38895
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
39258
38896
|
type: Component,
|
|
@@ -39264,15 +38902,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39264
38902
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
39265
38903
|
},
|
|
39266
38904
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
39267
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"
|
|
38905
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:#fff;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"] }]
|
|
39268
38906
|
}], ctorParameters: () => [{ type: WizardService }, { type: i0.ChangeDetectorRef }], propDecorators: { wizardFieldConfig: [{
|
|
39269
38907
|
type: Input
|
|
39270
38908
|
}], searchText: [{
|
|
39271
38909
|
type: ViewChild,
|
|
39272
38910
|
args: ['searchText']
|
|
39273
|
-
}], chips: [{
|
|
39274
|
-
type: ViewChild,
|
|
39275
|
-
args: ['chips']
|
|
39276
38911
|
}], textArea: [{
|
|
39277
38912
|
type: ViewChild,
|
|
39278
38913
|
args: ['textArea']
|
|
@@ -39479,15 +39114,15 @@ class ImportRecordComponent {
|
|
|
39479
39114
|
importRecord(url) {
|
|
39480
39115
|
this.isRecordImportInProgress = true;
|
|
39481
39116
|
this.recordsRepository.duplicateExternalRecord(url).subscribe({
|
|
39482
|
-
next: (
|
|
39483
|
-
if (
|
|
39117
|
+
next: (uuid) => {
|
|
39118
|
+
if (uuid) {
|
|
39484
39119
|
this.notificationsService.showNotification({
|
|
39485
39120
|
type: 'success',
|
|
39486
39121
|
title: this.translateService.instant('editor.record.importFromExternalFile.success.title'),
|
|
39487
39122
|
text: `${this.translateService.instant('editor.record.importFromExternalFile.success.body')}`,
|
|
39488
39123
|
}, 2500);
|
|
39489
39124
|
this.router
|
|
39490
|
-
.navigate(['/edit',
|
|
39125
|
+
.navigate(['/edit', uuid])
|
|
39491
39126
|
.catch((err) => console.error(err));
|
|
39492
39127
|
}
|
|
39493
39128
|
this.closeImportMenu.next();
|
|
@@ -39513,7 +39148,7 @@ class ImportRecordComponent {
|
|
|
39513
39148
|
provideNgIconsConfig({
|
|
39514
39149
|
size: '1.5em',
|
|
39515
39150
|
}),
|
|
39516
|
-
], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39151
|
+
], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39517
39152
|
}
|
|
39518
39153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, decorators: [{
|
|
39519
39154
|
type: Component,
|
|
@@ -39579,7 +39214,7 @@ class GenericKeywordsComponent {
|
|
|
39579
39214
|
provideIcons({
|
|
39580
39215
|
matWarningAmberOutline,
|
|
39581
39216
|
}),
|
|
39582
|
-
], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <gn-ui-autocomplete\n [placeholder]=\"placeholder\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"false\"\n [minCharacterCount]=\"1\"\n [allowSubmit]=\"false\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of keywords\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(keyword)\"\n >{{ keyword.label }}\n\n <ng-icon\n *ngIf=\"isPlaceWithoutExtent(keyword)\"\n [title]=\"'editor.record.form.keywords.place.withoutExtent' | translate\"\n class=\"badge-warning\"\n name=\"matWarningAmberOutline\"\n ></ng-icon>\n </gn-ui-badge>\n </div>\n</div>\n", styles: [".badge-warning{font-size:1.4em}\n"], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39217
|
+
], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <gn-ui-autocomplete\n [placeholder]=\"placeholder\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"false\"\n [minCharacterCount]=\"1\"\n [allowSubmit]=\"false\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of keywords\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(keyword)\"\n >{{ keyword.label }}\n\n <ng-icon\n *ngIf=\"isPlaceWithoutExtent(keyword)\"\n [title]=\"'editor.record.form.keywords.place.withoutExtent' | translate\"\n class=\"badge-warning\"\n name=\"matWarningAmberOutline\"\n ></ng-icon>\n </gn-ui-badge>\n </div>\n</div>\n", styles: [".badge-warning{font-size:1.4em}\n"], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39583
39218
|
}
|
|
39584
39219
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GenericKeywordsComponent, decorators: [{
|
|
39585
39220
|
type: Component,
|
|
@@ -39849,7 +39484,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39849
39484
|
|
|
39850
39485
|
class FormFieldRichComponent {
|
|
39851
39486
|
constructor() {
|
|
39852
|
-
this.placeholder = '
|
|
39487
|
+
this.placeholder = '';
|
|
39853
39488
|
this.valueChange = new EventEmitter();
|
|
39854
39489
|
this.preview = false;
|
|
39855
39490
|
}
|
|
@@ -40092,19 +39727,16 @@ class FormFieldContactsForResourceComponent {
|
|
|
40092
39727
|
this.organizationsServiceInterface = organizationsServiceInterface;
|
|
40093
39728
|
this.valueChange = new EventEmitter();
|
|
40094
39729
|
this.contactsForRessourceByRole = new Map();
|
|
40095
|
-
this.
|
|
40096
|
-
|
|
40097
|
-
'custodian',
|
|
40098
|
-
'owner',
|
|
40099
|
-
'point_of_contact',
|
|
40100
|
-
'author',
|
|
40101
|
-
];
|
|
39730
|
+
this.roleValues = RoleValues;
|
|
39731
|
+
this.rolesToPick = this.roleValues.filter((role) => role !== 'other' && role !== 'unspecified');
|
|
40102
39732
|
this.roleSectionsToDisplay = [];
|
|
40103
39733
|
this.allOrganizations = new Map();
|
|
40104
39734
|
/**
|
|
40105
39735
|
* gn-ui-autocomplete
|
|
40106
39736
|
*/
|
|
40107
|
-
this.displayWithFn = (user) =>
|
|
39737
|
+
this.displayWithFn = (user) => user.name
|
|
39738
|
+
? `${user.name} ${user.surname} ${user.organisation ? `(${user.organisation})` : ''}`
|
|
39739
|
+
: ``;
|
|
40108
39740
|
/**
|
|
40109
39741
|
* gn-ui-autocomplete
|
|
40110
39742
|
*/
|
|
@@ -40196,7 +39828,7 @@ class FormFieldContactsForResourceComponent {
|
|
|
40196
39828
|
provideNgIconsConfig({
|
|
40197
39829
|
size: '1.5rem',
|
|
40198
39830
|
}),
|
|
40199
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n \n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39831
|
+
], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n \n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n *ngIf=\"role !== 'unspecified' && role !== 'other'\"\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40200
39832
|
}
|
|
40201
39833
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsForResourceComponent, decorators: [{
|
|
40202
39834
|
type: Component,
|
|
@@ -40215,7 +39847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
40215
39847
|
provideNgIconsConfig({
|
|
40216
39848
|
size: '1.5rem',
|
|
40217
39849
|
}),
|
|
40218
|
-
], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n \n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
|
|
39850
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n \n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n *ngIf=\"role !== 'unspecified' && role !== 'other'\"\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
|
|
40219
39851
|
}], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: OrganizationsServiceInterface }], propDecorators: { value: [{
|
|
40220
39852
|
type: Input
|
|
40221
39853
|
}], valueChange: [{
|
|
@@ -40294,7 +39926,7 @@ class FormFieldContactsComponent {
|
|
|
40294
39926
|
this.subscription.unsubscribe();
|
|
40295
39927
|
}
|
|
40296
39928
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsComponent, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40297
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39929
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40298
39930
|
}
|
|
40299
39931
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsComponent, decorators: [{
|
|
40300
39932
|
type: Component,
|
|
@@ -40499,7 +40131,7 @@ class FormFieldOnlineLinkResourcesComponent {
|
|
|
40499
40131
|
});
|
|
40500
40132
|
}
|
|
40501
40133
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, deps: [{ token: NotificationsService }, { token: i1$1.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$b.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40502
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40503
40135
|
}
|
|
40504
40136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, decorators: [{
|
|
40505
40137
|
type: Component,
|
|
@@ -40536,6 +40168,7 @@ class OnlineServiceResourceInputComponent {
|
|
|
40536
40168
|
this.modifyMode = false;
|
|
40537
40169
|
this.serviceChange = new EventEmitter();
|
|
40538
40170
|
this.errorMessage = false;
|
|
40171
|
+
this.resetUrlOnChange = Math.random();
|
|
40539
40172
|
this.layersSubject = new BehaviorSubject([]);
|
|
40540
40173
|
this.layers$ = this.layersSubject.asObservable();
|
|
40541
40174
|
this.protocolOptions = [
|
|
@@ -40600,6 +40233,7 @@ class OnlineServiceResourceInputComponent {
|
|
|
40600
40233
|
this.cdr.detectChanges();
|
|
40601
40234
|
}
|
|
40602
40235
|
resetAllFormFields() {
|
|
40236
|
+
this.resetUrlOnChange = Math.random();
|
|
40603
40237
|
this._service.url = null;
|
|
40604
40238
|
this.resetLayersSuggestion();
|
|
40605
40239
|
}
|
|
@@ -40643,7 +40277,7 @@ class OnlineServiceResourceInputComponent {
|
|
|
40643
40277
|
provideNgIconsConfig({
|
|
40644
40278
|
size: '1.5em',
|
|
40645
40279
|
}),
|
|
40646
|
-
], ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40280
|
+
], ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n [resetUrlOnChange]=\"resetUrlOnChange\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40647
40281
|
}
|
|
40648
40282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnlineServiceResourceInputComponent, decorators: [{
|
|
40649
40283
|
type: Component,
|
|
@@ -40663,7 +40297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
40663
40297
|
provideNgIconsConfig({
|
|
40664
40298
|
size: '1.5em',
|
|
40665
40299
|
}),
|
|
40666
|
-
], template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n" }]
|
|
40300
|
+
], template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n [resetUrlOnChange]=\"resetUrlOnChange\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n" }]
|
|
40667
40301
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { service: [{
|
|
40668
40302
|
type: Input
|
|
40669
40303
|
}], protocolHint: [{
|
|
@@ -40812,7 +40446,7 @@ class FormFieldOnlineResourcesComponent {
|
|
|
40812
40446
|
});
|
|
40813
40447
|
}
|
|
40814
40448
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineResourcesComponent, deps: [{ token: NotificationsService }, { token: i1$1.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$b.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40815
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n (serviceChange)=\"handleServiceChange($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n [disabled]=\"true\"\n ></gn-ui-online-service-resource-input>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n </ng-container>\n <ng-template #urlInput>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SwitchToggleComponent, selector: "gn-ui-switch-toggle", inputs: ["options", "ariaLabel", "extraClasses", "disabled"], outputs: ["selectedValue"] }, { kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "component", type: OnlineServiceResourceInputComponent, selector: "gn-ui-online-service-resource-input", inputs: ["service", "protocolHint", "disabled", "modifyMode"], outputs: ["serviceChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40449
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n (serviceChange)=\"handleServiceChange($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n [disabled]=\"true\"\n ></gn-ui-online-service-resource-input>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n </ng-container>\n <ng-template #urlInput>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SwitchToggleComponent, selector: "gn-ui-switch-toggle", inputs: ["options", "ariaLabel", "extraClasses", "disabled"], outputs: ["selectedValue"] }, { kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "component", type: OnlineServiceResourceInputComponent, selector: "gn-ui-online-service-resource-input", inputs: ["service", "protocolHint", "disabled", "modifyMode"], outputs: ["serviceChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40816
40450
|
}
|
|
40817
40451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineResourcesComponent, decorators: [{
|
|
40818
40452
|
type: Component,
|
|
@@ -40919,7 +40553,7 @@ class FormFieldOverviewsComponent {
|
|
|
40919
40553
|
this.cd.detectChanges();
|
|
40920
40554
|
this.emitOverview({
|
|
40921
40555
|
url: event.attachment.url,
|
|
40922
|
-
description: event.attachment.fileName,
|
|
40556
|
+
description: event.attachment.fileName.replace(/\.[^/.]+$/, ''),
|
|
40923
40557
|
});
|
|
40924
40558
|
}
|
|
40925
40559
|
},
|
|
@@ -40957,7 +40591,7 @@ class FormFieldOverviewsComponent {
|
|
|
40957
40591
|
this.valueChange.emit(overView ? [overView] : []);
|
|
40958
40592
|
}
|
|
40959
40593
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOverviewsComponent, deps: [{ token: PlatformServiceInterface }, { token: NotificationsService }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40960
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOverviewsComponent, isStandalone: true, selector: "gn-ui-form-field-overviews", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-2\">\n <gn-ui-image-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n [previewUrl]=\"firstOverview.url\"\n [altText]=\"firstOverview.description\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n [uploadProgress]=\"uploadProgress\"\n (uploadCancel)=\"handleUploadCancel()\"\n ></gn-ui-image-input>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ImageInputComponent, selector: "gn-ui-image-input", inputs: ["
|
|
40594
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOverviewsComponent, isStandalone: true, selector: "gn-ui-form-field-overviews", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-2\">\n <gn-ui-image-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n [previewUrl]=\"firstOverview.url\"\n [altText]=\"firstOverview.description\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n [uploadProgress]=\"uploadProgress\"\n (uploadCancel)=\"handleUploadCancel()\"\n ></gn-ui-image-input>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ImageInputComponent, selector: "gn-ui-image-input", inputs: ["previewUrl", "altText", "maxSizeMB", "uploadProgress", "uploadError", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel", "delete", "altTextChange"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40961
40595
|
}
|
|
40962
40596
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOverviewsComponent, decorators: [{
|
|
40963
40597
|
type: Component,
|
|
@@ -41238,7 +40872,7 @@ class ConstraintCardComponent {
|
|
|
41238
40872
|
provideNgIconsConfig({
|
|
41239
40873
|
size: '1.5rem',
|
|
41240
40874
|
}),
|
|
41241
|
-
], ngImport: i0, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [
|
|
40875
|
+
], ngImport: i0, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [placeholder]=\"hint | translate\"\n [value]=\"constraint_.text ?? ''\"\n (valueChange)=\"handleConstraintTextChange($event)\"\n ></gn-ui-form-field-rich>\n\n <div *ngIf=\"!showUrl\" class=\"flex-none mt-1\">\n <gn-ui-button\n (buttonClick)=\"showUrl = true\"\n type=\"gray\"\n data-cy=\"add-url-btn\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon> \n <span translate>input.image.displayUrlInput</span>\n </gn-ui-button>\n </div>\n <gn-ui-url-input\n *ngIf=\"showUrl\"\n class=\"mt-3.5\"\n [value]=\"constraint_.url?.toString()\"\n (valueChange)=\"handleURLChange($event)\"\n [showValidateButton]=\"false\"\n >\n </gn-ui-url-input>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41242
40876
|
}
|
|
41243
40877
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConstraintCardComponent, decorators: [{
|
|
41244
40878
|
type: Component,
|
|
@@ -41256,7 +40890,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41256
40890
|
provideNgIconsConfig({
|
|
41257
40891
|
size: '1.5rem',
|
|
41258
40892
|
}),
|
|
41259
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [
|
|
40893
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [placeholder]=\"hint | translate\"\n [value]=\"constraint_.text ?? ''\"\n (valueChange)=\"handleConstraintTextChange($event)\"\n ></gn-ui-form-field-rich>\n\n <div *ngIf=\"!showUrl\" class=\"flex-none mt-1\">\n <gn-ui-button\n (buttonClick)=\"showUrl = true\"\n type=\"gray\"\n data-cy=\"add-url-btn\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon> \n <span translate>input.image.displayUrlInput</span>\n </gn-ui-button>\n </div>\n <gn-ui-url-input\n *ngIf=\"showUrl\"\n class=\"mt-3.5\"\n [value]=\"constraint_.url?.toString()\"\n (valueChange)=\"handleURLChange($event)\"\n [showValidateButton]=\"false\"\n >\n </gn-ui-url-input>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
|
|
41260
40894
|
}], propDecorators: { label: [{
|
|
41261
40895
|
type: Input
|
|
41262
40896
|
}], constraint: [{
|
|
@@ -41915,5 +41549,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41915
41549
|
* Generated bundle index. Do not edit.
|
|
41916
41550
|
*/
|
|
41917
41551
|
|
|
41918
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
41552
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
41919
41553
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|