geonetwork-ui 2.4.0-dev.cec60ff1 → 2.4.0-dev.d5b28b1e
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 +6 -1
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +31 -3
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -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/overview-upload/overview-upload.component.mjs +131 -0
- 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 +19 -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 +153 -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/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/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 +3 -3
- 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 +6 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +5 -2
- package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +3 -3
- 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/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 +68 -32
- package/esm2022/translations/en.json +44 -8
- package/esm2022/translations/es.json +41 -5
- package/esm2022/translations/fr.json +53 -17
- package/esm2022/translations/it.json +42 -6
- package/esm2022/translations/nl.json +41 -5
- package/esm2022/translations/pt.json +41 -5
- package/fesm2022/geonetwork-ui.mjs +1257 -369
- 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/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/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/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/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-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 +6 -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 +39 -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/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 +3 -2
- 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 -6
- package/libs/ui/elements/src/lib/ui-elements.module.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 +8 -0
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +42 -2
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -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/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/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-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 +15 -9
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +15 -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 +186 -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/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/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 +6 -2
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -1
- package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.html +1 -1
- 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/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 +68 -32
- package/translations/en.json +44 -8
- package/translations/es.json +41 -5
- package/translations/fr.json +53 -17
- package/translations/it.json +42 -6
- package/translations/nl.json +41 -5
- package/translations/pt.json +41 -5
- package/translations/sk.json +42 -6
- 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;
|
|
@@ -427,10 +436,12 @@ function getTreeRoot(element) {
|
|
|
427
436
|
}
|
|
428
437
|
// stays on the parent element
|
|
429
438
|
// if the given elements are part of a subtree, will add the root of subtree
|
|
439
|
+
// will filter out falsy elements
|
|
430
440
|
function appendChildren(...childrenFns) {
|
|
431
441
|
return (element) => {
|
|
432
442
|
if (!element)
|
|
433
443
|
return null;
|
|
444
|
+
childrenFns = childrenFns.filter((fn) => fn);
|
|
434
445
|
element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot));
|
|
435
446
|
element.children.forEach((el) => (el.parent = element));
|
|
436
447
|
return element;
|
|
@@ -559,6 +570,33 @@ function matchMimeType(format) {
|
|
|
559
570
|
return format || null;
|
|
560
571
|
}
|
|
561
572
|
|
|
573
|
+
function readGeometry(el) {
|
|
574
|
+
const xmlDoc = createDocument(el);
|
|
575
|
+
xmlDoc.root.attributes['xmlns'] = 'http://www.opengis.net/gml/3.2';
|
|
576
|
+
const gmlString = xmlToString(xmlDoc);
|
|
577
|
+
const doc = parse$1(gmlString);
|
|
578
|
+
// we need an intermediate node to be able to parse the GML
|
|
579
|
+
const node = document.createElement('pre');
|
|
580
|
+
node.appendChild(doc.documentElement);
|
|
581
|
+
const gml32Format = new GML32();
|
|
582
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
583
|
+
// @ts-ignore
|
|
584
|
+
const geometry = gml32Format.readGeometryFromNode(node);
|
|
585
|
+
const geojsonFormat = new GeoJSON();
|
|
586
|
+
return geojsonFormat.writeGeometryObject(geometry);
|
|
587
|
+
}
|
|
588
|
+
function writeGeometry(geometryObject) {
|
|
589
|
+
const geojsonFormat = new GeoJSON();
|
|
590
|
+
const geometry = geojsonFormat.readGeometry(geometryObject);
|
|
591
|
+
const gml32Format = new GML32();
|
|
592
|
+
const node = gml32Format.writeGeometryNode(geometry);
|
|
593
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
594
|
+
// @ts-ignore
|
|
595
|
+
const element = node.firstElementChild;
|
|
596
|
+
const gmlString = new XMLSerializer().serializeToString(element);
|
|
597
|
+
return getRootElement(parseXmlString(gmlString));
|
|
598
|
+
}
|
|
599
|
+
|
|
562
600
|
/**
|
|
563
601
|
* Parts are [firstName, lastName]
|
|
564
602
|
* Second part will be null if no separation could be done
|
|
@@ -727,6 +765,9 @@ function extractCharacterString() {
|
|
|
727
765
|
function extractDateTime() {
|
|
728
766
|
return pipe(fallback(findChildElement('gco:DateTime', false), findChildElement('gco:Date', false)), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)));
|
|
729
767
|
}
|
|
768
|
+
function extractDecimal() {
|
|
769
|
+
return pipe(findChildElement('gco:Decimal', false), readText(), map((numberStr) => (numberStr ? Number(numberStr) : null)));
|
|
770
|
+
}
|
|
730
771
|
function extractUrl() {
|
|
731
772
|
const getUrl = pipe(findChildElement('gmd:URL', false), readText());
|
|
732
773
|
const getCharacterString = pipe(findChildElement('gco:CharacterString', false), readText());
|
|
@@ -1084,6 +1125,30 @@ function readTemporalExtents(rootEl) {
|
|
|
1084
1125
|
}
|
|
1085
1126
|
}))(rootEl);
|
|
1086
1127
|
}
|
|
1128
|
+
function readSpatialExtents(rootEl) {
|
|
1129
|
+
const extractGeometry = (rootEl) => {
|
|
1130
|
+
if (!rootEl)
|
|
1131
|
+
return null;
|
|
1132
|
+
return pipe(findChildElement('gmd:polygon', false), firstChildElement, map((el) => readGeometry(el)))(rootEl);
|
|
1133
|
+
};
|
|
1134
|
+
const extractBBox = (rootEl) => {
|
|
1135
|
+
if (!rootEl)
|
|
1136
|
+
return null;
|
|
1137
|
+
return pipe(combine(pipe(findChildElement('gmd:westBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:southBoundLatitude'), extractDecimal()), pipe(findChildElement('gmd:eastBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:northBoundLatitude'), extractDecimal())))(rootEl);
|
|
1138
|
+
};
|
|
1139
|
+
const extractDescription = (rootEl) => {
|
|
1140
|
+
if (!rootEl)
|
|
1141
|
+
return null;
|
|
1142
|
+
return pipe(findNestedElement('gmd:geographicIdentifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
|
|
1143
|
+
};
|
|
1144
|
+
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]) => {
|
|
1145
|
+
return {
|
|
1146
|
+
...(geometry && { geometry }),
|
|
1147
|
+
...(bbox && { bbox }),
|
|
1148
|
+
...(description && { description }),
|
|
1149
|
+
};
|
|
1150
|
+
}))(rootEl);
|
|
1151
|
+
}
|
|
1087
1152
|
|
|
1088
1153
|
function writeCharacterString(text) {
|
|
1089
1154
|
return tap(pipe(findChildOrCreate('gco:CharacterString'), setTextContent(text)));
|
|
@@ -1100,6 +1165,9 @@ function writeDateTime(date) {
|
|
|
1100
1165
|
function writeDate(date) {
|
|
1101
1166
|
return tap(pipe(findChildOrCreate('gco:Date'), setTextContent(format(date, 'yyyy-MM-dd'))));
|
|
1102
1167
|
}
|
|
1168
|
+
function writeDecimal(decimal) {
|
|
1169
|
+
return tap(pipe(findChildOrCreate('gco:Decimal'), setTextContent(decimal.toString())));
|
|
1170
|
+
}
|
|
1103
1171
|
function getProgressCode(status) {
|
|
1104
1172
|
switch (status) {
|
|
1105
1173
|
case 'completed':
|
|
@@ -1493,6 +1561,24 @@ function writeTemporalExtents(record, rootEl) {
|
|
|
1493
1561
|
? setTextContent(format(extent.start, 'yyyy-MM-dd'))
|
|
1494
1562
|
: addAttribute('indeterminatePosition', 'unknown'))))))))))(rootEl);
|
|
1495
1563
|
}
|
|
1564
|
+
function writeSpatialExtents(record, rootEl) {
|
|
1565
|
+
const appendBoundingPolygon = (geometry) => {
|
|
1566
|
+
if (!geometry)
|
|
1567
|
+
return null;
|
|
1568
|
+
return pipe(createElement('gmd:EX_BoundingPolygon'), appendChildren(pipe(createElement('gmd:polygon'), appendChildren(() => writeGeometry(geometry)))));
|
|
1569
|
+
};
|
|
1570
|
+
const appendGeographicBoundingBox = (bbox) => {
|
|
1571
|
+
if (!bbox)
|
|
1572
|
+
return null;
|
|
1573
|
+
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]))));
|
|
1574
|
+
};
|
|
1575
|
+
const appendGeographicDescription = (description) => {
|
|
1576
|
+
if (!description)
|
|
1577
|
+
return null;
|
|
1578
|
+
return pipe(createElement('gmd:EX_GeographicDescription'), createChild('gmd:geographicIdentifier'), createChild('gmd:MD_Identifier'), createChild('gmd:code'), writeCharacterString(description));
|
|
1579
|
+
};
|
|
1580
|
+
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);
|
|
1581
|
+
}
|
|
1496
1582
|
|
|
1497
1583
|
class Iso19139Converter extends BaseConverter {
|
|
1498
1584
|
constructor() {
|
|
@@ -1525,8 +1611,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1525
1611
|
distributions: readDistributions$1,
|
|
1526
1612
|
onlineResources: readOnlineResources,
|
|
1527
1613
|
temporalExtents: readTemporalExtents,
|
|
1614
|
+
spatialExtents: readSpatialExtents,
|
|
1528
1615
|
// TODO
|
|
1529
|
-
spatialExtents: () => [],
|
|
1530
1616
|
extras: () => undefined,
|
|
1531
1617
|
landingPage: () => undefined,
|
|
1532
1618
|
languages: () => [],
|
|
@@ -1559,8 +1645,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1559
1645
|
distributions: writeDistributions$1,
|
|
1560
1646
|
onlineResources: writeOnlineResources,
|
|
1561
1647
|
temporalExtents: writeTemporalExtents,
|
|
1648
|
+
spatialExtents: () => writeSpatialExtents,
|
|
1562
1649
|
// TODO
|
|
1563
|
-
spatialExtents: () => undefined,
|
|
1564
1650
|
extras: () => undefined,
|
|
1565
1651
|
landingPage: () => undefined,
|
|
1566
1652
|
languages: () => undefined,
|
|
@@ -2176,6 +2262,7 @@ const mapKeywords = (thesauri, language) => {
|
|
|
2176
2262
|
keywords.push({
|
|
2177
2263
|
label: selectTranslatedValue(keyword, language),
|
|
2178
2264
|
type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
|
|
2265
|
+
...(keyword.link && { key: keyword.link }),
|
|
2179
2266
|
...(thesaurus && { thesaurus }),
|
|
2180
2267
|
});
|
|
2181
2268
|
}
|
|
@@ -8641,11 +8728,7 @@ class RecordsApiService {
|
|
|
8641
8728
|
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
8642
8729
|
}
|
|
8643
8730
|
// to determine the Content-Type header
|
|
8644
|
-
const consumes = [
|
|
8645
|
-
'application/xml',
|
|
8646
|
-
'application/json',
|
|
8647
|
-
'application/x-www-form-urlencoded',
|
|
8648
|
-
];
|
|
8731
|
+
const consumes = ['application/xml'];
|
|
8649
8732
|
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
8650
8733
|
if (httpContentTypeSelected !== undefined) {
|
|
8651
8734
|
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
@@ -17472,38 +17555,72 @@ var de = {
|
|
|
17472
17555
|
"downloads.format.unknown": "unbekannt",
|
|
17473
17556
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17474
17557
|
dropFile: dropFile$6,
|
|
17475
|
-
"editor.record.
|
|
17476
|
-
"editor.record.
|
|
17477
|
-
"editor.record.
|
|
17478
|
-
"editor.record.
|
|
17479
|
-
"editor.record.
|
|
17480
|
-
"editor.record.
|
|
17481
|
-
"editor.record.
|
|
17482
|
-
"editor.record.
|
|
17483
|
-
"editor.record.
|
|
17484
|
-
"editor.record.form.
|
|
17558
|
+
"editor.record.delete.confirmation.cancelText": "Stornieren",
|
|
17559
|
+
"editor.record.delete.confirmation.confirmText": "Löschen",
|
|
17560
|
+
"editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
|
|
17561
|
+
"editor.record.delete.confirmation.title": "Datensatz löschen?",
|
|
17562
|
+
"editor.record.deleteError.body": "Der Datensatz konnte nicht gelöscht werden:",
|
|
17563
|
+
"editor.record.deleteError.closeMessage": "Verstanden",
|
|
17564
|
+
"editor.record.deleteError.title": "Fehler beim Löschen des Datensatzes",
|
|
17565
|
+
"editor.record.deleteSuccess.body": "",
|
|
17566
|
+
"editor.record.deleteSuccess.title": "",
|
|
17567
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
17568
|
+
"editor.record.form.bottomButtons.next": "",
|
|
17569
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
17570
|
+
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
17571
|
+
"editor.record.form.field.keywords": "Schlagwörter",
|
|
17572
|
+
"editor.record.form.field.license": "Lizenz",
|
|
17573
|
+
"editor.record.form.field.overviews": "",
|
|
17574
|
+
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
17575
|
+
"editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
17576
|
+
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
17577
|
+
"editor.record.form.field.title": "Metadaten-Titel",
|
|
17578
|
+
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
17579
|
+
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17580
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17581
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17582
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17583
|
+
"editor.record.form.license.etalab": "Offene Lizenz (Etalab)",
|
|
17584
|
+
"editor.record.form.license.etalab-v2": "Offene Lizenz v2.0 (Etalab)",
|
|
17585
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17586
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17587
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17485
17588
|
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17486
|
-
"editor.record.form.
|
|
17487
|
-
"editor.record.form.
|
|
17488
|
-
"editor.record.form.
|
|
17489
|
-
"editor.record.form.
|
|
17490
|
-
"editor.record.form.
|
|
17491
|
-
"editor.record.form.
|
|
17492
|
-
"editor.record.form.
|
|
17493
|
-
"editor.record.form.
|
|
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.
|
|
17503
|
-
"editor.record.
|
|
17504
|
-
"editor.record.
|
|
17505
|
-
"editor.record.
|
|
17506
|
-
"editor.record.
|
|
17589
|
+
"editor.record.form.page.accessAndContact": "",
|
|
17590
|
+
"editor.record.form.page.description": "",
|
|
17591
|
+
"editor.record.form.page.ressources": "",
|
|
17592
|
+
"editor.record.form.section.about.description": "",
|
|
17593
|
+
"editor.record.form.section.about.label": "",
|
|
17594
|
+
"editor.record.form.section.annexes.label": "",
|
|
17595
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
17596
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
17597
|
+
"editor.record.form.section.classification.description": "",
|
|
17598
|
+
"editor.record.form.section.classification.label": "",
|
|
17599
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
17600
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
17601
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
17602
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
17603
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
17604
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
17605
|
+
"editor.record.form.temporalExtents.addDate": "Zeitpunkt",
|
|
17606
|
+
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
17607
|
+
"editor.record.form.temporalExtents.date": "Datum",
|
|
17608
|
+
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
17609
|
+
"editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
|
|
17610
|
+
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
17611
|
+
"editor.record.loadError.closeMessage": "Verstanden",
|
|
17612
|
+
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
17613
|
+
"editor.record.publish": "Diesen Datensatz veröffentlichen",
|
|
17614
|
+
"editor.record.publishError.body": "Der Datensatz konnte nicht veröffentlicht werden:",
|
|
17615
|
+
"editor.record.publishError.closeMessage": "Verstanden",
|
|
17616
|
+
"editor.record.publishError.title": "Fehler beim Veröffentlichen des Datensatzes",
|
|
17617
|
+
"editor.record.publishSuccess.body": "Der Datensatz wurde erfolgreich veröffentlicht!",
|
|
17618
|
+
"editor.record.publishSuccess.title": "Veröffentlichung erfolgreich",
|
|
17619
|
+
"editor.record.saveStatus.asDraftOnly": "Nur als Entwurf gespeichert - noch nicht veröffentlicht",
|
|
17620
|
+
"editor.record.saveStatus.draftWithChangesPending": "Als Entwurf gespeichert - Änderungen stehen aus",
|
|
17621
|
+
"editor.record.saveStatus.recordUpToDate": "Datensatz ist auf dem neuesten Stand",
|
|
17622
|
+
"editor.record.upToDate": "Dieser Datensatz ist auf dem neuesten Stand",
|
|
17623
|
+
"editor.sidebar.menu.editor": "",
|
|
17507
17624
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
17508
17625
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17509
17626
|
"facets.block.title.availableInServices": "Verfügbar für",
|
|
@@ -17580,7 +17697,9 @@ var de = {
|
|
|
17580
17697
|
"pagination.page": "Seite",
|
|
17581
17698
|
"pagination.pageOf": "von",
|
|
17582
17699
|
previous: previous$6,
|
|
17700
|
+
"record.action.delete": "Löschen",
|
|
17583
17701
|
"record.action.download": "Herunterladen",
|
|
17702
|
+
"record.action.duplicate": "",
|
|
17584
17703
|
"record.action.view": "Anzeigen",
|
|
17585
17704
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
17586
17705
|
"record.metadata.about": "Beschreibung",
|
|
@@ -17711,7 +17830,7 @@ var de = {
|
|
|
17711
17830
|
"search.filters.resourceType": "Ressourcentyp",
|
|
17712
17831
|
"search.filters.standard": "Standard",
|
|
17713
17832
|
"search.filters.title": "Ergebnisse filtern",
|
|
17714
|
-
"search.filters.topic": "
|
|
17833
|
+
"search.filters.topic": "Themen",
|
|
17715
17834
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
17716
17835
|
"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.",
|
|
17717
17836
|
"share.tab.permalink": "Teilen",
|
|
@@ -17903,8 +18022,28 @@ var en = {
|
|
|
17903
18022
|
"downloads.format.unknown": "unknown",
|
|
17904
18023
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17905
18024
|
dropFile: dropFile$5,
|
|
17906
|
-
"editor.record.
|
|
17907
|
-
"editor.record.
|
|
18025
|
+
"editor.record.delete.confirmation.cancelText": "Cancel",
|
|
18026
|
+
"editor.record.delete.confirmation.confirmText": "Delete",
|
|
18027
|
+
"editor.record.delete.confirmation.message": "Are you sure you want to delete this record?",
|
|
18028
|
+
"editor.record.delete.confirmation.title": "Delete record?",
|
|
18029
|
+
"editor.record.deleteError.body": "The record could not be deleted:",
|
|
18030
|
+
"editor.record.deleteError.closeMessage": "Understood",
|
|
18031
|
+
"editor.record.deleteError.title": "Error deleting record",
|
|
18032
|
+
"editor.record.deleteSuccess.body": "The record was successfully deleted !",
|
|
18033
|
+
"editor.record.deleteSuccess.title": "Delete success",
|
|
18034
|
+
"editor.record.form.bottomButtons.comeBackLater": "Come back later",
|
|
18035
|
+
"editor.record.form.bottomButtons.next": "Next",
|
|
18036
|
+
"editor.record.form.bottomButtons.previous": "Previous",
|
|
18037
|
+
"editor.record.form.field.abstract": "Abstract",
|
|
18038
|
+
"editor.record.form.field.keywords": "Keywords",
|
|
18039
|
+
"editor.record.form.field.license": "License",
|
|
18040
|
+
"editor.record.form.field.overviews": "Overviews",
|
|
18041
|
+
"editor.record.form.field.recordUpdated": "Record Updated",
|
|
18042
|
+
"editor.record.form.field.resourceUpdated": "Resource Updated",
|
|
18043
|
+
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
18044
|
+
"editor.record.form.field.title": "Metadata title",
|
|
18045
|
+
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
18046
|
+
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
17908
18047
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17909
18048
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17910
18049
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17914,13 +18053,26 @@ var en = {
|
|
|
17914
18053
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17915
18054
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17916
18055
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17917
|
-
"editor.record.form.
|
|
17918
|
-
"editor.record.form.
|
|
18056
|
+
"editor.record.form.page.accessAndContact": "Access and contact",
|
|
18057
|
+
"editor.record.form.page.description": "Resource description",
|
|
18058
|
+
"editor.record.form.page.ressources": "Resources",
|
|
18059
|
+
"editor.record.form.section.about.description": "This section describes the resource.",
|
|
18060
|
+
"editor.record.form.section.about.label": "About the resource",
|
|
18061
|
+
"editor.record.form.section.annexes.label": "Annexes",
|
|
18062
|
+
"editor.record.form.section.associatedResources.description": "Drop files here to associate them with the resource.",
|
|
18063
|
+
"editor.record.form.section.associatedResources.label": "Associated resources",
|
|
18064
|
+
"editor.record.form.section.classification.description": "The classification has an impact on the access to the data.",
|
|
18065
|
+
"editor.record.form.section.classification.label": "Classification",
|
|
18066
|
+
"editor.record.form.section.dataManagers.description": "The data managers are responsible for the data.",
|
|
18067
|
+
"editor.record.form.section.dataManagers.label": "Data managers",
|
|
18068
|
+
"editor.record.form.section.dataPointOfContact.description": "This information concerns the metadata.",
|
|
18069
|
+
"editor.record.form.section.dataPointOfContact.label": "Data point of contact",
|
|
18070
|
+
"editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
|
|
18071
|
+
"editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
|
|
17919
18072
|
"editor.record.form.temporalExtents.addDate": "Time instant",
|
|
17920
18073
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
17921
18074
|
"editor.record.form.temporalExtents.date": "Date",
|
|
17922
18075
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
17923
|
-
"editor.record.form.updateFrequency": "Update frequency",
|
|
17924
18076
|
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17925
18077
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17926
18078
|
"editor.record.loadError.closeMessage": "Understood",
|
|
@@ -17935,6 +18087,7 @@ var en = {
|
|
|
17935
18087
|
"editor.record.saveStatus.draftWithChangesPending": "Saved as draft - changes are pending",
|
|
17936
18088
|
"editor.record.saveStatus.recordUpToDate": "Record is up to date",
|
|
17937
18089
|
"editor.record.upToDate": "This record is up to date",
|
|
18090
|
+
"editor.sidebar.menu.editor": "Editor",
|
|
17938
18091
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17939
18092
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17940
18093
|
"facets.block.title.availableInServices": "Available for",
|
|
@@ -18003,15 +18156,17 @@ var en = {
|
|
|
18003
18156
|
"organisations.sortBy.nameDesc": "Name Z → A",
|
|
18004
18157
|
"organisations.sortBy.recordCountAsc": "Publications 0 → 9",
|
|
18005
18158
|
"organisations.sortBy.recordCountDesc": "Publications 9 → 0",
|
|
18006
|
-
"organization.details.lastPublishedDatasets": "
|
|
18007
|
-
"organization.details.lastPublishedDatasets.searchAllButton": "
|
|
18159
|
+
"organization.details.lastPublishedDatasets": "",
|
|
18160
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
18008
18161
|
"organization.details.mailContact": "Contact by email",
|
|
18009
18162
|
"organization.header.recordCount": "{count, plural, =0{data} one{data} other{datas}}",
|
|
18010
18163
|
"pagination.nextPage": "Next page",
|
|
18011
18164
|
"pagination.page": "page",
|
|
18012
18165
|
"pagination.pageOf": "of",
|
|
18013
18166
|
previous: previous$5,
|
|
18167
|
+
"record.action.delete": "Delete",
|
|
18014
18168
|
"record.action.download": "Download",
|
|
18169
|
+
"record.action.duplicate": "Duplicate",
|
|
18015
18170
|
"record.action.view": "View",
|
|
18016
18171
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
18017
18172
|
"record.metadata.about": "Description",
|
|
@@ -18142,7 +18297,7 @@ var en = {
|
|
|
18142
18297
|
"search.filters.resourceType": "Resource type",
|
|
18143
18298
|
"search.filters.standard": "Standard",
|
|
18144
18299
|
"search.filters.title": "Filter your results",
|
|
18145
|
-
"search.filters.topic": "
|
|
18300
|
+
"search.filters.topic": "Topics",
|
|
18146
18301
|
"search.filters.useSpatialFilter": "Show records in the area of interest first",
|
|
18147
18302
|
"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.",
|
|
18148
18303
|
"share.tab.permalink": "Share",
|
|
@@ -18334,8 +18489,28 @@ var es = {
|
|
|
18334
18489
|
"downloads.format.unknown": "",
|
|
18335
18490
|
"downloads.wfs.featuretype.not.found": "",
|
|
18336
18491
|
dropFile: dropFile$4,
|
|
18337
|
-
"editor.record.
|
|
18338
|
-
"editor.record.
|
|
18492
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
18493
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
18494
|
+
"editor.record.delete.confirmation.message": "",
|
|
18495
|
+
"editor.record.delete.confirmation.title": "",
|
|
18496
|
+
"editor.record.deleteError.body": "",
|
|
18497
|
+
"editor.record.deleteError.closeMessage": "",
|
|
18498
|
+
"editor.record.deleteError.title": "",
|
|
18499
|
+
"editor.record.deleteSuccess.body": "",
|
|
18500
|
+
"editor.record.deleteSuccess.title": "",
|
|
18501
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
18502
|
+
"editor.record.form.bottomButtons.next": "",
|
|
18503
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
18504
|
+
"editor.record.form.field.abstract": "",
|
|
18505
|
+
"editor.record.form.field.keywords": "",
|
|
18506
|
+
"editor.record.form.field.license": "",
|
|
18507
|
+
"editor.record.form.field.overviews": "",
|
|
18508
|
+
"editor.record.form.field.recordUpdated": "",
|
|
18509
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
18510
|
+
"editor.record.form.field.temporalExtents": "",
|
|
18511
|
+
"editor.record.form.field.title": "",
|
|
18512
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
18513
|
+
"editor.record.form.field.updateFrequency": "",
|
|
18339
18514
|
"editor.record.form.license.cc-by": "",
|
|
18340
18515
|
"editor.record.form.license.cc-by-sa": "",
|
|
18341
18516
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18345,13 +18520,26 @@ var es = {
|
|
|
18345
18520
|
"editor.record.form.license.odc-by": "",
|
|
18346
18521
|
"editor.record.form.license.pddl": "",
|
|
18347
18522
|
"editor.record.form.license.unknown": "",
|
|
18348
|
-
"editor.record.form.
|
|
18349
|
-
"editor.record.form.
|
|
18523
|
+
"editor.record.form.page.accessAndContact": "",
|
|
18524
|
+
"editor.record.form.page.description": "",
|
|
18525
|
+
"editor.record.form.page.ressources": "",
|
|
18526
|
+
"editor.record.form.section.about.description": "",
|
|
18527
|
+
"editor.record.form.section.about.label": "",
|
|
18528
|
+
"editor.record.form.section.annexes.label": "",
|
|
18529
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
18530
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
18531
|
+
"editor.record.form.section.classification.description": "",
|
|
18532
|
+
"editor.record.form.section.classification.label": "",
|
|
18533
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
18534
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
18535
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
18536
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
18537
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
18538
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
18350
18539
|
"editor.record.form.temporalExtents.addDate": "",
|
|
18351
18540
|
"editor.record.form.temporalExtents.addRange": "",
|
|
18352
18541
|
"editor.record.form.temporalExtents.date": "",
|
|
18353
18542
|
"editor.record.form.temporalExtents.range": "",
|
|
18354
|
-
"editor.record.form.updateFrequency": "",
|
|
18355
18543
|
"editor.record.form.updateFrequency.planned": "",
|
|
18356
18544
|
"editor.record.loadError.body": "",
|
|
18357
18545
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -18366,6 +18554,7 @@ var es = {
|
|
|
18366
18554
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
18367
18555
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
18368
18556
|
"editor.record.upToDate": "",
|
|
18557
|
+
"editor.sidebar.menu.editor": "",
|
|
18369
18558
|
"externalviewer.dataset.unnamed": "",
|
|
18370
18559
|
"facets.block.title.OrgForResource": "",
|
|
18371
18560
|
"facets.block.title.availableInServices": "",
|
|
@@ -18442,7 +18631,9 @@ var es = {
|
|
|
18442
18631
|
"pagination.page": "",
|
|
18443
18632
|
"pagination.pageOf": "",
|
|
18444
18633
|
previous: previous$4,
|
|
18634
|
+
"record.action.delete": "",
|
|
18445
18635
|
"record.action.download": "",
|
|
18636
|
+
"record.action.duplicate": "",
|
|
18446
18637
|
"record.action.view": "",
|
|
18447
18638
|
"record.externalViewer.open": "",
|
|
18448
18639
|
"record.metadata.about": "",
|
|
@@ -18765,8 +18956,28 @@ var fr = {
|
|
|
18765
18956
|
"downloads.format.unknown": "inconnu",
|
|
18766
18957
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18767
18958
|
dropFile: dropFile$3,
|
|
18768
|
-
"editor.record.
|
|
18769
|
-
"editor.record.
|
|
18959
|
+
"editor.record.delete.confirmation.cancelText": "Annuler",
|
|
18960
|
+
"editor.record.delete.confirmation.confirmText": "Supprimer",
|
|
18961
|
+
"editor.record.delete.confirmation.message": "Etes-vous sûr de vouloir supprimer cette fiche ?",
|
|
18962
|
+
"editor.record.delete.confirmation.title": "Supprimer la fiche",
|
|
18963
|
+
"editor.record.deleteError.body": "La fiche n'a pas pu être supprimée :",
|
|
18964
|
+
"editor.record.deleteError.closeMessage": "Compris",
|
|
18965
|
+
"editor.record.deleteError.title": "Erreur lors de la suppression",
|
|
18966
|
+
"editor.record.deleteSuccess.body": "La fiche a bien été supprimée !",
|
|
18967
|
+
"editor.record.deleteSuccess.title": "Suppression réussie",
|
|
18968
|
+
"editor.record.form.bottomButtons.comeBackLater": "Revenir plus tard",
|
|
18969
|
+
"editor.record.form.bottomButtons.next": "Suivant",
|
|
18970
|
+
"editor.record.form.bottomButtons.previous": "Précédent",
|
|
18971
|
+
"editor.record.form.field.abstract": "Résumé",
|
|
18972
|
+
"editor.record.form.field.keywords": "Mots-clés",
|
|
18973
|
+
"editor.record.form.field.license": "Licence",
|
|
18974
|
+
"editor.record.form.field.overviews": "Aperçus",
|
|
18975
|
+
"editor.record.form.field.recordUpdated": "Date de dernière révision",
|
|
18976
|
+
"editor.record.form.field.resourceUpdated": "Date de dernière révision",
|
|
18977
|
+
"editor.record.form.field.temporalExtents": "Étendue temporelle",
|
|
18978
|
+
"editor.record.form.field.title": "Titre",
|
|
18979
|
+
"editor.record.form.field.uniqueIdentifier": "Identifiant unique",
|
|
18980
|
+
"editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
|
|
18770
18981
|
"editor.record.form.license.cc-by": "",
|
|
18771
18982
|
"editor.record.form.license.cc-by-sa": "",
|
|
18772
18983
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18776,27 +18987,41 @@ var fr = {
|
|
|
18776
18987
|
"editor.record.form.license.odc-by": "",
|
|
18777
18988
|
"editor.record.form.license.pddl": "",
|
|
18778
18989
|
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18779
|
-
"editor.record.form.
|
|
18780
|
-
"editor.record.form.
|
|
18990
|
+
"editor.record.form.page.accessAndContact": "Acces et contact",
|
|
18991
|
+
"editor.record.form.page.description": "Description de la ressource",
|
|
18992
|
+
"editor.record.form.page.ressources": "Ressources",
|
|
18993
|
+
"editor.record.form.section.about.description": "Ces informations concernent la donnée.",
|
|
18994
|
+
"editor.record.form.section.about.label": "A propos de la ressource",
|
|
18995
|
+
"editor.record.form.section.annexes.label": "Annexes",
|
|
18996
|
+
"editor.record.form.section.associatedResources.description": "Déposez les jeux de données associées à cette fiche de métadonnée.",
|
|
18997
|
+
"editor.record.form.section.associatedResources.label": "Ressources associees",
|
|
18998
|
+
"editor.record.form.section.classification.description": "La classification a un impact sur la recherche du jeux de données.",
|
|
18999
|
+
"editor.record.form.section.classification.label": "Classification",
|
|
19000
|
+
"editor.record.form.section.dataManagers.description": "Cette information concerne la donnée.",
|
|
19001
|
+
"editor.record.form.section.dataManagers.label": "Responsables de la donnee",
|
|
19002
|
+
"editor.record.form.section.dataPointOfContact.description": "Cette information concerne la fiche de métadonnée.",
|
|
19003
|
+
"editor.record.form.section.dataPointOfContact.label": "Point de contact de la metadonee",
|
|
19004
|
+
"editor.record.form.section.geographicalCoverage.label": "Couverture geographique",
|
|
19005
|
+
"editor.record.form.section.useAndAccessConditions.label": "Conditions d'acces et usage",
|
|
18781
19006
|
"editor.record.form.temporalExtents.addDate": "Date déterminée",
|
|
18782
19007
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
18783
19008
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
18784
19009
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
18785
|
-
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18786
19010
|
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18787
|
-
"editor.record.loadError.body": "",
|
|
18788
|
-
"editor.record.loadError.closeMessage": "",
|
|
18789
|
-
"editor.record.loadError.title": "",
|
|
18790
|
-
"editor.record.publish": "",
|
|
18791
|
-
"editor.record.publishError.body": "",
|
|
18792
|
-
"editor.record.publishError.closeMessage": "",
|
|
18793
|
-
"editor.record.publishError.title": "",
|
|
18794
|
-
"editor.record.publishSuccess.body": "",
|
|
18795
|
-
"editor.record.publishSuccess.title": "",
|
|
19011
|
+
"editor.record.loadError.body": "La fiche n'a pas pu être chargée :",
|
|
19012
|
+
"editor.record.loadError.closeMessage": "Compris",
|
|
19013
|
+
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
19014
|
+
"editor.record.publish": "Publier cette fiche",
|
|
19015
|
+
"editor.record.publishError.body": "La fiche n'a pas pu être publiée :",
|
|
19016
|
+
"editor.record.publishError.closeMessage": "Compris",
|
|
19017
|
+
"editor.record.publishError.title": "Erreur lors de la publication",
|
|
19018
|
+
"editor.record.publishSuccess.body": "La fiche a bien été publiée !",
|
|
19019
|
+
"editor.record.publishSuccess.title": "Publication réussie",
|
|
18796
19020
|
"editor.record.saveStatus.asDraftOnly": "Brouillon enregistré - fiche non publiée",
|
|
18797
19021
|
"editor.record.saveStatus.draftWithChangesPending": "Brouillon enregistré - modifications en cours",
|
|
18798
19022
|
"editor.record.saveStatus.recordUpToDate": "La fiche publiée est à jour",
|
|
18799
19023
|
"editor.record.upToDate": "",
|
|
19024
|
+
"editor.sidebar.menu.editor": "",
|
|
18800
19025
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
18801
19026
|
"facets.block.title.OrgForResource": "Organisation",
|
|
18802
19027
|
"facets.block.title.availableInServices": "Disponible pour",
|
|
@@ -18865,15 +19090,17 @@ var fr = {
|
|
|
18865
19090
|
"organisations.sortBy.nameDesc": "Nom Z → A",
|
|
18866
19091
|
"organisations.sortBy.recordCountAsc": "Données 0 → 9",
|
|
18867
19092
|
"organisations.sortBy.recordCountDesc": "Données 9 → 0",
|
|
18868
|
-
"organization.details.lastPublishedDatasets": "
|
|
18869
|
-
"organization.details.lastPublishedDatasets.searchAllButton": "
|
|
19093
|
+
"organization.details.lastPublishedDatasets": "",
|
|
19094
|
+
"organization.details.lastPublishedDatasets.searchAllButton": "",
|
|
18870
19095
|
"organization.details.mailContact": "Contacter par mail",
|
|
18871
19096
|
"organization.header.recordCount": "{count, plural, =0{donnée} one{donnée} other{données}}",
|
|
18872
19097
|
"pagination.nextPage": "Page suivante",
|
|
18873
19098
|
"pagination.page": "page",
|
|
18874
19099
|
"pagination.pageOf": "sur",
|
|
18875
19100
|
previous: previous$3,
|
|
19101
|
+
"record.action.delete": "Supprimer",
|
|
18876
19102
|
"record.action.download": "Télécharger",
|
|
19103
|
+
"record.action.duplicate": "Dupliquer",
|
|
18877
19104
|
"record.action.view": "Voir",
|
|
18878
19105
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
18879
19106
|
"record.metadata.about": "Description",
|
|
@@ -19004,7 +19231,7 @@ var fr = {
|
|
|
19004
19231
|
"search.filters.resourceType": "Type de ressource",
|
|
19005
19232
|
"search.filters.standard": "Standard",
|
|
19006
19233
|
"search.filters.title": "Affiner votre recherche",
|
|
19007
|
-
"search.filters.topic": "
|
|
19234
|
+
"search.filters.topic": "Thèmes",
|
|
19008
19235
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
19009
19236
|
"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.",
|
|
19010
19237
|
"share.tab.permalink": "Partager",
|
|
@@ -19196,8 +19423,28 @@ var it = {
|
|
|
19196
19423
|
"downloads.format.unknown": "sconosciuto",
|
|
19197
19424
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
19198
19425
|
dropFile: dropFile$2,
|
|
19199
|
-
"editor.record.
|
|
19200
|
-
"editor.record.
|
|
19426
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
19427
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
19428
|
+
"editor.record.delete.confirmation.message": "",
|
|
19429
|
+
"editor.record.delete.confirmation.title": "",
|
|
19430
|
+
"editor.record.deleteError.body": "",
|
|
19431
|
+
"editor.record.deleteError.closeMessage": "",
|
|
19432
|
+
"editor.record.deleteError.title": "",
|
|
19433
|
+
"editor.record.deleteSuccess.body": "",
|
|
19434
|
+
"editor.record.deleteSuccess.title": "",
|
|
19435
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19436
|
+
"editor.record.form.bottomButtons.next": "",
|
|
19437
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
19438
|
+
"editor.record.form.field.abstract": "",
|
|
19439
|
+
"editor.record.form.field.keywords": "",
|
|
19440
|
+
"editor.record.form.field.license": "Licenza",
|
|
19441
|
+
"editor.record.form.field.overviews": "",
|
|
19442
|
+
"editor.record.form.field.recordUpdated": "",
|
|
19443
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
19444
|
+
"editor.record.form.field.temporalExtents": "",
|
|
19445
|
+
"editor.record.form.field.title": "",
|
|
19446
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
19447
|
+
"editor.record.form.field.updateFrequency": "",
|
|
19201
19448
|
"editor.record.form.license.cc-by": "",
|
|
19202
19449
|
"editor.record.form.license.cc-by-sa": "",
|
|
19203
19450
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19207,13 +19454,26 @@ var it = {
|
|
|
19207
19454
|
"editor.record.form.license.odc-by": "",
|
|
19208
19455
|
"editor.record.form.license.pddl": "",
|
|
19209
19456
|
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19210
|
-
"editor.record.form.
|
|
19211
|
-
"editor.record.form.
|
|
19457
|
+
"editor.record.form.page.accessAndContact": "",
|
|
19458
|
+
"editor.record.form.page.description": "",
|
|
19459
|
+
"editor.record.form.page.ressources": "",
|
|
19460
|
+
"editor.record.form.section.about.description": "",
|
|
19461
|
+
"editor.record.form.section.about.label": "",
|
|
19462
|
+
"editor.record.form.section.annexes.label": "",
|
|
19463
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
19464
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
19465
|
+
"editor.record.form.section.classification.description": "",
|
|
19466
|
+
"editor.record.form.section.classification.label": "",
|
|
19467
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
19468
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
19469
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
19470
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19471
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19472
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19212
19473
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19213
19474
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19214
19475
|
"editor.record.form.temporalExtents.date": "",
|
|
19215
19476
|
"editor.record.form.temporalExtents.range": "",
|
|
19216
|
-
"editor.record.form.updateFrequency": "",
|
|
19217
19477
|
"editor.record.form.updateFrequency.planned": "",
|
|
19218
19478
|
"editor.record.loadError.body": "",
|
|
19219
19479
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19228,6 +19488,7 @@ var it = {
|
|
|
19228
19488
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19229
19489
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19230
19490
|
"editor.record.upToDate": "",
|
|
19491
|
+
"editor.sidebar.menu.editor": "",
|
|
19231
19492
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
19232
19493
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
19233
19494
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
@@ -19304,7 +19565,9 @@ var it = {
|
|
|
19304
19565
|
"pagination.page": "pagina",
|
|
19305
19566
|
"pagination.pageOf": "di",
|
|
19306
19567
|
previous: previous$2,
|
|
19568
|
+
"record.action.delete": "",
|
|
19307
19569
|
"record.action.download": "Scarica",
|
|
19570
|
+
"record.action.duplicate": "",
|
|
19308
19571
|
"record.action.view": "Visualizza",
|
|
19309
19572
|
"record.externalViewer.open": "Apri nell'visualizzatore esterno",
|
|
19310
19573
|
"record.metadata.about": "Descrizione",
|
|
@@ -19435,7 +19698,7 @@ var it = {
|
|
|
19435
19698
|
"search.filters.resourceType": "Tipo di risorsa",
|
|
19436
19699
|
"search.filters.standard": "Standard",
|
|
19437
19700
|
"search.filters.title": "Affina la sua ricerca",
|
|
19438
|
-
"search.filters.topic": "
|
|
19701
|
+
"search.filters.topic": "Argomenti",
|
|
19439
19702
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
19440
19703
|
"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.",
|
|
19441
19704
|
"share.tab.permalink": "Condividere",
|
|
@@ -19627,8 +19890,28 @@ var nl = {
|
|
|
19627
19890
|
"downloads.format.unknown": "",
|
|
19628
19891
|
"downloads.wfs.featuretype.not.found": "",
|
|
19629
19892
|
dropFile: dropFile$1,
|
|
19630
|
-
"editor.record.
|
|
19631
|
-
"editor.record.
|
|
19893
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
19894
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
19895
|
+
"editor.record.delete.confirmation.message": "",
|
|
19896
|
+
"editor.record.delete.confirmation.title": "",
|
|
19897
|
+
"editor.record.deleteError.body": "",
|
|
19898
|
+
"editor.record.deleteError.closeMessage": "",
|
|
19899
|
+
"editor.record.deleteError.title": "",
|
|
19900
|
+
"editor.record.deleteSuccess.body": "",
|
|
19901
|
+
"editor.record.deleteSuccess.title": "",
|
|
19902
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19903
|
+
"editor.record.form.bottomButtons.next": "",
|
|
19904
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
19905
|
+
"editor.record.form.field.abstract": "",
|
|
19906
|
+
"editor.record.form.field.keywords": "",
|
|
19907
|
+
"editor.record.form.field.license": "",
|
|
19908
|
+
"editor.record.form.field.overviews": "",
|
|
19909
|
+
"editor.record.form.field.recordUpdated": "",
|
|
19910
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
19911
|
+
"editor.record.form.field.temporalExtents": "",
|
|
19912
|
+
"editor.record.form.field.title": "",
|
|
19913
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
19914
|
+
"editor.record.form.field.updateFrequency": "",
|
|
19632
19915
|
"editor.record.form.license.cc-by": "",
|
|
19633
19916
|
"editor.record.form.license.cc-by-sa": "",
|
|
19634
19917
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19638,13 +19921,26 @@ var nl = {
|
|
|
19638
19921
|
"editor.record.form.license.odc-by": "",
|
|
19639
19922
|
"editor.record.form.license.pddl": "",
|
|
19640
19923
|
"editor.record.form.license.unknown": "",
|
|
19641
|
-
"editor.record.form.
|
|
19642
|
-
"editor.record.form.
|
|
19924
|
+
"editor.record.form.page.accessAndContact": "",
|
|
19925
|
+
"editor.record.form.page.description": "",
|
|
19926
|
+
"editor.record.form.page.ressources": "",
|
|
19927
|
+
"editor.record.form.section.about.description": "",
|
|
19928
|
+
"editor.record.form.section.about.label": "",
|
|
19929
|
+
"editor.record.form.section.annexes.label": "",
|
|
19930
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
19931
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
19932
|
+
"editor.record.form.section.classification.description": "",
|
|
19933
|
+
"editor.record.form.section.classification.label": "",
|
|
19934
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
19935
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
19936
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
19937
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19938
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19939
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19643
19940
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19644
19941
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19645
19942
|
"editor.record.form.temporalExtents.date": "",
|
|
19646
19943
|
"editor.record.form.temporalExtents.range": "",
|
|
19647
|
-
"editor.record.form.updateFrequency": "",
|
|
19648
19944
|
"editor.record.form.updateFrequency.planned": "",
|
|
19649
19945
|
"editor.record.loadError.body": "",
|
|
19650
19946
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19659,6 +19955,7 @@ var nl = {
|
|
|
19659
19955
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19660
19956
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19661
19957
|
"editor.record.upToDate": "",
|
|
19958
|
+
"editor.sidebar.menu.editor": "",
|
|
19662
19959
|
"externalviewer.dataset.unnamed": "",
|
|
19663
19960
|
"facets.block.title.OrgForResource": "",
|
|
19664
19961
|
"facets.block.title.availableInServices": "",
|
|
@@ -19735,7 +20032,9 @@ var nl = {
|
|
|
19735
20032
|
"pagination.page": "",
|
|
19736
20033
|
"pagination.pageOf": "",
|
|
19737
20034
|
previous: previous$1,
|
|
20035
|
+
"record.action.delete": "",
|
|
19738
20036
|
"record.action.download": "",
|
|
20037
|
+
"record.action.duplicate": "",
|
|
19739
20038
|
"record.action.view": "",
|
|
19740
20039
|
"record.externalViewer.open": "",
|
|
19741
20040
|
"record.metadata.about": "",
|
|
@@ -20058,8 +20357,28 @@ var pt = {
|
|
|
20058
20357
|
"downloads.format.unknown": "",
|
|
20059
20358
|
"downloads.wfs.featuretype.not.found": "",
|
|
20060
20359
|
dropFile: dropFile,
|
|
20061
|
-
"editor.record.
|
|
20062
|
-
"editor.record.
|
|
20360
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
20361
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
20362
|
+
"editor.record.delete.confirmation.message": "",
|
|
20363
|
+
"editor.record.delete.confirmation.title": "",
|
|
20364
|
+
"editor.record.deleteError.body": "",
|
|
20365
|
+
"editor.record.deleteError.closeMessage": "",
|
|
20366
|
+
"editor.record.deleteError.title": "",
|
|
20367
|
+
"editor.record.deleteSuccess.body": "",
|
|
20368
|
+
"editor.record.deleteSuccess.title": "",
|
|
20369
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
20370
|
+
"editor.record.form.bottomButtons.next": "",
|
|
20371
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
20372
|
+
"editor.record.form.field.abstract": "",
|
|
20373
|
+
"editor.record.form.field.keywords": "",
|
|
20374
|
+
"editor.record.form.field.license": "",
|
|
20375
|
+
"editor.record.form.field.overviews": "",
|
|
20376
|
+
"editor.record.form.field.recordUpdated": "",
|
|
20377
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
20378
|
+
"editor.record.form.field.temporalExtents": "",
|
|
20379
|
+
"editor.record.form.field.title": "",
|
|
20380
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
20381
|
+
"editor.record.form.field.updateFrequency": "",
|
|
20063
20382
|
"editor.record.form.license.cc-by": "",
|
|
20064
20383
|
"editor.record.form.license.cc-by-sa": "",
|
|
20065
20384
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -20069,13 +20388,26 @@ var pt = {
|
|
|
20069
20388
|
"editor.record.form.license.odc-by": "",
|
|
20070
20389
|
"editor.record.form.license.pddl": "",
|
|
20071
20390
|
"editor.record.form.license.unknown": "",
|
|
20072
|
-
"editor.record.form.
|
|
20073
|
-
"editor.record.form.
|
|
20391
|
+
"editor.record.form.page.accessAndContact": "",
|
|
20392
|
+
"editor.record.form.page.description": "",
|
|
20393
|
+
"editor.record.form.page.ressources": "",
|
|
20394
|
+
"editor.record.form.section.about.description": "",
|
|
20395
|
+
"editor.record.form.section.about.label": "",
|
|
20396
|
+
"editor.record.form.section.annexes.label": "",
|
|
20397
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
20398
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
20399
|
+
"editor.record.form.section.classification.description": "",
|
|
20400
|
+
"editor.record.form.section.classification.label": "",
|
|
20401
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
20402
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
20403
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
20404
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
20405
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
20406
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
20074
20407
|
"editor.record.form.temporalExtents.addDate": "",
|
|
20075
20408
|
"editor.record.form.temporalExtents.addRange": "",
|
|
20076
20409
|
"editor.record.form.temporalExtents.date": "",
|
|
20077
20410
|
"editor.record.form.temporalExtents.range": "",
|
|
20078
|
-
"editor.record.form.updateFrequency": "",
|
|
20079
20411
|
"editor.record.form.updateFrequency.planned": "",
|
|
20080
20412
|
"editor.record.loadError.body": "",
|
|
20081
20413
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -20090,6 +20422,7 @@ var pt = {
|
|
|
20090
20422
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
20091
20423
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
20092
20424
|
"editor.record.upToDate": "",
|
|
20425
|
+
"editor.sidebar.menu.editor": "",
|
|
20093
20426
|
"externalviewer.dataset.unnamed": "",
|
|
20094
20427
|
"facets.block.title.OrgForResource": "",
|
|
20095
20428
|
"facets.block.title.availableInServices": "",
|
|
@@ -20166,7 +20499,9 @@ var pt = {
|
|
|
20166
20499
|
"pagination.page": "",
|
|
20167
20500
|
"pagination.pageOf": "",
|
|
20168
20501
|
previous: previous,
|
|
20502
|
+
"record.action.delete": "",
|
|
20169
20503
|
"record.action.download": "",
|
|
20504
|
+
"record.action.duplicate": "",
|
|
20170
20505
|
"record.action.view": "",
|
|
20171
20506
|
"record.externalViewer.open": "",
|
|
20172
20507
|
"record.metadata.about": "",
|
|
@@ -21223,12 +21558,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
21223
21558
|
args: [METADATA_LANGUAGE]
|
|
21224
21559
|
}] }]; } });
|
|
21225
21560
|
|
|
21561
|
+
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
21226
21562
|
class Gn4Repository {
|
|
21227
21563
|
constructor(gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi) {
|
|
21228
21564
|
this.gn4SearchApi = gn4SearchApi;
|
|
21229
21565
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
21230
21566
|
this.gn4Mapper = gn4Mapper;
|
|
21231
21567
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
21568
|
+
this._draftsChanged = new Subject();
|
|
21569
|
+
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
21232
21570
|
}
|
|
21233
21571
|
search({ filters, fields, offset, limit, sort, filterIds, filterGeometry, }) {
|
|
21234
21572
|
return this.gn4SearchApi
|
|
@@ -21299,6 +21637,18 @@ class Gn4Repository {
|
|
|
21299
21637
|
.then((record) => [record, xml, isSavedAlready]);
|
|
21300
21638
|
}));
|
|
21301
21639
|
}
|
|
21640
|
+
openRecordForDuplication(uniqueIdentifier) {
|
|
21641
|
+
return this.loadRecordAsXml(uniqueIdentifier).pipe(switchMap(async (recordAsXml) => {
|
|
21642
|
+
const converter = findConverterForDocument(recordAsXml);
|
|
21643
|
+
const record = await converter.readRecord(recordAsXml);
|
|
21644
|
+
record.uniqueIdentifier = `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21645
|
+
record.title = `${record.title} (Copy)`;
|
|
21646
|
+
const xml = await converter.writeRecord(record, recordAsXml);
|
|
21647
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), xml);
|
|
21648
|
+
this._draftsChanged.next();
|
|
21649
|
+
return [record, xml, false];
|
|
21650
|
+
}));
|
|
21651
|
+
}
|
|
21302
21652
|
serializeRecordToXml(record, referenceRecordSource) {
|
|
21303
21653
|
// if there's a reference record, use that standard; otherwise, use iso19139
|
|
21304
21654
|
const converter = referenceRecordSource
|
|
@@ -21314,15 +21664,28 @@ class Gn4Repository {
|
|
|
21314
21664
|
return response.metadataInfos[metadataId][0].uuid;
|
|
21315
21665
|
}))));
|
|
21316
21666
|
}
|
|
21667
|
+
deleteRecord(uniqueIdentifier) {
|
|
21668
|
+
return this.gn4RecordsApi.deleteRecord(uniqueIdentifier);
|
|
21669
|
+
}
|
|
21670
|
+
generateTemporaryId() {
|
|
21671
|
+
return `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21672
|
+
}
|
|
21317
21673
|
saveRecordAsDraft(record, referenceRecordSource) {
|
|
21318
|
-
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) =>
|
|
21674
|
+
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) => {
|
|
21675
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), recordXml);
|
|
21676
|
+
this._draftsChanged.next();
|
|
21677
|
+
}));
|
|
21319
21678
|
}
|
|
21320
21679
|
clearRecordDraft(uniqueIdentifier) {
|
|
21321
21680
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(uniqueIdentifier));
|
|
21681
|
+
this._draftsChanged.next();
|
|
21322
21682
|
}
|
|
21323
21683
|
recordHasDraft(uniqueIdentifier) {
|
|
21324
21684
|
return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
|
|
21325
21685
|
}
|
|
21686
|
+
isRecordNotYetSaved(uniqueIdentifier) {
|
|
21687
|
+
return uniqueIdentifier.startsWith(TEMPORARY_ID_PREFIX);
|
|
21688
|
+
}
|
|
21326
21689
|
// generated by copilot
|
|
21327
21690
|
getAllDrafts() {
|
|
21328
21691
|
const items = { ...window.localStorage };
|
|
@@ -23072,10 +23435,15 @@ class MapUtilsService {
|
|
|
23072
23435
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
23073
23436
|
return null;
|
|
23074
23437
|
}
|
|
23075
|
-
//
|
|
23438
|
+
// extend all the spatial extents into an including bbox
|
|
23076
23439
|
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
23077
|
-
|
|
23078
|
-
|
|
23440
|
+
if ('bbox' in curr)
|
|
23441
|
+
return extend(prev, curr.bbox);
|
|
23442
|
+
else if ('geometry' in curr) {
|
|
23443
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
23444
|
+
return extend(prev, geom.getExtent());
|
|
23445
|
+
}
|
|
23446
|
+
return prev;
|
|
23079
23447
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
23080
23448
|
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
23081
23449
|
}
|
|
@@ -24661,6 +25029,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24661
25029
|
}]
|
|
24662
25030
|
}] });
|
|
24663
25031
|
|
|
25032
|
+
class PopoverComponent {
|
|
25033
|
+
constructor(viewContainerRef, renderer) {
|
|
25034
|
+
this.viewContainerRef = viewContainerRef;
|
|
25035
|
+
this.renderer = renderer;
|
|
25036
|
+
}
|
|
25037
|
+
getContent() {
|
|
25038
|
+
if (this.content instanceof TemplateRef) {
|
|
25039
|
+
if (this.view) {
|
|
25040
|
+
this.view.destroy();
|
|
25041
|
+
}
|
|
25042
|
+
this.view = this.viewContainerRef.createEmbeddedView(this.content);
|
|
25043
|
+
this.view.detectChanges();
|
|
25044
|
+
const wrapper = this.renderer.createElement('div'); // Create a wrapper div
|
|
25045
|
+
this.view.rootNodes.forEach((node) => {
|
|
25046
|
+
this.renderer.appendChild(wrapper, node); // Append each root node to the wrapper
|
|
25047
|
+
});
|
|
25048
|
+
return wrapper;
|
|
25049
|
+
}
|
|
25050
|
+
return this.content;
|
|
25051
|
+
}
|
|
25052
|
+
ngAfterViewInit() {
|
|
25053
|
+
this.tippyInstance = tippy(this.popoverContent.nativeElement, {
|
|
25054
|
+
content: this.getContent(),
|
|
25055
|
+
allowHTML: true,
|
|
25056
|
+
theme: this.theme,
|
|
25057
|
+
});
|
|
25058
|
+
}
|
|
25059
|
+
ngOnChanges(changes) {
|
|
25060
|
+
if (changes['theme']) {
|
|
25061
|
+
this.theme = changes['theme'].currentValue;
|
|
25062
|
+
if (this.tippyInstance) {
|
|
25063
|
+
this.tippyInstance.setProps({ theme: this.theme });
|
|
25064
|
+
}
|
|
25065
|
+
}
|
|
25066
|
+
if (changes['content']) {
|
|
25067
|
+
this.content = changes['content'].currentValue;
|
|
25068
|
+
if (this.tippyInstance) {
|
|
25069
|
+
this.tippyInstance.setContent(this.getContent());
|
|
25070
|
+
}
|
|
25071
|
+
}
|
|
25072
|
+
}
|
|
25073
|
+
ngOnDestroy() {
|
|
25074
|
+
if (this.tippyInstance) {
|
|
25075
|
+
this.tippyInstance.destroy();
|
|
25076
|
+
}
|
|
25077
|
+
if (this.view) {
|
|
25078
|
+
this.view.destroy();
|
|
25079
|
+
}
|
|
25080
|
+
}
|
|
25081
|
+
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 }); }
|
|
25082
|
+
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 }] }); }
|
|
25083
|
+
}
|
|
25084
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
25085
|
+
type: Component,
|
|
25086
|
+
args: [{ selector: 'gn-ui-popover', standalone: true, imports: [CommonModule], template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n" }]
|
|
25087
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { popoverContent: [{
|
|
25088
|
+
type: ViewChild,
|
|
25089
|
+
args: ['popoverContent', { static: false }]
|
|
25090
|
+
}], content: [{
|
|
25091
|
+
type: Input
|
|
25092
|
+
}], theme: [{
|
|
25093
|
+
type: Input
|
|
25094
|
+
}] } });
|
|
25095
|
+
|
|
24664
25096
|
class PopupAlertComponent {
|
|
24665
25097
|
constructor(changeDetector) {
|
|
24666
25098
|
this.changeDetector = changeDetector;
|
|
@@ -25065,7 +25497,7 @@ class CopyTextButtonComponent {
|
|
|
25065
25497
|
event.target.blur();
|
|
25066
25498
|
}
|
|
25067
25499
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25068
|
-
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:
|
|
25500
|
+
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 }); }
|
|
25069
25501
|
}
|
|
25070
25502
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
25071
25503
|
type: Component,
|
|
@@ -25085,7 +25517,7 @@ class DatePickerComponent {
|
|
|
25085
25517
|
this.dateChange = new EventEmitter();
|
|
25086
25518
|
}
|
|
25087
25519
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25088
|
-
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$
|
|
25520
|
+
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 }); }
|
|
25089
25521
|
}
|
|
25090
25522
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
25091
25523
|
type: Component,
|
|
@@ -25102,7 +25534,7 @@ class DateRangePickerComponent {
|
|
|
25102
25534
|
this.endDateChange = new EventEmitter();
|
|
25103
25535
|
}
|
|
25104
25536
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25105
|
-
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$
|
|
25537
|
+
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 }); }
|
|
25106
25538
|
}
|
|
25107
25539
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
25108
25540
|
type: Component,
|
|
@@ -25134,7 +25566,7 @@ class DragAndDropFileInputComponent {
|
|
|
25134
25566
|
this.fileChange.emit(this.selectedFile);
|
|
25135
25567
|
}
|
|
25136
25568
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25137
|
-
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$
|
|
25569
|
+
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"] }] }); }
|
|
25138
25570
|
}
|
|
25139
25571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
25140
25572
|
type: Component,
|
|
@@ -26775,11 +27207,11 @@ class MetadataQualityItemComponent {
|
|
|
26775
27207
|
return `record.metadata.quality.${this.name}.${this.value ? 'success' : 'failed'}`;
|
|
26776
27208
|
}
|
|
26777
27209
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26778
|
-
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 }); }
|
|
27210
|
+
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 }); }
|
|
26779
27211
|
}
|
|
26780
27212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, decorators: [{
|
|
26781
27213
|
type: Component,
|
|
26782
|
-
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" }]
|
|
27214
|
+
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" }]
|
|
26783
27215
|
}], propDecorators: { name: [{
|
|
26784
27216
|
type: Input
|
|
26785
27217
|
}], value: [{
|
|
@@ -26790,7 +27222,6 @@ class MetadataQualityComponent {
|
|
|
26790
27222
|
constructor() {
|
|
26791
27223
|
this.smaller = false;
|
|
26792
27224
|
this.items = [];
|
|
26793
|
-
this.isMenuShown = false;
|
|
26794
27225
|
}
|
|
26795
27226
|
get qualityScore() {
|
|
26796
27227
|
const qualityScore = this.metadata?.extras?.qualityScore;
|
|
@@ -26801,12 +27232,6 @@ class MetadataQualityComponent {
|
|
|
26801
27232
|
get calculatedQualityScore() {
|
|
26802
27233
|
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
26803
27234
|
}
|
|
26804
|
-
showMenu() {
|
|
26805
|
-
this.isMenuShown = true;
|
|
26806
|
-
}
|
|
26807
|
-
hideMenu() {
|
|
26808
|
-
this.isMenuShown = false;
|
|
26809
|
-
}
|
|
26810
27235
|
add(name, value) {
|
|
26811
27236
|
if (this.metadataQualityDisplay?.[name] !== false) {
|
|
26812
27237
|
this.items.push({ name, value });
|
|
@@ -26830,11 +27255,11 @@ class MetadataQualityComponent {
|
|
|
26830
27255
|
}
|
|
26831
27256
|
}
|
|
26832
27257
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26833
|
-
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
|
|
27258
|
+
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 }); }
|
|
26834
27259
|
}
|
|
26835
27260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
26836
27261
|
type: Component,
|
|
26837
|
-
args: [{ selector: 'gn-ui-metadata-quality', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
|
27262
|
+
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"] }]
|
|
26838
27263
|
}], propDecorators: { metadata: [{
|
|
26839
27264
|
type: Input
|
|
26840
27265
|
}], smaller: [{
|
|
@@ -27029,11 +27454,11 @@ class ApiCardComponent {
|
|
|
27029
27454
|
}
|
|
27030
27455
|
}
|
|
27031
27456
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27032
|
-
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
|
|
27457
|
+
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 }); }
|
|
27033
27458
|
}
|
|
27034
27459
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
27035
27460
|
type: Component,
|
|
27036
|
-
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
|
|
27461
|
+
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" }]
|
|
27037
27462
|
}], propDecorators: { link: [{
|
|
27038
27463
|
type: Input
|
|
27039
27464
|
}], currentLink: [{
|
|
@@ -27058,6 +27483,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27058
27483
|
type: Input
|
|
27059
27484
|
}] } });
|
|
27060
27485
|
|
|
27486
|
+
class ConfirmationDialogComponent {
|
|
27487
|
+
constructor(dialogRef, data) {
|
|
27488
|
+
this.dialogRef = dialogRef;
|
|
27489
|
+
this.data = data;
|
|
27490
|
+
}
|
|
27491
|
+
onConfirm() {
|
|
27492
|
+
this.dialogRef.close(true);
|
|
27493
|
+
}
|
|
27494
|
+
onCancel() {
|
|
27495
|
+
this.dialogRef.close(false);
|
|
27496
|
+
}
|
|
27497
|
+
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 }); }
|
|
27498
|
+
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 }); }
|
|
27499
|
+
}
|
|
27500
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
|
|
27501
|
+
type: Component,
|
|
27502
|
+
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" }]
|
|
27503
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
|
|
27504
|
+
type: Inject,
|
|
27505
|
+
args: [MAT_DIALOG_DATA]
|
|
27506
|
+
}] }]; } });
|
|
27507
|
+
|
|
27061
27508
|
class ContentGhostComponent {
|
|
27062
27509
|
constructor() {
|
|
27063
27510
|
this.ghostClass = '';
|
|
@@ -27245,11 +27692,11 @@ class MarkdownParserComponent {
|
|
|
27245
27692
|
return marked.parse(this.textContent);
|
|
27246
27693
|
}
|
|
27247
27694
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27248
|
-
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:
|
|
27695
|
+
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 }); }
|
|
27249
27696
|
}
|
|
27250
27697
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
27251
27698
|
type: Component,
|
|
27252
|
-
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:
|
|
27699
|
+
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"] }]
|
|
27253
27700
|
}], propDecorators: { textContent: [{
|
|
27254
27701
|
type: Input
|
|
27255
27702
|
}] } });
|
|
@@ -27264,7 +27711,7 @@ class MarkdownEditorComponent {
|
|
|
27264
27711
|
this.textContentChanged.emit(this.textContent);
|
|
27265
27712
|
}
|
|
27266
27713
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27267
|
-
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
|
|
27714
|
+
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 }); }
|
|
27268
27715
|
}
|
|
27269
27716
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
27270
27717
|
type: Component,
|
|
@@ -27277,7 +27724,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27277
27724
|
TextAreaComponent,
|
|
27278
27725
|
MarkdownParserComponent,
|
|
27279
27726
|
TranslateModule,
|
|
27280
|
-
], template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27727
|
+
], 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" }]
|
|
27281
27728
|
}], propDecorators: { preview: [{
|
|
27282
27729
|
type: Input
|
|
27283
27730
|
}], helperText: [{
|
|
@@ -27568,11 +28015,11 @@ class MetadataInfoComponent {
|
|
|
27568
28015
|
this.keyword.emit(keyword);
|
|
27569
28016
|
}
|
|
27570
28017
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27571
|
-
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: 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 }); }
|
|
28018
|
+
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 }); }
|
|
27572
28019
|
}
|
|
27573
28020
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
27574
28021
|
type: Component,
|
|
27575
|
-
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
|
|
28022
|
+
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"] }]
|
|
27576
28023
|
}], propDecorators: { metadata: [{
|
|
27577
28024
|
type: Input
|
|
27578
28025
|
}], incomplete: [{
|
|
@@ -27829,7 +28276,7 @@ class RecordApiFormComponent {
|
|
|
27829
28276
|
}
|
|
27830
28277
|
}
|
|
27831
28278
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27832
|
-
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:
|
|
28279
|
+
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 }); }
|
|
27833
28280
|
}
|
|
27834
28281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27835
28282
|
type: Component,
|
|
@@ -27857,7 +28304,7 @@ class RelatedRecordCardComponent {
|
|
|
27857
28304
|
return `${this.baseClasses} ${this.extraClass}`;
|
|
27858
28305
|
}
|
|
27859
28306
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27860
|
-
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:
|
|
28307
|
+
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 }); }
|
|
27861
28308
|
}
|
|
27862
28309
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27863
28310
|
type: Component,
|
|
@@ -27881,8 +28328,11 @@ class SortableListComponent {
|
|
|
27881
28328
|
this.elements = this.elements.filter((_, i) => i !== index);
|
|
27882
28329
|
this.elementsChange.emit(this.elements);
|
|
27883
28330
|
}
|
|
28331
|
+
trackByFn(index) {
|
|
28332
|
+
return index;
|
|
28333
|
+
}
|
|
27884
28334
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27885
|
-
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
|
|
28335
|
+
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 }); }
|
|
27886
28336
|
}
|
|
27887
28337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, decorators: [{
|
|
27888
28338
|
type: Component,
|
|
@@ -27894,7 +28344,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27894
28344
|
CdkDragHandle,
|
|
27895
28345
|
MatIconModule,
|
|
27896
28346
|
ButtonComponent,
|
|
27897
|
-
], 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
|
|
28347
|
+
], 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"] }]
|
|
27898
28348
|
}], propDecorators: { elements: [{
|
|
27899
28349
|
type: Input
|
|
27900
28350
|
}], addOptions: [{
|
|
@@ -28032,11 +28482,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28032
28482
|
|
|
28033
28483
|
class FormFieldWrapperComponent {
|
|
28034
28484
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28035
|
-
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:
|
|
28485
|
+
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 }); }
|
|
28036
28486
|
}
|
|
28037
28487
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28038
28488
|
type: Component,
|
|
28039
|
-
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" }]
|
|
28489
|
+
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" }]
|
|
28040
28490
|
}], propDecorators: { label: [{
|
|
28041
28491
|
type: Input
|
|
28042
28492
|
}], hint: [{
|
|
@@ -28092,11 +28542,11 @@ class InteractiveTableComponent {
|
|
|
28092
28542
|
this.itemClick.emit(item);
|
|
28093
28543
|
}
|
|
28094
28544
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28095
|
-
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 }); }
|
|
28545
|
+
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 }); }
|
|
28096
28546
|
}
|
|
28097
28547
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28098
28548
|
type: Component,
|
|
28099
|
-
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"] }]
|
|
28549
|
+
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"] }]
|
|
28100
28550
|
}], propDecorators: { columns: [{
|
|
28101
28551
|
type: ContentChildren,
|
|
28102
28552
|
args: [InteractiveTableColumnComponent]
|
|
@@ -28288,11 +28738,11 @@ class UserPreviewComponent {
|
|
|
28288
28738
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
28289
28739
|
}
|
|
28290
28740
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28291
|
-
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-
|
|
28741
|
+
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 }); }
|
|
28292
28742
|
}
|
|
28293
28743
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
28294
28744
|
type: Component,
|
|
28295
|
-
args: [{ selector: 'gn-ui-user-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<figure class=\"text-center\">\n <div\n class=\"w-
|
|
28745
|
+
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" }]
|
|
28296
28746
|
}], propDecorators: { user: [{
|
|
28297
28747
|
type: Input
|
|
28298
28748
|
}], avatarPlaceholder: [{
|
|
@@ -28432,6 +28882,7 @@ class UiElementsModule {
|
|
|
28432
28882
|
UiInputsModule,
|
|
28433
28883
|
FormsModule,
|
|
28434
28884
|
NgOptimizedImage,
|
|
28885
|
+
PopoverComponent,
|
|
28435
28886
|
MarkdownParserComponent,
|
|
28436
28887
|
ThumbnailComponent,
|
|
28437
28888
|
TimeSincePipe,
|
|
@@ -28466,6 +28917,7 @@ class UiElementsModule {
|
|
|
28466
28917
|
RouterModule,
|
|
28467
28918
|
UiInputsModule,
|
|
28468
28919
|
FormsModule,
|
|
28920
|
+
PopoverComponent,
|
|
28469
28921
|
ThumbnailComponent,
|
|
28470
28922
|
BadgeComponent,
|
|
28471
28923
|
MaxLinesComponent] }); }
|
|
@@ -28485,6 +28937,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28485
28937
|
UiInputsModule,
|
|
28486
28938
|
FormsModule,
|
|
28487
28939
|
NgOptimizedImage,
|
|
28940
|
+
PopoverComponent,
|
|
28488
28941
|
MarkdownParserComponent,
|
|
28489
28942
|
ThumbnailComponent,
|
|
28490
28943
|
TimeSincePipe,
|
|
@@ -28641,15 +29094,74 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28641
29094
|
}]
|
|
28642
29095
|
}] });
|
|
28643
29096
|
|
|
29097
|
+
class ActionMenuComponent {
|
|
29098
|
+
constructor(dialog, translateService) {
|
|
29099
|
+
this.dialog = dialog;
|
|
29100
|
+
this.translateService = translateService;
|
|
29101
|
+
this.duplicate = new EventEmitter();
|
|
29102
|
+
this.delete = new EventEmitter();
|
|
29103
|
+
}
|
|
29104
|
+
openMenu() {
|
|
29105
|
+
this.trigger.openMenu();
|
|
29106
|
+
}
|
|
29107
|
+
openDeleteConfirmationDialog() {
|
|
29108
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
29109
|
+
data: {
|
|
29110
|
+
title: this.translateService.instant('editor.record.delete.confirmation.title'),
|
|
29111
|
+
message: this.translateService.instant('editor.record.delete.confirmation.message'),
|
|
29112
|
+
confirmText: this.translateService.instant('editor.record.delete.confirmation.confirmText'),
|
|
29113
|
+
cancelText: this.translateService.instant('editor.record.delete.confirmation.cancelText'),
|
|
29114
|
+
},
|
|
29115
|
+
restoreFocus: false,
|
|
29116
|
+
});
|
|
29117
|
+
// Manually restore focus to the menu trigger since the element that
|
|
29118
|
+
// opens the dialog won't be in the DOM any more when the dialog closes.
|
|
29119
|
+
dialogRef.afterClosed().subscribe((confirmed) => {
|
|
29120
|
+
this.trigger.focus();
|
|
29121
|
+
if (confirmed) {
|
|
29122
|
+
this.delete.emit();
|
|
29123
|
+
}
|
|
29124
|
+
});
|
|
29125
|
+
}
|
|
29126
|
+
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 }); }
|
|
29127
|
+
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"] }] }); }
|
|
29128
|
+
}
|
|
29129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
29130
|
+
type: Component,
|
|
29131
|
+
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
29132
|
+
MatIconModule,
|
|
29133
|
+
ButtonComponent,
|
|
29134
|
+
MatMenuModule,
|
|
29135
|
+
MatDialogModule,
|
|
29136
|
+
ConfirmationDialogComponent,
|
|
29137
|
+
TranslateModule,
|
|
29138
|
+
], 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" }]
|
|
29139
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialog }, { type: i1$1.TranslateService }]; }, propDecorators: { canDuplicate: [{
|
|
29140
|
+
type: Input
|
|
29141
|
+
}], canDelete: [{
|
|
29142
|
+
type: Input
|
|
29143
|
+
}], duplicate: [{
|
|
29144
|
+
type: Output
|
|
29145
|
+
}], delete: [{
|
|
29146
|
+
type: Output
|
|
29147
|
+
}], trigger: [{
|
|
29148
|
+
type: ViewChild,
|
|
29149
|
+
args: [MatMenuTrigger]
|
|
29150
|
+
}] } });
|
|
29151
|
+
|
|
28644
29152
|
class ResultsTableComponent {
|
|
28645
29153
|
constructor() {
|
|
28646
29154
|
this.records = [];
|
|
28647
29155
|
this.selectedRecordsIdentifiers = [];
|
|
28648
29156
|
this.sortOrder = null;
|
|
28649
|
-
this.
|
|
29157
|
+
this.hasDraft = () => false;
|
|
29158
|
+
this.canDuplicate = () => true;
|
|
29159
|
+
this.canDelete = () => true;
|
|
28650
29160
|
// emits the column (field) as well as the order
|
|
28651
29161
|
this.sortByChange = new EventEmitter();
|
|
28652
29162
|
this.recordClick = new EventEmitter();
|
|
29163
|
+
this.duplicateRecord = new EventEmitter();
|
|
29164
|
+
this.deleteRecord = new EventEmitter();
|
|
28653
29165
|
this.recordsSelectedChange = new EventEmitter();
|
|
28654
29166
|
}
|
|
28655
29167
|
dateToString(date) {
|
|
@@ -28684,6 +29196,12 @@ class ResultsTableComponent {
|
|
|
28684
29196
|
handleRecordClick(item) {
|
|
28685
29197
|
this.recordClick.emit(item);
|
|
28686
29198
|
}
|
|
29199
|
+
handleDuplicate(item) {
|
|
29200
|
+
this.duplicateRecord.emit(item);
|
|
29201
|
+
}
|
|
29202
|
+
handleDelete(item) {
|
|
29203
|
+
this.deleteRecord.emit(item);
|
|
29204
|
+
}
|
|
28687
29205
|
setSortBy(col, order) {
|
|
28688
29206
|
this.sortByChange.emit([col, order]);
|
|
28689
29207
|
}
|
|
@@ -28719,7 +29237,7 @@ class ResultsTableComponent {
|
|
|
28719
29237
|
return !allSelected && someSelected;
|
|
28720
29238
|
}
|
|
28721
29239
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28722
|
-
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",
|
|
29240
|
+
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"] }] }); }
|
|
28723
29241
|
}
|
|
28724
29242
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28725
29243
|
type: Component,
|
|
@@ -28731,19 +29249,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28731
29249
|
MatIconModule,
|
|
28732
29250
|
TranslateModule,
|
|
28733
29251
|
BadgeComponent,
|
|
28734
|
-
|
|
29252
|
+
ActionMenuComponent,
|
|
29253
|
+
], 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" }]
|
|
28735
29254
|
}], propDecorators: { records: [{
|
|
28736
29255
|
type: Input
|
|
28737
29256
|
}], selectedRecordsIdentifiers: [{
|
|
28738
29257
|
type: Input
|
|
28739
29258
|
}], sortOrder: [{
|
|
28740
29259
|
type: Input
|
|
28741
|
-
}],
|
|
29260
|
+
}], hasDraft: [{
|
|
29261
|
+
type: Input
|
|
29262
|
+
}], canDuplicate: [{
|
|
29263
|
+
type: Input
|
|
29264
|
+
}], canDelete: [{
|
|
28742
29265
|
type: Input
|
|
28743
29266
|
}], sortByChange: [{
|
|
28744
29267
|
type: Output
|
|
28745
29268
|
}], recordClick: [{
|
|
28746
29269
|
type: Output
|
|
29270
|
+
}], duplicateRecord: [{
|
|
29271
|
+
type: Output
|
|
29272
|
+
}], deleteRecord: [{
|
|
29273
|
+
type: Output
|
|
28747
29274
|
}], recordsSelectedChange: [{
|
|
28748
29275
|
type: Output
|
|
28749
29276
|
}] } });
|
|
@@ -29357,6 +29884,10 @@ class SearchFacade {
|
|
|
29357
29884
|
this.store.dispatch(new RequestMoreResults(this.searchId));
|
|
29358
29885
|
return this;
|
|
29359
29886
|
}
|
|
29887
|
+
requestNewResults() {
|
|
29888
|
+
this.store.dispatch(new RequestNewResults(this.searchId));
|
|
29889
|
+
return this;
|
|
29890
|
+
}
|
|
29360
29891
|
requestMoreOnAggregation(key, increment) {
|
|
29361
29892
|
this.store.dispatch(new RequestMoreOnAggregation(key, increment, this.searchId));
|
|
29362
29893
|
return this;
|
|
@@ -30208,12 +30739,12 @@ class SearchEffects {
|
|
|
30208
30739
|
);
|
|
30209
30740
|
});
|
|
30210
30741
|
}
|
|
30211
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, deps: [{ token: i1$
|
|
30742
|
+
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 }); }
|
|
30212
30743
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects }); }
|
|
30213
30744
|
}
|
|
30214
30745
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, decorators: [{
|
|
30215
30746
|
type: Injectable
|
|
30216
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
30747
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$2.Store }, { type: RecordsRepositoryInterface }, { type: FavoritesService }, { type: PlatformServiceInterface }, { type: Promise, decorators: [{
|
|
30217
30748
|
type: Optional
|
|
30218
30749
|
}, {
|
|
30219
30750
|
type: Inject,
|
|
@@ -30627,7 +31158,7 @@ class FeatureSearchModule {
|
|
|
30627
31158
|
ResultsHitsContainerComponent,
|
|
30628
31159
|
SearchStateContainerDirective,
|
|
30629
31160
|
FavoriteStarComponent,
|
|
30630
|
-
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$
|
|
31161
|
+
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, HttpClientModule,
|
|
30631
31162
|
HttpClientXsrfModule,
|
|
30632
31163
|
UiSearchModule,
|
|
30633
31164
|
UiInputsModule,
|
|
@@ -30718,13 +31249,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
30718
31249
|
}]
|
|
30719
31250
|
}] });
|
|
30720
31251
|
|
|
31252
|
+
class NotificationsService {
|
|
31253
|
+
constructor() {
|
|
31254
|
+
this.notifications$ = new BehaviorSubject([]);
|
|
31255
|
+
}
|
|
31256
|
+
showNotification(content, timeoutMs) {
|
|
31257
|
+
const id = Math.floor(Math.random() * 1000000);
|
|
31258
|
+
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31259
|
+
if (typeof timeoutMs === 'undefined')
|
|
31260
|
+
return;
|
|
31261
|
+
setTimeout(() => {
|
|
31262
|
+
this.removeNotificationById(id);
|
|
31263
|
+
}, timeoutMs);
|
|
31264
|
+
}
|
|
31265
|
+
removeNotificationById(id) {
|
|
31266
|
+
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31267
|
+
}
|
|
31268
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31269
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31270
|
+
}
|
|
31271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31272
|
+
type: Injectable,
|
|
31273
|
+
args: [{
|
|
31274
|
+
providedIn: 'root',
|
|
31275
|
+
}]
|
|
31276
|
+
}] });
|
|
31277
|
+
|
|
31278
|
+
class FeatureNotificationsModule {
|
|
31279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31280
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31281
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31282
|
+
}
|
|
31283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31284
|
+
type: NgModule,
|
|
31285
|
+
args: [{
|
|
31286
|
+
declarations: [],
|
|
31287
|
+
exports: [],
|
|
31288
|
+
imports: [],
|
|
31289
|
+
providers: [NotificationsService],
|
|
31290
|
+
}]
|
|
31291
|
+
}] });
|
|
31292
|
+
|
|
31293
|
+
class NotificationsContainerComponent {
|
|
31294
|
+
constructor(notificationsService) {
|
|
31295
|
+
this.notificationsService = notificationsService;
|
|
31296
|
+
}
|
|
31297
|
+
trackById(index, notification) {
|
|
31298
|
+
return notification.id;
|
|
31299
|
+
}
|
|
31300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31301
|
+
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: [
|
|
31302
|
+
trigger('enterExit', [
|
|
31303
|
+
transition(':enter', [
|
|
31304
|
+
animate('150ms', keyframes([
|
|
31305
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31306
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31307
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31308
|
+
])),
|
|
31309
|
+
]),
|
|
31310
|
+
transition(':leave', [
|
|
31311
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31312
|
+
]),
|
|
31313
|
+
]),
|
|
31314
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31315
|
+
}
|
|
31316
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31317
|
+
type: Component,
|
|
31318
|
+
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31319
|
+
trigger('enterExit', [
|
|
31320
|
+
transition(':enter', [
|
|
31321
|
+
animate('150ms', keyframes([
|
|
31322
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31323
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31324
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31325
|
+
])),
|
|
31326
|
+
]),
|
|
31327
|
+
transition(':leave', [
|
|
31328
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31329
|
+
]),
|
|
31330
|
+
]),
|
|
31331
|
+
], 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" }]
|
|
31332
|
+
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31333
|
+
|
|
30721
31334
|
class ResultsTableContainerComponent {
|
|
30722
|
-
constructor(searchFacade, searchService, selectionService, recordsRepository) {
|
|
31335
|
+
constructor(searchFacade, searchService, selectionService, recordsRepository, notificationsService, translateService) {
|
|
30723
31336
|
this.searchFacade = searchFacade;
|
|
30724
31337
|
this.searchService = searchService;
|
|
30725
31338
|
this.selectionService = selectionService;
|
|
30726
31339
|
this.recordsRepository = recordsRepository;
|
|
31340
|
+
this.notificationsService = notificationsService;
|
|
31341
|
+
this.translateService = translateService;
|
|
30727
31342
|
this.recordClick = new EventEmitter();
|
|
31343
|
+
this.duplicateRecord = new EventEmitter();
|
|
31344
|
+
this.subscription = new Subscription();
|
|
30728
31345
|
this.records$ = this.searchFacade.results$;
|
|
30729
31346
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
30730
31347
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
@@ -30733,6 +31350,31 @@ class ResultsTableContainerComponent {
|
|
|
30733
31350
|
handleRecordClick(item) {
|
|
30734
31351
|
this.recordClick.emit(item);
|
|
30735
31352
|
}
|
|
31353
|
+
handleDuplicateRecord(item) {
|
|
31354
|
+
this.duplicateRecord.emit(item);
|
|
31355
|
+
}
|
|
31356
|
+
async handleDeleteRecord(item) {
|
|
31357
|
+
const uniqueIdentifier = item.uniqueIdentifier;
|
|
31358
|
+
this.subscription.add(this.recordsRepository.deleteRecord(uniqueIdentifier).subscribe({
|
|
31359
|
+
next: () => {
|
|
31360
|
+
this.recordsRepository.clearRecordDraft(uniqueIdentifier);
|
|
31361
|
+
this.searchFacade.requestNewResults();
|
|
31362
|
+
this.notificationsService.showNotification({
|
|
31363
|
+
type: 'success',
|
|
31364
|
+
title: this.translateService.instant('editor.record.deleteSuccess.title'),
|
|
31365
|
+
text: `${this.translateService.instant('editor.record.deleteSuccess.body')}`,
|
|
31366
|
+
}, 2500);
|
|
31367
|
+
},
|
|
31368
|
+
error: (error) => {
|
|
31369
|
+
this.notificationsService.showNotification({
|
|
31370
|
+
type: 'error',
|
|
31371
|
+
title: this.translateService.instant('editor.record.deleteError.title'),
|
|
31372
|
+
text: `${this.translateService.instant('editor.record.deleteError.body')} ${error}`,
|
|
31373
|
+
closeMessage: this.translateService.instant('editor.record.deleteError.closeMessage'),
|
|
31374
|
+
});
|
|
31375
|
+
},
|
|
31376
|
+
}));
|
|
31377
|
+
}
|
|
30736
31378
|
handleSortByChange(col, order) {
|
|
30737
31379
|
this.searchService.setSortBy([order, col]);
|
|
30738
31380
|
}
|
|
@@ -30744,13 +31386,18 @@ class ResultsTableContainerComponent {
|
|
|
30744
31386
|
this.selectionService.selectRecords(records);
|
|
30745
31387
|
}
|
|
30746
31388
|
}
|
|
30747
|
-
|
|
30748
|
-
|
|
31389
|
+
ngOnDestroy() {
|
|
31390
|
+
this.subscription.unsubscribe();
|
|
31391
|
+
}
|
|
31392
|
+
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 }); }
|
|
31393
|
+
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"] }] }); }
|
|
30749
31394
|
}
|
|
30750
31395
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
30751
31396
|
type: Component,
|
|
30752
|
-
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [
|
|
30753
|
-
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
|
|
31397
|
+
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" }]
|
|
31398
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }]; }, propDecorators: { recordClick: [{
|
|
31399
|
+
type: Output
|
|
31400
|
+
}], duplicateRecord: [{
|
|
30754
31401
|
type: Output
|
|
30755
31402
|
}] } });
|
|
30756
31403
|
|
|
@@ -31051,7 +31698,7 @@ class LayersPanelComponent {
|
|
|
31051
31698
|
this.mapFacade.addLayer(layer);
|
|
31052
31699
|
}
|
|
31053
31700
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31054
|
-
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$
|
|
31701
|
+
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 }); }
|
|
31055
31702
|
}
|
|
31056
31703
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
31057
31704
|
type: Component,
|
|
@@ -31062,12 +31709,12 @@ class MapEffects {
|
|
|
31062
31709
|
constructor(actions$) {
|
|
31063
31710
|
this.actions$ = actions$;
|
|
31064
31711
|
}
|
|
31065
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, deps: [{ token: i1$
|
|
31712
|
+
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 }); }
|
|
31066
31713
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects }); }
|
|
31067
31714
|
}
|
|
31068
31715
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, decorators: [{
|
|
31069
31716
|
type: Injectable
|
|
31070
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
31717
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }]; } });
|
|
31071
31718
|
|
|
31072
31719
|
class MapContainerComponent {
|
|
31073
31720
|
constructor(mapFacade) {
|
|
@@ -31220,7 +31867,7 @@ class FeatureMapModule {
|
|
|
31220
31867
|
MatIconModule,
|
|
31221
31868
|
MatTabsModule,
|
|
31222
31869
|
TranslateModule,
|
|
31223
|
-
FeatureSearchModule, i1$2.StoreFeatureModule, i1$
|
|
31870
|
+
FeatureSearchModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiElementsModule,
|
|
31224
31871
|
UiInputsModule,
|
|
31225
31872
|
AddLayerFromOgcApiComponent], exports: [MapContextComponent,
|
|
31226
31873
|
MapInstanceDirective,
|
|
@@ -31344,88 +31991,6 @@ const DEFAULT_STYLE_HL_FIXTURE = new Style$1({
|
|
|
31344
31991
|
}),
|
|
31345
31992
|
});
|
|
31346
31993
|
|
|
31347
|
-
class NotificationsService {
|
|
31348
|
-
constructor() {
|
|
31349
|
-
this.notifications$ = new BehaviorSubject([]);
|
|
31350
|
-
}
|
|
31351
|
-
showNotification(content, timeoutMs) {
|
|
31352
|
-
const id = Math.floor(Math.random() * 1000000);
|
|
31353
|
-
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31354
|
-
if (typeof timeoutMs === 'undefined')
|
|
31355
|
-
return;
|
|
31356
|
-
setTimeout(() => {
|
|
31357
|
-
this.removeNotificationById(id);
|
|
31358
|
-
}, timeoutMs);
|
|
31359
|
-
}
|
|
31360
|
-
removeNotificationById(id) {
|
|
31361
|
-
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31362
|
-
}
|
|
31363
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31364
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31365
|
-
}
|
|
31366
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31367
|
-
type: Injectable,
|
|
31368
|
-
args: [{
|
|
31369
|
-
providedIn: 'root',
|
|
31370
|
-
}]
|
|
31371
|
-
}] });
|
|
31372
|
-
|
|
31373
|
-
class FeatureNotificationsModule {
|
|
31374
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31375
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31376
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31377
|
-
}
|
|
31378
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31379
|
-
type: NgModule,
|
|
31380
|
-
args: [{
|
|
31381
|
-
declarations: [],
|
|
31382
|
-
exports: [],
|
|
31383
|
-
imports: [],
|
|
31384
|
-
providers: [NotificationsService],
|
|
31385
|
-
}]
|
|
31386
|
-
}] });
|
|
31387
|
-
|
|
31388
|
-
class NotificationsContainerComponent {
|
|
31389
|
-
constructor(notificationsService) {
|
|
31390
|
-
this.notificationsService = notificationsService;
|
|
31391
|
-
}
|
|
31392
|
-
trackById(index, notification) {
|
|
31393
|
-
return notification.id;
|
|
31394
|
-
}
|
|
31395
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31396
|
-
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: [
|
|
31397
|
-
trigger('enterExit', [
|
|
31398
|
-
transition(':enter', [
|
|
31399
|
-
animate('150ms', keyframes([
|
|
31400
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31401
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31402
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31403
|
-
])),
|
|
31404
|
-
]),
|
|
31405
|
-
transition(':leave', [
|
|
31406
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31407
|
-
]),
|
|
31408
|
-
]),
|
|
31409
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31410
|
-
}
|
|
31411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31412
|
-
type: Component,
|
|
31413
|
-
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31414
|
-
trigger('enterExit', [
|
|
31415
|
-
transition(':enter', [
|
|
31416
|
-
animate('150ms', keyframes([
|
|
31417
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31418
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31419
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31420
|
-
])),
|
|
31421
|
-
]),
|
|
31422
|
-
transition(':leave', [
|
|
31423
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31424
|
-
]),
|
|
31425
|
-
]),
|
|
31426
|
-
], 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" }]
|
|
31427
|
-
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31428
|
-
|
|
31429
31994
|
/*
|
|
31430
31995
|
Metadata actions
|
|
31431
31996
|
*/
|
|
@@ -31793,7 +32358,7 @@ class TableComponent {
|
|
|
31793
32358
|
return rowIdPrefix + id;
|
|
31794
32359
|
}
|
|
31795
32360
|
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 }); }
|
|
31796
|
-
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$
|
|
32361
|
+
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 }); }
|
|
31797
32362
|
}
|
|
31798
32363
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
31799
32364
|
type: Component,
|
|
@@ -33259,12 +33824,12 @@ class MdViewEffects {
|
|
|
33259
33824
|
}));
|
|
33260
33825
|
})))));
|
|
33261
33826
|
}
|
|
33262
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$
|
|
33827
|
+
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 }); }
|
|
33263
33828
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects }); }
|
|
33264
33829
|
}
|
|
33265
33830
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
33266
33831
|
type: Injectable
|
|
33267
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
33832
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
33268
33833
|
|
|
33269
33834
|
marker('externalviewer.dataset.unnamed');
|
|
33270
33835
|
class ExternalViewerButtonComponent {
|
|
@@ -33939,37 +34504,54 @@ const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
|
33939
34504
|
|
|
33940
34505
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
33941
34506
|
class DataViewPermalinkComponent {
|
|
34507
|
+
set viewType(value) {
|
|
34508
|
+
this.viewType$.next(value);
|
|
34509
|
+
}
|
|
33942
34510
|
constructor(config, wcEmbedderBaseUrl, version, facade) {
|
|
33943
34511
|
this.config = config;
|
|
33944
34512
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
33945
34513
|
this.version = version;
|
|
33946
34514
|
this.facade = facade;
|
|
34515
|
+
this.viewType$ = new BehaviorSubject('map');
|
|
33947
34516
|
this.permalinkUrl$ = combineLatest([
|
|
34517
|
+
this.viewType$,
|
|
33948
34518
|
this.facade.chartConfig$,
|
|
33949
34519
|
this.facade.metadata$,
|
|
33950
|
-
]).pipe(map$2(([config, metadata]) => {
|
|
33951
|
-
|
|
33952
|
-
|
|
33953
|
-
|
|
33954
|
-
|
|
33955
|
-
|
|
33956
|
-
|
|
33957
|
-
|
|
33958
|
-
|
|
33959
|
-
|
|
33960
|
-
|
|
33961
|
-
|
|
33962
|
-
|
|
33963
|
-
|
|
33964
|
-
|
|
33965
|
-
url.searchParams.append('a', `chart-type=${chartType}`);
|
|
33966
|
-
return url.toString();
|
|
34520
|
+
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
34521
|
+
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
34522
|
+
url.searchParams.set('v', `${this.version}`);
|
|
34523
|
+
if (viewType === 'chart') {
|
|
34524
|
+
if (config) {
|
|
34525
|
+
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
34526
|
+
url.searchParams.append('e', `gn-dataset-view-chart`);
|
|
34527
|
+
url.searchParams.append('a', `aggregation=${aggregation}`);
|
|
34528
|
+
url.searchParams.append('a', `x-property=${xProperty}`);
|
|
34529
|
+
url.searchParams.append('a', `y-property=${yProperty}`);
|
|
34530
|
+
url.searchParams.append('a', `chart-type=${chartType}`);
|
|
34531
|
+
}
|
|
34532
|
+
else {
|
|
34533
|
+
return '';
|
|
34534
|
+
}
|
|
33967
34535
|
}
|
|
33968
|
-
|
|
34536
|
+
else if (viewType === 'table') {
|
|
34537
|
+
// table
|
|
34538
|
+
url.searchParams.append('e', `gn-dataset-view-table`);
|
|
34539
|
+
}
|
|
34540
|
+
else {
|
|
34541
|
+
// map
|
|
34542
|
+
url.searchParams.append('e', `gn-dataset-view-map`);
|
|
34543
|
+
}
|
|
34544
|
+
url.searchParams.append('a', `api-url=${this.config.basePath}`);
|
|
34545
|
+
url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
|
|
34546
|
+
url.searchParams.append('a', `primary-color=#0f4395`);
|
|
34547
|
+
url.searchParams.append('a', `secondary-color=#8bc832`);
|
|
34548
|
+
url.searchParams.append('a', `main-color=#555`);
|
|
34549
|
+
url.searchParams.append('a', `background-color=#fdfbff`);
|
|
34550
|
+
return url.toString();
|
|
33969
34551
|
}));
|
|
33970
34552
|
}
|
|
33971
34553
|
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 }); }
|
|
33972
|
-
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 }); }
|
|
34554
|
+
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 }); }
|
|
33973
34555
|
}
|
|
33974
34556
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
33975
34557
|
type: Component,
|
|
@@ -33985,37 +34567,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
33985
34567
|
}] }, { type: undefined, decorators: [{
|
|
33986
34568
|
type: Inject,
|
|
33987
34569
|
args: [GN_UI_VERSION]
|
|
33988
|
-
}] }, { type: MdViewFacade }]; }
|
|
34570
|
+
}] }, { type: MdViewFacade }]; }, propDecorators: { viewType: [{
|
|
34571
|
+
type: Input
|
|
34572
|
+
}] } });
|
|
33989
34573
|
|
|
33990
34574
|
class DataViewWebComponentComponent {
|
|
34575
|
+
set viewType(value) {
|
|
34576
|
+
this.viewType$.next(value);
|
|
34577
|
+
}
|
|
33991
34578
|
constructor(config, version, facade) {
|
|
33992
34579
|
this.config = config;
|
|
33993
34580
|
this.version = version;
|
|
33994
34581
|
this.facade = facade;
|
|
33995
|
-
this.
|
|
33996
|
-
|
|
33997
|
-
|
|
34582
|
+
this.viewType$ = new BehaviorSubject('map');
|
|
34583
|
+
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
34584
|
+
if (viewType === 'chart') {
|
|
34585
|
+
if (config) {
|
|
34586
|
+
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
34587
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
|
|
34588
|
+
<gn-dataset-view-chart
|
|
34589
|
+
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
34590
|
+
dataset-id="${metadata.uniqueIdentifier}"
|
|
34591
|
+
aggregation="${aggregation}"
|
|
34592
|
+
x-property="${xProperty}"
|
|
34593
|
+
y-property="${yProperty}"
|
|
34594
|
+
chart-type="${chartType}"
|
|
34595
|
+
primary-color="#0f4395"
|
|
34596
|
+
secondary-color="#8bc832"
|
|
34597
|
+
main-color="#555"
|
|
34598
|
+
background-color="#fdfbff"
|
|
34599
|
+
main-font="'Inter', sans-serif"
|
|
34600
|
+
title-font="'DM Serif Display', serif"
|
|
34601
|
+
></gn-dataset-view-chart>`;
|
|
34602
|
+
}
|
|
34603
|
+
return '';
|
|
34604
|
+
}
|
|
34605
|
+
else if (viewType === 'table') {
|
|
33998
34606
|
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
|
|
33999
|
-
<gn-dataset-view-
|
|
34607
|
+
<gn-dataset-view-table
|
|
34608
|
+
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
34609
|
+
dataset-id="${metadata.uniqueIdentifier}"
|
|
34610
|
+
primary-color="#0f4395"
|
|
34611
|
+
secondary-color="#8bc832"
|
|
34612
|
+
main-color="#555"
|
|
34613
|
+
background-color="#fdfbff"
|
|
34614
|
+
main-font="'Inter', sans-serif"
|
|
34615
|
+
title-font="'DM Serif Display', serif"
|
|
34616
|
+
></gn-dataset-view-table>`;
|
|
34617
|
+
}
|
|
34618
|
+
else {
|
|
34619
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
|
|
34620
|
+
<gn-dataset-view-map
|
|
34000
34621
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
34001
34622
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
34002
|
-
aggregation="${aggregation}"
|
|
34003
|
-
x-property="${xProperty}"
|
|
34004
|
-
y-property="${yProperty}"
|
|
34005
|
-
chart-type="${chartType}"
|
|
34006
34623
|
primary-color="#0f4395"
|
|
34007
34624
|
secondary-color="#8bc832"
|
|
34008
34625
|
main-color="#555"
|
|
34009
34626
|
background-color="#fdfbff"
|
|
34010
34627
|
main-font="'Inter', sans-serif"
|
|
34011
34628
|
title-font="'DM Serif Display', serif"
|
|
34012
|
-
></gn-dataset-view-
|
|
34629
|
+
></gn-dataset-view-map>`;
|
|
34013
34630
|
}
|
|
34014
|
-
return '';
|
|
34015
34631
|
}));
|
|
34016
34632
|
}
|
|
34017
34633
|
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 }); }
|
|
34018
|
-
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 }); }
|
|
34634
|
+
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 }); }
|
|
34019
34635
|
}
|
|
34020
34636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
34021
34637
|
type: Component,
|
|
@@ -34026,24 +34642,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
34026
34642
|
}] }, { type: undefined, decorators: [{
|
|
34027
34643
|
type: Inject,
|
|
34028
34644
|
args: [GN_UI_VERSION]
|
|
34029
|
-
}] }, { type: MdViewFacade }]; }
|
|
34645
|
+
}] }, { type: MdViewFacade }]; }, propDecorators: { viewType: [{
|
|
34646
|
+
type: Input
|
|
34647
|
+
}] } });
|
|
34030
34648
|
|
|
34031
34649
|
class DataViewShareComponent {
|
|
34650
|
+
set viewType(value) {
|
|
34651
|
+
this._viewType = value;
|
|
34652
|
+
}
|
|
34653
|
+
get viewType() {
|
|
34654
|
+
return this._viewType;
|
|
34655
|
+
}
|
|
34032
34656
|
constructor(wcEmbedderBaseUrl) {
|
|
34033
34657
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
34034
34658
|
}
|
|
34035
34659
|
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 }); }
|
|
34036
|
-
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$
|
|
34660
|
+
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 }); }
|
|
34037
34661
|
}
|
|
34038
34662
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
34039
34663
|
type: Component,
|
|
34040
|
-
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"] }]
|
|
34664
|
+
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"] }]
|
|
34041
34665
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
34042
34666
|
type: Optional
|
|
34043
34667
|
}, {
|
|
34044
34668
|
type: Inject,
|
|
34045
34669
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
34046
|
-
}] }]; }
|
|
34670
|
+
}] }]; }, propDecorators: { viewType: [{
|
|
34671
|
+
type: Input
|
|
34672
|
+
}] } });
|
|
34047
34673
|
|
|
34048
34674
|
class FeatureRecordModule {
|
|
34049
34675
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureRecordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -34052,7 +34678,7 @@ class FeatureRecordModule {
|
|
|
34052
34678
|
ExternalViewerButtonComponent,
|
|
34053
34679
|
DataViewPermalinkComponent,
|
|
34054
34680
|
DataViewWebComponentComponent,
|
|
34055
|
-
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$
|
|
34681
|
+
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiLayoutModule,
|
|
34056
34682
|
FeatureMapModule,
|
|
34057
34683
|
FeatureCatalogModule,
|
|
34058
34684
|
UiMapModule,
|
|
@@ -34133,75 +34759,169 @@ const saveRecord = createAction('[Editor] Save record');
|
|
|
34133
34759
|
const saveRecordSuccess = createAction('[Editor] Save record success');
|
|
34134
34760
|
const saveRecordFailure = createAction('[Editor] Save record failure', props());
|
|
34135
34761
|
const draftSaveSuccess = createAction('[Editor] Draft save success');
|
|
34762
|
+
const setCurrentPage = createAction('[Editor] Set current page', props());
|
|
34136
34763
|
|
|
34137
|
-
|
|
34138
|
-
|
|
34139
|
-
|
|
34140
|
-
|
|
34141
|
-
|
|
34142
|
-
|
|
34143
|
-
|
|
34764
|
+
/**
|
|
34765
|
+
* This file contains the configuration of the fields that will be displayed in the editor.
|
|
34766
|
+
* To add a new field, you need to create a new EditorField object in the fields part of this file.
|
|
34767
|
+
* Then add it to the corresponding section in the sections part of this file.
|
|
34768
|
+
* Finally, add the section to the corresponding page in the pages part of this file.
|
|
34769
|
+
*/
|
|
34770
|
+
/************************************************************
|
|
34771
|
+
*************** FIELDS *****************
|
|
34772
|
+
************************************************************
|
|
34773
|
+
*/
|
|
34774
|
+
const RECORD_LICENSE_FIELD = {
|
|
34775
|
+
model: 'licenses',
|
|
34776
|
+
formFieldConfig: {
|
|
34777
|
+
labelKey: marker('editor.record.form.field.license'),
|
|
34144
34778
|
},
|
|
34145
|
-
|
|
34146
|
-
|
|
34147
|
-
|
|
34148
|
-
|
|
34149
|
-
|
|
34150
|
-
},
|
|
34779
|
+
};
|
|
34780
|
+
const RECORD_KEYWORDS_FIELD = {
|
|
34781
|
+
model: 'keywords',
|
|
34782
|
+
formFieldConfig: {
|
|
34783
|
+
labelKey: marker('editor.record.form.field.keywords'),
|
|
34151
34784
|
},
|
|
34152
|
-
|
|
34153
|
-
|
|
34154
|
-
|
|
34155
|
-
|
|
34156
|
-
|
|
34157
|
-
|
|
34158
|
-
},
|
|
34785
|
+
};
|
|
34786
|
+
const RECORD_UNIQUE_IDENTIFIER_FIELD = {
|
|
34787
|
+
model: 'uniqueIdentifier',
|
|
34788
|
+
formFieldConfig: {
|
|
34789
|
+
labelKey: marker('editor.record.form.field.uniqueIdentifier'),
|
|
34790
|
+
locked: true,
|
|
34159
34791
|
},
|
|
34160
|
-
|
|
34161
|
-
|
|
34162
|
-
|
|
34163
|
-
|
|
34164
|
-
|
|
34165
|
-
locked: true,
|
|
34166
|
-
},
|
|
34167
|
-
onSaveProcess: '${dateNow()}',
|
|
34792
|
+
};
|
|
34793
|
+
const RECORD_RESOURCE_UPDATED_FIELD = {
|
|
34794
|
+
model: 'resourceUpdated',
|
|
34795
|
+
formFieldConfig: {
|
|
34796
|
+
labelKey: marker('editor.record.form.field.resourceUpdated'),
|
|
34168
34797
|
},
|
|
34169
|
-
|
|
34170
|
-
|
|
34171
|
-
|
|
34172
|
-
|
|
34173
|
-
|
|
34174
|
-
|
|
34798
|
+
};
|
|
34799
|
+
const RECORD_UPDATED_FIELD = {
|
|
34800
|
+
model: 'recordUpdated',
|
|
34801
|
+
formFieldConfig: {
|
|
34802
|
+
labelKey: marker('editor.record.form.field.recordUpdated'),
|
|
34803
|
+
locked: true,
|
|
34175
34804
|
},
|
|
34176
|
-
{
|
|
34177
|
-
|
|
34178
|
-
|
|
34179
|
-
|
|
34180
|
-
|
|
34181
|
-
|
|
34805
|
+
onSaveProcess: '${dateNow()}',
|
|
34806
|
+
};
|
|
34807
|
+
const RECORD_UPDATE_FREQUENCY_FIELD = {
|
|
34808
|
+
model: 'updateFrequency',
|
|
34809
|
+
formFieldConfig: {
|
|
34810
|
+
labelKey: marker('editor.record.form.field.updateFrequency'),
|
|
34182
34811
|
},
|
|
34183
|
-
|
|
34184
|
-
|
|
34185
|
-
|
|
34186
|
-
|
|
34187
|
-
|
|
34188
|
-
},
|
|
34812
|
+
};
|
|
34813
|
+
const RECORD_TEMPORAL_EXTENTS_FIELD = {
|
|
34814
|
+
model: 'temporalExtents',
|
|
34815
|
+
formFieldConfig: {
|
|
34816
|
+
labelKey: marker('editor.record.form.field.temporalExtents'),
|
|
34189
34817
|
},
|
|
34190
|
-
|
|
34191
|
-
|
|
34192
|
-
|
|
34193
|
-
|
|
34194
|
-
|
|
34195
|
-
},
|
|
34818
|
+
};
|
|
34819
|
+
const RECORD_TITLE_FIELD = {
|
|
34820
|
+
model: 'title',
|
|
34821
|
+
formFieldConfig: {
|
|
34822
|
+
labelKey: marker('editor.record.form.field.title'),
|
|
34196
34823
|
},
|
|
34197
|
-
|
|
34198
|
-
|
|
34199
|
-
|
|
34200
|
-
|
|
34201
|
-
|
|
34202
|
-
},
|
|
34824
|
+
};
|
|
34825
|
+
const RECORD_ABSTRACT_FIELD = {
|
|
34826
|
+
model: 'abstract',
|
|
34827
|
+
formFieldConfig: {
|
|
34828
|
+
labelKey: marker('editor.record.form.field.abstract'),
|
|
34203
34829
|
},
|
|
34204
|
-
|
|
34830
|
+
};
|
|
34831
|
+
const RECORD_GRAPHICAL_OVERVIEW_FIELD = {
|
|
34832
|
+
model: 'overviews',
|
|
34833
|
+
formFieldConfig: {
|
|
34834
|
+
labelKey: marker('editor.record.form.field.overviews'),
|
|
34835
|
+
},
|
|
34836
|
+
};
|
|
34837
|
+
/************************************************************
|
|
34838
|
+
*************** SECTIONS *****************
|
|
34839
|
+
************************************************************
|
|
34840
|
+
*/
|
|
34841
|
+
const TITLE_SECTION = {
|
|
34842
|
+
hidden: false,
|
|
34843
|
+
fields: [
|
|
34844
|
+
RECORD_TITLE_FIELD,
|
|
34845
|
+
RECORD_ABSTRACT_FIELD,
|
|
34846
|
+
RECORD_GRAPHICAL_OVERVIEW_FIELD,
|
|
34847
|
+
],
|
|
34848
|
+
};
|
|
34849
|
+
const ABOUT_SECTION = {
|
|
34850
|
+
labelKey: marker('editor.record.form.section.about.label'),
|
|
34851
|
+
descriptionKey: marker('editor.record.form.section.about.description'),
|
|
34852
|
+
hidden: false,
|
|
34853
|
+
fields: [
|
|
34854
|
+
RECORD_UNIQUE_IDENTIFIER_FIELD,
|
|
34855
|
+
RECORD_RESOURCE_UPDATED_FIELD,
|
|
34856
|
+
RECORD_UPDATED_FIELD,
|
|
34857
|
+
RECORD_UPDATE_FREQUENCY_FIELD,
|
|
34858
|
+
RECORD_TEMPORAL_EXTENTS_FIELD,
|
|
34859
|
+
],
|
|
34860
|
+
};
|
|
34861
|
+
const GEOGRAPHICAL_COVERAGE_SECTION = {
|
|
34862
|
+
labelKey: marker('editor.record.form.section.geographicalCoverage.label'),
|
|
34863
|
+
hidden: false,
|
|
34864
|
+
fields: [],
|
|
34865
|
+
};
|
|
34866
|
+
const ASSOCIATED_RESOURCES_SECTION = {
|
|
34867
|
+
labelKey: marker('editor.record.form.section.associatedResources.label'),
|
|
34868
|
+
descriptionKey: marker('editor.record.form.section.associatedResources.description'),
|
|
34869
|
+
hidden: false,
|
|
34870
|
+
fields: [],
|
|
34871
|
+
};
|
|
34872
|
+
const ANNEXES_SECTION = {
|
|
34873
|
+
labelKey: marker('editor.record.form.section.annexes.label'),
|
|
34874
|
+
hidden: false,
|
|
34875
|
+
fields: [],
|
|
34876
|
+
};
|
|
34877
|
+
const CLASSIFICATION_SECTION = {
|
|
34878
|
+
labelKey: marker('editor.record.form.section.classification.label'),
|
|
34879
|
+
descriptionKey: marker('editor.record.form.section.classification.description'),
|
|
34880
|
+
hidden: false,
|
|
34881
|
+
fields: [RECORD_KEYWORDS_FIELD],
|
|
34882
|
+
};
|
|
34883
|
+
const USE_AND_ACCESS_CONDITIONS_SECTION = {
|
|
34884
|
+
labelKey: marker('editor.record.form.section.useAndAccessConditions.label'),
|
|
34885
|
+
hidden: false,
|
|
34886
|
+
fields: [RECORD_LICENSE_FIELD],
|
|
34887
|
+
};
|
|
34888
|
+
const DATA_MANAGERS_SECTION = {
|
|
34889
|
+
labelKey: marker('editor.record.form.section.dataManagers.label'),
|
|
34890
|
+
descriptionKey: marker('editor.record.form.section.dataManagers.description'),
|
|
34891
|
+
hidden: false,
|
|
34892
|
+
fields: [],
|
|
34893
|
+
};
|
|
34894
|
+
const DATA_POINT_OF_CONTACT_SECTION = {
|
|
34895
|
+
labelKey: marker('editor.record.form.section.dataPointOfContact.label'),
|
|
34896
|
+
descriptionKey: marker('editor.record.form.section.dataPointOfContact.description'),
|
|
34897
|
+
hidden: false,
|
|
34898
|
+
fields: [],
|
|
34899
|
+
};
|
|
34900
|
+
/************************************************************
|
|
34901
|
+
*************** PAGES *****************
|
|
34902
|
+
************************************************************
|
|
34903
|
+
*/
|
|
34904
|
+
const DEFAULT_CONFIGURATION = {
|
|
34905
|
+
pages: [
|
|
34906
|
+
{
|
|
34907
|
+
labelKey: marker('editor.record.form.page.description'),
|
|
34908
|
+
sections: [TITLE_SECTION, ABOUT_SECTION, GEOGRAPHICAL_COVERAGE_SECTION],
|
|
34909
|
+
},
|
|
34910
|
+
{
|
|
34911
|
+
labelKey: marker('editor.record.form.page.ressources'),
|
|
34912
|
+
sections: [ASSOCIATED_RESOURCES_SECTION, ANNEXES_SECTION],
|
|
34913
|
+
},
|
|
34914
|
+
{
|
|
34915
|
+
labelKey: marker('editor.record.form.page.accessAndContact'),
|
|
34916
|
+
sections: [
|
|
34917
|
+
CLASSIFICATION_SECTION,
|
|
34918
|
+
USE_AND_ACCESS_CONDITIONS_SECTION,
|
|
34919
|
+
DATA_MANAGERS_SECTION,
|
|
34920
|
+
DATA_POINT_OF_CONTACT_SECTION,
|
|
34921
|
+
],
|
|
34922
|
+
},
|
|
34923
|
+
],
|
|
34924
|
+
};
|
|
34205
34925
|
|
|
34206
34926
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
34207
34927
|
const initialEditorState = {
|
|
@@ -34211,7 +34931,8 @@ const initialEditorState = {
|
|
|
34211
34931
|
saving: false,
|
|
34212
34932
|
saveError: null,
|
|
34213
34933
|
changedSinceSave: false,
|
|
34214
|
-
|
|
34934
|
+
editorConfig: DEFAULT_CONFIGURATION,
|
|
34935
|
+
currentPage: 0,
|
|
34215
34936
|
};
|
|
34216
34937
|
const reducer = createReducer(initialEditorState, on(openRecord, (state, { record, recordSource, alreadySavedOnce }) => ({
|
|
34217
34938
|
...state,
|
|
@@ -34241,6 +34962,9 @@ const reducer = createReducer(initialEditorState, on(openRecord, (state, { recor
|
|
|
34241
34962
|
})), on(markRecordAsChanged, (state) => ({
|
|
34242
34963
|
...state,
|
|
34243
34964
|
changedSinceSave: true,
|
|
34965
|
+
})), on(setCurrentPage, (state, { page }) => ({
|
|
34966
|
+
...state,
|
|
34967
|
+
currentPage: page,
|
|
34244
34968
|
})));
|
|
34245
34969
|
function editorReducer(state, action) {
|
|
34246
34970
|
return reducer(state, action);
|
|
@@ -34253,11 +34977,21 @@ const selectRecordSaving = createSelector(selectEditorState, (state) => state.sa
|
|
|
34253
34977
|
const selectRecordSaveError = createSelector(selectEditorState, (state) => state.saveError);
|
|
34254
34978
|
const selectRecordChangedSinceSave = createSelector(selectEditorState, (state) => state.changedSinceSave);
|
|
34255
34979
|
const selectRecordAlreadySavedOnce = createSelector(selectEditorState, (state) => state.alreadySavedOnce);
|
|
34256
|
-
const
|
|
34257
|
-
const
|
|
34258
|
-
|
|
34259
|
-
|
|
34260
|
-
|
|
34980
|
+
const selectEditorConfig = createSelector(selectEditorState, (state) => state.editorConfig);
|
|
34981
|
+
const selectCurrentPage = createSelector(selectEditorState, (state) => state.currentPage);
|
|
34982
|
+
const selectRecordSections = createSelector(selectEditorState, (state) => {
|
|
34983
|
+
const currentPage = state.editorConfig.pages[state.currentPage];
|
|
34984
|
+
if (!currentPage) {
|
|
34985
|
+
return [];
|
|
34986
|
+
}
|
|
34987
|
+
return currentPage.sections.map((section) => ({
|
|
34988
|
+
...section,
|
|
34989
|
+
fieldsWithValues: section.fields.map((fieldConfig) => ({
|
|
34990
|
+
config: fieldConfig,
|
|
34991
|
+
value: state.record?.[fieldConfig.model] ?? null,
|
|
34992
|
+
})),
|
|
34993
|
+
}));
|
|
34994
|
+
});
|
|
34261
34995
|
|
|
34262
34996
|
class EditorFacade {
|
|
34263
34997
|
constructor() {
|
|
@@ -34270,8 +35004,10 @@ class EditorFacade {
|
|
|
34270
35004
|
this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter$1((error) => !!error));
|
|
34271
35005
|
this.saveSuccess$ = this.actions$.pipe(ofType(saveRecordSuccess));
|
|
34272
35006
|
this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
|
|
34273
|
-
this.
|
|
35007
|
+
this.currentSections$ = this.store.pipe(select(selectRecordSections));
|
|
34274
35008
|
this.draftSaveSuccess$ = this.actions$.pipe(ofType(draftSaveSuccess));
|
|
35009
|
+
this.currentPage$ = this.store.pipe(select(selectCurrentPage));
|
|
35010
|
+
this.editorConfig$ = this.store.pipe(select(selectEditorConfig));
|
|
34275
35011
|
}
|
|
34276
35012
|
openRecord(record, recordSource, alreadySavedOnce) {
|
|
34277
35013
|
this.store.dispatch(openRecord({ record, recordSource, alreadySavedOnce }));
|
|
@@ -34282,6 +35018,9 @@ class EditorFacade {
|
|
|
34282
35018
|
updateRecordField(field, value) {
|
|
34283
35019
|
this.store.dispatch(updateRecordField({ field, value }));
|
|
34284
35020
|
}
|
|
35021
|
+
setCurrentPage(page) {
|
|
35022
|
+
this.store.dispatch(setCurrentPage({ page }));
|
|
35023
|
+
}
|
|
34285
35024
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34286
35025
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade }); }
|
|
34287
35026
|
}
|
|
@@ -34309,12 +35048,13 @@ class EditorService {
|
|
|
34309
35048
|
// returns the record as it was when saved, alongside its source
|
|
34310
35049
|
saveRecord(record, fieldsConfig, generateNewUniqueIdentifier = false) {
|
|
34311
35050
|
const savedRecord = { ...record };
|
|
35051
|
+
const fields = fieldsConfig.pages.flatMap((page) => page.sections.flatMap((section) => section.fields));
|
|
34312
35052
|
// run onSave processes
|
|
34313
|
-
for (const field of
|
|
35053
|
+
for (const field of fields) {
|
|
34314
35054
|
if (field.onSaveProcess && field.model) {
|
|
34315
35055
|
const evaluator = evaluate(field.onSaveProcess);
|
|
34316
35056
|
savedRecord[field.model] = evaluator({
|
|
34317
|
-
|
|
35057
|
+
model: field.model,
|
|
34318
35058
|
value: record[field.model],
|
|
34319
35059
|
});
|
|
34320
35060
|
}
|
|
@@ -34351,7 +35091,7 @@ class EditorEffects {
|
|
|
34351
35091
|
this.editorService = inject(EditorService);
|
|
34352
35092
|
this.recordsRepository = inject(RecordsRepositoryInterface);
|
|
34353
35093
|
this.store = inject(Store);
|
|
34354
|
-
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(
|
|
35094
|
+
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
|
|
34355
35095
|
.saveRecord(record, fieldsConfig, !alreadySavedOnce)
|
|
34356
35096
|
.pipe(switchMap$1(([record, recordSource]) => of(saveRecordSuccess(), openRecord({
|
|
34357
35097
|
record,
|
|
@@ -34592,7 +35332,7 @@ class WizardFieldComponent {
|
|
|
34592
35332
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
34593
35333
|
},
|
|
34594
35334
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
34595
|
-
], 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$
|
|
35335
|
+
], 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 }); }
|
|
34596
35336
|
}
|
|
34597
35337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
34598
35338
|
type: Component,
|
|
@@ -34742,7 +35482,7 @@ class FeatureEditorModule {
|
|
|
34742
35482
|
MatNativeDateModule,
|
|
34743
35483
|
MatFormFieldModule,
|
|
34744
35484
|
HttpClientModule,
|
|
34745
|
-
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$
|
|
35485
|
+
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
34746
35486
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureEditorModule, providers: [EditorFacade, Gn4PlatformService], imports: [CommonModule,
|
|
34747
35487
|
UiInputsModule,
|
|
34748
35488
|
UiWidgetsModule,
|
|
@@ -34972,7 +35712,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
34972
35712
|
}
|
|
34973
35713
|
resetValueFromInput(value) {
|
|
34974
35714
|
this.array.clear({ emitEvent: false });
|
|
34975
|
-
|
|
35715
|
+
let newElements = [];
|
|
34976
35716
|
value.forEach((v) => {
|
|
34977
35717
|
if ('start' in v && 'end' in v) {
|
|
34978
35718
|
const rangeControl = new FormControl({
|
|
@@ -34980,8 +35720,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
34980
35720
|
end: v.end,
|
|
34981
35721
|
});
|
|
34982
35722
|
this.array.push(rangeControl, { emitEvent: false });
|
|
34983
|
-
|
|
34984
|
-
...
|
|
35723
|
+
newElements = [
|
|
35724
|
+
...newElements,
|
|
34985
35725
|
{
|
|
34986
35726
|
component: FormFieldTemporalExtentsRangeComponent,
|
|
34987
35727
|
inputs: {
|
|
@@ -34993,8 +35733,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
34993
35733
|
else {
|
|
34994
35734
|
const dateControl = new FormControl({ start: v.start });
|
|
34995
35735
|
this.array.push(dateControl, { emitEvent: false });
|
|
34996
|
-
|
|
34997
|
-
...
|
|
35736
|
+
newElements = [
|
|
35737
|
+
...newElements,
|
|
34998
35738
|
{
|
|
34999
35739
|
component: FormFieldTemporalExtentsDateComponent,
|
|
35000
35740
|
inputs: {
|
|
@@ -35004,6 +35744,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35004
35744
|
];
|
|
35005
35745
|
}
|
|
35006
35746
|
});
|
|
35747
|
+
this.elements = newElements;
|
|
35007
35748
|
}
|
|
35008
35749
|
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 }); }
|
|
35009
35750
|
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 }); }
|
|
@@ -35257,13 +35998,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35257
35998
|
type: Input
|
|
35258
35999
|
}] } });
|
|
35259
36000
|
|
|
36001
|
+
class OverviewUploadComponent {
|
|
36002
|
+
constructor(recordsApiService, cd) {
|
|
36003
|
+
this.recordsApiService = recordsApiService;
|
|
36004
|
+
this.cd = cd;
|
|
36005
|
+
this.overviewChange = new EventEmitter();
|
|
36006
|
+
this.altTextChange = new EventEmitter();
|
|
36007
|
+
this.errorHandle = (error) => {
|
|
36008
|
+
console.error(error);
|
|
36009
|
+
this.resourceUrl = '';
|
|
36010
|
+
this.resourceAltText = '';
|
|
36011
|
+
this.resourceFileName = '';
|
|
36012
|
+
this.overviewChange.emit(null);
|
|
36013
|
+
this.cd.markForCheck();
|
|
36014
|
+
};
|
|
36015
|
+
}
|
|
36016
|
+
ngOnInit() {
|
|
36017
|
+
this.recordsApiService.getAllResources(this.metadataUuid).subscribe({
|
|
36018
|
+
next: (resources) => {
|
|
36019
|
+
if (resources && resources.length > 0) {
|
|
36020
|
+
this.resourceUrl = resources[0].url;
|
|
36021
|
+
this.resourceFileName = resources[0].filename;
|
|
36022
|
+
if (!this.resourceAltText) {
|
|
36023
|
+
this.resourceAltText = this.resourceFileName;
|
|
36024
|
+
}
|
|
36025
|
+
}
|
|
36026
|
+
else {
|
|
36027
|
+
this.resourceUrl = '';
|
|
36028
|
+
this.resourceAltText = '';
|
|
36029
|
+
this.resourceFileName = '';
|
|
36030
|
+
}
|
|
36031
|
+
this.cd.markForCheck();
|
|
36032
|
+
},
|
|
36033
|
+
error: this.errorHandle,
|
|
36034
|
+
});
|
|
36035
|
+
}
|
|
36036
|
+
handleFileChange(file) {
|
|
36037
|
+
this.recordsApiService
|
|
36038
|
+
.putResource(this.metadataUuid, file, 'public')
|
|
36039
|
+
.subscribe({
|
|
36040
|
+
next: (resource) => {
|
|
36041
|
+
this.resourceUrl = resource.url;
|
|
36042
|
+
this.resourceAltText = resource.filename;
|
|
36043
|
+
this.overviewChange.emit({
|
|
36044
|
+
url: new URL(resource.url),
|
|
36045
|
+
description: resource.filename,
|
|
36046
|
+
});
|
|
36047
|
+
this.cd.markForCheck();
|
|
36048
|
+
},
|
|
36049
|
+
error: this.errorHandle,
|
|
36050
|
+
});
|
|
36051
|
+
}
|
|
36052
|
+
handleUrlChange(url) {
|
|
36053
|
+
this.recordsApiService
|
|
36054
|
+
.putResourceFromURL(this.metadataUuid, url, 'public')
|
|
36055
|
+
.subscribe({
|
|
36056
|
+
next: (resource) => {
|
|
36057
|
+
this.resourceUrl = resource.url;
|
|
36058
|
+
this.resourceAltText = resource.filename;
|
|
36059
|
+
this.overviewChange.emit({
|
|
36060
|
+
url: new URL(resource.url),
|
|
36061
|
+
description: resource.filename,
|
|
36062
|
+
});
|
|
36063
|
+
this.cd.markForCheck();
|
|
36064
|
+
},
|
|
36065
|
+
error: this.errorHandle,
|
|
36066
|
+
});
|
|
36067
|
+
}
|
|
36068
|
+
handleAltTextChange(newAltText) {
|
|
36069
|
+
this.resourceAltText = newAltText;
|
|
36070
|
+
this.overviewChange.emit({
|
|
36071
|
+
url: new URL(this.resourceUrl),
|
|
36072
|
+
description: this.resourceAltText,
|
|
36073
|
+
});
|
|
36074
|
+
this.cd.markForCheck();
|
|
36075
|
+
}
|
|
36076
|
+
handleDelete() {
|
|
36077
|
+
//this.formControl.markAsDirty()
|
|
36078
|
+
this.recordsApiService
|
|
36079
|
+
.delResource(this.metadataUuid, this.resourceFileName)
|
|
36080
|
+
.subscribe({
|
|
36081
|
+
next: () => {
|
|
36082
|
+
this.resourceAltText = '';
|
|
36083
|
+
this.resourceUrl = '';
|
|
36084
|
+
this.overviewChange.emit(null);
|
|
36085
|
+
this.cd.markForCheck();
|
|
36086
|
+
},
|
|
36087
|
+
error: this.errorHandle,
|
|
36088
|
+
});
|
|
36089
|
+
}
|
|
36090
|
+
ngOnChanges(changes) {
|
|
36091
|
+
const overviewChanges = changes['formControl'];
|
|
36092
|
+
if (overviewChanges &&
|
|
36093
|
+
overviewChanges.currentValue !== overviewChanges.previousValue) {
|
|
36094
|
+
let overview;
|
|
36095
|
+
if (overviewChanges.currentValue.value &&
|
|
36096
|
+
overviewChanges.currentValue.value.length > 0) {
|
|
36097
|
+
overview = overviewChanges.currentValue.value[0];
|
|
36098
|
+
}
|
|
36099
|
+
else {
|
|
36100
|
+
return;
|
|
36101
|
+
}
|
|
36102
|
+
if (overview.description) {
|
|
36103
|
+
this.resourceAltText = overview.description;
|
|
36104
|
+
this.cd.markForCheck();
|
|
36105
|
+
}
|
|
36106
|
+
}
|
|
36107
|
+
}
|
|
36108
|
+
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 }); }
|
|
36109
|
+
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 }); }
|
|
36110
|
+
}
|
|
36111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, decorators: [{
|
|
36112
|
+
type: Component,
|
|
36113
|
+
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" }]
|
|
36114
|
+
}], ctorParameters: function () { return [{ type: RecordsApiService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { metadataUuid: [{
|
|
36115
|
+
type: Input
|
|
36116
|
+
}], formControl: [{
|
|
36117
|
+
type: Input
|
|
36118
|
+
}], overviewChange: [{
|
|
36119
|
+
type: Output
|
|
36120
|
+
}], altTextChange: [{
|
|
36121
|
+
type: Output
|
|
36122
|
+
}] } });
|
|
36123
|
+
|
|
36124
|
+
class FormFieldOverviewsComponent {
|
|
36125
|
+
handleOverviewChange(overView) {
|
|
36126
|
+
this.control.setValue(overView ? [overView] : []);
|
|
36127
|
+
}
|
|
36128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36129
|
+
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 }); }
|
|
36130
|
+
}
|
|
36131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, decorators: [{
|
|
36132
|
+
type: Component,
|
|
36133
|
+
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" }]
|
|
36134
|
+
}], propDecorators: { metadataUuid: [{
|
|
36135
|
+
type: Input
|
|
36136
|
+
}], control: [{
|
|
36137
|
+
type: Input
|
|
36138
|
+
}] } });
|
|
36139
|
+
|
|
35260
36140
|
class FormFieldComponent {
|
|
35261
36141
|
set value(v) {
|
|
35262
36142
|
this.formControl.setValue(v, {
|
|
35263
36143
|
emitEvent: false,
|
|
35264
36144
|
});
|
|
35265
36145
|
}
|
|
35266
|
-
constructor() {
|
|
36146
|
+
constructor(facade) {
|
|
36147
|
+
this.facade = facade;
|
|
36148
|
+
this.metadataUuid$ = this.facade.record$.pipe(take(1), map$1((record) => record.uniqueIdentifier));
|
|
35267
36149
|
this.formControl = new FormControl();
|
|
35268
36150
|
this.valueChange = this.formControl.valueChanges;
|
|
35269
36151
|
}
|
|
@@ -35291,6 +36173,9 @@ class FormFieldComponent {
|
|
|
35291
36173
|
get isSpatialExtentField() {
|
|
35292
36174
|
return this.model === 'spatialExtents';
|
|
35293
36175
|
}
|
|
36176
|
+
get isGraphicOverview() {
|
|
36177
|
+
return this.model === 'overviews';
|
|
36178
|
+
}
|
|
35294
36179
|
get isSimpleField() {
|
|
35295
36180
|
return this.model === 'uniqueIdentifier' || this.model === 'recordUpdated';
|
|
35296
36181
|
}
|
|
@@ -35303,8 +36188,8 @@ class FormFieldComponent {
|
|
|
35303
36188
|
get withoutWrapper() {
|
|
35304
36189
|
return this.model === 'title' || this.model === 'abstract';
|
|
35305
36190
|
}
|
|
35306
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35307
|
-
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 <
|
|
36191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36192
|
+
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-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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35308
36193
|
}
|
|
35309
36194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
35310
36195
|
type: Component,
|
|
@@ -35327,8 +36212,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35327
36212
|
FormFieldArrayComponent,
|
|
35328
36213
|
FormFieldKeywordsComponent,
|
|
35329
36214
|
TranslateModule,
|
|
35330
|
-
|
|
35331
|
-
|
|
36215
|
+
FormFieldOverviewsComponent,
|
|
36216
|
+
], 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-template>\n" }]
|
|
36217
|
+
}], ctorParameters: function () { return [{ type: EditorFacade }]; }, propDecorators: { model: [{
|
|
35332
36218
|
type: Input
|
|
35333
36219
|
}], config: [{
|
|
35334
36220
|
type: Input
|
|
@@ -35344,23 +36230,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35344
36230
|
class RecordFormComponent {
|
|
35345
36231
|
constructor(facade) {
|
|
35346
36232
|
this.facade = facade;
|
|
35347
|
-
this.fields$ = this.facade.recordFields$;
|
|
35348
36233
|
}
|
|
35349
|
-
handleFieldValueChange(
|
|
35350
|
-
if (!
|
|
36234
|
+
handleFieldValueChange(model, newValue) {
|
|
36235
|
+
if (!model) {
|
|
35351
36236
|
return;
|
|
35352
36237
|
}
|
|
35353
|
-
this.facade.updateRecordField(
|
|
36238
|
+
this.facade.updateRecordField(model, newValue);
|
|
35354
36239
|
}
|
|
35355
36240
|
fieldTracker(index, field) {
|
|
35356
36241
|
return field.config.model;
|
|
35357
36242
|
}
|
|
36243
|
+
sectionTracker(index, section) {
|
|
36244
|
+
return section.labelKey;
|
|
36245
|
+
}
|
|
35358
36246
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35359
|
-
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-
|
|
36247
|
+
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-petrona 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 }); }
|
|
35360
36248
|
}
|
|
35361
36249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
35362
36250
|
type: Component,
|
|
35363
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent], template: "<div class=\"flex flex-col gap-6 p-
|
|
36251
|
+
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-petrona 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" }]
|
|
35364
36252
|
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
35365
36253
|
|
|
35366
36254
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -35410,7 +36298,7 @@ class RouterService {
|
|
|
35410
36298
|
getOrganizationPageRoute() {
|
|
35411
36299
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
35412
36300
|
}
|
|
35413
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
36301
|
+
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 }); }
|
|
35414
36302
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
35415
36303
|
}
|
|
35416
36304
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -35421,7 +36309,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35421
36309
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
35422
36310
|
type: Inject,
|
|
35423
36311
|
args: [ROUTER_CONFIG]
|
|
35424
|
-
}] }, { type: i1$
|
|
36312
|
+
}] }, { type: i1$8.Router }]; } });
|
|
35425
36313
|
|
|
35426
36314
|
const goAction = createAction('[Router] Go', props());
|
|
35427
36315
|
const backAction = createAction('[Router] Back');
|
|
@@ -35678,12 +36566,12 @@ class RouterEffects {
|
|
|
35678
36566
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
35679
36567
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
35680
36568
|
}
|
|
35681
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, deps: [{ token: i1$
|
|
36569
|
+
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 }); }
|
|
35682
36570
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects }); }
|
|
35683
36571
|
}
|
|
35684
36572
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, decorators: [{
|
|
35685
36573
|
type: Injectable
|
|
35686
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
36574
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$8.Router }, { type: i1$3.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
35687
36575
|
type: Inject,
|
|
35688
36576
|
args: [ROUTER_CONFIG]
|
|
35689
36577
|
}] }, { type: FieldsService }]; } });
|
|
@@ -35700,7 +36588,7 @@ class DefaultRouterModule {
|
|
|
35700
36588
|
};
|
|
35701
36589
|
}
|
|
35702
36590
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
35703
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
36591
|
+
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] }); }
|
|
35704
36592
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
35705
36593
|
RouterFacade,
|
|
35706
36594
|
{
|
|
@@ -35743,5 +36631,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35743
36631
|
* Generated bundle index. Do not edit.
|
|
35744
36632
|
*/
|
|
35745
36633
|
|
|
35746
|
-
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,
|
|
36634
|
+
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 };
|
|
35747
36635
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|