geonetwork-ui 2.4.0-dev.81e72b2e → 2.4.0-dev.825a487d
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/atomic-operations.mjs +2 -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/iso19139.converter.mjs +5 -5
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +23 -1
- package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +10 -3
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +31 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -5
- package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +28 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -6
- package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +4 -6
- package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +7 -2
- package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +7 -3
- package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +16 -6
- package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +29 -0
- package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +131 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +170 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +6 -4
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +21 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +7 -6
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +24 -9
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +1 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +11 -7
- package/esm2022/libs/feature/editor/src/lib/expressions.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +159 -60
- package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +2 -0
- package/esm2022/libs/feature/editor/src/lib/models/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +4 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +10 -5
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +42 -23
- package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +13 -5
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +49 -15
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +46 -7
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +6 -2
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +7 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +4 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +6 -5
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -11
- package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +7 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +11 -5
- package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +19 -5
- package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +67 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +28 -8
- package/esm2022/libs/ui/widgets/src/index.mjs +2 -1
- package/esm2022/libs/ui/widgets/src/lib/popover/popover.component.mjs +68 -0
- package/esm2022/translations/de.json +103 -41
- package/esm2022/translations/en.json +76 -17
- package/esm2022/translations/es.json +75 -13
- package/esm2022/translations/fr.json +84 -25
- package/esm2022/translations/it.json +76 -14
- package/esm2022/translations/nl.json +75 -13
- package/esm2022/translations/pt.json +75 -13
- package/fesm2022/geonetwork-ui.mjs +1861 -514
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -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/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +8 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +7 -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 +2 -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/contact.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +17 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +5 -0
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +4 -4
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts +8 -0
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +4 -3
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +4 -8
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +12 -0
- package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +27 -0
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +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 +47 -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 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +11 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +3 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +7 -2
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +0 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +5 -7
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/expressions.d.ts +1 -1
- package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +40 -2
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +36 -0
- package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/models/index.d.ts +1 -0
- package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
- package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +4 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts +4 -1
- package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +4 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +14 -4
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
- package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -3
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +4 -4
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +7 -5
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +9 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +20 -0
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +9 -3
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/widgets/src/index.d.ts +1 -0
- package/libs/ui/widgets/src/index.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/popover/popover.component.d.ts +19 -0
- package/libs/ui/widgets/src/lib/popover/popover.component.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +37 -12
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +4 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +72 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +70 -1
- package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +13 -5
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +42 -2
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +26 -15
- package/src/libs/common/domain/src/lib/model/record/contact.model.ts +28 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -1
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +5 -1
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +22 -0
- package/src/libs/common/fixtures/src/index.ts +2 -0
- package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +156 -0
- package/src/libs/common/fixtures/src/lib/editor/index.ts +1 -0
- package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +1 -5
- package/src/libs/data-access/gn4/src/spec.yaml +0 -8
- package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
- package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +5 -0
- package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +2 -2
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +9 -1
- package/src/libs/feature/editor/src/lib/+state/editor.models.ts +11 -0
- package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +11 -5
- package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +22 -8
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +25 -0
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +30 -0
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +2 -1
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +110 -19
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +0 -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 +76 -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 +271 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +8 -6
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +5 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +22 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +8 -7
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +20 -9
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +20 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +51 -11
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +15 -8
- package/src/libs/feature/editor/src/lib/expressions.ts +1 -1
- package/src/libs/feature/editor/src/lib/fields.config.ts +193 -61
- package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +53 -0
- package/src/libs/feature/editor/src/lib/models/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +8 -4
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -4
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +36 -19
- package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +6 -2
- package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +11 -0
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +59 -12
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +3 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +57 -3
- package/src/libs/feature/search/src/lib/state/search.facade.ts +6 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +16 -2
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +29 -29
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +4 -1
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +12 -8
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +14 -20
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -10
- package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +3 -1
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.ts +8 -4
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +4 -2
- package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +15 -3
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.css +31 -0
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +15 -0
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +38 -0
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -0
- package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.css +0 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +26 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +74 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +15 -1
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +26 -12
- package/src/libs/ui/widgets/src/index.ts +1 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.css +0 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.html +3 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +85 -0
- package/tailwind.base.css +2 -1
- package/translations/de.json +103 -41
- package/translations/en.json +76 -17
- package/translations/es.json +75 -13
- package/translations/fr.json +84 -25
- package/translations/it.json +76 -14
- package/translations/nl.json +75 -13
- package/translations/pt.json +75 -13
- package/translations/sk.json +76 -14
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +0 -2
- package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +0 -2
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts +0 -26
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +0 -1
- package/libs/feature/editor/src/lib/models/fields.model.d.ts +0 -15
- package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.ts +0 -43
- package/src/libs/feature/editor/src/lib/models/fields.model.ts +0 -29
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
|
+
import GML32 from 'ol/format/GML32';
|
|
3
|
+
import GeoJSON from 'ol/format/GeoJSON';
|
|
4
|
+
import { parse as parse$1 } from 'ol/xml';
|
|
2
5
|
import format from 'date-fns/format';
|
|
3
6
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren,
|
|
7
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, TemplateRef, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren, Host, Pipe, inject } from '@angular/core';
|
|
5
8
|
import * as i1 from '@angular/common/http';
|
|
6
9
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
10
|
import * as i1$1 from '@ngx-translate/core';
|
|
@@ -12,7 +15,7 @@ import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith,
|
|
|
12
15
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
16
|
import * as i1$3 from '@angular/common';
|
|
14
17
|
import { CommonModule, NgFor, NgComponentOutlet, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom,
|
|
18
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom, merge, BehaviorSubject, fromEvent, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, exhaustMap, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
19
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
20
|
import * as i1$2 from '@ngrx/store';
|
|
18
21
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
@@ -23,7 +26,6 @@ import 'ol/Feature';
|
|
|
23
26
|
import { Circle, Fill, Stroke, Style as Style$1 } from 'ol/style';
|
|
24
27
|
import Style, { createDefaultStyle } from 'ol/style/Style';
|
|
25
28
|
import { extend, isEmpty } from 'ol/extent';
|
|
26
|
-
import GeoJSON from 'ol/format/GeoJSON';
|
|
27
29
|
import { transformExtent, fromLonLat } from 'ol/proj';
|
|
28
30
|
import ImageWMS from 'ol/source/ImageWMS';
|
|
29
31
|
import TileWMS from 'ol/source/TileWMS';
|
|
@@ -33,7 +35,7 @@ import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } fro
|
|
|
33
35
|
import chroma from 'chroma-js';
|
|
34
36
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
35
37
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
36
|
-
import proj4 from 'proj4
|
|
38
|
+
import proj4 from 'proj4';
|
|
37
39
|
import { defaults } from 'ol/control/defaults';
|
|
38
40
|
import * as TOML from '@ltd/j-toml';
|
|
39
41
|
import CircleStyle from 'ol/style/Circle';
|
|
@@ -48,60 +50,64 @@ import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
|
48
50
|
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
49
51
|
import OGCMapTile from 'ol/source/OGCMapTile.js';
|
|
50
52
|
import ImageLayer from 'ol/layer/Image';
|
|
51
|
-
import * as i2$
|
|
53
|
+
import * as i2$4 from '@angular/material/tabs';
|
|
52
54
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
53
55
|
import * as i2$2 from '@angular/forms';
|
|
54
56
|
import { FormsModule, ReactiveFormsModule, UntypedFormControl, FormArray, FormControl } from '@angular/forms';
|
|
55
57
|
import * as i2$1 from '@angular/material/autocomplete';
|
|
56
58
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
57
|
-
import * as i3$
|
|
59
|
+
import * as i3$2 from 'ngx-dropzone';
|
|
58
60
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
61
|
import * as i5 from 'ngx-chips';
|
|
60
62
|
import { TagInputModule } from 'ngx-chips';
|
|
61
63
|
import * as i1$4 from '@angular/material/progress-spinner';
|
|
62
64
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
65
|
+
import tippy from 'tippy.js';
|
|
63
66
|
import * as i3 from '@angular/material/core';
|
|
64
67
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
65
68
|
import * as i1$5 from '@angular/material/checkbox';
|
|
66
69
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
67
|
-
import * as
|
|
70
|
+
import * as i3$1 from '@angular/material/tooltip';
|
|
68
71
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
69
|
-
import * as i2$
|
|
72
|
+
import * as i2$3 from '@angular/material/datepicker';
|
|
70
73
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
71
74
|
import * as i1$6 from '@angular/cdk/overlay';
|
|
72
75
|
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
73
76
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
74
77
|
import { MatInputModule } from '@angular/material/input';
|
|
75
|
-
import * as i1$
|
|
78
|
+
import * as i1$8 from '@angular/router';
|
|
76
79
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
77
80
|
import Duration from 'duration-relativetimeformat';
|
|
81
|
+
import * as i1$7 from '@angular/material/dialog';
|
|
82
|
+
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
78
83
|
import * as basicLightbox from 'basiclightbox';
|
|
79
84
|
import { marked } from 'marked';
|
|
80
85
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
81
86
|
import EmblaCarousel from 'embla-carousel';
|
|
82
87
|
import { formatDistance } from 'date-fns';
|
|
83
88
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
84
|
-
import * as
|
|
89
|
+
import * as i4 from '@angular/material/menu';
|
|
90
|
+
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
91
|
+
import * as i1$9 from '@ngrx/effects';
|
|
85
92
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
86
|
-
import tippy from 'tippy.js';
|
|
87
93
|
import { valid as valid$1 } from 'geojson-validation';
|
|
94
|
+
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
88
95
|
import { Polygon } from 'ol/geom';
|
|
89
96
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
90
|
-
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
91
97
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
92
|
-
import * as i4 from '@angular/cdk/scrolling';
|
|
98
|
+
import * as i4$1 from '@angular/cdk/scrolling';
|
|
93
99
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
94
|
-
import * as i2$
|
|
100
|
+
import * as i2$5 from '@angular/material/sort';
|
|
95
101
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
96
|
-
import * as i1$
|
|
102
|
+
import * as i1$a from '@angular/material/table';
|
|
97
103
|
import { MatTableModule } from '@angular/material/table';
|
|
98
|
-
import * as i3$
|
|
104
|
+
import * as i3$3 from 'ng-table-virtual-scroll';
|
|
99
105
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
100
106
|
import * as Papa from 'papaparse';
|
|
101
107
|
import parseDate from 'date-fns/parse';
|
|
102
108
|
import parseIsoDate from 'date-fns/parseISO';
|
|
103
109
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
104
|
-
import * as i3$
|
|
110
|
+
import * as i3$4 from '@ngrx/router-store';
|
|
105
111
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
106
112
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
107
113
|
|
|
@@ -269,6 +275,9 @@ function allChildrenElement(element) {
|
|
|
269
275
|
...element.children.filter((el) => el instanceof XmlElement),
|
|
270
276
|
];
|
|
271
277
|
}
|
|
278
|
+
function firstChildElement(element) {
|
|
279
|
+
return allChildrenElement(element)[0] ?? null;
|
|
280
|
+
}
|
|
272
281
|
/**
|
|
273
282
|
* Will return all matching elements nested according to the given
|
|
274
283
|
* names (similar to a path), starting form the input element;
|
|
@@ -319,10 +328,12 @@ function findParent(parentName) {
|
|
|
319
328
|
}
|
|
320
329
|
function readText() {
|
|
321
330
|
return (el) => {
|
|
322
|
-
|
|
331
|
+
if (!el)
|
|
332
|
+
return null;
|
|
333
|
+
const textNode = Array.isArray(el.children)
|
|
323
334
|
? el.children.find((node) => node.type === 'text')
|
|
324
335
|
: null;
|
|
325
|
-
return textNode ? textNode.text :
|
|
336
|
+
return textNode ? textNode.text : '';
|
|
326
337
|
};
|
|
327
338
|
}
|
|
328
339
|
function readAttribute(attrName) {
|
|
@@ -427,10 +438,12 @@ function getTreeRoot(element) {
|
|
|
427
438
|
}
|
|
428
439
|
// stays on the parent element
|
|
429
440
|
// if the given elements are part of a subtree, will add the root of subtree
|
|
441
|
+
// will filter out falsy elements
|
|
430
442
|
function appendChildren(...childrenFns) {
|
|
431
443
|
return (element) => {
|
|
432
444
|
if (!element)
|
|
433
445
|
return null;
|
|
446
|
+
childrenFns = childrenFns.filter((fn) => fn);
|
|
434
447
|
element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot));
|
|
435
448
|
element.children.forEach((el) => (el.parent = element));
|
|
436
449
|
return element;
|
|
@@ -559,6 +572,33 @@ function matchMimeType(format) {
|
|
|
559
572
|
return format || null;
|
|
560
573
|
}
|
|
561
574
|
|
|
575
|
+
function readGeometry(el) {
|
|
576
|
+
const xmlDoc = createDocument(el);
|
|
577
|
+
xmlDoc.root.attributes['xmlns'] = 'http://www.opengis.net/gml/3.2';
|
|
578
|
+
const gmlString = xmlToString(xmlDoc);
|
|
579
|
+
const doc = parse$1(gmlString);
|
|
580
|
+
// we need an intermediate node to be able to parse the GML
|
|
581
|
+
const node = document.createElement('pre');
|
|
582
|
+
node.appendChild(doc.documentElement);
|
|
583
|
+
const gml32Format = new GML32();
|
|
584
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
585
|
+
// @ts-ignore
|
|
586
|
+
const geometry = gml32Format.readGeometryFromNode(node);
|
|
587
|
+
const geojsonFormat = new GeoJSON();
|
|
588
|
+
return geojsonFormat.writeGeometryObject(geometry);
|
|
589
|
+
}
|
|
590
|
+
function writeGeometry(geometryObject) {
|
|
591
|
+
const geojsonFormat = new GeoJSON();
|
|
592
|
+
const geometry = geojsonFormat.readGeometry(geometryObject);
|
|
593
|
+
const gml32Format = new GML32();
|
|
594
|
+
const node = gml32Format.writeGeometryNode(geometry);
|
|
595
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
596
|
+
// @ts-ignore
|
|
597
|
+
const element = node.firstElementChild;
|
|
598
|
+
const gmlString = new XMLSerializer().serializeToString(element);
|
|
599
|
+
return getRootElement(parseXmlString(gmlString));
|
|
600
|
+
}
|
|
601
|
+
|
|
562
602
|
/**
|
|
563
603
|
* Parts are [firstName, lastName]
|
|
564
604
|
* Second part will be null if no separation could be done
|
|
@@ -727,6 +767,9 @@ function extractCharacterString() {
|
|
|
727
767
|
function extractDateTime() {
|
|
728
768
|
return pipe(fallback(findChildElement('gco:DateTime', false), findChildElement('gco:Date', false)), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)));
|
|
729
769
|
}
|
|
770
|
+
function extractDecimal() {
|
|
771
|
+
return pipe(findChildElement('gco:Decimal', false), readText(), map((numberStr) => (numberStr ? Number(numberStr) : null)));
|
|
772
|
+
}
|
|
730
773
|
function extractUrl() {
|
|
731
774
|
const getUrl = pipe(findChildElement('gmd:URL', false), readText());
|
|
732
775
|
const getCharacterString = pipe(findChildElement('gco:CharacterString', false), readText());
|
|
@@ -1084,6 +1127,30 @@ function readTemporalExtents(rootEl) {
|
|
|
1084
1127
|
}
|
|
1085
1128
|
}))(rootEl);
|
|
1086
1129
|
}
|
|
1130
|
+
function readSpatialExtents(rootEl) {
|
|
1131
|
+
const extractGeometry = (rootEl) => {
|
|
1132
|
+
if (!rootEl)
|
|
1133
|
+
return null;
|
|
1134
|
+
return pipe(findChildElement('gmd:polygon', false), firstChildElement, map((el) => readGeometry(el)))(rootEl);
|
|
1135
|
+
};
|
|
1136
|
+
const extractBBox = (rootEl) => {
|
|
1137
|
+
if (!rootEl)
|
|
1138
|
+
return null;
|
|
1139
|
+
return pipe(combine(pipe(findChildElement('gmd:westBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:southBoundLatitude'), extractDecimal()), pipe(findChildElement('gmd:eastBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:northBoundLatitude'), extractDecimal())))(rootEl);
|
|
1140
|
+
};
|
|
1141
|
+
const extractDescription = (rootEl) => {
|
|
1142
|
+
if (!rootEl)
|
|
1143
|
+
return null;
|
|
1144
|
+
return pipe(findNestedElement('gmd:geographicIdentifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
|
|
1145
|
+
};
|
|
1146
|
+
return pipe(findIdentification(), findNestedElements('gmd:extent', 'gmd:EX_Extent', 'gmd:geographicElement'), mapArray(combine(pipe(findChildElement('gmd:EX_BoundingPolygon'), extractGeometry), pipe(findChildElement('gmd:EX_GeographicBoundingBox'), extractBBox), pipe(findChildElement('gmd:EX_GeographicDescription'), extractDescription))), mapArray(([geometry, bbox, description]) => {
|
|
1147
|
+
return {
|
|
1148
|
+
...(geometry && { geometry }),
|
|
1149
|
+
...(bbox && { bbox }),
|
|
1150
|
+
...(description && { description }),
|
|
1151
|
+
};
|
|
1152
|
+
}))(rootEl);
|
|
1153
|
+
}
|
|
1087
1154
|
|
|
1088
1155
|
function writeCharacterString(text) {
|
|
1089
1156
|
return tap(pipe(findChildOrCreate('gco:CharacterString'), setTextContent(text)));
|
|
@@ -1100,6 +1167,9 @@ function writeDateTime(date) {
|
|
|
1100
1167
|
function writeDate(date) {
|
|
1101
1168
|
return tap(pipe(findChildOrCreate('gco:Date'), setTextContent(format(date, 'yyyy-MM-dd'))));
|
|
1102
1169
|
}
|
|
1170
|
+
function writeDecimal(decimal) {
|
|
1171
|
+
return tap(pipe(findChildOrCreate('gco:Decimal'), setTextContent(decimal.toString())));
|
|
1172
|
+
}
|
|
1103
1173
|
function getProgressCode(status) {
|
|
1104
1174
|
switch (status) {
|
|
1105
1175
|
case 'completed':
|
|
@@ -1493,6 +1563,24 @@ function writeTemporalExtents(record, rootEl) {
|
|
|
1493
1563
|
? setTextContent(format(extent.start, 'yyyy-MM-dd'))
|
|
1494
1564
|
: addAttribute('indeterminatePosition', 'unknown'))))))))))(rootEl);
|
|
1495
1565
|
}
|
|
1566
|
+
function writeSpatialExtents(record, rootEl) {
|
|
1567
|
+
const appendBoundingPolygon = (geometry) => {
|
|
1568
|
+
if (!geometry)
|
|
1569
|
+
return null;
|
|
1570
|
+
return pipe(createElement('gmd:EX_BoundingPolygon'), appendChildren(pipe(createElement('gmd:polygon'), appendChildren(() => writeGeometry(geometry)))));
|
|
1571
|
+
};
|
|
1572
|
+
const appendGeographicBoundingBox = (bbox) => {
|
|
1573
|
+
if (!bbox)
|
|
1574
|
+
return null;
|
|
1575
|
+
return pipe(createElement('gmd:EX_GeographicBoundingBox'), appendChildren(pipe(createElement('gmd:westBoundLongitude'), writeDecimal(bbox[0])), pipe(createElement('gmd:eastBoundLongitude'), writeDecimal(bbox[2])), pipe(createElement('gmd:southBoundLatitude'), writeDecimal(bbox[1])), pipe(createElement('gmd:northBoundLatitude'), writeDecimal(bbox[3]))));
|
|
1576
|
+
};
|
|
1577
|
+
const appendGeographicDescription = (description) => {
|
|
1578
|
+
if (!description)
|
|
1579
|
+
return null;
|
|
1580
|
+
return pipe(createElement('gmd:EX_GeographicDescription'), createChild('gmd:geographicIdentifier'), createChild('gmd:MD_Identifier'), createChild('gmd:code'), writeCharacterString(description));
|
|
1581
|
+
};
|
|
1582
|
+
pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:extent', 'gmd:EX_Extent'), removeChildrenByName('gmd:geographicElement'), appendChildren(...record.spatialExtents.map((extent) => pipe(createElement('gmd:geographicElement'), appendChildren(appendBoundingPolygon(extent.geometry), appendGeographicBoundingBox(extent.bbox), appendGeographicDescription(extent.description))))))(rootEl);
|
|
1583
|
+
}
|
|
1496
1584
|
|
|
1497
1585
|
class Iso19139Converter extends BaseConverter {
|
|
1498
1586
|
constructor() {
|
|
@@ -1525,8 +1613,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1525
1613
|
distributions: readDistributions$1,
|
|
1526
1614
|
onlineResources: readOnlineResources,
|
|
1527
1615
|
temporalExtents: readTemporalExtents,
|
|
1616
|
+
spatialExtents: readSpatialExtents,
|
|
1528
1617
|
// TODO
|
|
1529
|
-
spatialExtents: () => [],
|
|
1530
1618
|
extras: () => undefined,
|
|
1531
1619
|
landingPage: () => undefined,
|
|
1532
1620
|
languages: () => [],
|
|
@@ -1559,8 +1647,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1559
1647
|
distributions: writeDistributions$1,
|
|
1560
1648
|
onlineResources: writeOnlineResources,
|
|
1561
1649
|
temporalExtents: writeTemporalExtents,
|
|
1650
|
+
spatialExtents: () => writeSpatialExtents,
|
|
1562
1651
|
// TODO
|
|
1563
|
-
spatialExtents: () => undefined,
|
|
1564
1652
|
extras: () => undefined,
|
|
1565
1653
|
landingPage: () => undefined,
|
|
1566
1654
|
languages: () => undefined,
|
|
@@ -2176,6 +2264,7 @@ const mapKeywords = (thesauri, language) => {
|
|
|
2176
2264
|
keywords.push({
|
|
2177
2265
|
label: selectTranslatedValue(keyword, language),
|
|
2178
2266
|
type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
|
|
2267
|
+
...(keyword.link && { key: keyword.link }),
|
|
2179
2268
|
...(thesaurus && { thesaurus }),
|
|
2180
2269
|
});
|
|
2181
2270
|
}
|
|
@@ -8641,11 +8730,7 @@ class RecordsApiService {
|
|
|
8641
8730
|
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
8642
8731
|
}
|
|
8643
8732
|
// to determine the Content-Type header
|
|
8644
|
-
const consumes = [
|
|
8645
|
-
'application/xml',
|
|
8646
|
-
'application/json',
|
|
8647
|
-
'application/x-www-form-urlencoded',
|
|
8648
|
-
];
|
|
8733
|
+
const consumes = ['application/xml'];
|
|
8649
8734
|
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
8650
8735
|
if (httpContentTypeSelected !== undefined) {
|
|
8651
8736
|
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
@@ -17356,6 +17441,8 @@ var de = {
|
|
|
17356
17441
|
"datafeeder.datasetValidation.submitButton": "OK, meine Daten sind korrekt",
|
|
17357
17442
|
"datafeeder.datasetValidation.title": "Stellen Sie sicher, dass Ihre Daten korrekt sind",
|
|
17358
17443
|
"datafeeder.datasetValidation.unknown": " - ",
|
|
17444
|
+
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
17445
|
+
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
17359
17446
|
"datafeeder.form.abstract": "Wie würden Sie Ihren Datensatz beschreiben?",
|
|
17360
17447
|
"datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
|
|
17361
17448
|
"datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
|
|
@@ -17383,6 +17470,7 @@ var de = {
|
|
|
17383
17470
|
"datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
|
|
17384
17471
|
"datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
|
|
17385
17472
|
"datafeeder.publishSuccess.mapViewer": "Kartenviewer",
|
|
17473
|
+
"datafeeder.publishSuccess.ogcFeature": "",
|
|
17386
17474
|
"datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
|
|
17387
17475
|
"datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
|
|
17388
17476
|
"datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
|
|
@@ -17411,7 +17499,6 @@ var de = {
|
|
|
17411
17499
|
"datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
|
|
17412
17500
|
"datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
|
|
17413
17501
|
"datafeeder.upload.uploadButton": "Hochladen",
|
|
17414
|
-
"datafeeder.validation.encoding": "Codierung",
|
|
17415
17502
|
"datafeeder.validation.csv.delimiter": "",
|
|
17416
17503
|
"datafeeder.validation.csv.delimiter.comma": "",
|
|
17417
17504
|
"datafeeder.validation.csv.delimiter.semicolon": "",
|
|
@@ -17421,6 +17508,7 @@ var de = {
|
|
|
17421
17508
|
"datafeeder.validation.csv.quote.none": "",
|
|
17422
17509
|
"datafeeder.validation.csv.quote.simple": "",
|
|
17423
17510
|
"datafeeder.validation.csv.quoteChar": "",
|
|
17511
|
+
"datafeeder.validation.encoding": "Codierung",
|
|
17424
17512
|
"datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
|
|
17425
17513
|
"datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
|
|
17426
17514
|
"datafeeder.validation.projection": "Raumbezugssystem:",
|
|
@@ -17433,7 +17521,7 @@ var de = {
|
|
|
17433
17521
|
"datahub.header.lastRecords": "Die neuesten",
|
|
17434
17522
|
"datahub.header.myfavorites": "Meine Favoriten",
|
|
17435
17523
|
"datahub.header.news": "Startseite",
|
|
17436
|
-
"datahub.header.
|
|
17524
|
+
"datahub.header.organizations": "Organisationen",
|
|
17437
17525
|
"datahub.header.popularRecords": "Die beliebtesten",
|
|
17438
17526
|
"datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
|
|
17439
17527
|
"datahub.news.contact.contactus": "Kontaktieren Sie uns",
|
|
@@ -17451,6 +17539,27 @@ var de = {
|
|
|
17451
17539
|
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
17452
17540
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
17453
17541
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
17542
|
+
"domain.contact.role.author": "",
|
|
17543
|
+
"domain.contact.role.collaborator": "",
|
|
17544
|
+
"domain.contact.role.contributor": "",
|
|
17545
|
+
"domain.contact.role.custodian": "",
|
|
17546
|
+
"domain.contact.role.distributor": "",
|
|
17547
|
+
"domain.contact.role.editor": "",
|
|
17548
|
+
"domain.contact.role.funder": "",
|
|
17549
|
+
"domain.contact.role.mediator": "",
|
|
17550
|
+
"domain.contact.role.originator": "",
|
|
17551
|
+
"domain.contact.role.other": "",
|
|
17552
|
+
"domain.contact.role.owner": "",
|
|
17553
|
+
"domain.contact.role.point_of_contact": "",
|
|
17554
|
+
"domain.contact.role.principal_investigator": "",
|
|
17555
|
+
"domain.contact.role.processor": "",
|
|
17556
|
+
"domain.contact.role.publisher": "",
|
|
17557
|
+
"domain.contact.role.resource_provider": "",
|
|
17558
|
+
"domain.contact.role.rights_holder": "",
|
|
17559
|
+
"domain.contact.role.sponsor": "",
|
|
17560
|
+
"domain.contact.role.stakeholder": "",
|
|
17561
|
+
"domain.contact.role.unspecified": "",
|
|
17562
|
+
"domain.contact.role.user": "",
|
|
17454
17563
|
"domain.record.status.completed": "Abgeschlossen",
|
|
17455
17564
|
"domain.record.status.deprecated": "Veraltet",
|
|
17456
17565
|
"domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
|
|
@@ -17469,37 +17578,73 @@ var de = {
|
|
|
17469
17578
|
"downloads.format.unknown": "unbekannt",
|
|
17470
17579
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17471
17580
|
dropFile: dropFile$6,
|
|
17472
|
-
"editor.record.
|
|
17473
|
-
"editor.record.
|
|
17474
|
-
"editor.record.
|
|
17475
|
-
"editor.record.
|
|
17476
|
-
"editor.record.
|
|
17477
|
-
"editor.record.
|
|
17478
|
-
"editor.record.
|
|
17479
|
-
"editor.record.
|
|
17480
|
-
"editor.record.
|
|
17581
|
+
"editor.record.delete.confirmation.cancelText": "Stornieren",
|
|
17582
|
+
"editor.record.delete.confirmation.confirmText": "Löschen",
|
|
17583
|
+
"editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
|
|
17584
|
+
"editor.record.delete.confirmation.title": "Datensatz löschen?",
|
|
17585
|
+
"editor.record.deleteError.body": "Der Datensatz konnte nicht gelöscht werden:",
|
|
17586
|
+
"editor.record.deleteError.closeMessage": "Verstanden",
|
|
17587
|
+
"editor.record.deleteError.title": "Fehler beim Löschen des Datensatzes",
|
|
17588
|
+
"editor.record.deleteSuccess.body": "",
|
|
17589
|
+
"editor.record.deleteSuccess.title": "",
|
|
17590
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
17591
|
+
"editor.record.form.bottomButtons.next": "",
|
|
17592
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
17593
|
+
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
17594
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
17595
|
+
"editor.record.form.field.keywords": "Schlagwörter",
|
|
17596
|
+
"editor.record.form.field.license": "Lizenz",
|
|
17597
|
+
"editor.record.form.field.overviews": "",
|
|
17598
|
+
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
17599
|
+
"editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
17600
|
+
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
17601
|
+
"editor.record.form.field.title": "Metadaten-Titel",
|
|
17602
|
+
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
17603
|
+
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17604
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17605
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17606
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17607
|
+
"editor.record.form.license.etalab": "Offene Lizenz (Etalab)",
|
|
17608
|
+
"editor.record.form.license.etalab-v2": "Offene Lizenz v2.0 (Etalab)",
|
|
17609
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17610
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17611
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17481
17612
|
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17482
|
-
"editor.record.form.
|
|
17483
|
-
"editor.record.form.
|
|
17484
|
-
"editor.record.form.
|
|
17485
|
-
"editor.record.form.
|
|
17486
|
-
"editor.record.form.
|
|
17487
|
-
"editor.record.form.
|
|
17488
|
-
"editor.record.form.
|
|
17489
|
-
"editor.record.form.
|
|
17490
|
-
"editor.record.
|
|
17491
|
-
"editor.record.
|
|
17492
|
-
"editor.record.
|
|
17493
|
-
"editor.record.
|
|
17494
|
-
"editor.record.
|
|
17495
|
-
"editor.record.
|
|
17496
|
-
"editor.record.
|
|
17497
|
-
"editor.record.
|
|
17498
|
-
"editor.record.
|
|
17499
|
-
"editor.record.
|
|
17500
|
-
"editor.record.
|
|
17501
|
-
"editor.record.
|
|
17502
|
-
"editor.record.
|
|
17613
|
+
"editor.record.form.page.accessAndContact": "",
|
|
17614
|
+
"editor.record.form.page.description": "",
|
|
17615
|
+
"editor.record.form.page.ressources": "",
|
|
17616
|
+
"editor.record.form.section.about.description": "",
|
|
17617
|
+
"editor.record.form.section.about.label": "",
|
|
17618
|
+
"editor.record.form.section.annexes.label": "",
|
|
17619
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
17620
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
17621
|
+
"editor.record.form.section.classification.description": "",
|
|
17622
|
+
"editor.record.form.section.classification.label": "",
|
|
17623
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
17624
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
17625
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
17626
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
17627
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
17628
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
17629
|
+
"editor.record.form.temporalExtents.addDate": "Zeitpunkt",
|
|
17630
|
+
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
17631
|
+
"editor.record.form.temporalExtents.date": "Datum",
|
|
17632
|
+
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
17633
|
+
"editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
|
|
17634
|
+
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
17635
|
+
"editor.record.loadError.closeMessage": "Verstanden",
|
|
17636
|
+
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
17637
|
+
"editor.record.publish": "Diesen Datensatz veröffentlichen",
|
|
17638
|
+
"editor.record.publishError.body": "Der Datensatz konnte nicht veröffentlicht werden:",
|
|
17639
|
+
"editor.record.publishError.closeMessage": "Verstanden",
|
|
17640
|
+
"editor.record.publishError.title": "Fehler beim Veröffentlichen des Datensatzes",
|
|
17641
|
+
"editor.record.publishSuccess.body": "Der Datensatz wurde erfolgreich veröffentlicht!",
|
|
17642
|
+
"editor.record.publishSuccess.title": "Veröffentlichung erfolgreich",
|
|
17643
|
+
"editor.record.saveStatus.asDraftOnly": "Nur als Entwurf gespeichert - noch nicht veröffentlicht",
|
|
17644
|
+
"editor.record.saveStatus.draftWithChangesPending": "Als Entwurf gespeichert - Änderungen stehen aus",
|
|
17645
|
+
"editor.record.saveStatus.recordUpToDate": "Datensatz ist auf dem neuesten Stand",
|
|
17646
|
+
"editor.record.upToDate": "Dieser Datensatz ist auf dem neuesten Stand",
|
|
17647
|
+
"editor.sidebar.menu.editor": "",
|
|
17503
17648
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
17504
17649
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17505
17650
|
"facets.block.title.availableInServices": "Verfügbar für",
|
|
@@ -17568,17 +17713,17 @@ var de = {
|
|
|
17568
17713
|
"organisations.sortBy.nameDesc": "Name Z → A",
|
|
17569
17714
|
"organisations.sortBy.recordCountAsc": "Veröffentlichungen 0 → 9",
|
|
17570
17715
|
"organisations.sortBy.recordCountDesc": "Veröffentlichungen 9 → 0",
|
|
17571
|
-
"organization.
|
|
17572
|
-
"organization.details.
|
|
17716
|
+
"organization.details.lastPublishedDatasets": "",
|
|
17717
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
17573
17718
|
"organization.details.mailContact": "",
|
|
17574
|
-
"organization.
|
|
17575
|
-
"organization.lastPublishedDatasets": "",
|
|
17576
|
-
"organization.lastPublishedDatasets.searchAllButton": "",
|
|
17719
|
+
"organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
|
|
17577
17720
|
"pagination.nextPage": "Nächste Seite",
|
|
17578
17721
|
"pagination.page": "Seite",
|
|
17579
17722
|
"pagination.pageOf": "von",
|
|
17580
17723
|
previous: previous$6,
|
|
17724
|
+
"record.action.delete": "Löschen",
|
|
17581
17725
|
"record.action.download": "Herunterladen",
|
|
17726
|
+
"record.action.duplicate": "",
|
|
17582
17727
|
"record.action.view": "Anzeigen",
|
|
17583
17728
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
17584
17729
|
"record.metadata.about": "Beschreibung",
|
|
@@ -17671,11 +17816,11 @@ var de = {
|
|
|
17671
17816
|
"results.sortBy.relevancy": "Relevanz",
|
|
17672
17817
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
17673
17818
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
17819
|
+
"search.error.organizationHasNoDataset": "",
|
|
17820
|
+
"search.error.organizationNotFound": "",
|
|
17674
17821
|
"search.error.receivedError": "Ein Fehler ist aufgetreten",
|
|
17675
17822
|
"search.error.recordHasnolink": "",
|
|
17676
17823
|
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
17677
|
-
"search.error.organizationNotFound": "",
|
|
17678
|
-
"search.error.organizationHasNoDataset": "",
|
|
17679
17824
|
"search.field.any.placeholder": "Suche Datensätze ...",
|
|
17680
17825
|
"search.field.sortBy": "Sortieren nach:",
|
|
17681
17826
|
"search.filters.clear": "Zurücksetzen",
|
|
@@ -17700,14 +17845,16 @@ var de = {
|
|
|
17700
17845
|
"search.filters.minimize": "Minimieren",
|
|
17701
17846
|
"search.filters.myRecords": "Nur meine Datensätze anzeigen",
|
|
17702
17847
|
"search.filters.myRecordsHelp": "Wenn dies aktiviert ist, werden nur von mir erstellte Datensätze angezeigt; Datensätze, die von anderen erstellt wurden, werden nicht angezeigt.",
|
|
17848
|
+
"search.filters.organization": "",
|
|
17703
17849
|
"search.filters.otherRecords": "Datensätze von einer anderen Person anzeigen",
|
|
17850
|
+
"search.filters.producerOrg": "",
|
|
17704
17851
|
"search.filters.publicationYear": "Veröffentlichungsjahr",
|
|
17705
|
-
"search.filters.
|
|
17852
|
+
"search.filters.publisherOrg": "",
|
|
17706
17853
|
"search.filters.representationType": "Repräsentationstyp",
|
|
17707
17854
|
"search.filters.resourceType": "Ressourcentyp",
|
|
17708
17855
|
"search.filters.standard": "Standard",
|
|
17709
17856
|
"search.filters.title": "Ergebnisse filtern",
|
|
17710
|
-
"search.filters.topic": "
|
|
17857
|
+
"search.filters.topic": "Themen",
|
|
17711
17858
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
17712
17859
|
"search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
|
|
17713
17860
|
"share.tab.permalink": "Teilen",
|
|
@@ -17736,7 +17883,7 @@ var en = {
|
|
|
17736
17883
|
"Add Layer As": "",
|
|
17737
17884
|
"button.login": "Log in",
|
|
17738
17885
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
17739
|
-
"catalog.figures.organizations": "{count, plural, =0{
|
|
17886
|
+
"catalog.figures.organizations": "{count, plural, =0{organizations} one{organization} other{organizations}}",
|
|
17740
17887
|
"chart.aggregation.average": "average",
|
|
17741
17888
|
"chart.aggregation.count": "count",
|
|
17742
17889
|
"chart.aggregation.max": "max",
|
|
@@ -17780,11 +17927,11 @@ var en = {
|
|
|
17780
17927
|
"datafeeder.analysisProgressBar.subtitle": "The analysis may take several minutes, please wait.",
|
|
17781
17928
|
"datafeeder.analysisProgressBar.title": "Analyze in progress",
|
|
17782
17929
|
"datafeeder.datasetValidation.datasetInformation": "The provided dataset contains {number} entities",
|
|
17783
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
|
|
17784
|
-
"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",
|
|
17785
17930
|
"datafeeder.datasetValidation.submitButton": "OK, my data are correct",
|
|
17786
17931
|
"datafeeder.datasetValidation.title": "Make sure your data are correct",
|
|
17787
17932
|
"datafeeder.datasetValidation.unknown": " - ",
|
|
17933
|
+
"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",
|
|
17934
|
+
"datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
|
|
17788
17935
|
"datafeeder.form.abstract": "How would you describe your dataset?",
|
|
17789
17936
|
"datafeeder.form.datepicker": "Do you know when the dataset was created?",
|
|
17790
17937
|
"datafeeder.form.description": "Finally, please describe the process that was used to create the dataset",
|
|
@@ -17863,7 +18010,7 @@ var en = {
|
|
|
17863
18010
|
"datahub.header.lastRecords": "The latest",
|
|
17864
18011
|
"datahub.header.myfavorites": "My favorites",
|
|
17865
18012
|
"datahub.header.news": "Home",
|
|
17866
|
-
"datahub.header.
|
|
18013
|
+
"datahub.header.organizations": "Organizations",
|
|
17867
18014
|
"datahub.header.popularRecords": "The most popular",
|
|
17868
18015
|
"datahub.header.title.html": "<div class=\"text-white\">Discover open<br> data from my Organization</div>",
|
|
17869
18016
|
"datahub.news.contact.contactus": "Contact us",
|
|
@@ -17881,6 +18028,27 @@ var en = {
|
|
|
17881
18028
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
17882
18029
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
17883
18030
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
18031
|
+
"domain.contact.role.author": "Author",
|
|
18032
|
+
"domain.contact.role.collaborator": "Collaborator",
|
|
18033
|
+
"domain.contact.role.contributor": "Contributor",
|
|
18034
|
+
"domain.contact.role.custodian": "Custodian",
|
|
18035
|
+
"domain.contact.role.distributor": "Distributor",
|
|
18036
|
+
"domain.contact.role.editor": "Editor",
|
|
18037
|
+
"domain.contact.role.funder": "Funder",
|
|
18038
|
+
"domain.contact.role.mediator": "Mediator",
|
|
18039
|
+
"domain.contact.role.originator": "Originator",
|
|
18040
|
+
"domain.contact.role.other": "Other",
|
|
18041
|
+
"domain.contact.role.owner": "Owner",
|
|
18042
|
+
"domain.contact.role.point_of_contact": "Point of contact",
|
|
18043
|
+
"domain.contact.role.principal_investigator": "Principal investigator",
|
|
18044
|
+
"domain.contact.role.processor": "Processor",
|
|
18045
|
+
"domain.contact.role.publisher": "Publisher",
|
|
18046
|
+
"domain.contact.role.resource_provider": "Resource provider",
|
|
18047
|
+
"domain.contact.role.rights_holder": "Rights holder",
|
|
18048
|
+
"domain.contact.role.sponsor": "Sponsor",
|
|
18049
|
+
"domain.contact.role.stakeholder": "Stakeholder",
|
|
18050
|
+
"domain.contact.role.unspecified": "Unspecified",
|
|
18051
|
+
"domain.contact.role.user": "User",
|
|
17884
18052
|
"domain.record.status.completed": "Completed",
|
|
17885
18053
|
"domain.record.status.deprecated": "Deprecated",
|
|
17886
18054
|
"domain.record.status.ongoing": "On going",
|
|
@@ -17899,7 +18067,29 @@ var en = {
|
|
|
17899
18067
|
"downloads.format.unknown": "unknown",
|
|
17900
18068
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17901
18069
|
dropFile: dropFile$5,
|
|
17902
|
-
"editor.record.
|
|
18070
|
+
"editor.record.delete.confirmation.cancelText": "Cancel",
|
|
18071
|
+
"editor.record.delete.confirmation.confirmText": "Delete",
|
|
18072
|
+
"editor.record.delete.confirmation.message": "Are you sure you want to delete this record?",
|
|
18073
|
+
"editor.record.delete.confirmation.title": "Delete record?",
|
|
18074
|
+
"editor.record.deleteError.body": "The record could not be deleted:",
|
|
18075
|
+
"editor.record.deleteError.closeMessage": "Understood",
|
|
18076
|
+
"editor.record.deleteError.title": "Error deleting record",
|
|
18077
|
+
"editor.record.deleteSuccess.body": "The record was successfully deleted !",
|
|
18078
|
+
"editor.record.deleteSuccess.title": "Delete success",
|
|
18079
|
+
"editor.record.form.bottomButtons.comeBackLater": "Come back later",
|
|
18080
|
+
"editor.record.form.bottomButtons.next": "Next",
|
|
18081
|
+
"editor.record.form.bottomButtons.previous": "Previous",
|
|
18082
|
+
"editor.record.form.field.abstract": "Abstract",
|
|
18083
|
+
"editor.record.form.field.contactsForResource.noContact": "Please provide at least one point of contact responsible for the data.",
|
|
18084
|
+
"editor.record.form.field.keywords": "Keywords",
|
|
18085
|
+
"editor.record.form.field.license": "License",
|
|
18086
|
+
"editor.record.form.field.overviews": "Overviews",
|
|
18087
|
+
"editor.record.form.field.recordUpdated": "Record Updated",
|
|
18088
|
+
"editor.record.form.field.resourceUpdated": "Resource Updated",
|
|
18089
|
+
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
18090
|
+
"editor.record.form.field.title": "Metadata title",
|
|
18091
|
+
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
18092
|
+
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
17903
18093
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17904
18094
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17905
18095
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17909,13 +18099,26 @@ var en = {
|
|
|
17909
18099
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17910
18100
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17911
18101
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17912
|
-
"editor.record.form.
|
|
17913
|
-
"editor.record.form.
|
|
18102
|
+
"editor.record.form.page.accessAndContact": "Access and contact",
|
|
18103
|
+
"editor.record.form.page.description": "Resource description",
|
|
18104
|
+
"editor.record.form.page.ressources": "Resources",
|
|
18105
|
+
"editor.record.form.section.about.description": "This section describes the resource.",
|
|
18106
|
+
"editor.record.form.section.about.label": "About the resource",
|
|
18107
|
+
"editor.record.form.section.annexes.label": "Annexes",
|
|
18108
|
+
"editor.record.form.section.associatedResources.description": "Drop files here to associate them with the resource.",
|
|
18109
|
+
"editor.record.form.section.associatedResources.label": "Associated resources",
|
|
18110
|
+
"editor.record.form.section.classification.description": "The classification has an impact on the access to the data.",
|
|
18111
|
+
"editor.record.form.section.classification.label": "Classification",
|
|
18112
|
+
"editor.record.form.section.dataManagers.description": "The data managers are responsible for the data.",
|
|
18113
|
+
"editor.record.form.section.dataManagers.label": "Data managers",
|
|
18114
|
+
"editor.record.form.section.dataPointOfContact.description": "This information concerns the metadata.",
|
|
18115
|
+
"editor.record.form.section.dataPointOfContact.label": "Data point of contact",
|
|
18116
|
+
"editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
|
|
18117
|
+
"editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
|
|
17914
18118
|
"editor.record.form.temporalExtents.addDate": "Time instant",
|
|
17915
18119
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
17916
18120
|
"editor.record.form.temporalExtents.date": "Date",
|
|
17917
18121
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
17918
|
-
"editor.record.form.updateFrequency": "Update frequency",
|
|
17919
18122
|
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17920
18123
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17921
18124
|
"editor.record.loadError.closeMessage": "Understood",
|
|
@@ -17930,6 +18133,7 @@ var en = {
|
|
|
17930
18133
|
"editor.record.saveStatus.draftWithChangesPending": "Saved as draft - changes are pending",
|
|
17931
18134
|
"editor.record.saveStatus.recordUpToDate": "Record is up to date",
|
|
17932
18135
|
"editor.record.upToDate": "This record is up to date",
|
|
18136
|
+
"editor.sidebar.menu.editor": "Editor",
|
|
17933
18137
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17934
18138
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17935
18139
|
"facets.block.title.availableInServices": "Available for",
|
|
@@ -17998,17 +18202,17 @@ var en = {
|
|
|
17998
18202
|
"organisations.sortBy.nameDesc": "Name Z → A",
|
|
17999
18203
|
"organisations.sortBy.recordCountAsc": "Publications 0 → 9",
|
|
18000
18204
|
"organisations.sortBy.recordCountDesc": "Publications 9 → 0",
|
|
18001
|
-
"organization.
|
|
18002
|
-
"organization.details.
|
|
18205
|
+
"organization.details.lastPublishedDatasets": "",
|
|
18206
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
18003
18207
|
"organization.details.mailContact": "Contact by email",
|
|
18004
|
-
"organization.
|
|
18005
|
-
"organization.lastPublishedDatasets": "Last published datasets",
|
|
18006
|
-
"organization.lastPublishedDatasets.searchAllButton": "Search all",
|
|
18208
|
+
"organization.header.recordCount": "{count, plural, =0{data} one{data} other{datas}}",
|
|
18007
18209
|
"pagination.nextPage": "Next page",
|
|
18008
18210
|
"pagination.page": "page",
|
|
18009
18211
|
"pagination.pageOf": "of",
|
|
18010
18212
|
previous: previous$5,
|
|
18213
|
+
"record.action.delete": "Delete",
|
|
18011
18214
|
"record.action.download": "Download",
|
|
18215
|
+
"record.action.duplicate": "Duplicate",
|
|
18012
18216
|
"record.action.view": "View",
|
|
18013
18217
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
18014
18218
|
"record.metadata.about": "Description",
|
|
@@ -18101,11 +18305,11 @@ var en = {
|
|
|
18101
18305
|
"results.sortBy.relevancy": "Relevancy",
|
|
18102
18306
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
18103
18307
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
18308
|
+
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
18309
|
+
"search.error.organizationNotFound": "This organization could not be found.",
|
|
18104
18310
|
"search.error.receivedError": "An error was received",
|
|
18105
18311
|
"search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
|
|
18106
18312
|
"search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
|
|
18107
|
-
"search.error.organizationNotFound": "This organization could not be found.",
|
|
18108
|
-
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
18109
18313
|
"search.field.any.placeholder": "Search datasets ...",
|
|
18110
18314
|
"search.field.sortBy": "Sort by:",
|
|
18111
18315
|
"search.filters.clear": "Reset",
|
|
@@ -18130,14 +18334,16 @@ var en = {
|
|
|
18130
18334
|
"search.filters.minimize": "Minimize",
|
|
18131
18335
|
"search.filters.myRecords": "Show only my records",
|
|
18132
18336
|
"search.filters.myRecordsHelp": "When this is enabled, records only created by myself are shown; records created by others will not show up.",
|
|
18337
|
+
"search.filters.organization": "Organization",
|
|
18133
18338
|
"search.filters.otherRecords": "Showing records from another person",
|
|
18339
|
+
"search.filters.producerOrg": "Producer",
|
|
18134
18340
|
"search.filters.publicationYear": "Publication year",
|
|
18135
|
-
"search.filters.
|
|
18341
|
+
"search.filters.publisherOrg": "Publisher",
|
|
18136
18342
|
"search.filters.representationType": "Representation type",
|
|
18137
18343
|
"search.filters.resourceType": "Resource type",
|
|
18138
18344
|
"search.filters.standard": "Standard",
|
|
18139
18345
|
"search.filters.title": "Filter your results",
|
|
18140
|
-
"search.filters.topic": "
|
|
18346
|
+
"search.filters.topic": "Topics",
|
|
18141
18347
|
"search.filters.useSpatialFilter": "Show records in the area of interest first",
|
|
18142
18348
|
"search.filters.useSpatialFilterHelp": "When this is enabled, records situated in the catalog's area of interest are shown first; records outside of this area will not show up.",
|
|
18143
18349
|
"share.tab.permalink": "Share",
|
|
@@ -18213,6 +18419,8 @@ var es = {
|
|
|
18213
18419
|
"datafeeder.datasetValidation.submitButton": "",
|
|
18214
18420
|
"datafeeder.datasetValidation.title": "",
|
|
18215
18421
|
"datafeeder.datasetValidation.unknown": "",
|
|
18422
|
+
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
18423
|
+
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
18216
18424
|
"datafeeder.form.abstract": "",
|
|
18217
18425
|
"datafeeder.form.datepicker": "",
|
|
18218
18426
|
"datafeeder.form.description": "",
|
|
@@ -18240,6 +18448,7 @@ var es = {
|
|
|
18240
18448
|
"datafeeder.publishSuccess.geonetworkRecord": "",
|
|
18241
18449
|
"datafeeder.publishSuccess.illustration.title": "",
|
|
18242
18450
|
"datafeeder.publishSuccess.mapViewer": "",
|
|
18451
|
+
"datafeeder.publishSuccess.ogcFeature": "",
|
|
18243
18452
|
"datafeeder.publishSuccess.subtitle": "",
|
|
18244
18453
|
"datafeeder.publishSuccess.title": "",
|
|
18245
18454
|
"datafeeder.publishSuccess.uploadAnotherData": "",
|
|
@@ -18290,7 +18499,7 @@ var es = {
|
|
|
18290
18499
|
"datahub.header.lastRecords": "",
|
|
18291
18500
|
"datahub.header.myfavorites": "",
|
|
18292
18501
|
"datahub.header.news": "",
|
|
18293
|
-
"datahub.header.
|
|
18502
|
+
"datahub.header.organizations": "",
|
|
18294
18503
|
"datahub.header.popularRecords": "",
|
|
18295
18504
|
"datahub.header.title.html": "",
|
|
18296
18505
|
"datahub.news.contact.contactus": "",
|
|
@@ -18308,6 +18517,27 @@ var es = {
|
|
|
18308
18517
|
"dataset.error.parse": "",
|
|
18309
18518
|
"dataset.error.unknown": "",
|
|
18310
18519
|
"dataset.error.unsupportedType": "",
|
|
18520
|
+
"domain.contact.role.author": "",
|
|
18521
|
+
"domain.contact.role.collaborator": "",
|
|
18522
|
+
"domain.contact.role.contributor": "",
|
|
18523
|
+
"domain.contact.role.custodian": "",
|
|
18524
|
+
"domain.contact.role.distributor": "",
|
|
18525
|
+
"domain.contact.role.editor": "",
|
|
18526
|
+
"domain.contact.role.funder": "",
|
|
18527
|
+
"domain.contact.role.mediator": "",
|
|
18528
|
+
"domain.contact.role.originator": "",
|
|
18529
|
+
"domain.contact.role.other": "",
|
|
18530
|
+
"domain.contact.role.owner": "",
|
|
18531
|
+
"domain.contact.role.point_of_contact": "",
|
|
18532
|
+
"domain.contact.role.principal_investigator": "",
|
|
18533
|
+
"domain.contact.role.processor": "",
|
|
18534
|
+
"domain.contact.role.publisher": "",
|
|
18535
|
+
"domain.contact.role.resource_provider": "",
|
|
18536
|
+
"domain.contact.role.rights_holder": "",
|
|
18537
|
+
"domain.contact.role.sponsor": "",
|
|
18538
|
+
"domain.contact.role.stakeholder": "",
|
|
18539
|
+
"domain.contact.role.unspecified": "",
|
|
18540
|
+
"domain.contact.role.user": "",
|
|
18311
18541
|
"domain.record.status.completed": "",
|
|
18312
18542
|
"domain.record.status.deprecated": "",
|
|
18313
18543
|
"domain.record.status.ongoing": "",
|
|
@@ -18326,7 +18556,29 @@ var es = {
|
|
|
18326
18556
|
"downloads.format.unknown": "",
|
|
18327
18557
|
"downloads.wfs.featuretype.not.found": "",
|
|
18328
18558
|
dropFile: dropFile$4,
|
|
18329
|
-
"editor.record.
|
|
18559
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
18560
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
18561
|
+
"editor.record.delete.confirmation.message": "",
|
|
18562
|
+
"editor.record.delete.confirmation.title": "",
|
|
18563
|
+
"editor.record.deleteError.body": "",
|
|
18564
|
+
"editor.record.deleteError.closeMessage": "",
|
|
18565
|
+
"editor.record.deleteError.title": "",
|
|
18566
|
+
"editor.record.deleteSuccess.body": "",
|
|
18567
|
+
"editor.record.deleteSuccess.title": "",
|
|
18568
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
18569
|
+
"editor.record.form.bottomButtons.next": "",
|
|
18570
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
18571
|
+
"editor.record.form.field.abstract": "",
|
|
18572
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
18573
|
+
"editor.record.form.field.keywords": "",
|
|
18574
|
+
"editor.record.form.field.license": "",
|
|
18575
|
+
"editor.record.form.field.overviews": "",
|
|
18576
|
+
"editor.record.form.field.recordUpdated": "",
|
|
18577
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
18578
|
+
"editor.record.form.field.temporalExtents": "",
|
|
18579
|
+
"editor.record.form.field.title": "",
|
|
18580
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
18581
|
+
"editor.record.form.field.updateFrequency": "",
|
|
18330
18582
|
"editor.record.form.license.cc-by": "",
|
|
18331
18583
|
"editor.record.form.license.cc-by-sa": "",
|
|
18332
18584
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18336,13 +18588,26 @@ var es = {
|
|
|
18336
18588
|
"editor.record.form.license.odc-by": "",
|
|
18337
18589
|
"editor.record.form.license.pddl": "",
|
|
18338
18590
|
"editor.record.form.license.unknown": "",
|
|
18339
|
-
"editor.record.form.
|
|
18340
|
-
"editor.record.form.
|
|
18591
|
+
"editor.record.form.page.accessAndContact": "",
|
|
18592
|
+
"editor.record.form.page.description": "",
|
|
18593
|
+
"editor.record.form.page.ressources": "",
|
|
18594
|
+
"editor.record.form.section.about.description": "",
|
|
18595
|
+
"editor.record.form.section.about.label": "",
|
|
18596
|
+
"editor.record.form.section.annexes.label": "",
|
|
18597
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
18598
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
18599
|
+
"editor.record.form.section.classification.description": "",
|
|
18600
|
+
"editor.record.form.section.classification.label": "",
|
|
18601
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
18602
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
18603
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
18604
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
18605
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
18606
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
18341
18607
|
"editor.record.form.temporalExtents.addDate": "",
|
|
18342
18608
|
"editor.record.form.temporalExtents.addRange": "",
|
|
18343
18609
|
"editor.record.form.temporalExtents.date": "",
|
|
18344
18610
|
"editor.record.form.temporalExtents.range": "",
|
|
18345
|
-
"editor.record.form.updateFrequency": "",
|
|
18346
18611
|
"editor.record.form.updateFrequency.planned": "",
|
|
18347
18612
|
"editor.record.loadError.body": "",
|
|
18348
18613
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -18357,6 +18622,7 @@ var es = {
|
|
|
18357
18622
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
18358
18623
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
18359
18624
|
"editor.record.upToDate": "",
|
|
18625
|
+
"editor.sidebar.menu.editor": "",
|
|
18360
18626
|
"externalviewer.dataset.unnamed": "",
|
|
18361
18627
|
"facets.block.title.OrgForResource": "",
|
|
18362
18628
|
"facets.block.title.availableInServices": "",
|
|
@@ -18425,17 +18691,17 @@ var es = {
|
|
|
18425
18691
|
"organisations.sortBy.nameDesc": "",
|
|
18426
18692
|
"organisations.sortBy.recordCountAsc": "",
|
|
18427
18693
|
"organisations.sortBy.recordCountDesc": "",
|
|
18428
|
-
"organization.
|
|
18429
|
-
"organization.details.
|
|
18694
|
+
"organization.details.lastPublishedDatasets": "",
|
|
18695
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
18430
18696
|
"organization.details.mailContact": "",
|
|
18431
|
-
"organization.
|
|
18432
|
-
"organization.lastPublishedDatasets": "",
|
|
18433
|
-
"organization.lastPublishedDatasets.searchAllButton": "",
|
|
18697
|
+
"organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
|
|
18434
18698
|
"pagination.nextPage": "",
|
|
18435
18699
|
"pagination.page": "",
|
|
18436
18700
|
"pagination.pageOf": "",
|
|
18437
18701
|
previous: previous$4,
|
|
18702
|
+
"record.action.delete": "",
|
|
18438
18703
|
"record.action.download": "",
|
|
18704
|
+
"record.action.duplicate": "",
|
|
18439
18705
|
"record.action.view": "",
|
|
18440
18706
|
"record.externalViewer.open": "",
|
|
18441
18707
|
"record.metadata.about": "",
|
|
@@ -18528,11 +18794,11 @@ var es = {
|
|
|
18528
18794
|
"results.sortBy.relevancy": "",
|
|
18529
18795
|
"search.autocomplete.error": "",
|
|
18530
18796
|
"search.error.couldNotReachApi": "",
|
|
18797
|
+
"search.error.organizationHasNoDataset": "",
|
|
18798
|
+
"search.error.organizationNotFound": "",
|
|
18531
18799
|
"search.error.receivedError": "",
|
|
18532
18800
|
"search.error.recordHasnolink": "",
|
|
18533
18801
|
"search.error.recordNotFound": "",
|
|
18534
|
-
"search.error.organizationNotFound": "",
|
|
18535
|
-
"search.error.organizationHasNoDataset": "",
|
|
18536
18802
|
"search.field.any.placeholder": "",
|
|
18537
18803
|
"search.field.sortBy": "",
|
|
18538
18804
|
"search.filters.clear": "",
|
|
@@ -18557,9 +18823,11 @@ var es = {
|
|
|
18557
18823
|
"search.filters.minimize": "",
|
|
18558
18824
|
"search.filters.myRecords": "",
|
|
18559
18825
|
"search.filters.myRecordsHelp": "",
|
|
18826
|
+
"search.filters.organization": "",
|
|
18560
18827
|
"search.filters.otherRecords": "",
|
|
18828
|
+
"search.filters.producerOrg": "",
|
|
18561
18829
|
"search.filters.publicationYear": "",
|
|
18562
|
-
"search.filters.
|
|
18830
|
+
"search.filters.publisherOrg": "",
|
|
18563
18831
|
"search.filters.representationType": "",
|
|
18564
18832
|
"search.filters.resourceType": "",
|
|
18565
18833
|
"search.filters.standard": "",
|
|
@@ -18637,11 +18905,11 @@ var fr = {
|
|
|
18637
18905
|
"datafeeder.analysisProgressBar.subtitle": "L'analyse peut prendre plusieurs minutes, merci d'attendre.",
|
|
18638
18906
|
"datafeeder.analysisProgressBar.title": "Analyse en cours",
|
|
18639
18907
|
"datafeeder.datasetValidation.datasetInformation": "Le jeu de données fourni contient {number} entités",
|
|
18640
|
-
"datafeeder.datasetValidationCsv.lineNumbers": "Résumé des 5 premières lignes* du CSV :",
|
|
18641
|
-
"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érifier que le fichier est bien formatté",
|
|
18642
18908
|
"datafeeder.datasetValidation.submitButton": "OK, mes données sont correctes",
|
|
18643
18909
|
"datafeeder.datasetValidation.title": "Vérifiez que vos données sont correctes",
|
|
18644
18910
|
"datafeeder.datasetValidation.unknown": " - ",
|
|
18911
|
+
"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érifier que le fichier est bien formatté",
|
|
18912
|
+
"datafeeder.datasetValidationCsv.lineNumbers": "Résumé des 5 premières lignes* du CSV :",
|
|
18645
18913
|
"datafeeder.form.abstract": "Comment décrire votre jeu de données ?",
|
|
18646
18914
|
"datafeeder.form.datepicker": "Savez-vous quand la donnée a été créée ?",
|
|
18647
18915
|
"datafeeder.form.description": "Enfin, décrivez le processus utilisé pour créer la donnée",
|
|
@@ -18720,7 +18988,7 @@ var fr = {
|
|
|
18720
18988
|
"datahub.header.lastRecords": "Les plus récentes",
|
|
18721
18989
|
"datahub.header.myfavorites": "Mes favoris",
|
|
18722
18990
|
"datahub.header.news": "Accueil",
|
|
18723
|
-
"datahub.header.
|
|
18991
|
+
"datahub.header.organizations": "Organisations",
|
|
18724
18992
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
18725
18993
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
18726
18994
|
"datahub.news.contact.contactus": "Contactez-nous",
|
|
@@ -18738,6 +19006,27 @@ var fr = {
|
|
|
18738
19006
|
"dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
|
|
18739
19007
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
18740
19008
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
19009
|
+
"domain.contact.role.author": "Auteur",
|
|
19010
|
+
"domain.contact.role.collaborator": "Collaborateur",
|
|
19011
|
+
"domain.contact.role.contributor": "Contributeur",
|
|
19012
|
+
"domain.contact.role.custodian": "Gestionnaire",
|
|
19013
|
+
"domain.contact.role.distributor": "Distributeur",
|
|
19014
|
+
"domain.contact.role.editor": "Éditeur",
|
|
19015
|
+
"domain.contact.role.funder": "Financeur",
|
|
19016
|
+
"domain.contact.role.mediator": "Médiateur",
|
|
19017
|
+
"domain.contact.role.originator": "Créateur",
|
|
19018
|
+
"domain.contact.role.other": "Autre",
|
|
19019
|
+
"domain.contact.role.owner": "Propriétaire",
|
|
19020
|
+
"domain.contact.role.point_of_contact": "Point de contact",
|
|
19021
|
+
"domain.contact.role.principal_investigator": "Chercheur principal",
|
|
19022
|
+
"domain.contact.role.processor": "Processeur",
|
|
19023
|
+
"domain.contact.role.publisher": "Éditeur",
|
|
19024
|
+
"domain.contact.role.resource_provider": "Fournisseur",
|
|
19025
|
+
"domain.contact.role.rights_holder": "Détenteur des droits",
|
|
19026
|
+
"domain.contact.role.sponsor": "Sponsor",
|
|
19027
|
+
"domain.contact.role.stakeholder": "Partie prenante",
|
|
19028
|
+
"domain.contact.role.unspecified": "Non spécifié",
|
|
19029
|
+
"domain.contact.role.user": "Utilisateur",
|
|
18741
19030
|
"domain.record.status.completed": "Finalisé",
|
|
18742
19031
|
"domain.record.status.deprecated": "Obsolète",
|
|
18743
19032
|
"domain.record.status.ongoing": "Mise à jour continue",
|
|
@@ -18756,7 +19045,29 @@ var fr = {
|
|
|
18756
19045
|
"downloads.format.unknown": "inconnu",
|
|
18757
19046
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18758
19047
|
dropFile: dropFile$3,
|
|
18759
|
-
"editor.record.
|
|
19048
|
+
"editor.record.delete.confirmation.cancelText": "Annuler",
|
|
19049
|
+
"editor.record.delete.confirmation.confirmText": "Supprimer",
|
|
19050
|
+
"editor.record.delete.confirmation.message": "Etes-vous sûr de vouloir supprimer cette fiche ?",
|
|
19051
|
+
"editor.record.delete.confirmation.title": "Supprimer la fiche",
|
|
19052
|
+
"editor.record.deleteError.body": "La fiche n'a pas pu être supprimée :",
|
|
19053
|
+
"editor.record.deleteError.closeMessage": "Compris",
|
|
19054
|
+
"editor.record.deleteError.title": "Erreur lors de la suppression",
|
|
19055
|
+
"editor.record.deleteSuccess.body": "La fiche a bien été supprimée !",
|
|
19056
|
+
"editor.record.deleteSuccess.title": "Suppression réussie",
|
|
19057
|
+
"editor.record.form.bottomButtons.comeBackLater": "Revenir plus tard",
|
|
19058
|
+
"editor.record.form.bottomButtons.next": "Suivant",
|
|
19059
|
+
"editor.record.form.bottomButtons.previous": "Précédent",
|
|
19060
|
+
"editor.record.form.field.abstract": "Résumé",
|
|
19061
|
+
"editor.record.form.field.contactsForResource.noContact": "Veuillez renseigner au moins un point de contact responsable de la donnée.",
|
|
19062
|
+
"editor.record.form.field.keywords": "Mots-clés",
|
|
19063
|
+
"editor.record.form.field.license": "Licence",
|
|
19064
|
+
"editor.record.form.field.overviews": "Aperçus",
|
|
19065
|
+
"editor.record.form.field.recordUpdated": "Date de dernière révision",
|
|
19066
|
+
"editor.record.form.field.resourceUpdated": "Date de dernière révision",
|
|
19067
|
+
"editor.record.form.field.temporalExtents": "Étendue temporelle",
|
|
19068
|
+
"editor.record.form.field.title": "",
|
|
19069
|
+
"editor.record.form.field.uniqueIdentifier": "Identifiant unique",
|
|
19070
|
+
"editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
|
|
18760
19071
|
"editor.record.form.license.cc-by": "",
|
|
18761
19072
|
"editor.record.form.license.cc-by-sa": "",
|
|
18762
19073
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18766,27 +19077,41 @@ var fr = {
|
|
|
18766
19077
|
"editor.record.form.license.odc-by": "",
|
|
18767
19078
|
"editor.record.form.license.pddl": "",
|
|
18768
19079
|
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18769
|
-
"editor.record.form.
|
|
18770
|
-
"editor.record.form.
|
|
19080
|
+
"editor.record.form.page.accessAndContact": "Acces et contact",
|
|
19081
|
+
"editor.record.form.page.description": "Description de la ressource",
|
|
19082
|
+
"editor.record.form.page.ressources": "Ressources",
|
|
19083
|
+
"editor.record.form.section.about.description": "Ces informations concernent la donnée.",
|
|
19084
|
+
"editor.record.form.section.about.label": "A propos de la ressource",
|
|
19085
|
+
"editor.record.form.section.annexes.label": "Annexes",
|
|
19086
|
+
"editor.record.form.section.associatedResources.description": "Déposez les jeux de données associées à cette fiche de métadonnée.",
|
|
19087
|
+
"editor.record.form.section.associatedResources.label": "Ressources associees",
|
|
19088
|
+
"editor.record.form.section.classification.description": "La classification a un impact sur la recherche du jeux de données.",
|
|
19089
|
+
"editor.record.form.section.classification.label": "Classification",
|
|
19090
|
+
"editor.record.form.section.dataManagers.description": "Cette information concerne la donnée.",
|
|
19091
|
+
"editor.record.form.section.dataManagers.label": "Responsables de la donnee",
|
|
19092
|
+
"editor.record.form.section.dataPointOfContact.description": "Cette information concerne la fiche de métadonnée.",
|
|
19093
|
+
"editor.record.form.section.dataPointOfContact.label": "Point de contact de la metadonee",
|
|
19094
|
+
"editor.record.form.section.geographicalCoverage.label": "Couverture geographique",
|
|
19095
|
+
"editor.record.form.section.useAndAccessConditions.label": "Conditions d'acces et usage",
|
|
18771
19096
|
"editor.record.form.temporalExtents.addDate": "Date déterminée",
|
|
18772
19097
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
18773
19098
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
18774
19099
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
18775
|
-
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18776
19100
|
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18777
|
-
"editor.record.loadError.body": "",
|
|
18778
|
-
"editor.record.loadError.closeMessage": "",
|
|
18779
|
-
"editor.record.loadError.title": "",
|
|
18780
|
-
"editor.record.publish": "",
|
|
18781
|
-
"editor.record.publishError.body": "",
|
|
18782
|
-
"editor.record.publishError.closeMessage": "",
|
|
18783
|
-
"editor.record.publishError.title": "",
|
|
18784
|
-
"editor.record.publishSuccess.body": "",
|
|
18785
|
-
"editor.record.publishSuccess.title": "",
|
|
19101
|
+
"editor.record.loadError.body": "La fiche n'a pas pu être chargée :",
|
|
19102
|
+
"editor.record.loadError.closeMessage": "Compris",
|
|
19103
|
+
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
19104
|
+
"editor.record.publish": "Publier cette fiche",
|
|
19105
|
+
"editor.record.publishError.body": "La fiche n'a pas pu être publiée :",
|
|
19106
|
+
"editor.record.publishError.closeMessage": "Compris",
|
|
19107
|
+
"editor.record.publishError.title": "Erreur lors de la publication",
|
|
19108
|
+
"editor.record.publishSuccess.body": "La fiche a bien été publiée !",
|
|
19109
|
+
"editor.record.publishSuccess.title": "Publication réussie",
|
|
18786
19110
|
"editor.record.saveStatus.asDraftOnly": "Brouillon enregistré - fiche non publiée",
|
|
18787
19111
|
"editor.record.saveStatus.draftWithChangesPending": "Brouillon enregistré - modifications en cours",
|
|
18788
19112
|
"editor.record.saveStatus.recordUpToDate": "La fiche publiée est à jour",
|
|
18789
19113
|
"editor.record.upToDate": "",
|
|
19114
|
+
"editor.sidebar.menu.editor": "",
|
|
18790
19115
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
18791
19116
|
"facets.block.title.OrgForResource": "Organisation",
|
|
18792
19117
|
"facets.block.title.availableInServices": "Disponible pour",
|
|
@@ -18855,17 +19180,17 @@ var fr = {
|
|
|
18855
19180
|
"organisations.sortBy.nameDesc": "Nom Z → A",
|
|
18856
19181
|
"organisations.sortBy.recordCountAsc": "Données 0 → 9",
|
|
18857
19182
|
"organisations.sortBy.recordCountDesc": "Données 9 → 0",
|
|
18858
|
-
"organization.
|
|
18859
|
-
"organization.details.
|
|
19183
|
+
"organization.details.lastPublishedDatasets": "",
|
|
19184
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
18860
19185
|
"organization.details.mailContact": "Contacter par mail",
|
|
18861
|
-
"organization.
|
|
18862
|
-
"organization.lastPublishedDatasets": "Dernières données publiées",
|
|
18863
|
-
"organization.lastPublishedDatasets.searchAllButton": "Rechercher tous",
|
|
19186
|
+
"organization.header.recordCount": "{count, plural, =0{donnée} one{donnée} other{données}}",
|
|
18864
19187
|
"pagination.nextPage": "Page suivante",
|
|
18865
19188
|
"pagination.page": "page",
|
|
18866
19189
|
"pagination.pageOf": "sur",
|
|
18867
19190
|
previous: previous$3,
|
|
19191
|
+
"record.action.delete": "Supprimer",
|
|
18868
19192
|
"record.action.download": "Télécharger",
|
|
19193
|
+
"record.action.duplicate": "Dupliquer",
|
|
18869
19194
|
"record.action.view": "Voir",
|
|
18870
19195
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
18871
19196
|
"record.metadata.about": "Description",
|
|
@@ -18958,11 +19283,11 @@ var fr = {
|
|
|
18958
19283
|
"results.sortBy.relevancy": "Pertinence",
|
|
18959
19284
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
18960
19285
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
19286
|
+
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
19287
|
+
"search.error.organizationNotFound": "L'organisation n'a pas pu être trouvée.",
|
|
18961
19288
|
"search.error.receivedError": "Erreur retournée",
|
|
18962
19289
|
"search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
|
|
18963
19290
|
"search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
|
|
18964
|
-
"search.error.organizationNotFound": "L'organisation n'a pas pu être trouvée.",
|
|
18965
|
-
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
18966
19291
|
"search.field.any.placeholder": "Rechercher une donnée...",
|
|
18967
19292
|
"search.field.sortBy": "Trier par :",
|
|
18968
19293
|
"search.filters.clear": "Réinitialiser",
|
|
@@ -18987,14 +19312,16 @@ var fr = {
|
|
|
18987
19312
|
"search.filters.minimize": "Réduire",
|
|
18988
19313
|
"search.filters.myRecords": "Voir mes données",
|
|
18989
19314
|
"search.filters.myRecordsHelp": "Quand activé, n'affiche que les données créées avec mon utilisateur. Les données créées par les autres utilisateurs ne sont pas affichées.",
|
|
19315
|
+
"search.filters.organization": "Organisation",
|
|
18990
19316
|
"search.filters.otherRecords": "Affichage des données d'un autre utilisateur",
|
|
19317
|
+
"search.filters.producerOrg": "Producteur",
|
|
18991
19318
|
"search.filters.publicationYear": "Année de publication",
|
|
18992
|
-
"search.filters.
|
|
19319
|
+
"search.filters.publisherOrg": "Distributeur",
|
|
18993
19320
|
"search.filters.representationType": "Type de représentation",
|
|
18994
19321
|
"search.filters.resourceType": "Type de ressource",
|
|
18995
19322
|
"search.filters.standard": "Standard",
|
|
18996
19323
|
"search.filters.title": "Affiner votre recherche",
|
|
18997
|
-
"search.filters.topic": "
|
|
19324
|
+
"search.filters.topic": "Thèmes",
|
|
18998
19325
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
18999
19326
|
"search.filters.useSpatialFilterHelp": "Si cette option est activée, les fiches portant sur la zone d'intérêt du catalogue seront montrées en premier; les fiches en dehors de cette zone n'apparaîtront pas dans les résultats.",
|
|
19000
19327
|
"share.tab.permalink": "Partager",
|
|
@@ -19070,6 +19397,8 @@ var it = {
|
|
|
19070
19397
|
"datafeeder.datasetValidation.submitButton": "OK, i miei dati sono corretti",
|
|
19071
19398
|
"datafeeder.datasetValidation.title": "Controllare che i dati siano corretti",
|
|
19072
19399
|
"datafeeder.datasetValidation.unknown": " - ",
|
|
19400
|
+
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
19401
|
+
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
19073
19402
|
"datafeeder.form.abstract": "Come descrivere il suo dataset?",
|
|
19074
19403
|
"datafeeder.form.datepicker": "Sa quando è stato creato il suo dataset ?",
|
|
19075
19404
|
"datafeeder.form.description": "Infine, descrivere il processo utilizzato per creare il dataset",
|
|
@@ -19097,6 +19426,7 @@ var it = {
|
|
|
19097
19426
|
"datafeeder.publishSuccess.geonetworkRecord": "Scheda di metadati",
|
|
19098
19427
|
"datafeeder.publishSuccess.illustration.title": "Completato, tutto è andato bene!",
|
|
19099
19428
|
"datafeeder.publishSuccess.mapViewer": "Visualizzatore",
|
|
19429
|
+
"datafeeder.publishSuccess.ogcFeature": "",
|
|
19100
19430
|
"datafeeder.publishSuccess.subtitle": "Visualizzare i dati:",
|
|
19101
19431
|
"datafeeder.publishSuccess.title": "Congratulazioni! \n I suoi dati sono stati pubblicati",
|
|
19102
19432
|
"datafeeder.publishSuccess.uploadAnotherData": "Caricare un altro dato",
|
|
@@ -19147,7 +19477,7 @@ var it = {
|
|
|
19147
19477
|
"datahub.header.lastRecords": "Ultimi",
|
|
19148
19478
|
"datahub.header.myfavorites": "Miei preferiti",
|
|
19149
19479
|
"datahub.header.news": "Home",
|
|
19150
|
-
"datahub.header.
|
|
19480
|
+
"datahub.header.organizations": "Organizzazioni",
|
|
19151
19481
|
"datahub.header.popularRecords": "Più popolari",
|
|
19152
19482
|
"datahub.header.title.html": "<div class=\"text-white\">Tutti i dati<br>pubblici della mia organizzazione</div>",
|
|
19153
19483
|
"datahub.news.contact.contactus": "Contattateci",
|
|
@@ -19165,6 +19495,27 @@ var it = {
|
|
|
19165
19495
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
19166
19496
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
19167
19497
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
19498
|
+
"domain.contact.role.author": "",
|
|
19499
|
+
"domain.contact.role.collaborator": "",
|
|
19500
|
+
"domain.contact.role.contributor": "",
|
|
19501
|
+
"domain.contact.role.custodian": "",
|
|
19502
|
+
"domain.contact.role.distributor": "",
|
|
19503
|
+
"domain.contact.role.editor": "",
|
|
19504
|
+
"domain.contact.role.funder": "",
|
|
19505
|
+
"domain.contact.role.mediator": "",
|
|
19506
|
+
"domain.contact.role.originator": "",
|
|
19507
|
+
"domain.contact.role.other": "",
|
|
19508
|
+
"domain.contact.role.owner": "",
|
|
19509
|
+
"domain.contact.role.point_of_contact": "",
|
|
19510
|
+
"domain.contact.role.principal_investigator": "",
|
|
19511
|
+
"domain.contact.role.processor": "",
|
|
19512
|
+
"domain.contact.role.publisher": "",
|
|
19513
|
+
"domain.contact.role.resource_provider": "",
|
|
19514
|
+
"domain.contact.role.rights_holder": "",
|
|
19515
|
+
"domain.contact.role.sponsor": "",
|
|
19516
|
+
"domain.contact.role.stakeholder": "",
|
|
19517
|
+
"domain.contact.role.unspecified": "",
|
|
19518
|
+
"domain.contact.role.user": "",
|
|
19168
19519
|
"domain.record.status.completed": "Completato",
|
|
19169
19520
|
"domain.record.status.deprecated": "Deprecato",
|
|
19170
19521
|
"domain.record.status.ongoing": "Aggiornamento continuo",
|
|
@@ -19183,7 +19534,29 @@ var it = {
|
|
|
19183
19534
|
"downloads.format.unknown": "sconosciuto",
|
|
19184
19535
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
19185
19536
|
dropFile: dropFile$2,
|
|
19186
|
-
"editor.record.
|
|
19537
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
19538
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
19539
|
+
"editor.record.delete.confirmation.message": "",
|
|
19540
|
+
"editor.record.delete.confirmation.title": "",
|
|
19541
|
+
"editor.record.deleteError.body": "",
|
|
19542
|
+
"editor.record.deleteError.closeMessage": "",
|
|
19543
|
+
"editor.record.deleteError.title": "",
|
|
19544
|
+
"editor.record.deleteSuccess.body": "",
|
|
19545
|
+
"editor.record.deleteSuccess.title": "",
|
|
19546
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19547
|
+
"editor.record.form.bottomButtons.next": "",
|
|
19548
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
19549
|
+
"editor.record.form.field.abstract": "",
|
|
19550
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
19551
|
+
"editor.record.form.field.keywords": "",
|
|
19552
|
+
"editor.record.form.field.license": "Licenza",
|
|
19553
|
+
"editor.record.form.field.overviews": "",
|
|
19554
|
+
"editor.record.form.field.recordUpdated": "",
|
|
19555
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
19556
|
+
"editor.record.form.field.temporalExtents": "",
|
|
19557
|
+
"editor.record.form.field.title": "",
|
|
19558
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
19559
|
+
"editor.record.form.field.updateFrequency": "",
|
|
19187
19560
|
"editor.record.form.license.cc-by": "",
|
|
19188
19561
|
"editor.record.form.license.cc-by-sa": "",
|
|
19189
19562
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19193,13 +19566,26 @@ var it = {
|
|
|
19193
19566
|
"editor.record.form.license.odc-by": "",
|
|
19194
19567
|
"editor.record.form.license.pddl": "",
|
|
19195
19568
|
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19196
|
-
"editor.record.form.
|
|
19197
|
-
"editor.record.form.
|
|
19569
|
+
"editor.record.form.page.accessAndContact": "",
|
|
19570
|
+
"editor.record.form.page.description": "",
|
|
19571
|
+
"editor.record.form.page.ressources": "",
|
|
19572
|
+
"editor.record.form.section.about.description": "",
|
|
19573
|
+
"editor.record.form.section.about.label": "",
|
|
19574
|
+
"editor.record.form.section.annexes.label": "",
|
|
19575
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
19576
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
19577
|
+
"editor.record.form.section.classification.description": "",
|
|
19578
|
+
"editor.record.form.section.classification.label": "",
|
|
19579
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
19580
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
19581
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
19582
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19583
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19584
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19198
19585
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19199
19586
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19200
19587
|
"editor.record.form.temporalExtents.date": "",
|
|
19201
19588
|
"editor.record.form.temporalExtents.range": "",
|
|
19202
|
-
"editor.record.form.updateFrequency": "",
|
|
19203
19589
|
"editor.record.form.updateFrequency.planned": "",
|
|
19204
19590
|
"editor.record.loadError.body": "",
|
|
19205
19591
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19214,6 +19600,7 @@ var it = {
|
|
|
19214
19600
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19215
19601
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19216
19602
|
"editor.record.upToDate": "",
|
|
19603
|
+
"editor.sidebar.menu.editor": "",
|
|
19217
19604
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
19218
19605
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
19219
19606
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
@@ -19282,17 +19669,17 @@ var it = {
|
|
|
19282
19669
|
"organisations.sortBy.nameDesc": "Nome Z → A",
|
|
19283
19670
|
"organisations.sortBy.recordCountAsc": "Dati 0 → 9",
|
|
19284
19671
|
"organisations.sortBy.recordCountDesc": "Dati 9 → 0",
|
|
19285
|
-
"organization.
|
|
19286
|
-
"organization.details.
|
|
19672
|
+
"organization.details.lastPublishedDatasets": "",
|
|
19673
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
19287
19674
|
"organization.details.mailContact": "",
|
|
19288
|
-
"organization.
|
|
19289
|
-
"organization.lastPublishedDatasets": "",
|
|
19290
|
-
"organization.lastPublishedDatasets.searchAllButton": "",
|
|
19675
|
+
"organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
|
|
19291
19676
|
"pagination.nextPage": "Pagina successiva",
|
|
19292
19677
|
"pagination.page": "pagina",
|
|
19293
19678
|
"pagination.pageOf": "di",
|
|
19294
19679
|
previous: previous$2,
|
|
19680
|
+
"record.action.delete": "",
|
|
19295
19681
|
"record.action.download": "Scarica",
|
|
19682
|
+
"record.action.duplicate": "",
|
|
19296
19683
|
"record.action.view": "Visualizza",
|
|
19297
19684
|
"record.externalViewer.open": "Apri nell'visualizzatore esterno",
|
|
19298
19685
|
"record.metadata.about": "Descrizione",
|
|
@@ -19385,11 +19772,11 @@ var it = {
|
|
|
19385
19772
|
"results.sortBy.relevancy": "Rilevanza",
|
|
19386
19773
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
19387
19774
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
19775
|
+
"search.error.organizationHasNoDataset": "",
|
|
19776
|
+
"search.error.organizationNotFound": "",
|
|
19388
19777
|
"search.error.receivedError": "Errore ricevuto",
|
|
19389
19778
|
"search.error.recordHasnolink": "",
|
|
19390
19779
|
"search.error.recordNotFound": "Impossibile trovare questo dato",
|
|
19391
|
-
"search.error.organizationNotFound": "",
|
|
19392
|
-
"search.error.organizationHasNoDataset": "",
|
|
19393
19780
|
"search.field.any.placeholder": "Cerca un dato...",
|
|
19394
19781
|
"search.field.sortBy": "Ordina per:",
|
|
19395
19782
|
"search.filters.clear": "Ripristina",
|
|
@@ -19414,14 +19801,16 @@ var it = {
|
|
|
19414
19801
|
"search.filters.minimize": "Riduci",
|
|
19415
19802
|
"search.filters.myRecords": "Visualizza i miei dati",
|
|
19416
19803
|
"search.filters.myRecordsHelp": "Quando attivato, mostra solo i dati creati con il mio utente. I dati creati da altri utenti non sono visualizzati.",
|
|
19804
|
+
"search.filters.organization": "",
|
|
19417
19805
|
"search.filters.otherRecords": "Visualizzazione dei dati di un altro utente",
|
|
19806
|
+
"search.filters.producerOrg": "",
|
|
19418
19807
|
"search.filters.publicationYear": "Anno di pubblicazione",
|
|
19419
|
-
"search.filters.
|
|
19808
|
+
"search.filters.publisherOrg": "",
|
|
19420
19809
|
"search.filters.representationType": "Tipo di rappresentazione",
|
|
19421
19810
|
"search.filters.resourceType": "Tipo di risorsa",
|
|
19422
19811
|
"search.filters.standard": "Standard",
|
|
19423
19812
|
"search.filters.title": "Affina la sua ricerca",
|
|
19424
|
-
"search.filters.topic": "
|
|
19813
|
+
"search.filters.topic": "Argomenti",
|
|
19425
19814
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
19426
19815
|
"search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
|
|
19427
19816
|
"share.tab.permalink": "Condividere",
|
|
@@ -19497,6 +19886,8 @@ var nl = {
|
|
|
19497
19886
|
"datafeeder.datasetValidation.submitButton": "",
|
|
19498
19887
|
"datafeeder.datasetValidation.title": "",
|
|
19499
19888
|
"datafeeder.datasetValidation.unknown": "",
|
|
19889
|
+
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
19890
|
+
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
19500
19891
|
"datafeeder.form.abstract": "",
|
|
19501
19892
|
"datafeeder.form.datepicker": "",
|
|
19502
19893
|
"datafeeder.form.description": "",
|
|
@@ -19524,6 +19915,7 @@ var nl = {
|
|
|
19524
19915
|
"datafeeder.publishSuccess.geonetworkRecord": "",
|
|
19525
19916
|
"datafeeder.publishSuccess.illustration.title": "",
|
|
19526
19917
|
"datafeeder.publishSuccess.mapViewer": "",
|
|
19918
|
+
"datafeeder.publishSuccess.ogcFeature": "",
|
|
19527
19919
|
"datafeeder.publishSuccess.subtitle": "",
|
|
19528
19920
|
"datafeeder.publishSuccess.title": "",
|
|
19529
19921
|
"datafeeder.publishSuccess.uploadAnotherData": "",
|
|
@@ -19574,7 +19966,7 @@ var nl = {
|
|
|
19574
19966
|
"datahub.header.lastRecords": "",
|
|
19575
19967
|
"datahub.header.myfavorites": "",
|
|
19576
19968
|
"datahub.header.news": "",
|
|
19577
|
-
"datahub.header.
|
|
19969
|
+
"datahub.header.organizations": "",
|
|
19578
19970
|
"datahub.header.popularRecords": "",
|
|
19579
19971
|
"datahub.header.title.html": "",
|
|
19580
19972
|
"datahub.news.contact.contactus": "",
|
|
@@ -19592,6 +19984,27 @@ var nl = {
|
|
|
19592
19984
|
"dataset.error.parse": "",
|
|
19593
19985
|
"dataset.error.unknown": "",
|
|
19594
19986
|
"dataset.error.unsupportedType": "",
|
|
19987
|
+
"domain.contact.role.author": "",
|
|
19988
|
+
"domain.contact.role.collaborator": "",
|
|
19989
|
+
"domain.contact.role.contributor": "",
|
|
19990
|
+
"domain.contact.role.custodian": "",
|
|
19991
|
+
"domain.contact.role.distributor": "",
|
|
19992
|
+
"domain.contact.role.editor": "",
|
|
19993
|
+
"domain.contact.role.funder": "",
|
|
19994
|
+
"domain.contact.role.mediator": "",
|
|
19995
|
+
"domain.contact.role.originator": "",
|
|
19996
|
+
"domain.contact.role.other": "",
|
|
19997
|
+
"domain.contact.role.owner": "",
|
|
19998
|
+
"domain.contact.role.point_of_contact": "",
|
|
19999
|
+
"domain.contact.role.principal_investigator": "",
|
|
20000
|
+
"domain.contact.role.processor": "",
|
|
20001
|
+
"domain.contact.role.publisher": "",
|
|
20002
|
+
"domain.contact.role.resource_provider": "",
|
|
20003
|
+
"domain.contact.role.rights_holder": "",
|
|
20004
|
+
"domain.contact.role.sponsor": "",
|
|
20005
|
+
"domain.contact.role.stakeholder": "",
|
|
20006
|
+
"domain.contact.role.unspecified": "",
|
|
20007
|
+
"domain.contact.role.user": "",
|
|
19595
20008
|
"domain.record.status.completed": "",
|
|
19596
20009
|
"domain.record.status.deprecated": "",
|
|
19597
20010
|
"domain.record.status.ongoing": "",
|
|
@@ -19610,7 +20023,29 @@ var nl = {
|
|
|
19610
20023
|
"downloads.format.unknown": "",
|
|
19611
20024
|
"downloads.wfs.featuretype.not.found": "",
|
|
19612
20025
|
dropFile: dropFile$1,
|
|
19613
|
-
"editor.record.
|
|
20026
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
20027
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
20028
|
+
"editor.record.delete.confirmation.message": "",
|
|
20029
|
+
"editor.record.delete.confirmation.title": "",
|
|
20030
|
+
"editor.record.deleteError.body": "",
|
|
20031
|
+
"editor.record.deleteError.closeMessage": "",
|
|
20032
|
+
"editor.record.deleteError.title": "",
|
|
20033
|
+
"editor.record.deleteSuccess.body": "",
|
|
20034
|
+
"editor.record.deleteSuccess.title": "",
|
|
20035
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
20036
|
+
"editor.record.form.bottomButtons.next": "",
|
|
20037
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
20038
|
+
"editor.record.form.field.abstract": "",
|
|
20039
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
20040
|
+
"editor.record.form.field.keywords": "",
|
|
20041
|
+
"editor.record.form.field.license": "",
|
|
20042
|
+
"editor.record.form.field.overviews": "",
|
|
20043
|
+
"editor.record.form.field.recordUpdated": "",
|
|
20044
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
20045
|
+
"editor.record.form.field.temporalExtents": "",
|
|
20046
|
+
"editor.record.form.field.title": "",
|
|
20047
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
20048
|
+
"editor.record.form.field.updateFrequency": "",
|
|
19614
20049
|
"editor.record.form.license.cc-by": "",
|
|
19615
20050
|
"editor.record.form.license.cc-by-sa": "",
|
|
19616
20051
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19620,13 +20055,26 @@ var nl = {
|
|
|
19620
20055
|
"editor.record.form.license.odc-by": "",
|
|
19621
20056
|
"editor.record.form.license.pddl": "",
|
|
19622
20057
|
"editor.record.form.license.unknown": "",
|
|
19623
|
-
"editor.record.form.
|
|
19624
|
-
"editor.record.form.
|
|
20058
|
+
"editor.record.form.page.accessAndContact": "",
|
|
20059
|
+
"editor.record.form.page.description": "",
|
|
20060
|
+
"editor.record.form.page.ressources": "",
|
|
20061
|
+
"editor.record.form.section.about.description": "",
|
|
20062
|
+
"editor.record.form.section.about.label": "",
|
|
20063
|
+
"editor.record.form.section.annexes.label": "",
|
|
20064
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
20065
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
20066
|
+
"editor.record.form.section.classification.description": "",
|
|
20067
|
+
"editor.record.form.section.classification.label": "",
|
|
20068
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
20069
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
20070
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
20071
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
20072
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
20073
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19625
20074
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19626
20075
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19627
20076
|
"editor.record.form.temporalExtents.date": "",
|
|
19628
20077
|
"editor.record.form.temporalExtents.range": "",
|
|
19629
|
-
"editor.record.form.updateFrequency": "",
|
|
19630
20078
|
"editor.record.form.updateFrequency.planned": "",
|
|
19631
20079
|
"editor.record.loadError.body": "",
|
|
19632
20080
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19641,6 +20089,7 @@ var nl = {
|
|
|
19641
20089
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19642
20090
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19643
20091
|
"editor.record.upToDate": "",
|
|
20092
|
+
"editor.sidebar.menu.editor": "",
|
|
19644
20093
|
"externalviewer.dataset.unnamed": "",
|
|
19645
20094
|
"facets.block.title.OrgForResource": "",
|
|
19646
20095
|
"facets.block.title.availableInServices": "",
|
|
@@ -19709,17 +20158,17 @@ var nl = {
|
|
|
19709
20158
|
"organisations.sortBy.nameDesc": "",
|
|
19710
20159
|
"organisations.sortBy.recordCountAsc": "",
|
|
19711
20160
|
"organisations.sortBy.recordCountDesc": "",
|
|
19712
|
-
"organization.
|
|
19713
|
-
"organization.details.
|
|
20161
|
+
"organization.details.lastPublishedDatasets": "",
|
|
20162
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
19714
20163
|
"organization.details.mailContact": "",
|
|
19715
|
-
"organization.
|
|
19716
|
-
"organization.lastPublishedDatasets": "",
|
|
19717
|
-
"organization.lastPublishedDatasets.searchAllButton": "",
|
|
20164
|
+
"organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
|
|
19718
20165
|
"pagination.nextPage": "",
|
|
19719
20166
|
"pagination.page": "",
|
|
19720
20167
|
"pagination.pageOf": "",
|
|
19721
20168
|
previous: previous$1,
|
|
20169
|
+
"record.action.delete": "",
|
|
19722
20170
|
"record.action.download": "",
|
|
20171
|
+
"record.action.duplicate": "",
|
|
19723
20172
|
"record.action.view": "",
|
|
19724
20173
|
"record.externalViewer.open": "",
|
|
19725
20174
|
"record.metadata.about": "",
|
|
@@ -19812,11 +20261,11 @@ var nl = {
|
|
|
19812
20261
|
"results.sortBy.relevancy": "",
|
|
19813
20262
|
"search.autocomplete.error": "",
|
|
19814
20263
|
"search.error.couldNotReachApi": "",
|
|
20264
|
+
"search.error.organizationHasNoDataset": "",
|
|
20265
|
+
"search.error.organizationNotFound": "",
|
|
19815
20266
|
"search.error.receivedError": "",
|
|
19816
20267
|
"search.error.recordHasnolink": "",
|
|
19817
20268
|
"search.error.recordNotFound": "",
|
|
19818
|
-
"search.error.organizationNotFound": "",
|
|
19819
|
-
"search.error.organizationHasNoDataset": "",
|
|
19820
20269
|
"search.field.any.placeholder": "",
|
|
19821
20270
|
"search.field.sortBy": "",
|
|
19822
20271
|
"search.filters.clear": "",
|
|
@@ -19841,9 +20290,11 @@ var nl = {
|
|
|
19841
20290
|
"search.filters.minimize": "",
|
|
19842
20291
|
"search.filters.myRecords": "",
|
|
19843
20292
|
"search.filters.myRecordsHelp": "",
|
|
20293
|
+
"search.filters.organization": "",
|
|
19844
20294
|
"search.filters.otherRecords": "",
|
|
20295
|
+
"search.filters.producerOrg": "",
|
|
19845
20296
|
"search.filters.publicationYear": "",
|
|
19846
|
-
"search.filters.
|
|
20297
|
+
"search.filters.publisherOrg": "",
|
|
19847
20298
|
"search.filters.representationType": "",
|
|
19848
20299
|
"search.filters.resourceType": "",
|
|
19849
20300
|
"search.filters.standard": "",
|
|
@@ -19924,6 +20375,8 @@ var pt = {
|
|
|
19924
20375
|
"datafeeder.datasetValidation.submitButton": "",
|
|
19925
20376
|
"datafeeder.datasetValidation.title": "",
|
|
19926
20377
|
"datafeeder.datasetValidation.unknown": "",
|
|
20378
|
+
"datafeeder.datasetValidationCsv.explicitLineNumbers": "",
|
|
20379
|
+
"datafeeder.datasetValidationCsv.lineNumbers": "",
|
|
19927
20380
|
"datafeeder.form.abstract": "",
|
|
19928
20381
|
"datafeeder.form.datepicker": "",
|
|
19929
20382
|
"datafeeder.form.description": "",
|
|
@@ -19951,6 +20404,7 @@ var pt = {
|
|
|
19951
20404
|
"datafeeder.publishSuccess.geonetworkRecord": "",
|
|
19952
20405
|
"datafeeder.publishSuccess.illustration.title": "",
|
|
19953
20406
|
"datafeeder.publishSuccess.mapViewer": "",
|
|
20407
|
+
"datafeeder.publishSuccess.ogcFeature": "",
|
|
19954
20408
|
"datafeeder.publishSuccess.subtitle": "",
|
|
19955
20409
|
"datafeeder.publishSuccess.title": "",
|
|
19956
20410
|
"datafeeder.publishSuccess.uploadAnotherData": "",
|
|
@@ -20001,7 +20455,7 @@ var pt = {
|
|
|
20001
20455
|
"datahub.header.lastRecords": "",
|
|
20002
20456
|
"datahub.header.myfavorites": "",
|
|
20003
20457
|
"datahub.header.news": "",
|
|
20004
|
-
"datahub.header.
|
|
20458
|
+
"datahub.header.organizations": "",
|
|
20005
20459
|
"datahub.header.popularRecords": "",
|
|
20006
20460
|
"datahub.header.title.html": "",
|
|
20007
20461
|
"datahub.news.contact.contactus": "",
|
|
@@ -20019,6 +20473,27 @@ var pt = {
|
|
|
20019
20473
|
"dataset.error.parse": "",
|
|
20020
20474
|
"dataset.error.unknown": "",
|
|
20021
20475
|
"dataset.error.unsupportedType": "",
|
|
20476
|
+
"domain.contact.role.author": "",
|
|
20477
|
+
"domain.contact.role.collaborator": "",
|
|
20478
|
+
"domain.contact.role.contributor": "",
|
|
20479
|
+
"domain.contact.role.custodian": "",
|
|
20480
|
+
"domain.contact.role.distributor": "",
|
|
20481
|
+
"domain.contact.role.editor": "",
|
|
20482
|
+
"domain.contact.role.funder": "",
|
|
20483
|
+
"domain.contact.role.mediator": "",
|
|
20484
|
+
"domain.contact.role.originator": "",
|
|
20485
|
+
"domain.contact.role.other": "",
|
|
20486
|
+
"domain.contact.role.owner": "",
|
|
20487
|
+
"domain.contact.role.point_of_contact": "",
|
|
20488
|
+
"domain.contact.role.principal_investigator": "",
|
|
20489
|
+
"domain.contact.role.processor": "",
|
|
20490
|
+
"domain.contact.role.publisher": "",
|
|
20491
|
+
"domain.contact.role.resource_provider": "",
|
|
20492
|
+
"domain.contact.role.rights_holder": "",
|
|
20493
|
+
"domain.contact.role.sponsor": "",
|
|
20494
|
+
"domain.contact.role.stakeholder": "",
|
|
20495
|
+
"domain.contact.role.unspecified": "",
|
|
20496
|
+
"domain.contact.role.user": "",
|
|
20022
20497
|
"domain.record.status.completed": "",
|
|
20023
20498
|
"domain.record.status.deprecated": "",
|
|
20024
20499
|
"domain.record.status.ongoing": "",
|
|
@@ -20037,7 +20512,29 @@ var pt = {
|
|
|
20037
20512
|
"downloads.format.unknown": "",
|
|
20038
20513
|
"downloads.wfs.featuretype.not.found": "",
|
|
20039
20514
|
dropFile: dropFile,
|
|
20040
|
-
"editor.record.
|
|
20515
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
20516
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
20517
|
+
"editor.record.delete.confirmation.message": "",
|
|
20518
|
+
"editor.record.delete.confirmation.title": "",
|
|
20519
|
+
"editor.record.deleteError.body": "",
|
|
20520
|
+
"editor.record.deleteError.closeMessage": "",
|
|
20521
|
+
"editor.record.deleteError.title": "",
|
|
20522
|
+
"editor.record.deleteSuccess.body": "",
|
|
20523
|
+
"editor.record.deleteSuccess.title": "",
|
|
20524
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
20525
|
+
"editor.record.form.bottomButtons.next": "",
|
|
20526
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
20527
|
+
"editor.record.form.field.abstract": "",
|
|
20528
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
20529
|
+
"editor.record.form.field.keywords": "",
|
|
20530
|
+
"editor.record.form.field.license": "",
|
|
20531
|
+
"editor.record.form.field.overviews": "",
|
|
20532
|
+
"editor.record.form.field.recordUpdated": "",
|
|
20533
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
20534
|
+
"editor.record.form.field.temporalExtents": "",
|
|
20535
|
+
"editor.record.form.field.title": "",
|
|
20536
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
20537
|
+
"editor.record.form.field.updateFrequency": "",
|
|
20041
20538
|
"editor.record.form.license.cc-by": "",
|
|
20042
20539
|
"editor.record.form.license.cc-by-sa": "",
|
|
20043
20540
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -20047,13 +20544,26 @@ var pt = {
|
|
|
20047
20544
|
"editor.record.form.license.odc-by": "",
|
|
20048
20545
|
"editor.record.form.license.pddl": "",
|
|
20049
20546
|
"editor.record.form.license.unknown": "",
|
|
20050
|
-
"editor.record.form.
|
|
20051
|
-
"editor.record.form.
|
|
20547
|
+
"editor.record.form.page.accessAndContact": "",
|
|
20548
|
+
"editor.record.form.page.description": "",
|
|
20549
|
+
"editor.record.form.page.ressources": "",
|
|
20550
|
+
"editor.record.form.section.about.description": "",
|
|
20551
|
+
"editor.record.form.section.about.label": "",
|
|
20552
|
+
"editor.record.form.section.annexes.label": "",
|
|
20553
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
20554
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
20555
|
+
"editor.record.form.section.classification.description": "",
|
|
20556
|
+
"editor.record.form.section.classification.label": "",
|
|
20557
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
20558
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
20559
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
20560
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
20561
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
20562
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
20052
20563
|
"editor.record.form.temporalExtents.addDate": "",
|
|
20053
20564
|
"editor.record.form.temporalExtents.addRange": "",
|
|
20054
20565
|
"editor.record.form.temporalExtents.date": "",
|
|
20055
20566
|
"editor.record.form.temporalExtents.range": "",
|
|
20056
|
-
"editor.record.form.updateFrequency": "",
|
|
20057
20567
|
"editor.record.form.updateFrequency.planned": "",
|
|
20058
20568
|
"editor.record.loadError.body": "",
|
|
20059
20569
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -20068,6 +20578,7 @@ var pt = {
|
|
|
20068
20578
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
20069
20579
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
20070
20580
|
"editor.record.upToDate": "",
|
|
20581
|
+
"editor.sidebar.menu.editor": "",
|
|
20071
20582
|
"externalviewer.dataset.unnamed": "",
|
|
20072
20583
|
"facets.block.title.OrgForResource": "",
|
|
20073
20584
|
"facets.block.title.availableInServices": "",
|
|
@@ -20136,17 +20647,17 @@ var pt = {
|
|
|
20136
20647
|
"organisations.sortBy.nameDesc": "",
|
|
20137
20648
|
"organisations.sortBy.recordCountAsc": "",
|
|
20138
20649
|
"organisations.sortBy.recordCountDesc": "",
|
|
20139
|
-
"organization.
|
|
20140
|
-
"organization.details.
|
|
20650
|
+
"organization.details.lastPublishedDatasets": "",
|
|
20651
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
20141
20652
|
"organization.details.mailContact": "",
|
|
20142
|
-
"organization.
|
|
20143
|
-
"organization.lastPublishedDatasets": "",
|
|
20144
|
-
"organization.lastPublishedDatasets.searchAllButton": "",
|
|
20653
|
+
"organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
|
|
20145
20654
|
"pagination.nextPage": "",
|
|
20146
20655
|
"pagination.page": "",
|
|
20147
20656
|
"pagination.pageOf": "",
|
|
20148
20657
|
previous: previous,
|
|
20658
|
+
"record.action.delete": "",
|
|
20149
20659
|
"record.action.download": "",
|
|
20660
|
+
"record.action.duplicate": "",
|
|
20150
20661
|
"record.action.view": "",
|
|
20151
20662
|
"record.externalViewer.open": "",
|
|
20152
20663
|
"record.metadata.about": "",
|
|
@@ -20239,11 +20750,11 @@ var pt = {
|
|
|
20239
20750
|
"results.sortBy.relevancy": "",
|
|
20240
20751
|
"search.autocomplete.error": "",
|
|
20241
20752
|
"search.error.couldNotReachApi": "",
|
|
20753
|
+
"search.error.organizationHasNoDataset": "",
|
|
20754
|
+
"search.error.organizationNotFound": "",
|
|
20242
20755
|
"search.error.receivedError": "",
|
|
20243
20756
|
"search.error.recordHasnolink": "",
|
|
20244
20757
|
"search.error.recordNotFound": "",
|
|
20245
|
-
"search.error.organizationNotFound": "",
|
|
20246
|
-
"search.error.organizationHasNoDataset": "",
|
|
20247
20758
|
"search.field.any.placeholder": "",
|
|
20248
20759
|
"search.field.sortBy": "",
|
|
20249
20760
|
"search.filters.clear": "",
|
|
@@ -20268,9 +20779,11 @@ var pt = {
|
|
|
20268
20779
|
"search.filters.minimize": "",
|
|
20269
20780
|
"search.filters.myRecords": "",
|
|
20270
20781
|
"search.filters.myRecordsHelp": "",
|
|
20782
|
+
"search.filters.organization": "",
|
|
20271
20783
|
"search.filters.otherRecords": "",
|
|
20784
|
+
"search.filters.producerOrg": "",
|
|
20272
20785
|
"search.filters.publicationYear": "",
|
|
20273
|
-
"search.filters.
|
|
20786
|
+
"search.filters.publisherOrg": "",
|
|
20274
20787
|
"search.filters.representationType": "",
|
|
20275
20788
|
"search.filters.resourceType": "",
|
|
20276
20789
|
"search.filters.standard": "",
|
|
@@ -21201,12 +21714,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
21201
21714
|
args: [METADATA_LANGUAGE]
|
|
21202
21715
|
}] }]; } });
|
|
21203
21716
|
|
|
21717
|
+
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
21204
21718
|
class Gn4Repository {
|
|
21205
21719
|
constructor(gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi) {
|
|
21206
21720
|
this.gn4SearchApi = gn4SearchApi;
|
|
21207
21721
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
21208
21722
|
this.gn4Mapper = gn4Mapper;
|
|
21209
21723
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
21724
|
+
this._draftsChanged = new Subject();
|
|
21725
|
+
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
21210
21726
|
}
|
|
21211
21727
|
search({ filters, fields, offset, limit, sort, filterIds, filterGeometry, }) {
|
|
21212
21728
|
return this.gn4SearchApi
|
|
@@ -21277,6 +21793,18 @@ class Gn4Repository {
|
|
|
21277
21793
|
.then((record) => [record, xml, isSavedAlready]);
|
|
21278
21794
|
}));
|
|
21279
21795
|
}
|
|
21796
|
+
openRecordForDuplication(uniqueIdentifier) {
|
|
21797
|
+
return this.loadRecordAsXml(uniqueIdentifier).pipe(switchMap(async (recordAsXml) => {
|
|
21798
|
+
const converter = findConverterForDocument(recordAsXml);
|
|
21799
|
+
const record = await converter.readRecord(recordAsXml);
|
|
21800
|
+
record.uniqueIdentifier = `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21801
|
+
record.title = `${record.title} (Copy)`;
|
|
21802
|
+
const xml = await converter.writeRecord(record, recordAsXml);
|
|
21803
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), xml);
|
|
21804
|
+
this._draftsChanged.next();
|
|
21805
|
+
return [record, xml, false];
|
|
21806
|
+
}));
|
|
21807
|
+
}
|
|
21280
21808
|
serializeRecordToXml(record, referenceRecordSource) {
|
|
21281
21809
|
// if there's a reference record, use that standard; otherwise, use iso19139
|
|
21282
21810
|
const converter = referenceRecordSource
|
|
@@ -21292,15 +21820,28 @@ class Gn4Repository {
|
|
|
21292
21820
|
return response.metadataInfos[metadataId][0].uuid;
|
|
21293
21821
|
}))));
|
|
21294
21822
|
}
|
|
21823
|
+
deleteRecord(uniqueIdentifier) {
|
|
21824
|
+
return this.gn4RecordsApi.deleteRecord(uniqueIdentifier);
|
|
21825
|
+
}
|
|
21826
|
+
generateTemporaryId() {
|
|
21827
|
+
return `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21828
|
+
}
|
|
21295
21829
|
saveRecordAsDraft(record, referenceRecordSource) {
|
|
21296
|
-
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) =>
|
|
21830
|
+
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) => {
|
|
21831
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), recordXml);
|
|
21832
|
+
this._draftsChanged.next();
|
|
21833
|
+
}));
|
|
21297
21834
|
}
|
|
21298
21835
|
clearRecordDraft(uniqueIdentifier) {
|
|
21299
21836
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(uniqueIdentifier));
|
|
21837
|
+
this._draftsChanged.next();
|
|
21300
21838
|
}
|
|
21301
21839
|
recordHasDraft(uniqueIdentifier) {
|
|
21302
21840
|
return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
|
|
21303
21841
|
}
|
|
21842
|
+
isRecordNotYetSaved(uniqueIdentifier) {
|
|
21843
|
+
return uniqueIdentifier.startsWith(TEMPORARY_ID_PREFIX);
|
|
21844
|
+
}
|
|
21304
21845
|
// generated by copilot
|
|
21305
21846
|
getAllDrafts() {
|
|
21306
21847
|
const items = { ...window.localStorage };
|
|
@@ -21908,8 +22449,6 @@ class Gn4PlatformService {
|
|
|
21908
22449
|
this.allThesaurus$ = this.httpClient
|
|
21909
22450
|
.get(`${this.registriesApiService.configuration.basePath}/thesaurus?_content_type=json`)
|
|
21910
22451
|
.pipe(map$1((thesaurus) => {
|
|
21911
|
-
// FIXME: find a better way to exclude place keywords
|
|
21912
|
-
// thesaurus[0].filter((thes) => thes.dname !== 'place')
|
|
21913
22452
|
return thesaurus[0];
|
|
21914
22453
|
}), shareReplay(1));
|
|
21915
22454
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
@@ -21953,8 +22492,14 @@ class Gn4PlatformService {
|
|
|
21953
22492
|
}
|
|
21954
22493
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
21955
22494
|
}
|
|
21956
|
-
searchKeywords(query) {
|
|
21957
|
-
const keywords$ = this.
|
|
22495
|
+
searchKeywords(query, keywordTypes) {
|
|
22496
|
+
const keywords$ = this.allThesaurus$.pipe(switchMap((thesaurus) => {
|
|
22497
|
+
const selectedThesauri = [];
|
|
22498
|
+
keywordTypes.map((keywordType) => {
|
|
22499
|
+
selectedThesauri.push(...thesaurus.filter((thes) => thes.dname === keywordType));
|
|
22500
|
+
});
|
|
22501
|
+
return this.registriesApiService.searchKeywords(query, this.langService.iso3, 10, 0, null, selectedThesauri.map((thes) => thes.key), null, `*${query}*`);
|
|
22502
|
+
}));
|
|
21958
22503
|
return combineLatest([keywords$, this.allThesaurus$]).pipe(map$1(([keywords, thesaurus]) => {
|
|
21959
22504
|
return this.mapper.keywordsFromApi(keywords, thesaurus, this.langService.iso3);
|
|
21960
22505
|
}));
|
|
@@ -23046,10 +23591,15 @@ class MapUtilsService {
|
|
|
23046
23591
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
23047
23592
|
return null;
|
|
23048
23593
|
}
|
|
23049
|
-
//
|
|
23594
|
+
// extend all the spatial extents into an including bbox
|
|
23050
23595
|
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
23051
|
-
|
|
23052
|
-
|
|
23596
|
+
if ('bbox' in curr)
|
|
23597
|
+
return extend(prev, curr.bbox);
|
|
23598
|
+
else if ('geometry' in curr) {
|
|
23599
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
23600
|
+
return extend(prev, geom.getExtent());
|
|
23601
|
+
}
|
|
23602
|
+
return prev;
|
|
23053
23603
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
23054
23604
|
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
23055
23605
|
}
|
|
@@ -24635,6 +25185,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24635
25185
|
}]
|
|
24636
25186
|
}] });
|
|
24637
25187
|
|
|
25188
|
+
class PopoverComponent {
|
|
25189
|
+
constructor(viewContainerRef, renderer) {
|
|
25190
|
+
this.viewContainerRef = viewContainerRef;
|
|
25191
|
+
this.renderer = renderer;
|
|
25192
|
+
}
|
|
25193
|
+
getContent() {
|
|
25194
|
+
if (this.content instanceof TemplateRef) {
|
|
25195
|
+
if (this.view) {
|
|
25196
|
+
this.view.destroy();
|
|
25197
|
+
}
|
|
25198
|
+
this.view = this.viewContainerRef.createEmbeddedView(this.content);
|
|
25199
|
+
this.view.detectChanges();
|
|
25200
|
+
const wrapper = this.renderer.createElement('div'); // Create a wrapper div
|
|
25201
|
+
this.view.rootNodes.forEach((node) => {
|
|
25202
|
+
this.renderer.appendChild(wrapper, node); // Append each root node to the wrapper
|
|
25203
|
+
});
|
|
25204
|
+
return wrapper;
|
|
25205
|
+
}
|
|
25206
|
+
return this.content;
|
|
25207
|
+
}
|
|
25208
|
+
ngAfterViewInit() {
|
|
25209
|
+
this.tippyInstance = tippy(this.popoverContent.nativeElement, {
|
|
25210
|
+
content: this.getContent(),
|
|
25211
|
+
allowHTML: true,
|
|
25212
|
+
theme: this.theme,
|
|
25213
|
+
});
|
|
25214
|
+
}
|
|
25215
|
+
ngOnChanges(changes) {
|
|
25216
|
+
if (changes['theme']) {
|
|
25217
|
+
this.theme = changes['theme'].currentValue;
|
|
25218
|
+
if (this.tippyInstance) {
|
|
25219
|
+
this.tippyInstance.setProps({ theme: this.theme });
|
|
25220
|
+
}
|
|
25221
|
+
}
|
|
25222
|
+
if (changes['content']) {
|
|
25223
|
+
this.content = changes['content'].currentValue;
|
|
25224
|
+
if (this.tippyInstance) {
|
|
25225
|
+
this.tippyInstance.setContent(this.getContent());
|
|
25226
|
+
}
|
|
25227
|
+
}
|
|
25228
|
+
}
|
|
25229
|
+
ngOnDestroy() {
|
|
25230
|
+
if (this.tippyInstance) {
|
|
25231
|
+
this.tippyInstance.destroy();
|
|
25232
|
+
}
|
|
25233
|
+
if (this.view) {
|
|
25234
|
+
this.view.destroy();
|
|
25235
|
+
}
|
|
25236
|
+
}
|
|
25237
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25238
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PopoverComponent, isStandalone: true, selector: "gn-ui-popover", inputs: { content: "content", theme: "theme" }, viewQueries: [{ propertyName: "popoverContent", first: true, predicate: ["popoverContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
25239
|
+
}
|
|
25240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
25241
|
+
type: Component,
|
|
25242
|
+
args: [{ selector: 'gn-ui-popover', standalone: true, imports: [CommonModule], template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n" }]
|
|
25243
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { popoverContent: [{
|
|
25244
|
+
type: ViewChild,
|
|
25245
|
+
args: ['popoverContent', { static: false }]
|
|
25246
|
+
}], content: [{
|
|
25247
|
+
type: Input
|
|
25248
|
+
}], theme: [{
|
|
25249
|
+
type: Input
|
|
25250
|
+
}] } });
|
|
25251
|
+
|
|
24638
25252
|
class PopupAlertComponent {
|
|
24639
25253
|
constructor(changeDetector) {
|
|
24640
25254
|
this.changeDetector = changeDetector;
|
|
@@ -24685,6 +25299,7 @@ class AutocompleteComponent {
|
|
|
24685
25299
|
constructor(cdRef) {
|
|
24686
25300
|
this.cdRef = cdRef;
|
|
24687
25301
|
this.clearOnSelection = false;
|
|
25302
|
+
this.preventCompleteOnSelection = false;
|
|
24688
25303
|
this.autoFocus = false;
|
|
24689
25304
|
this.minCharacterCount = 3;
|
|
24690
25305
|
this.allowSubmit = true;
|
|
@@ -24777,17 +25392,28 @@ class AutocompleteComponent {
|
|
|
24777
25392
|
handleClickSearch() {
|
|
24778
25393
|
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24779
25394
|
}
|
|
25395
|
+
/**
|
|
25396
|
+
* This function is triggered when an item is selected in the list of displayed items.
|
|
25397
|
+
* If preventCompleteOnSelection is true then the input will be left as entered by the user.
|
|
25398
|
+
* If preventCompleteOnSelection is false (by default) then the input will be completed with the item selected by the user.
|
|
25399
|
+
* If clearOnSelection is true then the input will be cleared upon selection.
|
|
25400
|
+
* @param event
|
|
25401
|
+
*/
|
|
24780
25402
|
handleSelection(event) {
|
|
24781
25403
|
this.cancelEnter = true;
|
|
24782
25404
|
this.itemSelected.emit(event.option.value);
|
|
24783
|
-
if (this.
|
|
24784
|
-
this.lastInputValue$.pipe(first()).subscribe((
|
|
24785
|
-
this.inputRef.nativeElement.value =
|
|
25405
|
+
if (this.preventCompleteOnSelection) {
|
|
25406
|
+
this.lastInputValue$.pipe(first()).subscribe((lastInputValue) => {
|
|
25407
|
+
this.inputRef.nativeElement.value = lastInputValue;
|
|
24786
25408
|
});
|
|
25409
|
+
return;
|
|
25410
|
+
}
|
|
25411
|
+
if (this.clearOnSelection) {
|
|
25412
|
+
this.inputRef.nativeElement.value = '';
|
|
24787
25413
|
}
|
|
24788
25414
|
}
|
|
24789
25415
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24790
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, 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: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\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: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.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$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25416
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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" }, 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: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\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: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.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$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24791
25417
|
}
|
|
24792
25418
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24793
25419
|
type: Component,
|
|
@@ -24807,6 +25433,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24807
25433
|
type: Input
|
|
24808
25434
|
}], clearOnSelection: [{
|
|
24809
25435
|
type: Input
|
|
25436
|
+
}], preventCompleteOnSelection: [{
|
|
25437
|
+
type: Input
|
|
24810
25438
|
}], autoFocus: [{
|
|
24811
25439
|
type: Input
|
|
24812
25440
|
}], minCharacterCount: [{
|
|
@@ -25039,7 +25667,7 @@ class CopyTextButtonComponent {
|
|
|
25039
25667
|
event.target.blur();
|
|
25040
25668
|
}
|
|
25041
25669
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25042
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
25670
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25043
25671
|
}
|
|
25044
25672
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
25045
25673
|
type: Component,
|
|
@@ -25059,7 +25687,7 @@ class DatePickerComponent {
|
|
|
25059
25687
|
this.dateChange = new EventEmitter();
|
|
25060
25688
|
}
|
|
25061
25689
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25062
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$
|
|
25690
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25063
25691
|
}
|
|
25064
25692
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
25065
25693
|
type: Component,
|
|
@@ -25076,7 +25704,7 @@ class DateRangePickerComponent {
|
|
|
25076
25704
|
this.endDateChange = new EventEmitter();
|
|
25077
25705
|
}
|
|
25078
25706
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25079
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$
|
|
25707
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$3.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$3.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25080
25708
|
}
|
|
25081
25709
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
25082
25710
|
type: Component,
|
|
@@ -25108,7 +25736,7 @@ class DragAndDropFileInputComponent {
|
|
|
25108
25736
|
this.fileChange.emit(this.selectedFile);
|
|
25109
25737
|
}
|
|
25110
25738
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25111
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3$
|
|
25739
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3$2.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
25112
25740
|
}
|
|
25113
25741
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
25114
25742
|
type: Component,
|
|
@@ -26749,11 +27377,11 @@ class MetadataQualityItemComponent {
|
|
|
26749
27377
|
return `record.metadata.quality.${this.name}.${this.value ? 'success' : 'failed'}`;
|
|
26750
27378
|
}
|
|
26751
27379
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26752
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: { name: "name", value: "value" }, ngImport: i0, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n", dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27380
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: { name: "name", value: "value" }, ngImport: i0, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined min-w-fit\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n", dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26753
27381
|
}
|
|
26754
27382
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, decorators: [{
|
|
26755
27383
|
type: Component,
|
|
26756
|
-
args: [{ selector: 'gn-ui-metadata-quality-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n" }]
|
|
27384
|
+
args: [{ selector: 'gn-ui-metadata-quality-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined min-w-fit\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n" }]
|
|
26757
27385
|
}], propDecorators: { name: [{
|
|
26758
27386
|
type: Input
|
|
26759
27387
|
}], value: [{
|
|
@@ -26764,7 +27392,6 @@ class MetadataQualityComponent {
|
|
|
26764
27392
|
constructor() {
|
|
26765
27393
|
this.smaller = false;
|
|
26766
27394
|
this.items = [];
|
|
26767
|
-
this.isMenuShown = false;
|
|
26768
27395
|
}
|
|
26769
27396
|
get qualityScore() {
|
|
26770
27397
|
const qualityScore = this.metadata?.extras?.qualityScore;
|
|
@@ -26775,12 +27402,6 @@ class MetadataQualityComponent {
|
|
|
26775
27402
|
get calculatedQualityScore() {
|
|
26776
27403
|
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
26777
27404
|
}
|
|
26778
|
-
showMenu() {
|
|
26779
|
-
this.isMenuShown = true;
|
|
26780
|
-
}
|
|
26781
|
-
hideMenu() {
|
|
26782
|
-
this.isMenuShown = false;
|
|
26783
|
-
}
|
|
26784
27405
|
add(name, value) {
|
|
26785
27406
|
if (this.metadataQualityDisplay?.[name] !== false) {
|
|
26786
27407
|
this.items.push({ name, value });
|
|
@@ -26804,11 +27425,11 @@ class MetadataQualityComponent {
|
|
|
26804
27425
|
}
|
|
26805
27426
|
}
|
|
26806
27427
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26807
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, usesOnChanges: true, ngImport: i0, template: "<div
|
|
27428
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <gn-ui-popover [content]=\"popoverItems\" theme=\"light-border\">\n <div class=\"min-w-[200px]\" [class]=\"smaller ? 'leading-[8px]' : ''\">\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n type=\"primary\"\n ></gn-ui-progress-bar>\n </div>\n </gn-ui-popover>\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: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26808
27429
|
}
|
|
26809
27430
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
26810
27431
|
type: Component,
|
|
26811
|
-
args: [{ selector: 'gn-ui-metadata-quality', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
|
27432
|
+
args: [{ selector: 'gn-ui-metadata-quality', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <gn-ui-popover [content]=\"popoverItems\" theme=\"light-border\">\n <div class=\"min-w-[200px]\" [class]=\"smaller ? 'leading-[8px]' : ''\">\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n type=\"primary\"\n ></gn-ui-progress-bar>\n </div>\n </gn-ui-popover>\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"] }]
|
|
26812
27433
|
}], propDecorators: { metadata: [{
|
|
26813
27434
|
type: Input
|
|
26814
27435
|
}], smaller: [{
|
|
@@ -27003,11 +27624,11 @@ class ApiCardComponent {
|
|
|
27003
27624
|
}
|
|
27004
27625
|
}
|
|
27005
27626
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27006
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden
|
|
27627
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden cursor-default\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27007
27628
|
}
|
|
27008
27629
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
27009
27630
|
type: Component,
|
|
27010
|
-
args: [{ selector: 'gn-ui-api-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden
|
|
27631
|
+
args: [{ selector: 'gn-ui-api-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden cursor-default\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
27011
27632
|
}], propDecorators: { link: [{
|
|
27012
27633
|
type: Input
|
|
27013
27634
|
}], currentLink: [{
|
|
@@ -27032,6 +27653,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27032
27653
|
type: Input
|
|
27033
27654
|
}] } });
|
|
27034
27655
|
|
|
27656
|
+
class ConfirmationDialogComponent {
|
|
27657
|
+
constructor(dialogRef, data) {
|
|
27658
|
+
this.dialogRef = dialogRef;
|
|
27659
|
+
this.data = data;
|
|
27660
|
+
}
|
|
27661
|
+
onConfirm() {
|
|
27662
|
+
this.dialogRef.close(true);
|
|
27663
|
+
}
|
|
27664
|
+
onCancel() {
|
|
27665
|
+
this.dialogRef.close(false);
|
|
27666
|
+
}
|
|
27667
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27668
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmationDialogComponent, isStandalone: true, selector: "gn-ui-confirmation-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$7.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$7.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$7.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27669
|
+
}
|
|
27670
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
|
|
27671
|
+
type: Component,
|
|
27672
|
+
args: [{ selector: 'gn-ui-confirmation-dialog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatDialogModule, ButtonComponent], template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n" }]
|
|
27673
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
|
|
27674
|
+
type: Inject,
|
|
27675
|
+
args: [MAT_DIALOG_DATA]
|
|
27676
|
+
}] }]; } });
|
|
27677
|
+
|
|
27035
27678
|
class ContentGhostComponent {
|
|
27036
27679
|
constructor() {
|
|
27037
27680
|
this.ghostClass = '';
|
|
@@ -27219,11 +27862,11 @@ class MarkdownParserComponent {
|
|
|
27219
27862
|
return marked.parse(this.textContent);
|
|
27220
27863
|
}
|
|
27221
27864
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27222
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:
|
|
27865
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></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 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 }); }
|
|
27223
27866
|
}
|
|
27224
27867
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
27225
27868
|
type: Component,
|
|
27226
|
-
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:
|
|
27869
|
+
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></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 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"] }]
|
|
27227
27870
|
}], propDecorators: { textContent: [{
|
|
27228
27871
|
type: Input
|
|
27229
27872
|
}] } });
|
|
@@ -27238,7 +27881,7 @@ class MarkdownEditorComponent {
|
|
|
27238
27881
|
this.textContentChanged.emit(this.textContent);
|
|
27239
27882
|
}
|
|
27240
27883
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27241
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27884
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p\n *ngIf=\"helperText\"\n class=\"flex-none mb-2 font-medium text-sm text-gray-900\"\n >\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27242
27885
|
}
|
|
27243
27886
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
27244
27887
|
type: Component,
|
|
@@ -27251,7 +27894,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27251
27894
|
TextAreaComponent,
|
|
27252
27895
|
MarkdownParserComponent,
|
|
27253
27896
|
TranslateModule,
|
|
27254
|
-
], template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27897
|
+
], template: "<div class=\"h-full flex flex-col\">\n <p\n *ngIf=\"helperText\"\n class=\"flex-none mb-2 font-medium text-sm text-gray-900\"\n >\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n" }]
|
|
27255
27898
|
}], propDecorators: { preview: [{
|
|
27256
27899
|
type: Input
|
|
27257
27900
|
}], helperText: [{
|
|
@@ -27338,6 +27981,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27338
27981
|
args: ['contentDiv']
|
|
27339
27982
|
}] } });
|
|
27340
27983
|
|
|
27984
|
+
class MaxLinesComponent {
|
|
27985
|
+
constructor(cdr) {
|
|
27986
|
+
this.cdr = cdr;
|
|
27987
|
+
this.maxLines = 6;
|
|
27988
|
+
this.isExpanded = false;
|
|
27989
|
+
this.maxHeight = '';
|
|
27990
|
+
this.showToggleButton = false;
|
|
27991
|
+
}
|
|
27992
|
+
ngAfterViewInit() {
|
|
27993
|
+
this.calculateMaxHeight();
|
|
27994
|
+
this.observer = new ResizeObserver((mutations) => {
|
|
27995
|
+
mutations.forEach(() => {
|
|
27996
|
+
this.calculateMaxHeight();
|
|
27997
|
+
});
|
|
27998
|
+
});
|
|
27999
|
+
this.observer.observe(this.container.nativeElement.children[0]);
|
|
28000
|
+
}
|
|
28001
|
+
toggleDisplay() {
|
|
28002
|
+
this.isExpanded = !this.isExpanded;
|
|
28003
|
+
this.calculateMaxHeight();
|
|
28004
|
+
}
|
|
28005
|
+
calculateMaxHeight() {
|
|
28006
|
+
const containerElement = this.container.nativeElement;
|
|
28007
|
+
const contentElement = containerElement.children[0];
|
|
28008
|
+
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
28009
|
+
if (contentHeight) {
|
|
28010
|
+
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
28011
|
+
this.showToggleButton = true;
|
|
28012
|
+
this.maxHeight = this.isExpanded
|
|
28013
|
+
? `${contentHeight}px`
|
|
28014
|
+
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
28015
|
+
}
|
|
28016
|
+
else {
|
|
28017
|
+
this.showToggleButton = false;
|
|
28018
|
+
this.maxHeight = `${contentHeight}px`;
|
|
28019
|
+
}
|
|
28020
|
+
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
28021
|
+
this.cdr.detectChanges();
|
|
28022
|
+
}
|
|
28023
|
+
}
|
|
28024
|
+
getLineHeight(element) {
|
|
28025
|
+
const computedStyle = window.getComputedStyle(element);
|
|
28026
|
+
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
28027
|
+
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
28028
|
+
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
28029
|
+
return result;
|
|
28030
|
+
}
|
|
28031
|
+
ngOnDestroy() {
|
|
28032
|
+
if (!this.observer)
|
|
28033
|
+
return;
|
|
28034
|
+
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
28035
|
+
}
|
|
28036
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28037
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28038
|
+
}
|
|
28039
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
28040
|
+
type: Component,
|
|
28041
|
+
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
28042
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
|
|
28043
|
+
type: Input
|
|
28044
|
+
}], container: [{
|
|
28045
|
+
type: ViewChild,
|
|
28046
|
+
args: ['container']
|
|
28047
|
+
}] } });
|
|
28048
|
+
|
|
27341
28049
|
/* eslint-disable @angular-eslint/directive-selector */
|
|
27342
28050
|
class GnUiLinkifyDirective {
|
|
27343
28051
|
constructor(el, renderer) {
|
|
@@ -27477,11 +28185,11 @@ class MetadataInfoComponent {
|
|
|
27477
28185
|
this.keyword.emit(keyword);
|
|
27478
28186
|
}
|
|
27479
28187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27480
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27481
28189
|
}
|
|
27482
28190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
27483
28191
|
type: Component,
|
|
27484
|
-
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n
|
|
28192
|
+
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"] }]
|
|
27485
28193
|
}], propDecorators: { metadata: [{
|
|
27486
28194
|
type: Input
|
|
27487
28195
|
}], incomplete: [{
|
|
@@ -27738,7 +28446,7 @@ class RecordApiFormComponent {
|
|
|
27738
28446
|
}
|
|
27739
28447
|
}
|
|
27740
28448
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27741
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
28449
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27742
28450
|
}
|
|
27743
28451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27744
28452
|
type: Component,
|
|
@@ -27766,7 +28474,7 @@ class RelatedRecordCardComponent {
|
|
|
27766
28474
|
return `${this.baseClasses} ${this.extraClass}`;
|
|
27767
28475
|
}
|
|
27768
28476
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27769
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
28477
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27770
28478
|
}
|
|
27771
28479
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27772
28480
|
type: Component,
|
|
@@ -27779,6 +28487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27779
28487
|
|
|
27780
28488
|
class SortableListComponent {
|
|
27781
28489
|
constructor() {
|
|
28490
|
+
this.addOptions = [];
|
|
27782
28491
|
this.elementsChange = new EventEmitter();
|
|
27783
28492
|
this.add = new EventEmitter();
|
|
27784
28493
|
}
|
|
@@ -27790,8 +28499,11 @@ class SortableListComponent {
|
|
|
27790
28499
|
this.elements = this.elements.filter((_, i) => i !== index);
|
|
27791
28500
|
this.elementsChange.emit(this.elements);
|
|
27792
28501
|
}
|
|
28502
|
+
trackByFn(index) {
|
|
28503
|
+
return index;
|
|
28504
|
+
}
|
|
27793
28505
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27794
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SortableListComponent, isStandalone: true, selector: "gn-ui-sortable-list", inputs: { elements: "elements", addOptions: "addOptions" }, outputs: { elementsChange: "elementsChange", add: "add" }, ngImport: i0, template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container
|
|
28506
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SortableListComponent, isStandalone: true, selector: "gn-ui-sortable-list", inputs: { elements: "elements", addOptions: "addOptions" }, outputs: { elementsChange: "elementsChange", add: "add" }, ngImport: i0, template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container\n *ngFor=\"let element of elements; index as index; trackBy: trackByFn\"\n >\n <div class=\"sortable-box bg-white flex items-center\" cdkDrag>\n <span\n cdkDragHandle\n class=\"material-symbols-outlined mx-[10px] cursor-grab gn-ui-icon-medium flex-none\"\n >\n drag_handle\n </span>\n <div class=\"flex-1\">\n <ng-container\n *ngComponentOutlet=\"element.component; inputs: element.inputs\"\n ></ng-container>\n </div>\n <span\n (click)=\"removeElement(index)\"\n class=\"material-symbols-outlined mx-[10px] cursor-pointer gn-ui-icon-medium flex-none\"\n >\n close\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sortable-list.cdk-drop-list-dragging .sortable-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27795
28507
|
}
|
|
27796
28508
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, decorators: [{
|
|
27797
28509
|
type: Component,
|
|
@@ -27803,7 +28515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27803
28515
|
CdkDragHandle,
|
|
27804
28516
|
MatIconModule,
|
|
27805
28517
|
ButtonComponent,
|
|
27806
|
-
], template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container
|
|
28518
|
+
], template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container\n *ngFor=\"let element of elements; index as index; trackBy: trackByFn\"\n >\n <div class=\"sortable-box bg-white flex items-center\" cdkDrag>\n <span\n cdkDragHandle\n class=\"material-symbols-outlined mx-[10px] cursor-grab gn-ui-icon-medium flex-none\"\n >\n drag_handle\n </span>\n <div class=\"flex-1\">\n <ng-container\n *ngComponentOutlet=\"element.component; inputs: element.inputs\"\n ></ng-container>\n </div>\n <span\n (click)=\"removeElement(index)\"\n class=\"material-symbols-outlined mx-[10px] cursor-pointer gn-ui-icon-medium flex-none\"\n >\n close\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sortable-list.cdk-drop-list-dragging .sortable-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
27807
28519
|
}], propDecorators: { elements: [{
|
|
27808
28520
|
type: Input
|
|
27809
28521
|
}], addOptions: [{
|
|
@@ -27941,82 +28653,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27941
28653
|
|
|
27942
28654
|
class FormFieldWrapperComponent {
|
|
27943
28655
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27944
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
28656
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1 overflow-y-auto\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27945
28657
|
}
|
|
27946
28658
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27947
28659
|
type: Component,
|
|
27948
|
-
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
28660
|
+
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1 overflow-y-auto\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
27949
28661
|
}], propDecorators: { label: [{
|
|
27950
28662
|
type: Input
|
|
27951
28663
|
}], hint: [{
|
|
27952
28664
|
type: Input
|
|
27953
28665
|
}] } });
|
|
27954
28666
|
|
|
27955
|
-
class MaxLinesComponent {
|
|
27956
|
-
constructor(cdr) {
|
|
27957
|
-
this.cdr = cdr;
|
|
27958
|
-
this.maxLines = 6;
|
|
27959
|
-
this.isExpanded = false;
|
|
27960
|
-
this.maxHeight = '';
|
|
27961
|
-
this.showToggleButton = false;
|
|
27962
|
-
}
|
|
27963
|
-
ngAfterViewInit() {
|
|
27964
|
-
this.calculateMaxHeight();
|
|
27965
|
-
this.observer = new ResizeObserver((mutations) => {
|
|
27966
|
-
mutations.forEach(() => {
|
|
27967
|
-
this.calculateMaxHeight();
|
|
27968
|
-
});
|
|
27969
|
-
});
|
|
27970
|
-
this.observer.observe(this.container.nativeElement.children[0]);
|
|
27971
|
-
}
|
|
27972
|
-
toggleDisplay() {
|
|
27973
|
-
this.isExpanded = !this.isExpanded;
|
|
27974
|
-
this.calculateMaxHeight();
|
|
27975
|
-
}
|
|
27976
|
-
calculateMaxHeight() {
|
|
27977
|
-
const containerElement = this.container.nativeElement;
|
|
27978
|
-
const contentElement = containerElement.children[0];
|
|
27979
|
-
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
27980
|
-
if (contentHeight) {
|
|
27981
|
-
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
27982
|
-
this.showToggleButton = true;
|
|
27983
|
-
this.maxHeight = this.isExpanded
|
|
27984
|
-
? `${contentHeight}px`
|
|
27985
|
-
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
27986
|
-
}
|
|
27987
|
-
else {
|
|
27988
|
-
this.showToggleButton = false;
|
|
27989
|
-
this.maxHeight = `${contentHeight}px`;
|
|
27990
|
-
}
|
|
27991
|
-
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
27992
|
-
this.cdr.detectChanges();
|
|
27993
|
-
}
|
|
27994
|
-
}
|
|
27995
|
-
getLineHeight(element) {
|
|
27996
|
-
const computedStyle = window.getComputedStyle(element);
|
|
27997
|
-
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
27998
|
-
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
27999
|
-
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
28000
|
-
return result;
|
|
28001
|
-
}
|
|
28002
|
-
ngOnDestroy() {
|
|
28003
|
-
if (!this.observer)
|
|
28004
|
-
return;
|
|
28005
|
-
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
28006
|
-
}
|
|
28007
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28008
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28009
|
-
}
|
|
28010
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
28011
|
-
type: Component,
|
|
28012
|
-
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
28013
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
|
|
28014
|
-
type: Input
|
|
28015
|
-
}], container: [{
|
|
28016
|
-
type: ViewChild,
|
|
28017
|
-
args: ['container']
|
|
28018
|
-
}] } });
|
|
28019
|
-
|
|
28020
28667
|
class InteractiveTableColumnComponent {
|
|
28021
28668
|
constructor() {
|
|
28022
28669
|
this.grow = false;
|
|
@@ -28066,11 +28713,11 @@ class InteractiveTableComponent {
|
|
|
28066
28713
|
this.itemClick.emit(item);
|
|
28067
28714
|
}
|
|
28068
28715
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28069
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28716
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28070
28717
|
}
|
|
28071
28718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28072
28719
|
type: Component,
|
|
28073
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
28720
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
28074
28721
|
}], propDecorators: { columns: [{
|
|
28075
28722
|
type: ContentChildren,
|
|
28076
28723
|
args: [InteractiveTableColumnComponent]
|
|
@@ -28262,11 +28909,11 @@ class UserPreviewComponent {
|
|
|
28262
28909
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
28263
28910
|
}
|
|
28264
28911
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28265
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-
|
|
28912
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-10 h-10 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28266
28913
|
}
|
|
28267
28914
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
28268
28915
|
type: Component,
|
|
28269
|
-
args: [{ selector: 'gn-ui-user-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<figure class=\"text-center\">\n <div\n class=\"w-
|
|
28916
|
+
args: [{ selector: 'gn-ui-user-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<figure class=\"text-center\">\n <div\n class=\"w-10 h-10 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n" }]
|
|
28270
28917
|
}], propDecorators: { user: [{
|
|
28271
28918
|
type: Input
|
|
28272
28919
|
}], avatarPlaceholder: [{
|
|
@@ -28406,10 +29053,12 @@ class UiElementsModule {
|
|
|
28406
29053
|
UiInputsModule,
|
|
28407
29054
|
FormsModule,
|
|
28408
29055
|
NgOptimizedImage,
|
|
29056
|
+
PopoverComponent,
|
|
28409
29057
|
MarkdownParserComponent,
|
|
28410
29058
|
ThumbnailComponent,
|
|
28411
29059
|
TimeSincePipe,
|
|
28412
|
-
BadgeComponent
|
|
29060
|
+
BadgeComponent,
|
|
29061
|
+
MaxLinesComponent], exports: [MetadataInfoComponent,
|
|
28413
29062
|
ContentGhostComponent,
|
|
28414
29063
|
DownloadItemComponent,
|
|
28415
29064
|
DownloadsListComponent,
|
|
@@ -28439,8 +29088,10 @@ class UiElementsModule {
|
|
|
28439
29088
|
RouterModule,
|
|
28440
29089
|
UiInputsModule,
|
|
28441
29090
|
FormsModule,
|
|
29091
|
+
PopoverComponent,
|
|
28442
29092
|
ThumbnailComponent,
|
|
28443
|
-
BadgeComponent
|
|
29093
|
+
BadgeComponent,
|
|
29094
|
+
MaxLinesComponent] }); }
|
|
28444
29095
|
}
|
|
28445
29096
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
28446
29097
|
type: NgModule,
|
|
@@ -28457,10 +29108,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28457
29108
|
UiInputsModule,
|
|
28458
29109
|
FormsModule,
|
|
28459
29110
|
NgOptimizedImage,
|
|
29111
|
+
PopoverComponent,
|
|
28460
29112
|
MarkdownParserComponent,
|
|
28461
29113
|
ThumbnailComponent,
|
|
28462
29114
|
TimeSincePipe,
|
|
28463
29115
|
BadgeComponent,
|
|
29116
|
+
MaxLinesComponent,
|
|
28464
29117
|
],
|
|
28465
29118
|
declarations: [
|
|
28466
29119
|
MetadataInfoComponent,
|
|
@@ -28612,15 +29265,74 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28612
29265
|
}]
|
|
28613
29266
|
}] });
|
|
28614
29267
|
|
|
29268
|
+
class ActionMenuComponent {
|
|
29269
|
+
constructor(dialog, translateService) {
|
|
29270
|
+
this.dialog = dialog;
|
|
29271
|
+
this.translateService = translateService;
|
|
29272
|
+
this.duplicate = new EventEmitter();
|
|
29273
|
+
this.delete = new EventEmitter();
|
|
29274
|
+
}
|
|
29275
|
+
openMenu() {
|
|
29276
|
+
this.trigger.openMenu();
|
|
29277
|
+
}
|
|
29278
|
+
openDeleteConfirmationDialog() {
|
|
29279
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
29280
|
+
data: {
|
|
29281
|
+
title: this.translateService.instant('editor.record.delete.confirmation.title'),
|
|
29282
|
+
message: this.translateService.instant('editor.record.delete.confirmation.message'),
|
|
29283
|
+
confirmText: this.translateService.instant('editor.record.delete.confirmation.confirmText'),
|
|
29284
|
+
cancelText: this.translateService.instant('editor.record.delete.confirmation.cancelText'),
|
|
29285
|
+
},
|
|
29286
|
+
restoreFocus: false,
|
|
29287
|
+
});
|
|
29288
|
+
// Manually restore focus to the menu trigger since the element that
|
|
29289
|
+
// opens the dialog won't be in the DOM any more when the dialog closes.
|
|
29290
|
+
dialogRef.afterClosed().subscribe((confirmed) => {
|
|
29291
|
+
this.trigger.focus();
|
|
29292
|
+
if (confirmed) {
|
|
29293
|
+
this.delete.emit();
|
|
29294
|
+
}
|
|
29295
|
+
});
|
|
29296
|
+
}
|
|
29297
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$7.MatDialog }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29298
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { duplicate: "duplicate", delete: "delete" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"light\"\n [matMenuTriggerFor]=\"menu\"\n (buttonClick)=\"openMenu()\"\n data-test=\"record-menu-button\"\n>\n <mat-icon class=\"material-symbols-outlined\">more_vert</mat-icon>\n</gn-ui-button>\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [disabled]=\"!canDuplicate\"\n (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</span>\n </button>\n <button\n mat-menu-item\n [disabled]=\"!canDelete\"\n (click)=\"openDeleteConfirmationDialog()\"\n data-test=\"record-menu-delete-button\"\n >\n <span translate>record.action.delete</span>\n </button>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
29299
|
+
}
|
|
29300
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
29301
|
+
type: Component,
|
|
29302
|
+
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
29303
|
+
MatIconModule,
|
|
29304
|
+
ButtonComponent,
|
|
29305
|
+
MatMenuModule,
|
|
29306
|
+
MatDialogModule,
|
|
29307
|
+
ConfirmationDialogComponent,
|
|
29308
|
+
TranslateModule,
|
|
29309
|
+
], template: "<gn-ui-button\n type=\"light\"\n [matMenuTriggerFor]=\"menu\"\n (buttonClick)=\"openMenu()\"\n data-test=\"record-menu-button\"\n>\n <mat-icon class=\"material-symbols-outlined\">more_vert</mat-icon>\n</gn-ui-button>\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [disabled]=\"!canDuplicate\"\n (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</span>\n </button>\n <button\n mat-menu-item\n [disabled]=\"!canDelete\"\n (click)=\"openDeleteConfirmationDialog()\"\n data-test=\"record-menu-delete-button\"\n >\n <span translate>record.action.delete</span>\n </button>\n</mat-menu>\n" }]
|
|
29310
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialog }, { type: i1$1.TranslateService }]; }, propDecorators: { canDuplicate: [{
|
|
29311
|
+
type: Input
|
|
29312
|
+
}], canDelete: [{
|
|
29313
|
+
type: Input
|
|
29314
|
+
}], duplicate: [{
|
|
29315
|
+
type: Output
|
|
29316
|
+
}], delete: [{
|
|
29317
|
+
type: Output
|
|
29318
|
+
}], trigger: [{
|
|
29319
|
+
type: ViewChild,
|
|
29320
|
+
args: [MatMenuTrigger]
|
|
29321
|
+
}] } });
|
|
29322
|
+
|
|
28615
29323
|
class ResultsTableComponent {
|
|
28616
29324
|
constructor() {
|
|
28617
29325
|
this.records = [];
|
|
28618
29326
|
this.selectedRecordsIdentifiers = [];
|
|
28619
29327
|
this.sortOrder = null;
|
|
28620
|
-
this.
|
|
29328
|
+
this.hasDraft = () => false;
|
|
29329
|
+
this.canDuplicate = () => true;
|
|
29330
|
+
this.canDelete = () => true;
|
|
28621
29331
|
// emits the column (field) as well as the order
|
|
28622
29332
|
this.sortByChange = new EventEmitter();
|
|
28623
29333
|
this.recordClick = new EventEmitter();
|
|
29334
|
+
this.duplicateRecord = new EventEmitter();
|
|
29335
|
+
this.deleteRecord = new EventEmitter();
|
|
28624
29336
|
this.recordsSelectedChange = new EventEmitter();
|
|
28625
29337
|
}
|
|
28626
29338
|
dateToString(date) {
|
|
@@ -28655,6 +29367,12 @@ class ResultsTableComponent {
|
|
|
28655
29367
|
handleRecordClick(item) {
|
|
28656
29368
|
this.recordClick.emit(item);
|
|
28657
29369
|
}
|
|
29370
|
+
handleDuplicate(item) {
|
|
29371
|
+
this.duplicateRecord.emit(item);
|
|
29372
|
+
}
|
|
29373
|
+
handleDelete(item) {
|
|
29374
|
+
this.deleteRecord.emit(item);
|
|
29375
|
+
}
|
|
28658
29376
|
setSortBy(col, order) {
|
|
28659
29377
|
this.sortByChange.emit([col, order]);
|
|
28660
29378
|
}
|
|
@@ -28690,7 +29408,7 @@ class ResultsTableComponent {
|
|
|
28690
29408
|
return !allSelected && someSelected;
|
|
28691
29409
|
}
|
|
28692
29410
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28693
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder",
|
|
29411
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\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 [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\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\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>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white 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-sm text-white 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\" *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 [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\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-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\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$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { 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"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { 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"] }] }); }
|
|
28694
29412
|
}
|
|
28695
29413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28696
29414
|
type: Component,
|
|
@@ -28702,19 +29420,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28702
29420
|
MatIconModule,
|
|
28703
29421
|
TranslateModule,
|
|
28704
29422
|
BadgeComponent,
|
|
28705
|
-
|
|
29423
|
+
ActionMenuComponent,
|
|
29424
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\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 [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\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\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>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white 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-sm text-white 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\" *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 [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\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-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
28706
29425
|
}], propDecorators: { records: [{
|
|
28707
29426
|
type: Input
|
|
28708
29427
|
}], selectedRecordsIdentifiers: [{
|
|
28709
29428
|
type: Input
|
|
28710
29429
|
}], sortOrder: [{
|
|
28711
29430
|
type: Input
|
|
28712
|
-
}],
|
|
29431
|
+
}], hasDraft: [{
|
|
29432
|
+
type: Input
|
|
29433
|
+
}], canDuplicate: [{
|
|
29434
|
+
type: Input
|
|
29435
|
+
}], canDelete: [{
|
|
28713
29436
|
type: Input
|
|
28714
29437
|
}], sortByChange: [{
|
|
28715
29438
|
type: Output
|
|
28716
29439
|
}], recordClick: [{
|
|
28717
29440
|
type: Output
|
|
29441
|
+
}], duplicateRecord: [{
|
|
29442
|
+
type: Output
|
|
29443
|
+
}], deleteRecord: [{
|
|
29444
|
+
type: Output
|
|
28718
29445
|
}], recordsSelectedChange: [{
|
|
28719
29446
|
type: Output
|
|
28720
29447
|
}] } });
|
|
@@ -29328,6 +30055,10 @@ class SearchFacade {
|
|
|
29328
30055
|
this.store.dispatch(new RequestMoreResults(this.searchId));
|
|
29329
30056
|
return this;
|
|
29330
30057
|
}
|
|
30058
|
+
requestNewResults() {
|
|
30059
|
+
this.store.dispatch(new RequestNewResults(this.searchId));
|
|
30060
|
+
return this;
|
|
30061
|
+
}
|
|
29331
30062
|
requestMoreOnAggregation(key, increment) {
|
|
29332
30063
|
this.store.dispatch(new RequestMoreOnAggregation(key, increment, this.searchId));
|
|
29333
30064
|
return this;
|
|
@@ -29773,11 +30504,11 @@ class FuzzySearchComponent {
|
|
|
29773
30504
|
}
|
|
29774
30505
|
}
|
|
29775
30506
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29776
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 [
|
|
30507
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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></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$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29777
30508
|
}
|
|
29778
30509
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, decorators: [{
|
|
29779
30510
|
type: Component,
|
|
29780
|
-
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 [
|
|
30511
|
+
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></gn-ui-autocomplete>\n" }]
|
|
29781
30512
|
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { autocomplete: [{
|
|
29782
30513
|
type: ViewChild,
|
|
29783
30514
|
args: [AutocompleteComponent]
|
|
@@ -30179,12 +30910,12 @@ class SearchEffects {
|
|
|
30179
30910
|
);
|
|
30180
30911
|
});
|
|
30181
30912
|
}
|
|
30182
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, deps: [{ token: i1$
|
|
30913
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, deps: [{ token: i1$9.Actions }, { token: i1$2.Store }, { token: RecordsRepositoryInterface }, { token: FavoritesService }, { token: PlatformServiceInterface }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30183
30914
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects }); }
|
|
30184
30915
|
}
|
|
30185
30916
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, decorators: [{
|
|
30186
30917
|
type: Injectable
|
|
30187
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
30918
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$2.Store }, { type: RecordsRepositoryInterface }, { type: FavoritesService }, { type: PlatformServiceInterface }, { type: Promise, decorators: [{
|
|
30188
30919
|
type: Optional
|
|
30189
30920
|
}, {
|
|
30190
30921
|
type: Inject,
|
|
@@ -30489,12 +31220,14 @@ marker('search.filters.keyword');
|
|
|
30489
31220
|
marker('search.filters.isSpatial');
|
|
30490
31221
|
marker('search.filters.license');
|
|
30491
31222
|
marker('search.filters.publicationYear');
|
|
30492
|
-
marker('search.filters.
|
|
31223
|
+
marker('search.filters.organization');
|
|
30493
31224
|
marker('search.filters.representationType');
|
|
30494
31225
|
marker('search.filters.resourceType');
|
|
30495
31226
|
marker('search.filters.standard');
|
|
30496
31227
|
marker('search.filters.topic');
|
|
30497
31228
|
marker('search.filters.contact');
|
|
31229
|
+
marker('search.filters.producerOrg');
|
|
31230
|
+
marker('search.filters.publisherOrg');
|
|
30498
31231
|
class FieldsService {
|
|
30499
31232
|
get supportedFields() {
|
|
30500
31233
|
return Object.keys(this.fields);
|
|
@@ -30502,7 +31235,7 @@ class FieldsService {
|
|
|
30502
31235
|
constructor(injector) {
|
|
30503
31236
|
this.injector = injector;
|
|
30504
31237
|
this.fields = {
|
|
30505
|
-
|
|
31238
|
+
organization: new OrganizationSearchField(this.injector),
|
|
30506
31239
|
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
30507
31240
|
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
30508
31241
|
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
@@ -30515,6 +31248,8 @@ class FieldsService {
|
|
|
30515
31248
|
q: new FullTextSearchField(),
|
|
30516
31249
|
license: new LicenseSearchField(this.injector),
|
|
30517
31250
|
owner: new OwnerSearchField(this.injector),
|
|
31251
|
+
producerOrg: new MultilingualSearchField('originatorOrgForResourceObject', this.injector, 'asc', 'key'),
|
|
31252
|
+
publisherOrg: new MultilingualSearchField('distributorOrgForResourceObject', this.injector, 'asc', 'key'),
|
|
30518
31253
|
};
|
|
30519
31254
|
}
|
|
30520
31255
|
getAvailableValues(fieldName) {
|
|
@@ -30594,7 +31329,7 @@ class FeatureSearchModule {
|
|
|
30594
31329
|
ResultsHitsContainerComponent,
|
|
30595
31330
|
SearchStateContainerDirective,
|
|
30596
31331
|
FavoriteStarComponent,
|
|
30597
|
-
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$
|
|
31332
|
+
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, HttpClientModule,
|
|
30598
31333
|
HttpClientXsrfModule,
|
|
30599
31334
|
UiSearchModule,
|
|
30600
31335
|
UiInputsModule,
|
|
@@ -30685,13 +31420,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
30685
31420
|
}]
|
|
30686
31421
|
}] });
|
|
30687
31422
|
|
|
31423
|
+
class NotificationsService {
|
|
31424
|
+
constructor() {
|
|
31425
|
+
this.notifications$ = new BehaviorSubject([]);
|
|
31426
|
+
}
|
|
31427
|
+
showNotification(content, timeoutMs) {
|
|
31428
|
+
const id = Math.floor(Math.random() * 1000000);
|
|
31429
|
+
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31430
|
+
if (typeof timeoutMs === 'undefined')
|
|
31431
|
+
return;
|
|
31432
|
+
setTimeout(() => {
|
|
31433
|
+
this.removeNotificationById(id);
|
|
31434
|
+
}, timeoutMs);
|
|
31435
|
+
}
|
|
31436
|
+
removeNotificationById(id) {
|
|
31437
|
+
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31438
|
+
}
|
|
31439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31440
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31441
|
+
}
|
|
31442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31443
|
+
type: Injectable,
|
|
31444
|
+
args: [{
|
|
31445
|
+
providedIn: 'root',
|
|
31446
|
+
}]
|
|
31447
|
+
}] });
|
|
31448
|
+
|
|
31449
|
+
class FeatureNotificationsModule {
|
|
31450
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31451
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31452
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31453
|
+
}
|
|
31454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31455
|
+
type: NgModule,
|
|
31456
|
+
args: [{
|
|
31457
|
+
declarations: [],
|
|
31458
|
+
exports: [],
|
|
31459
|
+
imports: [],
|
|
31460
|
+
providers: [NotificationsService],
|
|
31461
|
+
}]
|
|
31462
|
+
}] });
|
|
31463
|
+
|
|
31464
|
+
class NotificationsContainerComponent {
|
|
31465
|
+
constructor(notificationsService) {
|
|
31466
|
+
this.notificationsService = notificationsService;
|
|
31467
|
+
}
|
|
31468
|
+
trackById(index, notification) {
|
|
31469
|
+
return notification.id;
|
|
31470
|
+
}
|
|
31471
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31472
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
|
|
31473
|
+
trigger('enterExit', [
|
|
31474
|
+
transition(':enter', [
|
|
31475
|
+
animate('150ms', keyframes([
|
|
31476
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31477
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31478
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31479
|
+
])),
|
|
31480
|
+
]),
|
|
31481
|
+
transition(':leave', [
|
|
31482
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31483
|
+
]),
|
|
31484
|
+
]),
|
|
31485
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31486
|
+
}
|
|
31487
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31488
|
+
type: Component,
|
|
31489
|
+
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31490
|
+
trigger('enterExit', [
|
|
31491
|
+
transition(':enter', [
|
|
31492
|
+
animate('150ms', keyframes([
|
|
31493
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31494
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31495
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31496
|
+
])),
|
|
31497
|
+
]),
|
|
31498
|
+
transition(':leave', [
|
|
31499
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31500
|
+
]),
|
|
31501
|
+
]),
|
|
31502
|
+
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
31503
|
+
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31504
|
+
|
|
30688
31505
|
class ResultsTableContainerComponent {
|
|
30689
|
-
constructor(searchFacade, searchService, selectionService, recordsRepository) {
|
|
31506
|
+
constructor(searchFacade, searchService, selectionService, recordsRepository, notificationsService, translateService) {
|
|
30690
31507
|
this.searchFacade = searchFacade;
|
|
30691
31508
|
this.searchService = searchService;
|
|
30692
31509
|
this.selectionService = selectionService;
|
|
30693
31510
|
this.recordsRepository = recordsRepository;
|
|
31511
|
+
this.notificationsService = notificationsService;
|
|
31512
|
+
this.translateService = translateService;
|
|
30694
31513
|
this.recordClick = new EventEmitter();
|
|
31514
|
+
this.duplicateRecord = new EventEmitter();
|
|
31515
|
+
this.subscription = new Subscription();
|
|
30695
31516
|
this.records$ = this.searchFacade.results$;
|
|
30696
31517
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
30697
31518
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
@@ -30700,6 +31521,31 @@ class ResultsTableContainerComponent {
|
|
|
30700
31521
|
handleRecordClick(item) {
|
|
30701
31522
|
this.recordClick.emit(item);
|
|
30702
31523
|
}
|
|
31524
|
+
handleDuplicateRecord(item) {
|
|
31525
|
+
this.duplicateRecord.emit(item);
|
|
31526
|
+
}
|
|
31527
|
+
async handleDeleteRecord(item) {
|
|
31528
|
+
const uniqueIdentifier = item.uniqueIdentifier;
|
|
31529
|
+
this.subscription.add(this.recordsRepository.deleteRecord(uniqueIdentifier).subscribe({
|
|
31530
|
+
next: () => {
|
|
31531
|
+
this.recordsRepository.clearRecordDraft(uniqueIdentifier);
|
|
31532
|
+
this.searchFacade.requestNewResults();
|
|
31533
|
+
this.notificationsService.showNotification({
|
|
31534
|
+
type: 'success',
|
|
31535
|
+
title: this.translateService.instant('editor.record.deleteSuccess.title'),
|
|
31536
|
+
text: `${this.translateService.instant('editor.record.deleteSuccess.body')}`,
|
|
31537
|
+
}, 2500);
|
|
31538
|
+
},
|
|
31539
|
+
error: (error) => {
|
|
31540
|
+
this.notificationsService.showNotification({
|
|
31541
|
+
type: 'error',
|
|
31542
|
+
title: this.translateService.instant('editor.record.deleteError.title'),
|
|
31543
|
+
text: `${this.translateService.instant('editor.record.deleteError.body')} ${error}`,
|
|
31544
|
+
closeMessage: this.translateService.instant('editor.record.deleteError.closeMessage'),
|
|
31545
|
+
});
|
|
31546
|
+
},
|
|
31547
|
+
}));
|
|
31548
|
+
}
|
|
30703
31549
|
handleSortByChange(col, order) {
|
|
30704
31550
|
this.searchService.setSortBy([order, col]);
|
|
30705
31551
|
}
|
|
@@ -30711,13 +31557,18 @@ class ResultsTableContainerComponent {
|
|
|
30711
31557
|
this.selectionService.selectRecords(records);
|
|
30712
31558
|
}
|
|
30713
31559
|
}
|
|
30714
|
-
|
|
30715
|
-
|
|
31560
|
+
ngOnDestroy() {
|
|
31561
|
+
this.subscription.unsubscribe();
|
|
31562
|
+
}
|
|
31563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }, { token: NotificationsService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\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: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "recordsSelectedChange"] }] }); }
|
|
30716
31565
|
}
|
|
30717
31566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
30718
31567
|
type: Component,
|
|
30719
|
-
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [
|
|
30720
|
-
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
|
|
31568
|
+
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\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" }]
|
|
31569
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }]; }, propDecorators: { recordClick: [{
|
|
31570
|
+
type: Output
|
|
31571
|
+
}], duplicateRecord: [{
|
|
30721
31572
|
type: Output
|
|
30722
31573
|
}] } });
|
|
30723
31574
|
|
|
@@ -31018,7 +31869,7 @@ class LayersPanelComponent {
|
|
|
31018
31869
|
this.mapFacade.addLayer(layer);
|
|
31019
31870
|
}
|
|
31020
31871
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31021
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$
|
|
31872
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31022
31873
|
}
|
|
31023
31874
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
31024
31875
|
type: Component,
|
|
@@ -31029,12 +31880,12 @@ class MapEffects {
|
|
|
31029
31880
|
constructor(actions$) {
|
|
31030
31881
|
this.actions$ = actions$;
|
|
31031
31882
|
}
|
|
31032
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, deps: [{ token: i1$
|
|
31883
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, deps: [{ token: i1$9.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31033
31884
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects }); }
|
|
31034
31885
|
}
|
|
31035
31886
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, decorators: [{
|
|
31036
31887
|
type: Injectable
|
|
31037
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
31888
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }]; } });
|
|
31038
31889
|
|
|
31039
31890
|
class MapContainerComponent {
|
|
31040
31891
|
constructor(mapFacade) {
|
|
@@ -31187,7 +32038,7 @@ class FeatureMapModule {
|
|
|
31187
32038
|
MatIconModule,
|
|
31188
32039
|
MatTabsModule,
|
|
31189
32040
|
TranslateModule,
|
|
31190
|
-
FeatureSearchModule, i1$2.StoreFeatureModule, i1$
|
|
32041
|
+
FeatureSearchModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiElementsModule,
|
|
31191
32042
|
UiInputsModule,
|
|
31192
32043
|
AddLayerFromOgcApiComponent], exports: [MapContextComponent,
|
|
31193
32044
|
MapInstanceDirective,
|
|
@@ -31311,88 +32162,6 @@ const DEFAULT_STYLE_HL_FIXTURE = new Style$1({
|
|
|
31311
32162
|
}),
|
|
31312
32163
|
});
|
|
31313
32164
|
|
|
31314
|
-
class NotificationsService {
|
|
31315
|
-
constructor() {
|
|
31316
|
-
this.notifications$ = new BehaviorSubject([]);
|
|
31317
|
-
}
|
|
31318
|
-
showNotification(content, timeoutMs) {
|
|
31319
|
-
const id = Math.floor(Math.random() * 1000000);
|
|
31320
|
-
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31321
|
-
if (typeof timeoutMs === 'undefined')
|
|
31322
|
-
return;
|
|
31323
|
-
setTimeout(() => {
|
|
31324
|
-
this.removeNotificationById(id);
|
|
31325
|
-
}, timeoutMs);
|
|
31326
|
-
}
|
|
31327
|
-
removeNotificationById(id) {
|
|
31328
|
-
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31329
|
-
}
|
|
31330
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31331
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31332
|
-
}
|
|
31333
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31334
|
-
type: Injectable,
|
|
31335
|
-
args: [{
|
|
31336
|
-
providedIn: 'root',
|
|
31337
|
-
}]
|
|
31338
|
-
}] });
|
|
31339
|
-
|
|
31340
|
-
class FeatureNotificationsModule {
|
|
31341
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31342
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31343
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31344
|
-
}
|
|
31345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31346
|
-
type: NgModule,
|
|
31347
|
-
args: [{
|
|
31348
|
-
declarations: [],
|
|
31349
|
-
exports: [],
|
|
31350
|
-
imports: [],
|
|
31351
|
-
providers: [NotificationsService],
|
|
31352
|
-
}]
|
|
31353
|
-
}] });
|
|
31354
|
-
|
|
31355
|
-
class NotificationsContainerComponent {
|
|
31356
|
-
constructor(notificationsService) {
|
|
31357
|
-
this.notificationsService = notificationsService;
|
|
31358
|
-
}
|
|
31359
|
-
trackById(index, notification) {
|
|
31360
|
-
return notification.id;
|
|
31361
|
-
}
|
|
31362
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31363
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
|
|
31364
|
-
trigger('enterExit', [
|
|
31365
|
-
transition(':enter', [
|
|
31366
|
-
animate('150ms', keyframes([
|
|
31367
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31368
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31369
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31370
|
-
])),
|
|
31371
|
-
]),
|
|
31372
|
-
transition(':leave', [
|
|
31373
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31374
|
-
]),
|
|
31375
|
-
]),
|
|
31376
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31377
|
-
}
|
|
31378
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31379
|
-
type: Component,
|
|
31380
|
-
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31381
|
-
trigger('enterExit', [
|
|
31382
|
-
transition(':enter', [
|
|
31383
|
-
animate('150ms', keyframes([
|
|
31384
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31385
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31386
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31387
|
-
])),
|
|
31388
|
-
]),
|
|
31389
|
-
transition(':leave', [
|
|
31390
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31391
|
-
]),
|
|
31392
|
-
]),
|
|
31393
|
-
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
31394
|
-
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31395
|
-
|
|
31396
32165
|
/*
|
|
31397
32166
|
Metadata actions
|
|
31398
32167
|
*/
|
|
@@ -31760,7 +32529,7 @@ class TableComponent {
|
|
|
31760
32529
|
return rowIdPrefix + id;
|
|
31761
32530
|
}
|
|
31762
32531
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31763
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\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 </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 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</div>\n", styles: ["table{width:100%;background:white}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:whitesmoke}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)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$
|
|
32532
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\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 </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 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</div>\n", styles: ["table{width:100%;background:white}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:whitesmoke}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)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$a.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$a.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$a.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$a.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$a.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$a.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$a.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$a.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$a.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$a.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$3.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31764
32533
|
}
|
|
31765
32534
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
31766
32535
|
type: Component,
|
|
@@ -33226,12 +33995,12 @@ class MdViewEffects {
|
|
|
33226
33995
|
}));
|
|
33227
33996
|
})))));
|
|
33228
33997
|
}
|
|
33229
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$
|
|
33998
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$9.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33230
33999
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects }); }
|
|
33231
34000
|
}
|
|
33232
34001
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
33233
34002
|
type: Injectable
|
|
33234
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
34003
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
33235
34004
|
|
|
33236
34005
|
marker('externalviewer.dataset.unnamed');
|
|
33237
34006
|
class ExternalViewerButtonComponent {
|
|
@@ -33856,9 +34625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
33856
34625
|
class RecordsService {
|
|
33857
34626
|
constructor(recordsRepository) {
|
|
33858
34627
|
this.recordsRepository = recordsRepository;
|
|
33859
|
-
this.recordsCount$ = this.recordsRepository
|
|
33860
|
-
.getMatchesCount({})
|
|
33861
|
-
.pipe(shareReplay(1), catchError(() => of(0)));
|
|
34628
|
+
this.recordsCount$ = of(true).pipe(switchMap(() => this.recordsRepository.getMatchesCount({})), shareReplay(1));
|
|
33862
34629
|
}
|
|
33863
34630
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, deps: [{ token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33864
34631
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, providedIn: 'root' }); }
|
|
@@ -33908,37 +34675,54 @@ const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
|
33908
34675
|
|
|
33909
34676
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
33910
34677
|
class DataViewPermalinkComponent {
|
|
34678
|
+
set viewType(value) {
|
|
34679
|
+
this.viewType$.next(value);
|
|
34680
|
+
}
|
|
33911
34681
|
constructor(config, wcEmbedderBaseUrl, version, facade) {
|
|
33912
34682
|
this.config = config;
|
|
33913
34683
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
33914
34684
|
this.version = version;
|
|
33915
34685
|
this.facade = facade;
|
|
34686
|
+
this.viewType$ = new BehaviorSubject('map');
|
|
33916
34687
|
this.permalinkUrl$ = combineLatest([
|
|
34688
|
+
this.viewType$,
|
|
33917
34689
|
this.facade.chartConfig$,
|
|
33918
34690
|
this.facade.metadata$,
|
|
33919
|
-
]).pipe(map$2(([config, metadata]) => {
|
|
33920
|
-
|
|
33921
|
-
|
|
33922
|
-
|
|
33923
|
-
|
|
33924
|
-
|
|
33925
|
-
|
|
33926
|
-
|
|
33927
|
-
|
|
33928
|
-
|
|
33929
|
-
|
|
33930
|
-
|
|
33931
|
-
|
|
33932
|
-
|
|
33933
|
-
|
|
33934
|
-
url.searchParams.append('a', `chart-type=${chartType}`);
|
|
33935
|
-
return url.toString();
|
|
34691
|
+
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
34692
|
+
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
34693
|
+
url.searchParams.set('v', `${this.version}`);
|
|
34694
|
+
if (viewType === 'chart') {
|
|
34695
|
+
if (config) {
|
|
34696
|
+
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
34697
|
+
url.searchParams.append('e', `gn-dataset-view-chart`);
|
|
34698
|
+
url.searchParams.append('a', `aggregation=${aggregation}`);
|
|
34699
|
+
url.searchParams.append('a', `x-property=${xProperty}`);
|
|
34700
|
+
url.searchParams.append('a', `y-property=${yProperty}`);
|
|
34701
|
+
url.searchParams.append('a', `chart-type=${chartType}`);
|
|
34702
|
+
}
|
|
34703
|
+
else {
|
|
34704
|
+
return '';
|
|
34705
|
+
}
|
|
33936
34706
|
}
|
|
33937
|
-
|
|
34707
|
+
else if (viewType === 'table') {
|
|
34708
|
+
// table
|
|
34709
|
+
url.searchParams.append('e', `gn-dataset-view-table`);
|
|
34710
|
+
}
|
|
34711
|
+
else {
|
|
34712
|
+
// map
|
|
34713
|
+
url.searchParams.append('e', `gn-dataset-view-map`);
|
|
34714
|
+
}
|
|
34715
|
+
url.searchParams.append('a', `api-url=${this.config.basePath}`);
|
|
34716
|
+
url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
|
|
34717
|
+
url.searchParams.append('a', `primary-color=#0f4395`);
|
|
34718
|
+
url.searchParams.append('a', `secondary-color=#8bc832`);
|
|
34719
|
+
url.searchParams.append('a', `main-color=#555`);
|
|
34720
|
+
url.searchParams.append('a', `background-color=#fdfbff`);
|
|
34721
|
+
return url.toString();
|
|
33938
34722
|
}));
|
|
33939
34723
|
}
|
|
33940
34724
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: GN_UI_VERSION }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33941
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34725
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33942
34726
|
}
|
|
33943
34727
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
33944
34728
|
type: Component,
|
|
@@ -33954,37 +34738,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
33954
34738
|
}] }, { type: undefined, decorators: [{
|
|
33955
34739
|
type: Inject,
|
|
33956
34740
|
args: [GN_UI_VERSION]
|
|
33957
|
-
}] }, { type: MdViewFacade }]; }
|
|
34741
|
+
}] }, { type: MdViewFacade }]; }, propDecorators: { viewType: [{
|
|
34742
|
+
type: Input
|
|
34743
|
+
}] } });
|
|
33958
34744
|
|
|
33959
34745
|
class DataViewWebComponentComponent {
|
|
34746
|
+
set viewType(value) {
|
|
34747
|
+
this.viewType$.next(value);
|
|
34748
|
+
}
|
|
33960
34749
|
constructor(config, version, facade) {
|
|
33961
34750
|
this.config = config;
|
|
33962
34751
|
this.version = version;
|
|
33963
34752
|
this.facade = facade;
|
|
33964
|
-
this.
|
|
33965
|
-
|
|
33966
|
-
|
|
34753
|
+
this.viewType$ = new BehaviorSubject('map');
|
|
34754
|
+
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
34755
|
+
if (viewType === 'chart') {
|
|
34756
|
+
if (config) {
|
|
34757
|
+
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
34758
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
|
|
34759
|
+
<gn-dataset-view-chart
|
|
34760
|
+
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
34761
|
+
dataset-id="${metadata.uniqueIdentifier}"
|
|
34762
|
+
aggregation="${aggregation}"
|
|
34763
|
+
x-property="${xProperty}"
|
|
34764
|
+
y-property="${yProperty}"
|
|
34765
|
+
chart-type="${chartType}"
|
|
34766
|
+
primary-color="#0f4395"
|
|
34767
|
+
secondary-color="#8bc832"
|
|
34768
|
+
main-color="#555"
|
|
34769
|
+
background-color="#fdfbff"
|
|
34770
|
+
main-font="'Inter', sans-serif"
|
|
34771
|
+
title-font="'DM Serif Display', serif"
|
|
34772
|
+
></gn-dataset-view-chart>`;
|
|
34773
|
+
}
|
|
34774
|
+
return '';
|
|
34775
|
+
}
|
|
34776
|
+
else if (viewType === 'table') {
|
|
33967
34777
|
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
|
|
33968
|
-
<gn-dataset-view-
|
|
34778
|
+
<gn-dataset-view-table
|
|
34779
|
+
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
34780
|
+
dataset-id="${metadata.uniqueIdentifier}"
|
|
34781
|
+
primary-color="#0f4395"
|
|
34782
|
+
secondary-color="#8bc832"
|
|
34783
|
+
main-color="#555"
|
|
34784
|
+
background-color="#fdfbff"
|
|
34785
|
+
main-font="'Inter', sans-serif"
|
|
34786
|
+
title-font="'DM Serif Display', serif"
|
|
34787
|
+
></gn-dataset-view-table>`;
|
|
34788
|
+
}
|
|
34789
|
+
else {
|
|
34790
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
|
|
34791
|
+
<gn-dataset-view-map
|
|
33969
34792
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
33970
34793
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
33971
|
-
aggregation="${aggregation}"
|
|
33972
|
-
x-property="${xProperty}"
|
|
33973
|
-
y-property="${yProperty}"
|
|
33974
|
-
chart-type="${chartType}"
|
|
33975
34794
|
primary-color="#0f4395"
|
|
33976
34795
|
secondary-color="#8bc832"
|
|
33977
34796
|
main-color="#555"
|
|
33978
34797
|
background-color="#fdfbff"
|
|
33979
34798
|
main-font="'Inter', sans-serif"
|
|
33980
34799
|
title-font="'DM Serif Display', serif"
|
|
33981
|
-
></gn-dataset-view-
|
|
34800
|
+
></gn-dataset-view-map>`;
|
|
33982
34801
|
}
|
|
33983
|
-
return '';
|
|
33984
34802
|
}));
|
|
33985
34803
|
}
|
|
33986
34804
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: GN_UI_VERSION }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33987
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34805
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33988
34806
|
}
|
|
33989
34807
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
33990
34808
|
type: Component,
|
|
@@ -33995,24 +34813,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
33995
34813
|
}] }, { type: undefined, decorators: [{
|
|
33996
34814
|
type: Inject,
|
|
33997
34815
|
args: [GN_UI_VERSION]
|
|
33998
|
-
}] }, { type: MdViewFacade }]; }
|
|
34816
|
+
}] }, { type: MdViewFacade }]; }, propDecorators: { viewType: [{
|
|
34817
|
+
type: Input
|
|
34818
|
+
}] } });
|
|
33999
34819
|
|
|
34000
34820
|
class DataViewShareComponent {
|
|
34821
|
+
set viewType(value) {
|
|
34822
|
+
this._viewType = value;
|
|
34823
|
+
}
|
|
34824
|
+
get viewType() {
|
|
34825
|
+
return this._viewType;
|
|
34826
|
+
}
|
|
34001
34827
|
constructor(wcEmbedderBaseUrl) {
|
|
34002
34828
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
34003
34829
|
}
|
|
34004
34830
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34005
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$
|
|
34831
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink\n [viewType]=\"viewType\"\n ></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component\n [viewType]=\"viewType\"\n ></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", inputs: ["viewType"] }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: ["viewType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34006
34832
|
}
|
|
34007
34833
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
34008
34834
|
type: Component,
|
|
34009
|
-
args: [{ selector: 'gn-ui-data-view-share', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"] }]
|
|
34835
|
+
args: [{ selector: 'gn-ui-data-view-share', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink\n [viewType]=\"viewType\"\n ></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component\n [viewType]=\"viewType\"\n ></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"] }]
|
|
34010
34836
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
34011
34837
|
type: Optional
|
|
34012
34838
|
}, {
|
|
34013
34839
|
type: Inject,
|
|
34014
34840
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
34015
|
-
}] }]; }
|
|
34841
|
+
}] }]; }, propDecorators: { viewType: [{
|
|
34842
|
+
type: Input
|
|
34843
|
+
}] } });
|
|
34016
34844
|
|
|
34017
34845
|
class FeatureRecordModule {
|
|
34018
34846
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureRecordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -34021,7 +34849,7 @@ class FeatureRecordModule {
|
|
|
34021
34849
|
ExternalViewerButtonComponent,
|
|
34022
34850
|
DataViewPermalinkComponent,
|
|
34023
34851
|
DataViewWebComponentComponent,
|
|
34024
|
-
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$
|
|
34852
|
+
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiLayoutModule,
|
|
34025
34853
|
FeatureMapModule,
|
|
34026
34854
|
FeatureCatalogModule,
|
|
34027
34855
|
UiMapModule,
|
|
@@ -34102,75 +34930,175 @@ const saveRecord = createAction('[Editor] Save record');
|
|
|
34102
34930
|
const saveRecordSuccess = createAction('[Editor] Save record success');
|
|
34103
34931
|
const saveRecordFailure = createAction('[Editor] Save record failure', props());
|
|
34104
34932
|
const draftSaveSuccess = createAction('[Editor] Draft save success');
|
|
34933
|
+
const setCurrentPage = createAction('[Editor] Set current page', props());
|
|
34105
34934
|
|
|
34106
|
-
|
|
34107
|
-
|
|
34108
|
-
|
|
34109
|
-
|
|
34110
|
-
|
|
34111
|
-
|
|
34112
|
-
|
|
34935
|
+
/**
|
|
34936
|
+
* This file contains the configuration of the fields that will be displayed in the editor.
|
|
34937
|
+
* To add a new field, you need to create a new EditorField object in the fields part of this file.
|
|
34938
|
+
* Then add it to the corresponding section in the sections part of this file.
|
|
34939
|
+
* Finally, add the section to the corresponding page in the pages part of this file.
|
|
34940
|
+
*/
|
|
34941
|
+
/************************************************************
|
|
34942
|
+
*************** FIELDS *****************
|
|
34943
|
+
************************************************************
|
|
34944
|
+
*/
|
|
34945
|
+
const RECORD_LICENSE_FIELD = {
|
|
34946
|
+
model: 'licenses',
|
|
34947
|
+
formFieldConfig: {
|
|
34948
|
+
labelKey: marker('editor.record.form.field.license'),
|
|
34113
34949
|
},
|
|
34114
|
-
|
|
34115
|
-
|
|
34116
|
-
|
|
34117
|
-
|
|
34118
|
-
|
|
34119
|
-
},
|
|
34950
|
+
};
|
|
34951
|
+
const RECORD_KEYWORDS_FIELD = {
|
|
34952
|
+
model: 'keywords',
|
|
34953
|
+
formFieldConfig: {
|
|
34954
|
+
labelKey: marker('editor.record.form.field.keywords'),
|
|
34120
34955
|
},
|
|
34121
|
-
|
|
34122
|
-
|
|
34123
|
-
|
|
34124
|
-
|
|
34125
|
-
|
|
34126
|
-
|
|
34127
|
-
},
|
|
34956
|
+
};
|
|
34957
|
+
const RECORD_UNIQUE_IDENTIFIER_FIELD = {
|
|
34958
|
+
model: 'uniqueIdentifier',
|
|
34959
|
+
formFieldConfig: {
|
|
34960
|
+
labelKey: marker('editor.record.form.field.uniqueIdentifier'),
|
|
34961
|
+
locked: true,
|
|
34128
34962
|
},
|
|
34129
|
-
|
|
34130
|
-
|
|
34131
|
-
|
|
34132
|
-
|
|
34133
|
-
|
|
34134
|
-
locked: true,
|
|
34135
|
-
},
|
|
34136
|
-
onSaveProcess: '${dateNow()}',
|
|
34963
|
+
};
|
|
34964
|
+
const RECORD_RESOURCE_UPDATED_FIELD = {
|
|
34965
|
+
model: 'resourceUpdated',
|
|
34966
|
+
formFieldConfig: {
|
|
34967
|
+
labelKey: marker('editor.record.form.field.resourceUpdated'),
|
|
34137
34968
|
},
|
|
34138
|
-
|
|
34139
|
-
|
|
34140
|
-
|
|
34141
|
-
|
|
34142
|
-
|
|
34143
|
-
|
|
34969
|
+
};
|
|
34970
|
+
const RECORD_UPDATED_FIELD = {
|
|
34971
|
+
model: 'recordUpdated',
|
|
34972
|
+
formFieldConfig: {
|
|
34973
|
+
labelKey: marker('editor.record.form.field.recordUpdated'),
|
|
34974
|
+
locked: true,
|
|
34144
34975
|
},
|
|
34145
|
-
{
|
|
34146
|
-
|
|
34147
|
-
|
|
34148
|
-
|
|
34149
|
-
|
|
34150
|
-
|
|
34976
|
+
onSaveProcess: '${dateNow()}',
|
|
34977
|
+
};
|
|
34978
|
+
const RECORD_UPDATE_FREQUENCY_FIELD = {
|
|
34979
|
+
model: 'updateFrequency',
|
|
34980
|
+
formFieldConfig: {
|
|
34981
|
+
labelKey: marker('editor.record.form.field.updateFrequency'),
|
|
34151
34982
|
},
|
|
34152
|
-
|
|
34153
|
-
|
|
34154
|
-
|
|
34155
|
-
|
|
34156
|
-
|
|
34157
|
-
},
|
|
34983
|
+
};
|
|
34984
|
+
const RECORD_TEMPORAL_EXTENTS_FIELD = {
|
|
34985
|
+
model: 'temporalExtents',
|
|
34986
|
+
formFieldConfig: {
|
|
34987
|
+
labelKey: marker('editor.record.form.field.temporalExtents'),
|
|
34158
34988
|
},
|
|
34159
|
-
|
|
34160
|
-
|
|
34161
|
-
|
|
34162
|
-
|
|
34163
|
-
|
|
34164
|
-
},
|
|
34989
|
+
};
|
|
34990
|
+
const RECORD_TITLE_FIELD = {
|
|
34991
|
+
model: 'title',
|
|
34992
|
+
formFieldConfig: {
|
|
34993
|
+
labelKey: marker('editor.record.form.field.title'),
|
|
34165
34994
|
},
|
|
34166
|
-
|
|
34167
|
-
|
|
34168
|
-
|
|
34169
|
-
|
|
34170
|
-
|
|
34171
|
-
},
|
|
34995
|
+
};
|
|
34996
|
+
const RECORD_ABSTRACT_FIELD = {
|
|
34997
|
+
model: 'abstract',
|
|
34998
|
+
formFieldConfig: {
|
|
34999
|
+
labelKey: marker('editor.record.form.field.abstract'),
|
|
34172
35000
|
},
|
|
34173
|
-
|
|
35001
|
+
};
|
|
35002
|
+
const CONTACTS_FOR_RESOURCE_FIELD = {
|
|
35003
|
+
model: 'contactsForResource',
|
|
35004
|
+
formFieldConfig: {
|
|
35005
|
+
labelKey: '',
|
|
35006
|
+
},
|
|
35007
|
+
};
|
|
35008
|
+
const RECORD_GRAPHICAL_OVERVIEW_FIELD = {
|
|
35009
|
+
model: 'overviews',
|
|
35010
|
+
formFieldConfig: {
|
|
35011
|
+
labelKey: marker('editor.record.form.field.overviews'),
|
|
35012
|
+
},
|
|
35013
|
+
};
|
|
35014
|
+
/************************************************************
|
|
35015
|
+
*************** SECTIONS *****************
|
|
35016
|
+
************************************************************
|
|
35017
|
+
*/
|
|
35018
|
+
const TITLE_SECTION = {
|
|
35019
|
+
hidden: false,
|
|
35020
|
+
fields: [
|
|
35021
|
+
RECORD_TITLE_FIELD,
|
|
35022
|
+
RECORD_ABSTRACT_FIELD,
|
|
35023
|
+
RECORD_GRAPHICAL_OVERVIEW_FIELD,
|
|
35024
|
+
],
|
|
35025
|
+
};
|
|
35026
|
+
const ABOUT_SECTION = {
|
|
35027
|
+
labelKey: marker('editor.record.form.section.about.label'),
|
|
35028
|
+
descriptionKey: marker('editor.record.form.section.about.description'),
|
|
35029
|
+
hidden: false,
|
|
35030
|
+
fields: [
|
|
35031
|
+
RECORD_UNIQUE_IDENTIFIER_FIELD,
|
|
35032
|
+
RECORD_RESOURCE_UPDATED_FIELD,
|
|
35033
|
+
RECORD_UPDATED_FIELD,
|
|
35034
|
+
RECORD_UPDATE_FREQUENCY_FIELD,
|
|
35035
|
+
RECORD_TEMPORAL_EXTENTS_FIELD,
|
|
35036
|
+
],
|
|
35037
|
+
};
|
|
35038
|
+
const GEOGRAPHICAL_COVERAGE_SECTION = {
|
|
35039
|
+
labelKey: marker('editor.record.form.section.geographicalCoverage.label'),
|
|
35040
|
+
hidden: false,
|
|
35041
|
+
fields: [],
|
|
35042
|
+
};
|
|
35043
|
+
const ASSOCIATED_RESOURCES_SECTION = {
|
|
35044
|
+
labelKey: marker('editor.record.form.section.associatedResources.label'),
|
|
35045
|
+
descriptionKey: marker('editor.record.form.section.associatedResources.description'),
|
|
35046
|
+
hidden: false,
|
|
35047
|
+
fields: [],
|
|
35048
|
+
};
|
|
35049
|
+
const ANNEXES_SECTION = {
|
|
35050
|
+
labelKey: marker('editor.record.form.section.annexes.label'),
|
|
35051
|
+
hidden: false,
|
|
35052
|
+
fields: [],
|
|
35053
|
+
};
|
|
35054
|
+
const CLASSIFICATION_SECTION = {
|
|
35055
|
+
labelKey: marker('editor.record.form.section.classification.label'),
|
|
35056
|
+
descriptionKey: marker('editor.record.form.section.classification.description'),
|
|
35057
|
+
hidden: false,
|
|
35058
|
+
fields: [RECORD_KEYWORDS_FIELD],
|
|
35059
|
+
};
|
|
35060
|
+
const USE_AND_ACCESS_CONDITIONS_SECTION = {
|
|
35061
|
+
labelKey: marker('editor.record.form.section.useAndAccessConditions.label'),
|
|
35062
|
+
hidden: false,
|
|
35063
|
+
fields: [RECORD_LICENSE_FIELD],
|
|
35064
|
+
};
|
|
35065
|
+
const DATA_MANAGERS_SECTION = {
|
|
35066
|
+
labelKey: marker('editor.record.form.section.dataManagers.label'),
|
|
35067
|
+
descriptionKey: marker('editor.record.form.section.dataManagers.description'),
|
|
35068
|
+
hidden: false,
|
|
35069
|
+
fields: [CONTACTS_FOR_RESOURCE_FIELD],
|
|
35070
|
+
};
|
|
35071
|
+
const DATA_POINT_OF_CONTACT_SECTION = {
|
|
35072
|
+
labelKey: marker('editor.record.form.section.dataPointOfContact.label'),
|
|
35073
|
+
descriptionKey: marker('editor.record.form.section.dataPointOfContact.description'),
|
|
35074
|
+
hidden: false,
|
|
35075
|
+
fields: [],
|
|
35076
|
+
};
|
|
35077
|
+
/************************************************************
|
|
35078
|
+
*************** PAGES *****************
|
|
35079
|
+
************************************************************
|
|
35080
|
+
*/
|
|
35081
|
+
const DEFAULT_CONFIGURATION = {
|
|
35082
|
+
pages: [
|
|
35083
|
+
{
|
|
35084
|
+
labelKey: marker('editor.record.form.page.description'),
|
|
35085
|
+
sections: [TITLE_SECTION, ABOUT_SECTION, GEOGRAPHICAL_COVERAGE_SECTION],
|
|
35086
|
+
},
|
|
35087
|
+
{
|
|
35088
|
+
labelKey: marker('editor.record.form.page.ressources'),
|
|
35089
|
+
sections: [ASSOCIATED_RESOURCES_SECTION, ANNEXES_SECTION],
|
|
35090
|
+
},
|
|
35091
|
+
{
|
|
35092
|
+
labelKey: marker('editor.record.form.page.accessAndContact'),
|
|
35093
|
+
sections: [
|
|
35094
|
+
CLASSIFICATION_SECTION,
|
|
35095
|
+
USE_AND_ACCESS_CONDITIONS_SECTION,
|
|
35096
|
+
DATA_MANAGERS_SECTION,
|
|
35097
|
+
DATA_POINT_OF_CONTACT_SECTION,
|
|
35098
|
+
],
|
|
35099
|
+
},
|
|
35100
|
+
],
|
|
35101
|
+
};
|
|
34174
35102
|
|
|
34175
35103
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
34176
35104
|
const initialEditorState = {
|
|
@@ -34180,7 +35108,8 @@ const initialEditorState = {
|
|
|
34180
35108
|
saving: false,
|
|
34181
35109
|
saveError: null,
|
|
34182
35110
|
changedSinceSave: false,
|
|
34183
|
-
|
|
35111
|
+
editorConfig: DEFAULT_CONFIGURATION,
|
|
35112
|
+
currentPage: 0,
|
|
34184
35113
|
};
|
|
34185
35114
|
const reducer = createReducer(initialEditorState, on(openRecord, (state, { record, recordSource, alreadySavedOnce }) => ({
|
|
34186
35115
|
...state,
|
|
@@ -34210,6 +35139,9 @@ const reducer = createReducer(initialEditorState, on(openRecord, (state, { recor
|
|
|
34210
35139
|
})), on(markRecordAsChanged, (state) => ({
|
|
34211
35140
|
...state,
|
|
34212
35141
|
changedSinceSave: true,
|
|
35142
|
+
})), on(setCurrentPage, (state, { page }) => ({
|
|
35143
|
+
...state,
|
|
35144
|
+
currentPage: page,
|
|
34213
35145
|
})));
|
|
34214
35146
|
function editorReducer(state, action) {
|
|
34215
35147
|
return reducer(state, action);
|
|
@@ -34222,11 +35154,21 @@ const selectRecordSaving = createSelector(selectEditorState, (state) => state.sa
|
|
|
34222
35154
|
const selectRecordSaveError = createSelector(selectEditorState, (state) => state.saveError);
|
|
34223
35155
|
const selectRecordChangedSinceSave = createSelector(selectEditorState, (state) => state.changedSinceSave);
|
|
34224
35156
|
const selectRecordAlreadySavedOnce = createSelector(selectEditorState, (state) => state.alreadySavedOnce);
|
|
34225
|
-
const
|
|
34226
|
-
const
|
|
34227
|
-
|
|
34228
|
-
|
|
34229
|
-
|
|
35157
|
+
const selectEditorConfig = createSelector(selectEditorState, (state) => state.editorConfig);
|
|
35158
|
+
const selectCurrentPage = createSelector(selectEditorState, (state) => state.currentPage);
|
|
35159
|
+
const selectRecordSections = createSelector(selectEditorState, (state) => {
|
|
35160
|
+
const currentPage = state.editorConfig.pages[state.currentPage];
|
|
35161
|
+
if (!currentPage) {
|
|
35162
|
+
return [];
|
|
35163
|
+
}
|
|
35164
|
+
return currentPage.sections.map((section) => ({
|
|
35165
|
+
...section,
|
|
35166
|
+
fieldsWithValues: section.fields.map((fieldConfig) => ({
|
|
35167
|
+
config: fieldConfig,
|
|
35168
|
+
value: state.record?.[fieldConfig.model] ?? null,
|
|
35169
|
+
})),
|
|
35170
|
+
}));
|
|
35171
|
+
});
|
|
34230
35172
|
|
|
34231
35173
|
class EditorFacade {
|
|
34232
35174
|
constructor() {
|
|
@@ -34239,8 +35181,10 @@ class EditorFacade {
|
|
|
34239
35181
|
this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter$1((error) => !!error));
|
|
34240
35182
|
this.saveSuccess$ = this.actions$.pipe(ofType(saveRecordSuccess));
|
|
34241
35183
|
this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
|
|
34242
|
-
this.
|
|
35184
|
+
this.currentSections$ = this.store.pipe(select(selectRecordSections));
|
|
34243
35185
|
this.draftSaveSuccess$ = this.actions$.pipe(ofType(draftSaveSuccess));
|
|
35186
|
+
this.currentPage$ = this.store.pipe(select(selectCurrentPage));
|
|
35187
|
+
this.editorConfig$ = this.store.pipe(select(selectEditorConfig));
|
|
34244
35188
|
}
|
|
34245
35189
|
openRecord(record, recordSource, alreadySavedOnce) {
|
|
34246
35190
|
this.store.dispatch(openRecord({ record, recordSource, alreadySavedOnce }));
|
|
@@ -34251,6 +35195,9 @@ class EditorFacade {
|
|
|
34251
35195
|
updateRecordField(field, value) {
|
|
34252
35196
|
this.store.dispatch(updateRecordField({ field, value }));
|
|
34253
35197
|
}
|
|
35198
|
+
setCurrentPage(page) {
|
|
35199
|
+
this.store.dispatch(setCurrentPage({ page }));
|
|
35200
|
+
}
|
|
34254
35201
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34255
35202
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade }); }
|
|
34256
35203
|
}
|
|
@@ -34278,12 +35225,13 @@ class EditorService {
|
|
|
34278
35225
|
// returns the record as it was when saved, alongside its source
|
|
34279
35226
|
saveRecord(record, fieldsConfig, generateNewUniqueIdentifier = false) {
|
|
34280
35227
|
const savedRecord = { ...record };
|
|
35228
|
+
const fields = fieldsConfig.pages.flatMap((page) => page.sections.flatMap((section) => section.fields));
|
|
34281
35229
|
// run onSave processes
|
|
34282
|
-
for (const field of
|
|
35230
|
+
for (const field of fields) {
|
|
34283
35231
|
if (field.onSaveProcess && field.model) {
|
|
34284
35232
|
const evaluator = evaluate(field.onSaveProcess);
|
|
34285
35233
|
savedRecord[field.model] = evaluator({
|
|
34286
|
-
|
|
35234
|
+
model: field.model,
|
|
34287
35235
|
value: record[field.model],
|
|
34288
35236
|
});
|
|
34289
35237
|
}
|
|
@@ -34320,7 +35268,7 @@ class EditorEffects {
|
|
|
34320
35268
|
this.editorService = inject(EditorService);
|
|
34321
35269
|
this.recordsRepository = inject(RecordsRepositoryInterface);
|
|
34322
35270
|
this.store = inject(Store);
|
|
34323
|
-
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(
|
|
35271
|
+
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectEditorConfig), this.store.select(selectRecordAlreadySavedOnce)), switchMap$1(([, record, fieldsConfig, alreadySavedOnce]) => this.editorService
|
|
34324
35272
|
.saveRecord(record, fieldsConfig, !alreadySavedOnce)
|
|
34325
35273
|
.pipe(switchMap$1(([record, recordSource]) => of(saveRecordSuccess(), openRecord({
|
|
34326
35274
|
record,
|
|
@@ -34561,7 +35509,7 @@ class WizardFieldComponent {
|
|
|
34561
35509
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
34562
35510
|
},
|
|
34563
35511
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
34564
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], 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 hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-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:white;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$3.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: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$
|
|
35512
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], 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 hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-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:white;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$3.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: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34565
35513
|
}
|
|
34566
35514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
34567
35515
|
type: Component,
|
|
@@ -34711,7 +35659,7 @@ class FeatureEditorModule {
|
|
|
34711
35659
|
MatNativeDateModule,
|
|
34712
35660
|
MatFormFieldModule,
|
|
34713
35661
|
HttpClientModule,
|
|
34714
|
-
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$
|
|
35662
|
+
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
34715
35663
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureEditorModule, providers: [EditorFacade, Gn4PlatformService], imports: [CommonModule,
|
|
34716
35664
|
UiInputsModule,
|
|
34717
35665
|
UiWidgetsModule,
|
|
@@ -34757,7 +35705,9 @@ class FormFieldKeywordsComponent {
|
|
|
34757
35705
|
return `${item.title} (${item.value.thesaurus?.name})`;
|
|
34758
35706
|
};
|
|
34759
35707
|
this.autoCompleteAction = (query) => {
|
|
34760
|
-
return this.platformService
|
|
35708
|
+
return this.platformService
|
|
35709
|
+
.searchKeywords(query, ['temporal', 'theme', 'other'])
|
|
35710
|
+
.pipe(map$2((keywords) => keywords.map((keyword) => {
|
|
34761
35711
|
return { title: keyword.label, value: keyword };
|
|
34762
35712
|
})));
|
|
34763
35713
|
};
|
|
@@ -34781,7 +35731,7 @@ class FormFieldKeywordsComponent {
|
|
|
34781
35731
|
this.control.setValue(removeKeywords);
|
|
34782
35732
|
}
|
|
34783
35733
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, deps: [{ token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34784
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [
|
|
35734
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n", styles: [""], 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$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34785
35735
|
}
|
|
34786
35736
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, decorators: [{
|
|
34787
35737
|
type: Component,
|
|
@@ -34791,7 +35741,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
34791
35741
|
CommonModule,
|
|
34792
35742
|
UiWidgetsModule,
|
|
34793
35743
|
AutocompleteComponent,
|
|
34794
|
-
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [
|
|
35744
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n" }]
|
|
34795
35745
|
}], ctorParameters: function () { return [{ type: PlatformServiceInterface }]; }, propDecorators: { control: [{
|
|
34796
35746
|
type: Input
|
|
34797
35747
|
}] } });
|
|
@@ -34939,7 +35889,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
34939
35889
|
}
|
|
34940
35890
|
resetValueFromInput(value) {
|
|
34941
35891
|
this.array.clear({ emitEvent: false });
|
|
34942
|
-
|
|
35892
|
+
let newElements = [];
|
|
34943
35893
|
value.forEach((v) => {
|
|
34944
35894
|
if ('start' in v && 'end' in v) {
|
|
34945
35895
|
const rangeControl = new FormControl({
|
|
@@ -34947,8 +35897,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
34947
35897
|
end: v.end,
|
|
34948
35898
|
});
|
|
34949
35899
|
this.array.push(rangeControl, { emitEvent: false });
|
|
34950
|
-
|
|
34951
|
-
...
|
|
35900
|
+
newElements = [
|
|
35901
|
+
...newElements,
|
|
34952
35902
|
{
|
|
34953
35903
|
component: FormFieldTemporalExtentsRangeComponent,
|
|
34954
35904
|
inputs: {
|
|
@@ -34960,8 +35910,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
34960
35910
|
else {
|
|
34961
35911
|
const dateControl = new FormControl({ start: v.start });
|
|
34962
35912
|
this.array.push(dateControl, { emitEvent: false });
|
|
34963
|
-
|
|
34964
|
-
...
|
|
35913
|
+
newElements = [
|
|
35914
|
+
...newElements,
|
|
34965
35915
|
{
|
|
34966
35916
|
component: FormFieldTemporalExtentsDateComponent,
|
|
34967
35917
|
inputs: {
|
|
@@ -34971,6 +35921,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
34971
35921
|
];
|
|
34972
35922
|
}
|
|
34973
35923
|
});
|
|
35924
|
+
this.elements = newElements;
|
|
34974
35925
|
}
|
|
34975
35926
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldTemporalExtentsComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34976
35927
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldTemporalExtentsComponent, isStandalone: true, selector: "gn-ui-form-field-temporal-extents", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-sortable-list\n [elements]=\"elements\"\n (elementsChange)=\"onElementsChange($event)\"\n [addOptions]=\"addOptions$ | async\"\n (add)=\"onAdd($event)\"\n></gn-ui-sortable-list>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elements", "addOptions"], outputs: ["elementsChange", "add"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -35224,13 +36175,399 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35224
36175
|
type: Input
|
|
35225
36176
|
}] } });
|
|
35226
36177
|
|
|
36178
|
+
class OverviewUploadComponent {
|
|
36179
|
+
constructor(recordsApiService, cd) {
|
|
36180
|
+
this.recordsApiService = recordsApiService;
|
|
36181
|
+
this.cd = cd;
|
|
36182
|
+
this.overviewChange = new EventEmitter();
|
|
36183
|
+
this.altTextChange = new EventEmitter();
|
|
36184
|
+
this.errorHandle = (error) => {
|
|
36185
|
+
console.error(error);
|
|
36186
|
+
this.resourceUrl = '';
|
|
36187
|
+
this.resourceAltText = '';
|
|
36188
|
+
this.resourceFileName = '';
|
|
36189
|
+
this.overviewChange.emit(null);
|
|
36190
|
+
this.cd.markForCheck();
|
|
36191
|
+
};
|
|
36192
|
+
}
|
|
36193
|
+
ngOnInit() {
|
|
36194
|
+
this.recordsApiService.getAllResources(this.metadataUuid).subscribe({
|
|
36195
|
+
next: (resources) => {
|
|
36196
|
+
if (resources && resources.length > 0) {
|
|
36197
|
+
this.resourceUrl = resources[0].url;
|
|
36198
|
+
this.resourceFileName = resources[0].filename;
|
|
36199
|
+
if (!this.resourceAltText) {
|
|
36200
|
+
this.resourceAltText = this.resourceFileName;
|
|
36201
|
+
}
|
|
36202
|
+
}
|
|
36203
|
+
else {
|
|
36204
|
+
this.resourceUrl = '';
|
|
36205
|
+
this.resourceAltText = '';
|
|
36206
|
+
this.resourceFileName = '';
|
|
36207
|
+
}
|
|
36208
|
+
this.cd.markForCheck();
|
|
36209
|
+
},
|
|
36210
|
+
error: this.errorHandle,
|
|
36211
|
+
});
|
|
36212
|
+
}
|
|
36213
|
+
handleFileChange(file) {
|
|
36214
|
+
this.recordsApiService
|
|
36215
|
+
.putResource(this.metadataUuid, file, 'public')
|
|
36216
|
+
.subscribe({
|
|
36217
|
+
next: (resource) => {
|
|
36218
|
+
this.resourceUrl = resource.url;
|
|
36219
|
+
this.resourceAltText = resource.filename;
|
|
36220
|
+
this.overviewChange.emit({
|
|
36221
|
+
url: new URL(resource.url),
|
|
36222
|
+
description: resource.filename,
|
|
36223
|
+
});
|
|
36224
|
+
this.cd.markForCheck();
|
|
36225
|
+
},
|
|
36226
|
+
error: this.errorHandle,
|
|
36227
|
+
});
|
|
36228
|
+
}
|
|
36229
|
+
handleUrlChange(url) {
|
|
36230
|
+
this.recordsApiService
|
|
36231
|
+
.putResourceFromURL(this.metadataUuid, url, 'public')
|
|
36232
|
+
.subscribe({
|
|
36233
|
+
next: (resource) => {
|
|
36234
|
+
this.resourceUrl = resource.url;
|
|
36235
|
+
this.resourceAltText = resource.filename;
|
|
36236
|
+
this.overviewChange.emit({
|
|
36237
|
+
url: new URL(resource.url),
|
|
36238
|
+
description: resource.filename,
|
|
36239
|
+
});
|
|
36240
|
+
this.cd.markForCheck();
|
|
36241
|
+
},
|
|
36242
|
+
error: this.errorHandle,
|
|
36243
|
+
});
|
|
36244
|
+
}
|
|
36245
|
+
handleAltTextChange(newAltText) {
|
|
36246
|
+
this.resourceAltText = newAltText;
|
|
36247
|
+
this.overviewChange.emit({
|
|
36248
|
+
url: new URL(this.resourceUrl),
|
|
36249
|
+
description: this.resourceAltText,
|
|
36250
|
+
});
|
|
36251
|
+
this.cd.markForCheck();
|
|
36252
|
+
}
|
|
36253
|
+
handleDelete() {
|
|
36254
|
+
//this.formControl.markAsDirty()
|
|
36255
|
+
this.recordsApiService
|
|
36256
|
+
.delResource(this.metadataUuid, this.resourceFileName)
|
|
36257
|
+
.subscribe({
|
|
36258
|
+
next: () => {
|
|
36259
|
+
this.resourceAltText = '';
|
|
36260
|
+
this.resourceUrl = '';
|
|
36261
|
+
this.overviewChange.emit(null);
|
|
36262
|
+
this.cd.markForCheck();
|
|
36263
|
+
},
|
|
36264
|
+
error: this.errorHandle,
|
|
36265
|
+
});
|
|
36266
|
+
}
|
|
36267
|
+
ngOnChanges(changes) {
|
|
36268
|
+
const overviewChanges = changes['formControl'];
|
|
36269
|
+
if (overviewChanges &&
|
|
36270
|
+
overviewChanges.currentValue !== overviewChanges.previousValue) {
|
|
36271
|
+
let overview;
|
|
36272
|
+
if (overviewChanges.currentValue.value &&
|
|
36273
|
+
overviewChanges.currentValue.value.length > 0) {
|
|
36274
|
+
overview = overviewChanges.currentValue.value[0];
|
|
36275
|
+
}
|
|
36276
|
+
else {
|
|
36277
|
+
return;
|
|
36278
|
+
}
|
|
36279
|
+
if (overview.description) {
|
|
36280
|
+
this.resourceAltText = overview.description;
|
|
36281
|
+
this.cd.markForCheck();
|
|
36282
|
+
}
|
|
36283
|
+
}
|
|
36284
|
+
}
|
|
36285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, deps: [{ token: RecordsApiService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OverviewUploadComponent, isStandalone: true, selector: "gn-ui-overview-upload", inputs: { metadataUuid: "metadataUuid", formControl: "formControl" }, outputs: { overviewChange: "overviewChange", altTextChange: "altTextChange" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-image-input\n [maxSizeMB]=\"5\"\n [previewUrl]=\"resourceUrl\"\n [altText]=\"resourceAltText\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n></gn-ui-image-input>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ImageInputComponent, selector: "gn-ui-image-input", inputs: ["maxSizeMB", "previewUrl", "altText", "uploadProgress", "uploadError"], outputs: ["fileChange", "urlChange", "uploadCancel", "delete", "altTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36287
|
+
}
|
|
36288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, decorators: [{
|
|
36289
|
+
type: Component,
|
|
36290
|
+
args: [{ selector: 'gn-ui-overview-upload', standalone: true, imports: [CommonModule, UiInputsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-image-input\n [maxSizeMB]=\"5\"\n [previewUrl]=\"resourceUrl\"\n [altText]=\"resourceAltText\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n></gn-ui-image-input>\n" }]
|
|
36291
|
+
}], ctorParameters: function () { return [{ type: RecordsApiService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { metadataUuid: [{
|
|
36292
|
+
type: Input
|
|
36293
|
+
}], formControl: [{
|
|
36294
|
+
type: Input
|
|
36295
|
+
}], overviewChange: [{
|
|
36296
|
+
type: Output
|
|
36297
|
+
}], altTextChange: [{
|
|
36298
|
+
type: Output
|
|
36299
|
+
}] } });
|
|
36300
|
+
|
|
36301
|
+
class FormFieldOverviewsComponent {
|
|
36302
|
+
handleOverviewChange(overView) {
|
|
36303
|
+
this.control.setValue(overView ? [overView] : []);
|
|
36304
|
+
}
|
|
36305
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36306
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOverviewsComponent, isStandalone: true, selector: "gn-ui-form-field-overviews", inputs: { metadataUuid: "metadataUuid", control: "control" }, ngImport: i0, template: "<gn-ui-overview-upload\n [metadataUuid]=\"metadataUuid\"\n [formControl]=\"control\"\n (overviewChange)=\"handleOverviewChange($event)\"\n></gn-ui-overview-upload>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: OverviewUploadComponent, selector: "gn-ui-overview-upload", inputs: ["metadataUuid", "formControl"], outputs: ["overviewChange", "altTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36307
|
+
}
|
|
36308
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, decorators: [{
|
|
36309
|
+
type: Component,
|
|
36310
|
+
args: [{ selector: 'gn-ui-form-field-overviews', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, OverviewUploadComponent], template: "<gn-ui-overview-upload\n [metadataUuid]=\"metadataUuid\"\n [formControl]=\"control\"\n (overviewChange)=\"handleOverviewChange($event)\"\n></gn-ui-overview-upload>\n" }]
|
|
36311
|
+
}], propDecorators: { metadataUuid: [{
|
|
36312
|
+
type: Input
|
|
36313
|
+
}], control: [{
|
|
36314
|
+
type: Input
|
|
36315
|
+
}] } });
|
|
36316
|
+
|
|
36317
|
+
const RoleValues = [
|
|
36318
|
+
'unspecified',
|
|
36319
|
+
'other',
|
|
36320
|
+
'author',
|
|
36321
|
+
'collaborator',
|
|
36322
|
+
'contributor',
|
|
36323
|
+
'custodian',
|
|
36324
|
+
'distributor',
|
|
36325
|
+
'editor',
|
|
36326
|
+
'funder',
|
|
36327
|
+
'mediator',
|
|
36328
|
+
'originator',
|
|
36329
|
+
'owner',
|
|
36330
|
+
'point_of_contact',
|
|
36331
|
+
'principal_investigator',
|
|
36332
|
+
'processor',
|
|
36333
|
+
'publisher',
|
|
36334
|
+
'resource_provider',
|
|
36335
|
+
'rights_holder',
|
|
36336
|
+
'sponsor',
|
|
36337
|
+
'stakeholder',
|
|
36338
|
+
'user', // Party who uses the resource
|
|
36339
|
+
];
|
|
36340
|
+
const RoleLabels = new Map([
|
|
36341
|
+
['unspecified', marker('domain.contact.role.unspecified')],
|
|
36342
|
+
['other', marker('domain.contact.role.other')],
|
|
36343
|
+
['author', marker('domain.contact.role.author')],
|
|
36344
|
+
['collaborator', marker('domain.contact.role.collaborator')],
|
|
36345
|
+
['contributor', marker('domain.contact.role.contributor')],
|
|
36346
|
+
['custodian', marker('domain.contact.role.custodian')],
|
|
36347
|
+
['distributor', marker('domain.contact.role.distributor')],
|
|
36348
|
+
['editor', marker('domain.contact.role.editor')],
|
|
36349
|
+
['funder', marker('domain.contact.role.funder')],
|
|
36350
|
+
['mediator', marker('domain.contact.role.mediator')],
|
|
36351
|
+
['originator', marker('domain.contact.role.originator')],
|
|
36352
|
+
['owner', marker('domain.contact.role.owner')],
|
|
36353
|
+
['point_of_contact', marker('domain.contact.role.point_of_contact')],
|
|
36354
|
+
[
|
|
36355
|
+
'principal_investigator',
|
|
36356
|
+
marker('domain.contact.role.principal_investigator'),
|
|
36357
|
+
],
|
|
36358
|
+
['processor', marker('domain.contact.role.processor')],
|
|
36359
|
+
['publisher', marker('domain.contact.role.publisher')],
|
|
36360
|
+
['resource_provider', marker('domain.contact.role.resource_provider')],
|
|
36361
|
+
['rights_holder', marker('domain.contact.role.rights_holder')],
|
|
36362
|
+
['sponsor', marker('domain.contact.role.sponsor')],
|
|
36363
|
+
['stakeholder', marker('domain.contact.role.stakeholder')],
|
|
36364
|
+
['user', marker('domain.contact.role.user')],
|
|
36365
|
+
]);
|
|
36366
|
+
|
|
36367
|
+
marker('domain.record.updateFrequency.unknown');
|
|
36368
|
+
marker('domain.record.updateFrequency.notPlanned');
|
|
36369
|
+
marker('domain.record.updateFrequency.asNeeded');
|
|
36370
|
+
marker('domain.record.updateFrequency.irregular');
|
|
36371
|
+
marker('domain.record.updateFrequency.continual');
|
|
36372
|
+
marker('domain.record.updateFrequency.periodic');
|
|
36373
|
+
marker('domain.record.updateFrequency.day');
|
|
36374
|
+
marker('domain.record.updateFrequency.week');
|
|
36375
|
+
marker('domain.record.updateFrequency.month');
|
|
36376
|
+
marker('domain.record.updateFrequency.year');
|
|
36377
|
+
marker('domain.record.status.completed');
|
|
36378
|
+
marker('domain.record.status.ongoing');
|
|
36379
|
+
marker('domain.record.status.under_development');
|
|
36380
|
+
marker('domain.record.status.deprecated');
|
|
36381
|
+
marker('domain.record.status.removed');
|
|
36382
|
+
const RecordStatusValues = [
|
|
36383
|
+
'completed',
|
|
36384
|
+
'ongoing',
|
|
36385
|
+
'under_development',
|
|
36386
|
+
'deprecated',
|
|
36387
|
+
'removed',
|
|
36388
|
+
];
|
|
36389
|
+
|
|
36390
|
+
class ContactCardComponent {
|
|
36391
|
+
constructor() {
|
|
36392
|
+
this.removable = true;
|
|
36393
|
+
this.contactRemoved = new EventEmitter();
|
|
36394
|
+
}
|
|
36395
|
+
removeContact(contact) {
|
|
36396
|
+
this.contactRemoved.emit(contact);
|
|
36397
|
+
}
|
|
36398
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36399
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ContactCardComponent, isStandalone: true, selector: "gn-ui-contact-card", inputs: { contact: "contact", removable: "removable" }, outputs: { contactRemoved: "contactRemoved" }, ngImport: i0, template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36400
|
+
}
|
|
36401
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, decorators: [{
|
|
36402
|
+
type: Component,
|
|
36403
|
+
args: [{ selector: 'gn-ui-contact-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule, ButtonComponent, ThumbnailComponent], template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n" }]
|
|
36404
|
+
}], propDecorators: { contact: [{
|
|
36405
|
+
type: Input
|
|
36406
|
+
}], removable: [{
|
|
36407
|
+
type: Input
|
|
36408
|
+
}], contactRemoved: [{
|
|
36409
|
+
type: Output
|
|
36410
|
+
}] } });
|
|
36411
|
+
|
|
36412
|
+
class FormFieldContactsForResourceComponent {
|
|
36413
|
+
constructor(platformServiceInterface, organizationsServiceInterface, changeDetectorRef) {
|
|
36414
|
+
this.platformServiceInterface = platformServiceInterface;
|
|
36415
|
+
this.organizationsServiceInterface = organizationsServiceInterface;
|
|
36416
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
36417
|
+
this.subscription = new Subscription();
|
|
36418
|
+
this.contactsForRessourceByRole = new Map();
|
|
36419
|
+
this.contactsAsDynElemByRole = new Map();
|
|
36420
|
+
this.rolesToPick = [
|
|
36421
|
+
'resource_provider',
|
|
36422
|
+
'custodian',
|
|
36423
|
+
'owner',
|
|
36424
|
+
'point_of_contact',
|
|
36425
|
+
'author',
|
|
36426
|
+
];
|
|
36427
|
+
this.roleSectionsToDisplay = [];
|
|
36428
|
+
this.allOrganizations = new Map();
|
|
36429
|
+
/**
|
|
36430
|
+
* gn-ui-autocomplete
|
|
36431
|
+
*/
|
|
36432
|
+
this.displayWithFn = (user) => `${user.name} ${user.surname} ${user.organisation ? `(${user.organisation})` : ''}`;
|
|
36433
|
+
/**
|
|
36434
|
+
* gn-ui-autocomplete
|
|
36435
|
+
*/
|
|
36436
|
+
this.autoCompleteAction = (query) => {
|
|
36437
|
+
const fuzzyFilter = createFuzzyFilter(query);
|
|
36438
|
+
return this.allUsers$.pipe(switchMap((users) => [
|
|
36439
|
+
users.filter((user) => fuzzyFilter(user.username)),
|
|
36440
|
+
]), map$1((results) => results.slice(0, 10)), debounceTime$1(300), distinctUntilChanged$1());
|
|
36441
|
+
};
|
|
36442
|
+
this.allUsers$ = this.platformServiceInterface.getUsers();
|
|
36443
|
+
}
|
|
36444
|
+
async ngOnInit() {
|
|
36445
|
+
this.allOrganizations = new Map((await firstValueFrom(this.organizationsServiceInterface.organisations$)).map((organization) => [organization.name, organization]));
|
|
36446
|
+
this.updateContactsForRessource();
|
|
36447
|
+
this.manageRoleSectionsToDisplay(this.control.value);
|
|
36448
|
+
this.filterRolesToPick();
|
|
36449
|
+
this.changeDetectorRef.markForCheck();
|
|
36450
|
+
this.subscription.add(this.control.valueChanges.subscribe((contactsForResource) => {
|
|
36451
|
+
this.updateContactsForRessource();
|
|
36452
|
+
this.manageRoleSectionsToDisplay(contactsForResource);
|
|
36453
|
+
this.filterRolesToPick();
|
|
36454
|
+
this.changeDetectorRef.markForCheck();
|
|
36455
|
+
}));
|
|
36456
|
+
}
|
|
36457
|
+
addRoleToDisplay(roleToAdd) {
|
|
36458
|
+
this.roleSectionsToDisplay.push(roleToAdd);
|
|
36459
|
+
this.filterRolesToPick();
|
|
36460
|
+
}
|
|
36461
|
+
filterRolesToPick() {
|
|
36462
|
+
this.rolesToPick = this.rolesToPick.filter((role) => !this.roleSectionsToDisplay.includes(role));
|
|
36463
|
+
}
|
|
36464
|
+
updateContactsForRessource() {
|
|
36465
|
+
this.contactsForRessourceByRole = this.control.value.reduce((acc, contact) => {
|
|
36466
|
+
const completeOrganization = this.allOrganizations.get(contact.organization.name);
|
|
36467
|
+
const updatedContact = {
|
|
36468
|
+
...contact,
|
|
36469
|
+
organization: completeOrganization ??
|
|
36470
|
+
{ name: contact.organization.name },
|
|
36471
|
+
};
|
|
36472
|
+
if (!acc.has(contact.role)) {
|
|
36473
|
+
acc.set(contact.role, []);
|
|
36474
|
+
}
|
|
36475
|
+
acc.get(contact.role).push(updatedContact);
|
|
36476
|
+
return acc;
|
|
36477
|
+
}, new Map());
|
|
36478
|
+
this.contactsAsDynElemByRole = this.control.value.reduce((acc, contact) => {
|
|
36479
|
+
const completeOrganization = this.allOrganizations.get(contact.organization.name);
|
|
36480
|
+
const updatedContact = {
|
|
36481
|
+
...contact,
|
|
36482
|
+
organization: completeOrganization ??
|
|
36483
|
+
{ name: contact.organization.name },
|
|
36484
|
+
};
|
|
36485
|
+
const contactAsDynElem = {
|
|
36486
|
+
component: ContactCardComponent,
|
|
36487
|
+
inputs: {
|
|
36488
|
+
contact: updatedContact,
|
|
36489
|
+
removable: false,
|
|
36490
|
+
},
|
|
36491
|
+
};
|
|
36492
|
+
if (!acc.has(contact.role)) {
|
|
36493
|
+
acc.set(contact.role, []);
|
|
36494
|
+
}
|
|
36495
|
+
acc.get(contact.role).push(contactAsDynElem);
|
|
36496
|
+
return acc;
|
|
36497
|
+
}, new Map());
|
|
36498
|
+
this.changeDetectorRef.markForCheck();
|
|
36499
|
+
}
|
|
36500
|
+
manageRoleSectionsToDisplay(contactsForResource) {
|
|
36501
|
+
const roles = contactsForResource.map((contact) => contact.role);
|
|
36502
|
+
roles.forEach((role) => {
|
|
36503
|
+
if (!this.roleSectionsToDisplay.includes(role)) {
|
|
36504
|
+
this.roleSectionsToDisplay.push(role);
|
|
36505
|
+
}
|
|
36506
|
+
});
|
|
36507
|
+
}
|
|
36508
|
+
removeContact(index) {
|
|
36509
|
+
const newContactsforRessource = this.control.value.filter((_, i) => i !== index);
|
|
36510
|
+
this.control.setValue(newContactsforRessource);
|
|
36511
|
+
}
|
|
36512
|
+
handleContactsChanged(event) {
|
|
36513
|
+
const newContactsOrdered = event.map((contactAsDynElem) => contactAsDynElem.inputs['contact']);
|
|
36514
|
+
const role = newContactsOrdered[0].role;
|
|
36515
|
+
this.contactsForRessourceByRole.set(role, newContactsOrdered);
|
|
36516
|
+
const newControlValue = Array.from(this.contactsForRessourceByRole.values()).flat();
|
|
36517
|
+
this.control.setValue(newControlValue);
|
|
36518
|
+
}
|
|
36519
|
+
roleToLabel(role) {
|
|
36520
|
+
return RoleLabels.get(role);
|
|
36521
|
+
}
|
|
36522
|
+
/**
|
|
36523
|
+
* gn-ui-autocomplete
|
|
36524
|
+
*/
|
|
36525
|
+
addContact(contact, role) {
|
|
36526
|
+
const newContactsForRessource = {
|
|
36527
|
+
firstName: contact.name ?? '',
|
|
36528
|
+
lastName: contact.surname ?? '',
|
|
36529
|
+
organization: this.allOrganizations.get(contact.organisation) ??
|
|
36530
|
+
{ name: contact.organisation },
|
|
36531
|
+
email: contact.email ?? '',
|
|
36532
|
+
role,
|
|
36533
|
+
address: '',
|
|
36534
|
+
phone: '',
|
|
36535
|
+
position: '',
|
|
36536
|
+
};
|
|
36537
|
+
const newControlValue = [...this.control.value, newContactsForRessource];
|
|
36538
|
+
this.control.setValue(newControlValue);
|
|
36539
|
+
}
|
|
36540
|
+
ngOnDestroy() {
|
|
36541
|
+
this.subscription.unsubscribe();
|
|
36542
|
+
}
|
|
36543
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsForResourceComponent, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36544
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldContactsForResourceComponent, isStandalone: true, selector: "gn-ui-form-field-contacts-for-resource", inputs: { control: "control" }, 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\n extraClass=\"px-2 py-1.5\"\n (buttonClick)=\"addRoleToDisplay(role)\"\n >\n <div class=\"flex flex-row gap-1 items-center\">\n <span class=\"text-primary text-[20px] leading-[0] font-bold pb-[5px]\"\n >₊</span\n >\n <span class=\"font-bold\" translate>{{ roleToLabel(role) }}</span>\n </div>\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]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [elements]=\"contactsAsDynElemByRole.get(role)\"\n (elementsChange)=\"handleContactsChanged($event)\"\n ></gn-ui-sortable-list>\n </ng-container>\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n (contactRemoved)=\"removeContact(index)\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\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: [""], 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$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact", "removable"], outputs: ["contactRemoved"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elements", "addOptions"], outputs: ["elementsChange", "add"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36545
|
+
}
|
|
36546
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsForResourceComponent, decorators: [{
|
|
36547
|
+
type: Component,
|
|
36548
|
+
args: [{ selector: 'gn-ui-form-field-contacts-for-resource', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
36549
|
+
DropdownSelectorComponent,
|
|
36550
|
+
UiInputsModule,
|
|
36551
|
+
CommonModule,
|
|
36552
|
+
UiWidgetsModule,
|
|
36553
|
+
AutocompleteComponent,
|
|
36554
|
+
TranslateModule,
|
|
36555
|
+
ContactCardComponent,
|
|
36556
|
+
SortableListComponent,
|
|
36557
|
+
], 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\n extraClass=\"px-2 py-1.5\"\n (buttonClick)=\"addRoleToDisplay(role)\"\n >\n <div class=\"flex flex-row gap-1 items-center\">\n <span class=\"text-primary text-[20px] leading-[0] font-bold pb-[5px]\"\n >₊</span\n >\n <span class=\"font-bold\" translate>{{ roleToLabel(role) }}</span>\n </div>\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]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [elements]=\"contactsAsDynElemByRole.get(role)\"\n (elementsChange)=\"handleContactsChanged($event)\"\n ></gn-ui-sortable-list>\n </ng-container>\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n (contactRemoved)=\"removeContact(index)\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\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" }]
|
|
36558
|
+
}], ctorParameters: function () { return [{ type: PlatformServiceInterface }, { type: OrganizationsServiceInterface }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { control: [{
|
|
36559
|
+
type: Input
|
|
36560
|
+
}] } });
|
|
36561
|
+
|
|
35227
36562
|
class FormFieldComponent {
|
|
35228
36563
|
set value(v) {
|
|
35229
36564
|
this.formControl.setValue(v, {
|
|
35230
36565
|
emitEvent: false,
|
|
35231
36566
|
});
|
|
35232
36567
|
}
|
|
35233
|
-
constructor() {
|
|
36568
|
+
constructor(facade) {
|
|
36569
|
+
this.facade = facade;
|
|
36570
|
+
this.metadataUuid$ = this.facade.record$.pipe(take(1), map$1((record) => record.uniqueIdentifier));
|
|
35234
36571
|
this.formControl = new FormControl();
|
|
35235
36572
|
this.valueChange = this.formControl.valueChanges;
|
|
35236
36573
|
}
|
|
@@ -35258,6 +36595,9 @@ class FormFieldComponent {
|
|
|
35258
36595
|
get isSpatialExtentField() {
|
|
35259
36596
|
return this.model === 'spatialExtents';
|
|
35260
36597
|
}
|
|
36598
|
+
get isGraphicOverview() {
|
|
36599
|
+
return this.model === 'overviews';
|
|
36600
|
+
}
|
|
35261
36601
|
get isSimpleField() {
|
|
35262
36602
|
return this.model === 'uniqueIdentifier' || this.model === 'recordUpdated';
|
|
35263
36603
|
}
|
|
@@ -35267,11 +36607,14 @@ class FormFieldComponent {
|
|
|
35267
36607
|
get isKeywords() {
|
|
35268
36608
|
return this.model === 'keywords';
|
|
35269
36609
|
}
|
|
36610
|
+
get isContactsForResource() {
|
|
36611
|
+
return this.model === 'contactsForResource';
|
|
36612
|
+
}
|
|
35270
36613
|
get withoutWrapper() {
|
|
35271
36614
|
return this.model === 'title' || this.model === 'abstract';
|
|
35272
36615
|
}
|
|
35273
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <
|
|
36616
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36617
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isGraphicOverview\">\n <gn-ui-form-field-overviews\n [control]=\"formControl\"\n [metadataUuid]=\"metadataUuid$ | async\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngIf=\"isContactsForResource\">\n <gn-ui-form-field-contacts-for-resource\n [control]=\"formControl\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["control"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "control"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35275
36618
|
}
|
|
35276
36619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
35277
36620
|
type: Component,
|
|
@@ -35294,8 +36637,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35294
36637
|
FormFieldArrayComponent,
|
|
35295
36638
|
FormFieldKeywordsComponent,
|
|
35296
36639
|
TranslateModule,
|
|
35297
|
-
|
|
35298
|
-
|
|
36640
|
+
FormFieldOverviewsComponent,
|
|
36641
|
+
FormFieldContactsForResourceComponent,
|
|
36642
|
+
], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isGraphicOverview\">\n <gn-ui-form-field-overviews\n [control]=\"formControl\"\n [metadataUuid]=\"metadataUuid$ | async\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngIf=\"isContactsForResource\">\n <gn-ui-form-field-contacts-for-resource\n [control]=\"formControl\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n</ng-template>\n" }]
|
|
36643
|
+
}], ctorParameters: function () { return [{ type: EditorFacade }]; }, propDecorators: { model: [{
|
|
35299
36644
|
type: Input
|
|
35300
36645
|
}], config: [{
|
|
35301
36646
|
type: Input
|
|
@@ -35311,23 +36656,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35311
36656
|
class RecordFormComponent {
|
|
35312
36657
|
constructor(facade) {
|
|
35313
36658
|
this.facade = facade;
|
|
35314
|
-
this.fields$ = this.facade.recordFields$;
|
|
35315
36659
|
}
|
|
35316
|
-
handleFieldValueChange(
|
|
35317
|
-
if (!
|
|
36660
|
+
handleFieldValueChange(model, newValue) {
|
|
36661
|
+
if (!model) {
|
|
35318
36662
|
return;
|
|
35319
36663
|
}
|
|
35320
|
-
this.facade.updateRecordField(
|
|
36664
|
+
this.facade.updateRecordField(model, newValue);
|
|
35321
36665
|
}
|
|
35322
36666
|
fieldTracker(index, field) {
|
|
35323
36667
|
return field.config.model;
|
|
35324
36668
|
}
|
|
36669
|
+
sectionTracker(index, section) {
|
|
36670
|
+
return section.labelKey;
|
|
36671
|
+
}
|
|
35325
36672
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35326
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-
|
|
36673
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["model", "config", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35327
36674
|
}
|
|
35328
36675
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
35329
36676
|
type: Component,
|
|
35330
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent], template: "<div class=\"flex flex-col gap-6 p-
|
|
36677
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n" }]
|
|
35331
36678
|
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
35332
36679
|
|
|
35333
36680
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -35377,7 +36724,7 @@ class RouterService {
|
|
|
35377
36724
|
getOrganizationPageRoute() {
|
|
35378
36725
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
35379
36726
|
}
|
|
35380
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
36727
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$8.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35381
36728
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
35382
36729
|
}
|
|
35383
36730
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -35388,7 +36735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35388
36735
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
35389
36736
|
type: Inject,
|
|
35390
36737
|
args: [ROUTER_CONFIG]
|
|
35391
|
-
}] }, { type: i1$
|
|
36738
|
+
}] }, { type: i1$8.Router }]; } });
|
|
35392
36739
|
|
|
35393
36740
|
const goAction = createAction('[Router] Go', props());
|
|
35394
36741
|
const backAction = createAction('[Router] Back');
|
|
@@ -35645,12 +36992,12 @@ class RouterEffects {
|
|
|
35645
36992
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
35646
36993
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
35647
36994
|
}
|
|
35648
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, deps: [{ token: i1$
|
|
36995
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, deps: [{ token: i1$9.Actions }, { token: i1$8.Router }, { token: i1$3.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35649
36996
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects }); }
|
|
35650
36997
|
}
|
|
35651
36998
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, decorators: [{
|
|
35652
36999
|
type: Injectable
|
|
35653
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
37000
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$8.Router }, { type: i1$3.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
35654
37001
|
type: Inject,
|
|
35655
37002
|
args: [ROUTER_CONFIG]
|
|
35656
37003
|
}] }, { type: FieldsService }]; } });
|
|
@@ -35667,7 +37014,7 @@ class DefaultRouterModule {
|
|
|
35667
37014
|
};
|
|
35668
37015
|
}
|
|
35669
37016
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
35670
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
37017
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$4.StoreRouterConnectingModule, i1$9.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
35671
37018
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
35672
37019
|
RouterFacade,
|
|
35673
37020
|
{
|
|
@@ -35710,5 +37057,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35710
37057
|
* Generated bundle index. Do not edit.
|
|
35711
37058
|
*/
|
|
35712
37059
|
|
|
35713
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, 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, PatchResultsAggregations, 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, 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, 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, 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, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isBeginningOfResults, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave,
|
|
37060
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, 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, 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, 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, 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, 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, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isBeginningOfResults, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setCurrentPage, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
35714
37061
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|