geonetwork-ui 2.1.0 → 2.2.0-dev.0c467200
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/gn4.field.mapper.mjs +36 -2
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -1
- package/esm2022/libs/api/repository/src/index.mjs +2 -1
- package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/auth/src/lib/feature-auth.module.mjs +2 -2
- package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +2 -2
- package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +4 -15
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
- package/esm2022/libs/feature/map/src/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
- package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +26 -3
- package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
- package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
- package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -3
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +3 -1
- package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +9 -6
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +2 -2
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
- package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/index.mjs +4 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +10 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -6
- package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +15 -3
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +19 -40
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +6 -3
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +45 -0
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
- package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +3 -3
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +5 -1
- package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
- package/esm2022/libs/util/i18n/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
- package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +8 -1
- package/esm2022/libs/util/shared/src/lib/utils/fuzzy-filter.mjs +27 -0
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/translations/de.json +102 -84
- package/esm2022/translations/en.json +40 -22
- package/esm2022/translations/es.json +18 -0
- package/esm2022/translations/fr.json +26 -8
- package/esm2022/translations/it.json +27 -6
- package/esm2022/translations/nl.json +18 -0
- package/esm2022/translations/pt.json +18 -0
- package/fesm2022/geonetwork-ui.mjs +963 -332
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/index.d.ts +1 -0
- package/libs/api/repository/src/index.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +10 -5
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts +0 -1
- package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/map/src/index.d.ts +1 -0
- package/libs/feature/map/src/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
- package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +16 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
- package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -2
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/effects.d.ts +1 -1
- package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +3 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
- package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -11
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts +2 -4
- package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +18 -17
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/model.d.ts +2 -0
- package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
- package/libs/util/i18n/src/index.d.ts +1 -0
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/libs/util/shared/src/lib/services/theme.service.d.ts +1 -0
- package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts +9 -0
- package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts.map +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/package.json +11 -6
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +43 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -0
- package/src/libs/api/repository/src/index.ts +1 -0
- package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
- package/src/libs/common/domain/src/lib/index.ts +2 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -7
- package/src/libs/feature/auth/src/lib/feature-auth.module.ts +1 -1
- package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +1 -1
- package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +3 -17
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
- package/src/libs/feature/map/src/index.ts +1 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
- package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +14 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
- package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +9 -3
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +6 -0
- package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -4
- package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -1
- package/src/libs/feature/search/src/lib/state/effects.ts +1 -1
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +1 -1
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
- package/src/libs/ui/elements/src/index.ts +3 -0
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +16 -0
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +93 -27
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +7 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +59 -32
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +5 -0
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +7 -0
- package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +22 -42
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +7 -4
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +47 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
- package/src/libs/ui/search/src/lib/record-table/record-table.component.html +2 -2
- package/src/libs/util/app-config/src/lib/app-config.ts +4 -0
- package/src/libs/util/app-config/src/lib/model.ts +2 -0
- package/src/libs/util/i18n/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
- package/src/libs/util/shared/src/lib/services/theme.service.ts +9 -0
- package/src/libs/util/shared/src/lib/utils/fuzzy-filter.ts +32 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/tailwind.base.css +31 -1
- package/translations/de.json +102 -84
- package/translations/en.json +40 -22
- package/translations/es.json +18 -0
- package/translations/fr.json +26 -8
- package/translations/it.json +27 -6
- package/translations/nl.json +18 -0
- package/translations/pt.json +18 -0
- package/translations/sk.json +18 -0
- package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
- package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
- package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
- package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
- /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
- /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
|
@@ -12,7 +12,7 @@ import { map as map$1, shareReplay, filter, tap as tap$1, startWith, switchMap a
|
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject, tap as tap$2, fromEvent, timer, from, Subscription, animationFrameScheduler, firstValueFrom, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, EMPTY, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject, tap as tap$2, fromEvent, timer, from, Subscription, animationFrameScheduler, firstValueFrom, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule } from '@ngrx/store';
|
|
@@ -32,8 +32,8 @@ import WMTS, { optionsFromCapabilities } from 'ol/source/WMTS';
|
|
|
32
32
|
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
33
33
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
34
34
|
import WMTSCapabilities from 'ol/format/WMTSCapabilities';
|
|
35
|
-
import { WmsEndpoint, sharedFetch, useCache, WfsEndpoint } from '@camptocamp/ogc-client';
|
|
36
35
|
import chroma from 'chroma-js';
|
|
36
|
+
import { WmsEndpoint, WfsEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
37
37
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
38
38
|
import proj4 from 'proj4/dist/proj4';
|
|
39
39
|
import * as TOML from '@ltd/j-toml';
|
|
@@ -58,6 +58,7 @@ import * as i1$4 from '@angular/material/progress-spinner';
|
|
|
58
58
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
59
59
|
import * as i3 from '@angular/material/tooltip';
|
|
60
60
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
61
|
+
import { marked } from 'marked';
|
|
61
62
|
import EmblaCarousel from 'embla-carousel';
|
|
62
63
|
import * as i1$6 from '@angular/cdk/overlay';
|
|
63
64
|
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
@@ -72,10 +73,13 @@ import { MatFormFieldModule } from '@angular/material/form-field';
|
|
|
72
73
|
import * as i3$2 from '@angular/material/datepicker';
|
|
73
74
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
74
75
|
import { MatInputModule } from '@angular/material/input';
|
|
76
|
+
import * as basicLightbox from 'basiclightbox';
|
|
75
77
|
import * as i1$8 from '@ngrx/effects';
|
|
76
78
|
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
77
79
|
import tippy from 'tippy.js';
|
|
78
80
|
import { valid as valid$1 } from 'geojson-validation';
|
|
81
|
+
import { Polygon } from 'ol/geom';
|
|
82
|
+
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
79
83
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
80
84
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
81
85
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
@@ -1412,6 +1416,7 @@ const selectTranslatedValue = (source, lang3) => selectFallback(selectField(sour
|
|
|
1412
1416
|
const selectTranslatedField = (source, fieldName, lang3) => selectTranslatedValue(selectField(source, fieldName), lang3);
|
|
1413
1417
|
const toDate = (field) => new Date(field);
|
|
1414
1418
|
const getFirstValue = (field) => Array.isArray(field) ? field[0] : field;
|
|
1419
|
+
const getArrayItem = (field, index) => Array.isArray(field) && field[index] !== undefined ? field[index] : null;
|
|
1415
1420
|
const getAsArray = (field) => Array.isArray(field) ? field : field !== null ? [field] : [];
|
|
1416
1421
|
const getAsUrl = (field, location = window.location.toString()) => {
|
|
1417
1422
|
// an empty string is not a valid url, even though it could be considered an empty path to the root
|
|
@@ -16687,20 +16692,20 @@ var de = {
|
|
|
16687
16692
|
"chart.type.line": "Liniendiagramm",
|
|
16688
16693
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16689
16694
|
"chart.type.pie": "Kreisdiagramm",
|
|
16690
|
-
"dashboard.labels.mySpace": "",
|
|
16691
|
-
"dashboard.records.all": "",
|
|
16692
|
-
"dashboard.records.myDraft": "",
|
|
16693
|
-
"dashboard.records.myLibrary": "",
|
|
16694
|
-
"dashboard.records.myOrg": "",
|
|
16695
|
-
"dashboard.records.myRecords": "",
|
|
16696
|
-
"dashboard.records.noRecord": "",
|
|
16697
|
-
"dashboard.records.noUser": "",
|
|
16698
|
-
"dashboard.records.publishedRecords": "",
|
|
16699
|
-
"dashboard.records.search": "",
|
|
16700
|
-
"dashboard.records.userDetail": "",
|
|
16701
|
-
"dashboard.records.userEmail": "",
|
|
16702
|
-
"dashboard.records.username": "",
|
|
16703
|
-
"dashboard.records.users": "",
|
|
16695
|
+
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16696
|
+
"dashboard.records.all": "Katalog",
|
|
16697
|
+
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
16698
|
+
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
16699
|
+
"dashboard.records.myOrg": "Meine Organisation",
|
|
16700
|
+
"dashboard.records.myRecords": "Meine Datensätze",
|
|
16701
|
+
"dashboard.records.noRecord": "Kein Datensatz für diese Organisation",
|
|
16702
|
+
"dashboard.records.noUser": "Keine Benutzer für diese Organisation",
|
|
16703
|
+
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
16704
|
+
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
16705
|
+
"dashboard.records.userDetail": "Name",
|
|
16706
|
+
"dashboard.records.userEmail": "E-Mail",
|
|
16707
|
+
"dashboard.records.username": "Benutzername",
|
|
16708
|
+
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16704
16709
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16705
16710
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16706
16711
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16714,7 +16719,7 @@ var de = {
|
|
|
16714
16719
|
"datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
|
|
16715
16720
|
"datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
|
|
16716
16721
|
"datafeeder.form.dropdown": "Für welche Skala wurde er erstellt?",
|
|
16717
|
-
"datafeeder.form.tags": "Wählen Sie einen oder mehrere
|
|
16722
|
+
"datafeeder.form.tags": "Wählen Sie einen oder mehrere Tage aus, die zu Ihrem Datensatz passen",
|
|
16718
16723
|
"datafeeder.form.title": "Geben Sie Ihrem Datensatz den besten Titel",
|
|
16719
16724
|
"datafeeder.formsPage.title": "Erzählen Sie uns mehr über Ihren Datensatz",
|
|
16720
16725
|
"datafeeder.month.april": "April",
|
|
@@ -16729,16 +16734,16 @@ var de = {
|
|
|
16729
16734
|
"datafeeder.month.november": "November",
|
|
16730
16735
|
"datafeeder.month.october": "Oktober",
|
|
16731
16736
|
"datafeeder.month.september": "September",
|
|
16732
|
-
"datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist",
|
|
16733
|
-
"datafeeder.publish.illustration.title": "Ein weiterer Datensatz zum Veröffentlichen?",
|
|
16737
|
+
"datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist.",
|
|
16738
|
+
"datafeeder.publish.illustration.title": "Ein weiterer Datensatz \n zum Veröffentlichen?",
|
|
16734
16739
|
"datafeeder.publish.subtitle": "Das Veröffentlichen kann einige Minuten dauern.",
|
|
16735
|
-
"datafeeder.publish.title": "Vielen Dank! Ihr Datensatz wird veröffentlicht",
|
|
16740
|
+
"datafeeder.publish.title": "Vielen Dank! \n Ihr Datensatz wird veröffentlicht",
|
|
16736
16741
|
"datafeeder.publish.upload": "Jetzt hochladen",
|
|
16737
16742
|
"datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
|
|
16738
16743
|
"datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
|
|
16739
16744
|
"datafeeder.publishSuccess.mapViewer": "Kartenviewer",
|
|
16740
16745
|
"datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
|
|
16741
|
-
"datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! Ihr Datensatz wurde veröffentlicht",
|
|
16746
|
+
"datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
|
|
16742
16747
|
"datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
|
|
16743
16748
|
"datafeeder.summarizePage.illustration": "Kein Fehler? Los geht's!",
|
|
16744
16749
|
"datafeeder.summarizePage.previous": "Zurück",
|
|
@@ -16746,11 +16751,11 @@ var de = {
|
|
|
16746
16751
|
"datafeeder.summarizePage.title": "Sie sind fast fertig...",
|
|
16747
16752
|
"datafeeder.upload.acceptedFormats": "Akzeptierte Dateiformate:",
|
|
16748
16753
|
"datafeeder.upload.checkboxLabel": "Ich besitze die Rechte zur Veröffentlichung dieses Datensatzes",
|
|
16749
|
-
"datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen
|
|
16754
|
+
"datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geografischen Datensatz enthält",
|
|
16750
16755
|
"datafeeder.upload.error.subtitle.cantOpenFile": "Bitte überprüfen Sie, ob die Datei gültig ist",
|
|
16751
16756
|
"datafeeder.upload.error.subtitle.fileFormat": "Beachten Sie: Nur SHP-Dateien",
|
|
16752
|
-
"datafeeder.upload.error.subtitle.fileSize": "Beachten Sie:
|
|
16753
|
-
"datafeeder.upload.error.title.analysis": "Fehler
|
|
16757
|
+
"datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximale Dateigröße {size} MB",
|
|
16758
|
+
"datafeeder.upload.error.title.analysis": "Fehler während der Datensatzanalyse",
|
|
16754
16759
|
"datafeeder.upload.error.title.cantOpenFile": "Fehler beim Öffnen der Datei",
|
|
16755
16760
|
"datafeeder.upload.error.title.fileFormat": "Das ausgewählte Dateiformat wird nicht unterstützt",
|
|
16756
16761
|
"datafeeder.upload.error.title.fileHasntSelected": "Keine Datei ausgewählt",
|
|
@@ -16758,19 +16763,19 @@ var de = {
|
|
|
16758
16763
|
"datafeeder.upload.error.title.noRightsToSendData": "Sie dürfen diesen Datensatz nicht veröffentlichen",
|
|
16759
16764
|
"datafeeder.upload.illustration.enrichment": "Anreicherung",
|
|
16760
16765
|
"datafeeder.upload.illustration.import": "Import",
|
|
16761
|
-
"datafeeder.upload.illustration.title": "Das Hinzufügen von Daten war noch nie
|
|
16766
|
+
"datafeeder.upload.illustration.title": "Das Hinzufügen von Daten \n war noch nie so einfach",
|
|
16762
16767
|
"datafeeder.upload.illustration.validation": "Validierung",
|
|
16763
|
-
"datafeeder.upload.illustration.verification": "
|
|
16768
|
+
"datafeeder.upload.illustration.verification": "Überprüfung",
|
|
16764
16769
|
"datafeeder.upload.inputLabel": "Importieren Sie Ihre Datei",
|
|
16765
16770
|
"datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
|
|
16766
16771
|
"datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
|
|
16767
16772
|
"datafeeder.upload.uploadButton": "Hochladen",
|
|
16768
|
-
"datafeeder.validation.encoding": "
|
|
16773
|
+
"datafeeder.validation.encoding": "Codierung",
|
|
16769
16774
|
"datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
|
|
16770
16775
|
"datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
|
|
16771
16776
|
"datafeeder.validation.projection": "Raumbezugssystem:",
|
|
16772
|
-
"datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem",
|
|
16773
|
-
"datafeeder.validation.sample.title": "Und eine
|
|
16777
|
+
"datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem aus",
|
|
16778
|
+
"datafeeder.validation.sample.title": "Und eine Beispielentität aus dem Datensatz",
|
|
16774
16779
|
"datafeeder.wizard.emptyRequiredValuesMessage": "Bitte füllen Sie die obligatorischen Felder aus",
|
|
16775
16780
|
"datafeeder.wizardSummarize.createdAt": "Erstellt am",
|
|
16776
16781
|
"datafeeder.wizardSummarize.scale": "Maßstab",
|
|
@@ -16780,16 +16785,20 @@ var de = {
|
|
|
16780
16785
|
"datahub.header.news": "Startseite",
|
|
16781
16786
|
"datahub.header.organisations": "Organisationen",
|
|
16782
16787
|
"datahub.header.popularRecords": "Die beliebtesten",
|
|
16783
|
-
"datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten
|
|
16788
|
+
"datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
|
|
16789
|
+
"datahub.news.contact.contactus": "Kontaktieren Sie uns",
|
|
16790
|
+
"datahub.news.contact.html": "<p>Brauchen Sie Daten, die derzeit nicht auf der Plattform vorhanden sind?</p><p>Unsere Teams stehen Ihnen zur Verfügung.</p>",
|
|
16791
|
+
"datahub.news.contact.title": "Ein spezielles Bedürfnis?",
|
|
16784
16792
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
16785
16793
|
"datahub.news.figures": "Indikatoren",
|
|
16786
|
-
"datahub.
|
|
16794
|
+
"datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
|
|
16795
|
+
"datahub.search.back": "Zurück",
|
|
16787
16796
|
"datahub.search.filter.all": "Alle",
|
|
16788
|
-
"datahub.search.filter.generatedByWfs": "Generiert durch API",
|
|
16797
|
+
"datahub.search.filter.generatedByWfs": "Generiert durch eine API",
|
|
16789
16798
|
"datahub.search.filter.others": "Andere",
|
|
16790
16799
|
"dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
|
|
16791
16800
|
"dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
|
|
16792
|
-
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht
|
|
16801
|
+
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
16793
16802
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
16794
16803
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
16795
16804
|
"domain.record.status.completed": "Abgeschlossen",
|
|
@@ -16797,18 +16806,18 @@ var de = {
|
|
|
16797
16806
|
"domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
|
|
16798
16807
|
"domain.record.status.removed": "Entfernt",
|
|
16799
16808
|
"domain.record.status.under_development": "In Erstellung",
|
|
16800
|
-
"domain.record.updateFrequency.asNeeded": "
|
|
16801
|
-
"domain.record.updateFrequency.continual": "
|
|
16809
|
+
"domain.record.updateFrequency.asNeeded": "Nach Bedarf",
|
|
16810
|
+
"domain.record.updateFrequency.continual": "Fortlaufend",
|
|
16802
16811
|
"domain.record.updateFrequency.day": "{count, plural, =0{0} one{Ein} other{{count}}} mal am Tag",
|
|
16803
|
-
"domain.record.updateFrequency.irregular": "
|
|
16812
|
+
"domain.record.updateFrequency.irregular": "Unregelmäßig",
|
|
16804
16813
|
"domain.record.updateFrequency.month": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Monat",
|
|
16805
16814
|
"domain.record.updateFrequency.notPlanned": "Nicht geplant",
|
|
16806
|
-
"domain.record.updateFrequency.periodic": "
|
|
16815
|
+
"domain.record.updateFrequency.periodic": "Regelmäßig",
|
|
16807
16816
|
"domain.record.updateFrequency.unknown": "Unbekannt",
|
|
16808
16817
|
"domain.record.updateFrequency.week": "{count, plural, =0{0} one{Ein} other{{count}}} mal in der Woche",
|
|
16809
16818
|
"domain.record.updateFrequency.year": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Jahr",
|
|
16810
16819
|
"downloads.format.unknown": "unbekannt",
|
|
16811
|
-
"downloads.wfs.featuretype.not.found": "
|
|
16820
|
+
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
16812
16821
|
dropFile: dropFile$6,
|
|
16813
16822
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
16814
16823
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -16843,10 +16852,18 @@ var de = {
|
|
|
16843
16852
|
"map.add.layer.file": "Aus einer Datei",
|
|
16844
16853
|
"map.add.layer.wfs": "Aus WFS",
|
|
16845
16854
|
"map.add.layer.wms": "Aus WMS",
|
|
16855
|
+
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16856
|
+
"map.geocoding.placeholder": "",
|
|
16857
|
+
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16858
|
+
"map.layer.add": "Hinzufügen",
|
|
16859
|
+
"map.layers.available": "Verfügbare Layer",
|
|
16846
16860
|
"map.layers.list": "Ebenen",
|
|
16847
16861
|
"map.loading.data": "Kartendaten werden geladen...",
|
|
16862
|
+
"map.loading.service": "Dienst wird geladen...",
|
|
16848
16863
|
"map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
|
|
16849
16864
|
"map.select.layer": "Datenquelle",
|
|
16865
|
+
"map.wfs.urlInput.hint": "Geben Sie die WFS URL ein",
|
|
16866
|
+
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
16850
16867
|
"multiselect.filter.placeholder": "Suche",
|
|
16851
16868
|
"nav.back": "Zurück",
|
|
16852
16869
|
next: next$6,
|
|
@@ -16862,56 +16879,61 @@ var de = {
|
|
|
16862
16879
|
"pagination.pageOf": "von",
|
|
16863
16880
|
previous: previous$6,
|
|
16864
16881
|
"record.action.download": "Herunterladen",
|
|
16865
|
-
"record.action.view": "
|
|
16882
|
+
"record.action.view": "Anzeigen",
|
|
16866
16883
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
16867
16884
|
"record.metadata.about": "Beschreibung",
|
|
16868
16885
|
"record.metadata.api": "API",
|
|
16869
|
-
"record.metadata.api.form.closeButton": "",
|
|
16870
|
-
"record.metadata.api.form.closeForm": "",
|
|
16871
|
-
"record.metadata.api.form.create": "",
|
|
16872
|
-
"record.metadata.api.form.customUrl": "",
|
|
16873
|
-
"record.metadata.api.form.limit": "",
|
|
16874
|
-
"record.metadata.api.form.limit.all": "",
|
|
16875
|
-
"record.metadata.api.form.offset": "",
|
|
16876
|
-
"record.metadata.api.form.openForm": "",
|
|
16877
|
-
"record.metadata.api.form.reset": "",
|
|
16878
|
-
"record.metadata.api.form.title": "",
|
|
16879
|
-
"record.metadata.api.form.type": "",
|
|
16880
|
-
"record.metadata.author": "",
|
|
16886
|
+
"record.metadata.api.form.closeButton": "Schließen",
|
|
16887
|
+
"record.metadata.api.form.closeForm": "Formular schließen",
|
|
16888
|
+
"record.metadata.api.form.create": "Ihre Anfrage erstellen",
|
|
16889
|
+
"record.metadata.api.form.customUrl": "Benutzerdefinierte URL",
|
|
16890
|
+
"record.metadata.api.form.limit": "Anzahl der Datensätze",
|
|
16891
|
+
"record.metadata.api.form.limit.all": "Alle",
|
|
16892
|
+
"record.metadata.api.form.offset": "Anzahl des ersten Datensatzes",
|
|
16893
|
+
"record.metadata.api.form.openForm": "Formular öffnen",
|
|
16894
|
+
"record.metadata.api.form.reset": "Zurücksetzen",
|
|
16895
|
+
"record.metadata.api.form.title": "Benutzerdefinierte URL generieren",
|
|
16896
|
+
"record.metadata.api.form.type": "Ausgabeformat",
|
|
16897
|
+
"record.metadata.author": "Autor",
|
|
16881
16898
|
"record.metadata.catalog": "Katalog",
|
|
16882
16899
|
"record.metadata.contact": "Kontakt",
|
|
16883
16900
|
"record.metadata.createdOn": "Erstellt am",
|
|
16884
|
-
"record.metadata.details": "
|
|
16901
|
+
"record.metadata.details": "Technische Informationen",
|
|
16885
16902
|
"record.metadata.download": "Downloads",
|
|
16886
|
-
"record.metadata.formats": "",
|
|
16903
|
+
"record.metadata.formats": "Formate",
|
|
16887
16904
|
"record.metadata.isOpenData": "Open Data",
|
|
16888
16905
|
"record.metadata.keywords": "Stichworte",
|
|
16906
|
+
"record.metadata.lastUpdate": "Zuletzt aktualisiert am",
|
|
16889
16907
|
"record.metadata.links": "Links",
|
|
16890
|
-
"record.metadata.noUsage": "Für diesen Datensatz sind keine
|
|
16908
|
+
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16891
16909
|
"record.metadata.origin": "Über die Daten",
|
|
16910
|
+
"record.metadata.owner": "",
|
|
16892
16911
|
"record.metadata.preview": "Vorschau",
|
|
16893
16912
|
"record.metadata.publications": "Veröffentlichungen",
|
|
16894
|
-
"record.metadata.quality": "",
|
|
16895
|
-
"record.metadata.quality.contact.failed": "",
|
|
16896
|
-
"record.metadata.quality.contact.success": "",
|
|
16897
|
-
"record.metadata.quality.description.failed": "",
|
|
16898
|
-
"record.metadata.quality.description.success": "",
|
|
16899
|
-
"record.metadata.quality.details": "",
|
|
16900
|
-
"record.metadata.quality.keywords.failed": "",
|
|
16901
|
-
"record.metadata.quality.keywords.success": "",
|
|
16902
|
-
"record.metadata.quality.legalConstraints.failed": "",
|
|
16903
|
-
"record.metadata.quality.legalConstraints.success": "",
|
|
16904
|
-
"record.metadata.quality.organisation.failed": "",
|
|
16905
|
-
"record.metadata.quality.organisation.success": "",
|
|
16906
|
-
"record.metadata.quality.title.failed": "",
|
|
16907
|
-
"record.metadata.quality.title.success": "",
|
|
16908
|
-
"record.metadata.quality.topic.failed": "",
|
|
16909
|
-
"record.metadata.quality.topic.success": "",
|
|
16910
|
-
"record.metadata.quality.updateFrequency.failed": "",
|
|
16911
|
-
"record.metadata.quality.updateFrequency.success": "",
|
|
16913
|
+
"record.metadata.quality": "Metadatenqualität",
|
|
16914
|
+
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
16915
|
+
"record.metadata.quality.contact.success": "Kontakt angegeben",
|
|
16916
|
+
"record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
|
|
16917
|
+
"record.metadata.quality.description.success": "Beschreibung angegeben",
|
|
16918
|
+
"record.metadata.quality.details": "Details",
|
|
16919
|
+
"record.metadata.quality.keywords.failed": "Schlagwörter nicht angegeben",
|
|
16920
|
+
"record.metadata.quality.keywords.success": "Schlagwörter angegeben",
|
|
16921
|
+
"record.metadata.quality.legalConstraints.failed": "Rechtliche Beschränkungen nicht angegeben",
|
|
16922
|
+
"record.metadata.quality.legalConstraints.success": "Rechtliche Beschränkungen angegeben",
|
|
16923
|
+
"record.metadata.quality.organisation.failed": "Organisation nicht angegeben",
|
|
16924
|
+
"record.metadata.quality.organisation.success": "Organisation angegeben",
|
|
16925
|
+
"record.metadata.quality.title.failed": "Titel nicht angegeben",
|
|
16926
|
+
"record.metadata.quality.title.success": "Titel angegeben",
|
|
16927
|
+
"record.metadata.quality.topic.failed": "Thema nicht angegeben",
|
|
16928
|
+
"record.metadata.quality.topic.success": "Thema angegeben",
|
|
16929
|
+
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
16930
|
+
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16912
16931
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16913
|
-
"record.metadata.sheet": "Weitere Informationen
|
|
16932
|
+
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16933
|
+
"record.metadata.themes": "Kategorien",
|
|
16914
16934
|
"record.metadata.title": "Titel",
|
|
16935
|
+
"record.metadata.type": "Geographischer Datensatz",
|
|
16936
|
+
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16915
16937
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
16916
16938
|
"record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
|
|
16917
16939
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
@@ -16923,23 +16945,23 @@ var de = {
|
|
|
16923
16945
|
"record.was.created.time": "erstellte diesen Datensatz {time}",
|
|
16924
16946
|
records: records$6,
|
|
16925
16947
|
"results.layout.selectOne": "Layout auswählen",
|
|
16926
|
-
"results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{
|
|
16927
|
-
"results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie
|
|
16948
|
+
"results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",
|
|
16949
|
+
"results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie es mit anderen Worten</li><li>Beschränken Sie die Suchwörter</li></ul>",
|
|
16928
16950
|
"results.records.hits.found": "{hits, plural, =0{Keine Dokumente entsprechen der angegebenen Suche.} one{1 Datensatz gefunden.} other{{hits} Datensätze gefunden.}}",
|
|
16929
|
-
"results.records.hits.selected": "",
|
|
16951
|
+
"results.records.hits.selected": "{ amount } ausgewählt",
|
|
16930
16952
|
"results.showMore": "Mehr Ergebnisse anzeigen...",
|
|
16931
|
-
"results.sortBy.dateStamp": "
|
|
16953
|
+
"results.sortBy.dateStamp": "Neueste",
|
|
16932
16954
|
"results.sortBy.popularity": "Beliebtheit",
|
|
16933
|
-
"results.sortBy.qualityScore": "",
|
|
16955
|
+
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
16934
16956
|
"results.sortBy.relevancy": "Relevanz",
|
|
16935
16957
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
16936
16958
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
16937
|
-
"search.error.receivedError": "Ein Fehler
|
|
16959
|
+
"search.error.receivedError": "Ein Fehler ist aufgetreten",
|
|
16938
16960
|
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
16939
|
-
"search.field.any.placeholder": "Suche
|
|
16961
|
+
"search.field.any.placeholder": "Suche Datensätze ...",
|
|
16940
16962
|
"search.field.sortBy": "Sortieren nach:",
|
|
16941
16963
|
"search.filters.clear": "Zurücksetzen",
|
|
16942
|
-
"search.filters.contact": "
|
|
16964
|
+
"search.filters.contact": "Kontakte",
|
|
16943
16965
|
"search.filters.format": "Formate",
|
|
16944
16966
|
"search.filters.inspireKeyword": "INSPIRE-Schlüsselwort",
|
|
16945
16967
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
@@ -16957,13 +16979,13 @@ var de = {
|
|
|
16957
16979
|
"search.filters.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
16958
16980
|
"search.filters.maximize": "Erweitern",
|
|
16959
16981
|
"search.filters.minimize": "Minimieren",
|
|
16960
|
-
"search.filters.myRecords": "",
|
|
16961
|
-
"search.filters.myRecordsHelp": "",
|
|
16962
|
-
"search.filters.otherRecords": "",
|
|
16982
|
+
"search.filters.myRecords": "Nur meine Datensätze anzeigen",
|
|
16983
|
+
"search.filters.myRecordsHelp": "Wenn dies aktiviert ist, werden nur von mir erstellte Datensätze angezeigt; Datensätze, die von anderen erstellt wurden, werden nicht angezeigt.",
|
|
16984
|
+
"search.filters.otherRecords": "Datensätze von einer anderen Person anzeigen",
|
|
16963
16985
|
"search.filters.publicationYear": "Veröffentlichungsjahr",
|
|
16964
16986
|
"search.filters.publisher": "Organisationen",
|
|
16965
|
-
"search.filters.representationType": "",
|
|
16966
|
-
"search.filters.resourceType": "",
|
|
16987
|
+
"search.filters.representationType": "Repräsentationstyp",
|
|
16988
|
+
"search.filters.resourceType": "Ressourcentyp",
|
|
16967
16989
|
"search.filters.standard": "Standard",
|
|
16968
16990
|
"search.filters.title": "Ergebnisse filtern",
|
|
16969
16991
|
"search.filters.topic": "Thema",
|
|
@@ -16975,6 +16997,7 @@ var de = {
|
|
|
16975
16997
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
16976
16998
|
"table.select.data": "Datenquelle",
|
|
16977
16999
|
"tooltip.html.copy": "HTML kopieren",
|
|
17000
|
+
"tooltip.id.copy": "",
|
|
16978
17001
|
"tooltip.url.copy": "URL kopieren",
|
|
16979
17002
|
"tooltip.url.open": "URL öffnen",
|
|
16980
17003
|
"ui.readLess": "Weniger lesen",
|
|
@@ -17016,12 +17039,12 @@ var en = {
|
|
|
17016
17039
|
"dashboard.records.myRecords": "My Records",
|
|
17017
17040
|
"dashboard.records.noRecord": "No record for this organization",
|
|
17018
17041
|
"dashboard.records.noUser": "No users for this organization",
|
|
17019
|
-
"dashboard.records.publishedRecords": "published records",
|
|
17042
|
+
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
17020
17043
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
17021
17044
|
"dashboard.records.userDetail": "Name",
|
|
17022
17045
|
"dashboard.records.userEmail": "Email",
|
|
17023
17046
|
"dashboard.records.username": "Username",
|
|
17024
|
-
"dashboard.records.users": "users",
|
|
17047
|
+
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
17025
17048
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
17026
17049
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
17027
17050
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
@@ -17102,9 +17125,13 @@ var en = {
|
|
|
17102
17125
|
"datahub.header.organisations": "Organisations",
|
|
17103
17126
|
"datahub.header.popularRecords": "The most popular",
|
|
17104
17127
|
"datahub.header.title.html": "<div class=\"text-white\">Discover open<br> data from my Organization</div>",
|
|
17128
|
+
"datahub.news.contact.contactus": "Contact us",
|
|
17129
|
+
"datahub.news.contact.html": "<p>Do you need data that is not currently present on the platform?</p><p>Our teams are here to answer you.</p>",
|
|
17130
|
+
"datahub.news.contact.title": "A specific need?",
|
|
17105
17131
|
"datahub.news.feed": "News feed",
|
|
17106
17132
|
"datahub.news.figures": "Indicators",
|
|
17107
|
-
"datahub.
|
|
17133
|
+
"datahub.record.addToFavorites": "Add to favorites",
|
|
17134
|
+
"datahub.search.back": "Back",
|
|
17108
17135
|
"datahub.search.filter.all": "All",
|
|
17109
17136
|
"datahub.search.filter.generatedByWfs": "generated by an API",
|
|
17110
17137
|
"datahub.search.filter.others": "Others",
|
|
@@ -17164,10 +17191,18 @@ var en = {
|
|
|
17164
17191
|
"map.add.layer.file": "From a file",
|
|
17165
17192
|
"map.add.layer.wfs": "From WFS",
|
|
17166
17193
|
"map.add.layer.wms": "From WMS",
|
|
17194
|
+
"map.addFromFile.placeholder": "Click or drop a file here",
|
|
17195
|
+
"map.geocoding.placeholder": "Search for a place",
|
|
17196
|
+
"map.help.addFromFile": "Click or drag and drop a file to add to the map (currently supports GeoJSON format only).",
|
|
17197
|
+
"map.layer.add": "Add",
|
|
17198
|
+
"map.layers.available": "Available Layers",
|
|
17167
17199
|
"map.layers.list": "Layers",
|
|
17168
17200
|
"map.loading.data": "Loading map data...",
|
|
17201
|
+
"map.loading.service": "Loading service...",
|
|
17169
17202
|
"map.navigation.message": "Please use CTRL + mouse (or two fingers on mobile) to navigate the map",
|
|
17170
17203
|
"map.select.layer": "Data source",
|
|
17204
|
+
"map.wfs.urlInput.hint": "Enter WFS service URL",
|
|
17205
|
+
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
17171
17206
|
"multiselect.filter.placeholder": "Search",
|
|
17172
17207
|
"nav.back": "Back",
|
|
17173
17208
|
next: next$5,
|
|
@@ -17202,40 +17237,45 @@ var en = {
|
|
|
17202
17237
|
"record.metadata.catalog": "Catalog",
|
|
17203
17238
|
"record.metadata.contact": "Contact",
|
|
17204
17239
|
"record.metadata.createdOn": "Created on",
|
|
17205
|
-
"record.metadata.details": "
|
|
17240
|
+
"record.metadata.details": "Technical information",
|
|
17206
17241
|
"record.metadata.download": "Downloads",
|
|
17207
17242
|
"record.metadata.formats": "Formats",
|
|
17208
17243
|
"record.metadata.isOpenData": "Open Data",
|
|
17209
17244
|
"record.metadata.keywords": "Keywords",
|
|
17245
|
+
"record.metadata.lastUpdate": "Last updated on",
|
|
17210
17246
|
"record.metadata.links": "Links",
|
|
17211
17247
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17212
17248
|
"record.metadata.origin": "About the data",
|
|
17249
|
+
"record.metadata.owner": "Catalog of origin",
|
|
17213
17250
|
"record.metadata.preview": "Preview",
|
|
17214
17251
|
"record.metadata.publications": "publications",
|
|
17215
17252
|
"record.metadata.quality": "Metadata Quality",
|
|
17216
|
-
"record.metadata.quality.contact.failed": "Contact is not
|
|
17217
|
-
"record.metadata.quality.contact.success": "Contact is
|
|
17218
|
-
"record.metadata.quality.description.failed": "Description is not
|
|
17219
|
-
"record.metadata.quality.description.success": "Description is
|
|
17253
|
+
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
17254
|
+
"record.metadata.quality.contact.success": "Contact is specified",
|
|
17255
|
+
"record.metadata.quality.description.failed": "Description is not specified",
|
|
17256
|
+
"record.metadata.quality.description.success": "Description is specified",
|
|
17220
17257
|
"record.metadata.quality.details": "Details",
|
|
17221
|
-
"record.metadata.quality.keywords.failed": "Keywords are not
|
|
17222
|
-
"record.metadata.quality.keywords.success": "Keywords are
|
|
17223
|
-
"record.metadata.quality.legalConstraints.failed": "Legal constraints are not
|
|
17224
|
-
"record.metadata.quality.legalConstraints.success": "Legal constraints are
|
|
17225
|
-
"record.metadata.quality.organisation.failed": "Organisation is not
|
|
17226
|
-
"record.metadata.quality.organisation.success": "Organisation is
|
|
17227
|
-
"record.metadata.quality.title.failed": "Title is not
|
|
17228
|
-
"record.metadata.quality.title.success": "Title is
|
|
17229
|
-
"record.metadata.quality.topic.failed": "Topic is not
|
|
17230
|
-
"record.metadata.quality.topic.success": "Topic is
|
|
17231
|
-
"record.metadata.quality.updateFrequency.failed": "Update frequency is not
|
|
17232
|
-
"record.metadata.quality.updateFrequency.success": "Update frequency is
|
|
17258
|
+
"record.metadata.quality.keywords.failed": "Keywords are not specified",
|
|
17259
|
+
"record.metadata.quality.keywords.success": "Keywords are specified",
|
|
17260
|
+
"record.metadata.quality.legalConstraints.failed": "Legal constraints are not specified",
|
|
17261
|
+
"record.metadata.quality.legalConstraints.success": "Legal constraints are specified",
|
|
17262
|
+
"record.metadata.quality.organisation.failed": "Organisation is not specified",
|
|
17263
|
+
"record.metadata.quality.organisation.success": "Organisation is specified",
|
|
17264
|
+
"record.metadata.quality.title.failed": "Title is not specified",
|
|
17265
|
+
"record.metadata.quality.title.success": "Title is specified",
|
|
17266
|
+
"record.metadata.quality.topic.failed": "Topic is not specified",
|
|
17267
|
+
"record.metadata.quality.topic.success": "Topic is specified",
|
|
17268
|
+
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17269
|
+
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17233
17270
|
"record.metadata.related": "Related records",
|
|
17234
|
-
"record.metadata.sheet": "
|
|
17271
|
+
"record.metadata.sheet": "Original metadata",
|
|
17272
|
+
"record.metadata.themes": "Categories",
|
|
17235
17273
|
"record.metadata.title": "Title",
|
|
17274
|
+
"record.metadata.type": "Geographical dataset",
|
|
17275
|
+
"record.metadata.uniqueId": "Unique Identifier",
|
|
17236
17276
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17237
17277
|
"record.metadata.updateStatus": "Data Update Status",
|
|
17238
|
-
"record.metadata.updatedOn": "
|
|
17278
|
+
"record.metadata.updatedOn": "Metadata's last update",
|
|
17239
17279
|
"record.metadata.usage": "Usage & constraints",
|
|
17240
17280
|
"record.more.details": "Read more",
|
|
17241
17281
|
"record.tab.chart": "Chart",
|
|
@@ -17296,6 +17336,7 @@ var en = {
|
|
|
17296
17336
|
"table.object.count": "objects in this dataset",
|
|
17297
17337
|
"table.select.data": "Data source",
|
|
17298
17338
|
"tooltip.html.copy": "Copy HTML",
|
|
17339
|
+
"tooltip.id.copy": "Copy unique identifier",
|
|
17299
17340
|
"tooltip.url.copy": "Copy URL",
|
|
17300
17341
|
"tooltip.url.open": "Open URL",
|
|
17301
17342
|
"ui.readLess": "Read less",
|
|
@@ -17423,8 +17464,12 @@ var es = {
|
|
|
17423
17464
|
"datahub.header.organisations": "",
|
|
17424
17465
|
"datahub.header.popularRecords": "",
|
|
17425
17466
|
"datahub.header.title.html": "",
|
|
17467
|
+
"datahub.news.contact.contactus": "",
|
|
17468
|
+
"datahub.news.contact.html": "",
|
|
17469
|
+
"datahub.news.contact.title": "",
|
|
17426
17470
|
"datahub.news.feed": "",
|
|
17427
17471
|
"datahub.news.figures": "",
|
|
17472
|
+
"datahub.record.addToFavorites": "",
|
|
17428
17473
|
"datahub.search.back": "",
|
|
17429
17474
|
"datahub.search.filter.all": "",
|
|
17430
17475
|
"datahub.search.filter.generatedByWfs": "",
|
|
@@ -17485,10 +17530,18 @@ var es = {
|
|
|
17485
17530
|
"map.add.layer.file": "",
|
|
17486
17531
|
"map.add.layer.wfs": "",
|
|
17487
17532
|
"map.add.layer.wms": "",
|
|
17533
|
+
"map.addFromFile.placeholder": "",
|
|
17534
|
+
"map.geocoding.placeholder": "",
|
|
17535
|
+
"map.help.addFromFile": "",
|
|
17536
|
+
"map.layer.add": "",
|
|
17537
|
+
"map.layers.available": "",
|
|
17488
17538
|
"map.layers.list": "",
|
|
17489
17539
|
"map.loading.data": "",
|
|
17540
|
+
"map.loading.service": "",
|
|
17490
17541
|
"map.navigation.message": "",
|
|
17491
17542
|
"map.select.layer": "",
|
|
17543
|
+
"map.wfs.urlInput.hint": "",
|
|
17544
|
+
"map.wms.urlInput.hint": "",
|
|
17492
17545
|
"multiselect.filter.placeholder": "",
|
|
17493
17546
|
"nav.back": "",
|
|
17494
17547
|
next: next$4,
|
|
@@ -17528,9 +17581,11 @@ var es = {
|
|
|
17528
17581
|
"record.metadata.formats": "",
|
|
17529
17582
|
"record.metadata.isOpenData": "",
|
|
17530
17583
|
"record.metadata.keywords": "",
|
|
17584
|
+
"record.metadata.lastUpdate": "",
|
|
17531
17585
|
"record.metadata.links": "",
|
|
17532
17586
|
"record.metadata.noUsage": "",
|
|
17533
17587
|
"record.metadata.origin": "",
|
|
17588
|
+
"record.metadata.owner": "",
|
|
17534
17589
|
"record.metadata.preview": "",
|
|
17535
17590
|
"record.metadata.publications": "",
|
|
17536
17591
|
"record.metadata.quality": "",
|
|
@@ -17553,7 +17608,10 @@ var es = {
|
|
|
17553
17608
|
"record.metadata.quality.updateFrequency.success": "",
|
|
17554
17609
|
"record.metadata.related": "",
|
|
17555
17610
|
"record.metadata.sheet": "",
|
|
17611
|
+
"record.metadata.themes": "",
|
|
17556
17612
|
"record.metadata.title": "",
|
|
17613
|
+
"record.metadata.type": "",
|
|
17614
|
+
"record.metadata.uniqueId": "",
|
|
17557
17615
|
"record.metadata.updateFrequency": "",
|
|
17558
17616
|
"record.metadata.updateStatus": "",
|
|
17559
17617
|
"record.metadata.updatedOn": "",
|
|
@@ -17617,6 +17675,7 @@ var es = {
|
|
|
17617
17675
|
"table.object.count": "",
|
|
17618
17676
|
"table.select.data": "",
|
|
17619
17677
|
"tooltip.html.copy": "",
|
|
17678
|
+
"tooltip.id.copy": "",
|
|
17620
17679
|
"tooltip.url.copy": "",
|
|
17621
17680
|
"tooltip.url.open": "",
|
|
17622
17681
|
"ui.readLess": "",
|
|
@@ -17658,12 +17717,12 @@ var fr = {
|
|
|
17658
17717
|
"dashboard.records.myRecords": "Mes fiches publiées",
|
|
17659
17718
|
"dashboard.records.noRecord": "Aucun jeu de données pour cette organisation",
|
|
17660
17719
|
"dashboard.records.noUser": "Aucun utilisateur pour cette organisation",
|
|
17661
|
-
"dashboard.records.publishedRecords": "données publiées",
|
|
17720
|
+
"dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
|
|
17662
17721
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
17663
17722
|
"dashboard.records.userDetail": "Nom",
|
|
17664
17723
|
"dashboard.records.userEmail": "Email",
|
|
17665
17724
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17666
|
-
"dashboard.records.users": "utilisateurs",
|
|
17725
|
+
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17667
17726
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17668
17727
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17669
17728
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17744,9 +17803,13 @@ var fr = {
|
|
|
17744
17803
|
"datahub.header.organisations": "Organisations",
|
|
17745
17804
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
17746
17805
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
17806
|
+
"datahub.news.contact.contactus": "Contactez-nous",
|
|
17807
|
+
"datahub.news.contact.html": "<p>Vous avez besoin de données qui ne sont pas présentes sur la plateforme actuellement ? </p><p> Nos équipes sont la pour vous répondre.</p>",
|
|
17808
|
+
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
17747
17809
|
"datahub.news.feed": "Fil d'activité",
|
|
17748
17810
|
"datahub.news.figures": "Quelques chiffres",
|
|
17749
|
-
"datahub.
|
|
17811
|
+
"datahub.record.addToFavorites": "Ajouter aux favoris",
|
|
17812
|
+
"datahub.search.back": "Retour",
|
|
17750
17813
|
"datahub.search.filter.all": "Tous",
|
|
17751
17814
|
"datahub.search.filter.generatedByWfs": "généré par une API",
|
|
17752
17815
|
"datahub.search.filter.others": "Autres",
|
|
@@ -17806,10 +17869,18 @@ var fr = {
|
|
|
17806
17869
|
"map.add.layer.file": "",
|
|
17807
17870
|
"map.add.layer.wfs": "",
|
|
17808
17871
|
"map.add.layer.wms": "",
|
|
17872
|
+
"map.addFromFile.placeholder": "",
|
|
17873
|
+
"map.geocoding.placeholder": "",
|
|
17874
|
+
"map.help.addFromFile": "",
|
|
17875
|
+
"map.layer.add": "",
|
|
17876
|
+
"map.layers.available": "",
|
|
17809
17877
|
"map.layers.list": "",
|
|
17810
17878
|
"map.loading.data": "Chargement des données...",
|
|
17879
|
+
"map.loading.service": "",
|
|
17811
17880
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
17812
17881
|
"map.select.layer": "Source de données",
|
|
17882
|
+
"map.wfs.urlInput.hint": "",
|
|
17883
|
+
"map.wms.urlInput.hint": "",
|
|
17813
17884
|
"multiselect.filter.placeholder": "Rechercher",
|
|
17814
17885
|
"nav.back": "Retour",
|
|
17815
17886
|
next: next$3,
|
|
@@ -17844,14 +17915,16 @@ var fr = {
|
|
|
17844
17915
|
"record.metadata.catalog": "Catalogue",
|
|
17845
17916
|
"record.metadata.contact": "Contact",
|
|
17846
17917
|
"record.metadata.createdOn": "Créé le",
|
|
17847
|
-
"record.metadata.details": "
|
|
17918
|
+
"record.metadata.details": "Informations techniques",
|
|
17848
17919
|
"record.metadata.download": "Téléchargements",
|
|
17849
17920
|
"record.metadata.formats": "Formats",
|
|
17850
17921
|
"record.metadata.isOpenData": "Donnée Ouverte",
|
|
17851
17922
|
"record.metadata.keywords": "Mots clés",
|
|
17923
|
+
"record.metadata.lastUpdate": "Mis à jour le",
|
|
17852
17924
|
"record.metadata.links": "Liens",
|
|
17853
17925
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17854
17926
|
"record.metadata.origin": "À propos des données",
|
|
17927
|
+
"record.metadata.owner": "Catalogue d'origine",
|
|
17855
17928
|
"record.metadata.preview": "Aperçu",
|
|
17856
17929
|
"record.metadata.publications": "données",
|
|
17857
17930
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
@@ -17873,11 +17946,14 @@ var fr = {
|
|
|
17873
17946
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
17874
17947
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17875
17948
|
"record.metadata.related": "Voir aussi",
|
|
17876
|
-
"record.metadata.sheet": "
|
|
17949
|
+
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17950
|
+
"record.metadata.themes": "Catégories",
|
|
17877
17951
|
"record.metadata.title": "Titre",
|
|
17952
|
+
"record.metadata.type": "Donnée géographique",
|
|
17953
|
+
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17878
17954
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17879
17955
|
"record.metadata.updateStatus": "Statut de mise à jour des données",
|
|
17880
|
-
"record.metadata.updatedOn": "
|
|
17956
|
+
"record.metadata.updatedOn": "Mise à jour de la fiche de métadonnée",
|
|
17881
17957
|
"record.metadata.usage": "Conditions d'utilisation",
|
|
17882
17958
|
"record.more.details": "Détails",
|
|
17883
17959
|
"record.tab.chart": "Graphique",
|
|
@@ -17886,10 +17962,10 @@ var fr = {
|
|
|
17886
17962
|
"record.was.created.time": "a créé ce jeu de données {time}",
|
|
17887
17963
|
records: records$3,
|
|
17888
17964
|
"results.layout.selectOne": "Affichage des résultats",
|
|
17889
|
-
"results.records.hits.displayedOn": "",
|
|
17965
|
+
"results.records.hits.displayedOn": "{displayed, plural, =0{Aucun enregistrement} one{1 enregistrement affiché} other{{displayed} enregistrements affichés}} {hits, plural, other{sur {hits} au total.}}",
|
|
17890
17966
|
"results.records.hits.empty.help.html": "Suggestions : <ul class='list-disc list-inside'><li>Essayez d'autres mots clés</li><li>Cherchez moins de mots</li></ul>",
|
|
17891
17967
|
"results.records.hits.found": "{hits, plural, =0{Aucune correspondance.} one{1 enregistrement trouvé.} other{{hits} résultats.}}",
|
|
17892
|
-
"results.records.hits.selected": "",
|
|
17968
|
+
"results.records.hits.selected": "{amount, plural, one{1 selectionnée} other{{ amount } sélectionnées}}",
|
|
17893
17969
|
"results.showMore": "Plus de résultats...",
|
|
17894
17970
|
"results.sortBy.dateStamp": "Plus récent",
|
|
17895
17971
|
"results.sortBy.popularity": "Popularité",
|
|
@@ -17938,6 +18014,7 @@ var fr = {
|
|
|
17938
18014
|
"table.object.count": "enregistrements dans ces données",
|
|
17939
18015
|
"table.select.data": "Source de données",
|
|
17940
18016
|
"tooltip.html.copy": "Copier le HTML",
|
|
18017
|
+
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
17941
18018
|
"tooltip.url.copy": "Copier l'URL",
|
|
17942
18019
|
"tooltip.url.open": "Ouvrir l'URL",
|
|
17943
18020
|
"ui.readLess": "Réduire",
|
|
@@ -18065,9 +18142,13 @@ var it = {
|
|
|
18065
18142
|
"datahub.header.organisations": "Organizzazioni",
|
|
18066
18143
|
"datahub.header.popularRecords": "Più popolari",
|
|
18067
18144
|
"datahub.header.title.html": "<div class=\"text-white\">Tutti i dati<br>pubblici della mia organizzazione</div>",
|
|
18145
|
+
"datahub.news.contact.contactus": "Contattateci",
|
|
18146
|
+
"datahub.news.contact.html": "<p>Ha bisogno di dati che non sono attualmente disponibili sulla piattaforma? </p><p> I nostri team sono qui per aiutarla.</p>",
|
|
18147
|
+
"datahub.news.contact.title": "Ha un bisogno specifico?",
|
|
18068
18148
|
"datahub.news.feed": "Feed di attività",
|
|
18069
18149
|
"datahub.news.figures": "Alcune figure",
|
|
18070
|
-
"datahub.
|
|
18150
|
+
"datahub.record.addToFavorites": "Aggiungere a miei preferiti",
|
|
18151
|
+
"datahub.search.back": "Ritorna",
|
|
18071
18152
|
"datahub.search.filter.all": "Tutti",
|
|
18072
18153
|
"datahub.search.filter.generatedByWfs": "generato da un'API",
|
|
18073
18154
|
"datahub.search.filter.others": "Altri",
|
|
@@ -18094,6 +18175,7 @@ var it = {
|
|
|
18094
18175
|
"downloads.format.unknown": "sconosciuto",
|
|
18095
18176
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18096
18177
|
dropFile: dropFile$2,
|
|
18178
|
+
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
18097
18179
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
18098
18180
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
18099
18181
|
"facets.block.title.cl_hierarchyLevel.key": "Tipo di risorsa",
|
|
@@ -18126,10 +18208,18 @@ var it = {
|
|
|
18126
18208
|
"map.add.layer.file": "Da un file",
|
|
18127
18209
|
"map.add.layer.wfs": "Da un WFS",
|
|
18128
18210
|
"map.add.layer.wms": "Da un WMS",
|
|
18211
|
+
"map.addFromFile.placeholder": "",
|
|
18212
|
+
"map.geocoding.placeholder": "",
|
|
18213
|
+
"map.help.addFromFile": "",
|
|
18214
|
+
"map.layer.add": "",
|
|
18215
|
+
"map.layers.available": "",
|
|
18129
18216
|
"map.layers.list": "Layers",
|
|
18130
18217
|
"map.loading.data": "Caricamento dati...",
|
|
18218
|
+
"map.loading.service": "",
|
|
18131
18219
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
18132
18220
|
"map.select.layer": "Sorgente dati",
|
|
18221
|
+
"map.wfs.urlInput.hint": "",
|
|
18222
|
+
"map.wms.urlInput.hint": "",
|
|
18133
18223
|
"multiselect.filter.placeholder": "Cerca",
|
|
18134
18224
|
"nav.back": "Indietro",
|
|
18135
18225
|
next: next$2,
|
|
@@ -18164,14 +18254,16 @@ var it = {
|
|
|
18164
18254
|
"record.metadata.catalog": "Catalogo",
|
|
18165
18255
|
"record.metadata.contact": "Contatto",
|
|
18166
18256
|
"record.metadata.createdOn": "Creato il",
|
|
18167
|
-
"record.metadata.details": "
|
|
18257
|
+
"record.metadata.details": "Informazioni tecniche",
|
|
18168
18258
|
"record.metadata.download": "Download",
|
|
18169
18259
|
"record.metadata.formats": "Formati",
|
|
18170
18260
|
"record.metadata.isOpenData": "Data aperta",
|
|
18171
18261
|
"record.metadata.keywords": "Parole chiave",
|
|
18262
|
+
"record.metadata.lastUpdate": "Ultimo aggiornamento",
|
|
18172
18263
|
"record.metadata.links": "Collegamenti",
|
|
18173
18264
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18174
18265
|
"record.metadata.origin": "Informazioni sui dati",
|
|
18266
|
+
"record.metadata.owner": "Catalogo originale",
|
|
18175
18267
|
"record.metadata.preview": "Anteprima",
|
|
18176
18268
|
"record.metadata.publications": "pubblicazioni",
|
|
18177
18269
|
"record.metadata.quality": "Qualità dei metadati",
|
|
@@ -18193,11 +18285,14 @@ var it = {
|
|
|
18193
18285
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
18194
18286
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18195
18287
|
"record.metadata.related": "Vedi anche",
|
|
18196
|
-
"record.metadata.sheet": "
|
|
18288
|
+
"record.metadata.sheet": "Origine del metadata",
|
|
18289
|
+
"record.metadata.themes": "Categorie",
|
|
18197
18290
|
"record.metadata.title": "Titolo",
|
|
18291
|
+
"record.metadata.type": "Dati geografici",
|
|
18292
|
+
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18198
18293
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18199
18294
|
"record.metadata.updateStatus": "Stato di aggiornamento dei dati",
|
|
18200
|
-
"record.metadata.updatedOn": "Ultimo aggiornamento
|
|
18295
|
+
"record.metadata.updatedOn": "Ultimo aggiornamento del metadata",
|
|
18201
18296
|
"record.metadata.usage": "Condizioni d'uso",
|
|
18202
18297
|
"record.more.details": "Dettagli",
|
|
18203
18298
|
"record.tab.chart": "Grafico",
|
|
@@ -18206,10 +18301,10 @@ var it = {
|
|
|
18206
18301
|
"record.was.created.time": "ha creato questi dati {time}",
|
|
18207
18302
|
records: records$2,
|
|
18208
18303
|
"results.layout.selectOne": "Mostra risultati",
|
|
18209
|
-
"results.records.hits.displayedOn": "",
|
|
18304
|
+
"results.records.hits.displayedOn": "{displayed, plural, =0{Nessun record} one{1 record visualizzato} other{{displayed} records visualizzati}} {hits, plural, other{su {hits} in totale.}}",
|
|
18210
18305
|
"results.records.hits.empty.help.html": "Suggerimenti: <ul class='list-disc list-inside'><li>Prova con altre parole chiave</li><li>Cerca con meno parole</li></ul>",
|
|
18211
18306
|
"results.records.hits.found": "{hits, plural, =0{Nessuna corrispondenza.} one{1 record trovato.} other{{hits} risultati.}}",
|
|
18212
|
-
"results.records.hits.selected": "",
|
|
18307
|
+
"results.records.hits.selected": "{amount, plural, one{1 selezionato} other{{ amount } selezionati}}",
|
|
18213
18308
|
"results.showMore": "Altri risultati...",
|
|
18214
18309
|
"results.sortBy.dateStamp": "Più recente",
|
|
18215
18310
|
"results.sortBy.popularity": "Popolarità",
|
|
@@ -18258,8 +18353,11 @@ var it = {
|
|
|
18258
18353
|
"table.object.count": "record in questi dati",
|
|
18259
18354
|
"table.select.data": "Sorgente dati",
|
|
18260
18355
|
"tooltip.html.copy": "Copiare il HTML",
|
|
18356
|
+
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
18261
18357
|
"tooltip.url.copy": "Copiare l'URL",
|
|
18262
18358
|
"tooltip.url.open": "Aprire l'URL",
|
|
18359
|
+
"ui.readLess": "Ridurre",
|
|
18360
|
+
"ui.readMore": "Leggi di più",
|
|
18263
18361
|
"wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
|
|
18264
18362
|
"wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
|
|
18265
18363
|
"wfs.unreachable.cors": "Il servizio non è accessibile a causa di limitazioni CORS",
|
|
@@ -18383,8 +18481,12 @@ var nl = {
|
|
|
18383
18481
|
"datahub.header.organisations": "",
|
|
18384
18482
|
"datahub.header.popularRecords": "",
|
|
18385
18483
|
"datahub.header.title.html": "",
|
|
18484
|
+
"datahub.news.contact.contactus": "",
|
|
18485
|
+
"datahub.news.contact.html": "",
|
|
18486
|
+
"datahub.news.contact.title": "",
|
|
18386
18487
|
"datahub.news.feed": "",
|
|
18387
18488
|
"datahub.news.figures": "",
|
|
18489
|
+
"datahub.record.addToFavorites": "",
|
|
18388
18490
|
"datahub.search.back": "",
|
|
18389
18491
|
"datahub.search.filter.all": "",
|
|
18390
18492
|
"datahub.search.filter.generatedByWfs": "",
|
|
@@ -18445,10 +18547,18 @@ var nl = {
|
|
|
18445
18547
|
"map.add.layer.file": "",
|
|
18446
18548
|
"map.add.layer.wfs": "",
|
|
18447
18549
|
"map.add.layer.wms": "",
|
|
18550
|
+
"map.addFromFile.placeholder": "",
|
|
18551
|
+
"map.geocoding.placeholder": "",
|
|
18552
|
+
"map.help.addFromFile": "",
|
|
18553
|
+
"map.layer.add": "",
|
|
18554
|
+
"map.layers.available": "",
|
|
18448
18555
|
"map.layers.list": "",
|
|
18449
18556
|
"map.loading.data": "",
|
|
18557
|
+
"map.loading.service": "",
|
|
18450
18558
|
"map.navigation.message": "",
|
|
18451
18559
|
"map.select.layer": "",
|
|
18560
|
+
"map.wfs.urlInput.hint": "",
|
|
18561
|
+
"map.wms.urlInput.hint": "",
|
|
18452
18562
|
"multiselect.filter.placeholder": "",
|
|
18453
18563
|
"nav.back": "",
|
|
18454
18564
|
next: next$1,
|
|
@@ -18488,9 +18598,11 @@ var nl = {
|
|
|
18488
18598
|
"record.metadata.formats": "",
|
|
18489
18599
|
"record.metadata.isOpenData": "",
|
|
18490
18600
|
"record.metadata.keywords": "",
|
|
18601
|
+
"record.metadata.lastUpdate": "",
|
|
18491
18602
|
"record.metadata.links": "",
|
|
18492
18603
|
"record.metadata.noUsage": "",
|
|
18493
18604
|
"record.metadata.origin": "",
|
|
18605
|
+
"record.metadata.owner": "",
|
|
18494
18606
|
"record.metadata.preview": "",
|
|
18495
18607
|
"record.metadata.publications": "",
|
|
18496
18608
|
"record.metadata.quality": "",
|
|
@@ -18513,7 +18625,10 @@ var nl = {
|
|
|
18513
18625
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18514
18626
|
"record.metadata.related": "",
|
|
18515
18627
|
"record.metadata.sheet": "",
|
|
18628
|
+
"record.metadata.themes": "",
|
|
18516
18629
|
"record.metadata.title": "",
|
|
18630
|
+
"record.metadata.type": "",
|
|
18631
|
+
"record.metadata.uniqueId": "",
|
|
18517
18632
|
"record.metadata.updateFrequency": "",
|
|
18518
18633
|
"record.metadata.updateStatus": "",
|
|
18519
18634
|
"record.metadata.updatedOn": "",
|
|
@@ -18577,6 +18692,7 @@ var nl = {
|
|
|
18577
18692
|
"table.object.count": "",
|
|
18578
18693
|
"table.select.data": "",
|
|
18579
18694
|
"tooltip.html.copy": "",
|
|
18695
|
+
"tooltip.id.copy": "",
|
|
18580
18696
|
"tooltip.url.copy": "",
|
|
18581
18697
|
"tooltip.url.open": "",
|
|
18582
18698
|
"ui.readLess": "",
|
|
@@ -18704,8 +18820,12 @@ var pt = {
|
|
|
18704
18820
|
"datahub.header.organisations": "",
|
|
18705
18821
|
"datahub.header.popularRecords": "",
|
|
18706
18822
|
"datahub.header.title.html": "",
|
|
18823
|
+
"datahub.news.contact.contactus": "",
|
|
18824
|
+
"datahub.news.contact.html": "",
|
|
18825
|
+
"datahub.news.contact.title": "",
|
|
18707
18826
|
"datahub.news.feed": "",
|
|
18708
18827
|
"datahub.news.figures": "",
|
|
18828
|
+
"datahub.record.addToFavorites": "",
|
|
18709
18829
|
"datahub.search.back": "",
|
|
18710
18830
|
"datahub.search.filter.all": "",
|
|
18711
18831
|
"datahub.search.filter.generatedByWfs": "",
|
|
@@ -18766,10 +18886,18 @@ var pt = {
|
|
|
18766
18886
|
"map.add.layer.file": "",
|
|
18767
18887
|
"map.add.layer.wfs": "",
|
|
18768
18888
|
"map.add.layer.wms": "",
|
|
18889
|
+
"map.addFromFile.placeholder": "",
|
|
18890
|
+
"map.geocoding.placeholder": "",
|
|
18891
|
+
"map.help.addFromFile": "",
|
|
18892
|
+
"map.layer.add": "",
|
|
18893
|
+
"map.layers.available": "",
|
|
18769
18894
|
"map.layers.list": "",
|
|
18770
18895
|
"map.loading.data": "",
|
|
18896
|
+
"map.loading.service": "",
|
|
18771
18897
|
"map.navigation.message": "",
|
|
18772
18898
|
"map.select.layer": "",
|
|
18899
|
+
"map.wfs.urlInput.hint": "",
|
|
18900
|
+
"map.wms.urlInput.hint": "",
|
|
18773
18901
|
"multiselect.filter.placeholder": "",
|
|
18774
18902
|
"nav.back": "",
|
|
18775
18903
|
next: next,
|
|
@@ -18809,9 +18937,11 @@ var pt = {
|
|
|
18809
18937
|
"record.metadata.formats": "",
|
|
18810
18938
|
"record.metadata.isOpenData": "",
|
|
18811
18939
|
"record.metadata.keywords": "",
|
|
18940
|
+
"record.metadata.lastUpdate": "",
|
|
18812
18941
|
"record.metadata.links": "",
|
|
18813
18942
|
"record.metadata.noUsage": "",
|
|
18814
18943
|
"record.metadata.origin": "",
|
|
18944
|
+
"record.metadata.owner": "",
|
|
18815
18945
|
"record.metadata.preview": "",
|
|
18816
18946
|
"record.metadata.publications": "",
|
|
18817
18947
|
"record.metadata.quality": "",
|
|
@@ -18834,7 +18964,10 @@ var pt = {
|
|
|
18834
18964
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18835
18965
|
"record.metadata.related": "",
|
|
18836
18966
|
"record.metadata.sheet": "",
|
|
18967
|
+
"record.metadata.themes": "",
|
|
18837
18968
|
"record.metadata.title": "",
|
|
18969
|
+
"record.metadata.type": "",
|
|
18970
|
+
"record.metadata.uniqueId": "",
|
|
18838
18971
|
"record.metadata.updateFrequency": "",
|
|
18839
18972
|
"record.metadata.updateStatus": "",
|
|
18840
18973
|
"record.metadata.updatedOn": "",
|
|
@@ -18898,6 +19031,7 @@ var pt = {
|
|
|
18898
19031
|
"table.object.count": "",
|
|
18899
19032
|
"table.select.data": "",
|
|
18900
19033
|
"tooltip.html.copy": "",
|
|
19034
|
+
"tooltip.id.copy": "",
|
|
18901
19035
|
"tooltip.url.copy": "",
|
|
18902
19036
|
"tooltip.url.open": "",
|
|
18903
19037
|
"ui.readLess": "",
|
|
@@ -19081,6 +19215,40 @@ class Gn4FieldMapper {
|
|
|
19081
19215
|
kind,
|
|
19082
19216
|
};
|
|
19083
19217
|
},
|
|
19218
|
+
geom: (output, source) => {
|
|
19219
|
+
const geoms = getAsArray(selectField(source, 'geom'));
|
|
19220
|
+
const shapes = getAsArray(selectField(source, 'shape'));
|
|
19221
|
+
const extentDescriptions = getAsArray(selectField(source, 'extentDescriptionObject'));
|
|
19222
|
+
const spatialExtents = getAsArray(selectField(source, 'spatialExtents'));
|
|
19223
|
+
return {
|
|
19224
|
+
...output,
|
|
19225
|
+
spatialExtents: [
|
|
19226
|
+
...spatialExtents,
|
|
19227
|
+
...geoms.map((geom, index) => {
|
|
19228
|
+
const description = selectTranslatedValue(getArrayItem(extentDescriptions, index), this.lang3);
|
|
19229
|
+
const geometry = shapes[index] ?? geom;
|
|
19230
|
+
return {
|
|
19231
|
+
...(description !== null ? { description } : null),
|
|
19232
|
+
geometry,
|
|
19233
|
+
};
|
|
19234
|
+
}),
|
|
19235
|
+
],
|
|
19236
|
+
};
|
|
19237
|
+
},
|
|
19238
|
+
resourceTemporalDateRange: (output, source) => {
|
|
19239
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalDateRange'));
|
|
19240
|
+
return {
|
|
19241
|
+
...output,
|
|
19242
|
+
temporalExtents: ranges.map((range) => {
|
|
19243
|
+
const start = selectField(range, 'gte');
|
|
19244
|
+
const end = selectField(range, 'lte');
|
|
19245
|
+
return {
|
|
19246
|
+
...(start !== null ? { start: toDate(start) } : null),
|
|
19247
|
+
...(end !== null ? { end: toDate(end) } : null),
|
|
19248
|
+
};
|
|
19249
|
+
}),
|
|
19250
|
+
};
|
|
19251
|
+
},
|
|
19084
19252
|
};
|
|
19085
19253
|
this.genericField = (output) => output;
|
|
19086
19254
|
this.constraintField = (fieldName, output, source) => ({
|
|
@@ -19235,6 +19403,7 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19235
19403
|
useLimitations: [],
|
|
19236
19404
|
spatialExtents: [],
|
|
19237
19405
|
temporalExtents: [],
|
|
19406
|
+
overviews: [],
|
|
19238
19407
|
};
|
|
19239
19408
|
const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
|
|
19240
19409
|
return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
|
|
@@ -20615,6 +20784,8 @@ const defaultMapOptions = {
|
|
|
20615
20784
|
};
|
|
20616
20785
|
const FEATURE_MAP_OPTIONS = new InjectionToken('mapOptions');
|
|
20617
20786
|
|
|
20787
|
+
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
20788
|
+
|
|
20618
20789
|
var MapContextLayerTypeEnum;
|
|
20619
20790
|
(function (MapContextLayerTypeEnum) {
|
|
20620
20791
|
MapContextLayerTypeEnum["XYZ"] = "xyz";
|
|
@@ -20736,6 +20907,13 @@ class ThemeService {
|
|
|
20736
20907
|
}
|
|
20737
20908
|
return chroma.hsl(hue % 360, saturation, lightness).css();
|
|
20738
20909
|
}
|
|
20910
|
+
static setFavicon(faviconPath) {
|
|
20911
|
+
const link = document.querySelector("link[rel*='icon']") ||
|
|
20912
|
+
document.createElement('link');
|
|
20913
|
+
link['rel'] = 'icon';
|
|
20914
|
+
link['href'] = faviconPath;
|
|
20915
|
+
document.getElementsByTagName('head')[0].appendChild(link);
|
|
20916
|
+
}
|
|
20739
20917
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20740
20918
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThemeService, providedIn: 'root' }); }
|
|
20741
20919
|
}
|
|
@@ -20915,6 +21093,33 @@ function propagateToDocumentOnly(event) {
|
|
|
20915
21093
|
}, 0);
|
|
20916
21094
|
}
|
|
20917
21095
|
|
|
21096
|
+
function normalize(input) {
|
|
21097
|
+
return input
|
|
21098
|
+
.toLowerCase()
|
|
21099
|
+
.normalize('NFD') // explode composite chars (e.g. é) into multiple chars
|
|
21100
|
+
.replace(/[\u0300-\u036f]/g, '') // remove accents
|
|
21101
|
+
.replace(/œ/g, 'oe') // remove accents
|
|
21102
|
+
.replace(/[^a-z0-9\s]/g, ' '); // replace special characters with space
|
|
21103
|
+
}
|
|
21104
|
+
function asNormalizedParts(input) {
|
|
21105
|
+
return normalize(input)
|
|
21106
|
+
.split(/\s+/)
|
|
21107
|
+
.map((part) => part.trim())
|
|
21108
|
+
.filter((part) => part.length > 0);
|
|
21109
|
+
}
|
|
21110
|
+
/**
|
|
21111
|
+
* This creates a filter function based on a pattern (typically a user-input
|
|
21112
|
+
* search text).
|
|
21113
|
+
* @param pattern
|
|
21114
|
+
*/
|
|
21115
|
+
function createFuzzyFilter(pattern) {
|
|
21116
|
+
const patternParts = asNormalizedParts(pattern);
|
|
21117
|
+
return (input) => {
|
|
21118
|
+
const inputParts = asNormalizedParts(input);
|
|
21119
|
+
return patternParts.every((patternPart) => inputParts.some((part) => part.includes(patternPart)));
|
|
21120
|
+
};
|
|
21121
|
+
}
|
|
21122
|
+
|
|
20918
21123
|
marker('downloads.wfs.featuretype.not.found');
|
|
20919
21124
|
const FORMATS = {
|
|
20920
21125
|
csv: {
|
|
@@ -20956,9 +21161,15 @@ const FORMATS = {
|
|
|
20956
21161
|
color: '#328556',
|
|
20957
21162
|
mimeTypes: ['x-gis/x-shapefile'],
|
|
20958
21163
|
},
|
|
21164
|
+
gml: {
|
|
21165
|
+
extensions: ['gml'],
|
|
21166
|
+
priority: 5,
|
|
21167
|
+
color: '#c92bce',
|
|
21168
|
+
mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
|
|
21169
|
+
},
|
|
20959
21170
|
kml: {
|
|
20960
21171
|
extensions: ['kml', 'kmz'],
|
|
20961
|
-
priority:
|
|
21172
|
+
priority: 6,
|
|
20962
21173
|
color: '#348009',
|
|
20963
21174
|
mimeTypes: [
|
|
20964
21175
|
'application/vnd.google-earth.kml+xml',
|
|
@@ -20967,34 +21178,40 @@ const FORMATS = {
|
|
|
20967
21178
|
},
|
|
20968
21179
|
gpkg: {
|
|
20969
21180
|
extensions: ['gpkg', 'geopackage'],
|
|
20970
|
-
priority:
|
|
21181
|
+
priority: 7,
|
|
20971
21182
|
color: '#ea79ba',
|
|
20972
21183
|
mimeTypes: ['application/geopackage+sqlite3'],
|
|
20973
21184
|
},
|
|
20974
21185
|
zip: {
|
|
20975
21186
|
extensions: ['zip', 'tar.gz'],
|
|
20976
|
-
priority:
|
|
21187
|
+
priority: 8,
|
|
20977
21188
|
color: '#f2bb3a',
|
|
20978
21189
|
mimeTypes: ['application/zip', 'application/x-zip'],
|
|
20979
21190
|
},
|
|
20980
21191
|
pdf: {
|
|
20981
21192
|
extensions: ['pdf'],
|
|
20982
|
-
priority:
|
|
21193
|
+
priority: 9,
|
|
20983
21194
|
color: '#db544a',
|
|
20984
21195
|
mimeTypes: ['application/pdf'],
|
|
20985
21196
|
},
|
|
20986
21197
|
jpg: {
|
|
20987
21198
|
extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
|
|
20988
|
-
priority:
|
|
21199
|
+
priority: 9,
|
|
20989
21200
|
color: '#673ab7',
|
|
20990
21201
|
mimeTypes: ['image/jpg'],
|
|
20991
21202
|
},
|
|
20992
21203
|
svg: {
|
|
20993
21204
|
extensions: ['svg'],
|
|
20994
|
-
priority:
|
|
21205
|
+
priority: 10,
|
|
20995
21206
|
color: '#d98294',
|
|
20996
21207
|
mimeTypes: ['image/svg+xml'],
|
|
20997
21208
|
},
|
|
21209
|
+
dxf: {
|
|
21210
|
+
extensions: ['dxf'],
|
|
21211
|
+
priority: 11,
|
|
21212
|
+
color: '#de630b',
|
|
21213
|
+
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
21214
|
+
},
|
|
20998
21215
|
};
|
|
20999
21216
|
function getFormatPriority(linkFormat) {
|
|
21000
21217
|
for (const format in FORMATS) {
|
|
@@ -21011,14 +21228,18 @@ function getFormatPriority(linkFormat) {
|
|
|
21011
21228
|
function getLinkPriority(link) {
|
|
21012
21229
|
return getFormatPriority(getFileFormat(link));
|
|
21013
21230
|
}
|
|
21014
|
-
function
|
|
21015
|
-
|
|
21016
|
-
|
|
21017
|
-
|
|
21018
|
-
|
|
21231
|
+
function getFileFormatFromServiceOutput(serviceOutput) {
|
|
21232
|
+
function formatMatcher(format) {
|
|
21233
|
+
const output = serviceOutput.toLowerCase();
|
|
21234
|
+
return (format.extensions.some((extension) => output.includes(extension)) ||
|
|
21235
|
+
format.mimeTypes.some((mimeType) => output.includes(mimeType)));
|
|
21236
|
+
}
|
|
21237
|
+
for (const formatName in FORMATS) {
|
|
21238
|
+
if (formatMatcher(FORMATS[formatName])) {
|
|
21239
|
+
return formatName;
|
|
21019
21240
|
}
|
|
21020
21241
|
}
|
|
21021
|
-
return
|
|
21242
|
+
return null;
|
|
21022
21243
|
}
|
|
21023
21244
|
function getFileFormat(link) {
|
|
21024
21245
|
if ('mimeType' in link) {
|
|
@@ -21159,72 +21380,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21159
21380
|
}]
|
|
21160
21381
|
}] });
|
|
21161
21382
|
|
|
21162
|
-
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
21163
|
-
|
|
21164
|
-
class MapUtilsWMSService {
|
|
21165
|
-
constructor(proxy) {
|
|
21166
|
-
this.proxy = proxy;
|
|
21167
|
-
}
|
|
21168
|
-
getCapabilities(layer) {
|
|
21169
|
-
return from(new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady());
|
|
21170
|
-
}
|
|
21171
|
-
getLayerFull(layer) {
|
|
21172
|
-
return this.getCapabilities(layer).pipe(map$1((endpoint) => endpoint.getLayerByName(layer.name)));
|
|
21173
|
-
}
|
|
21174
|
-
getLayerLonLatBBox(layer) {
|
|
21175
|
-
return this.getLayerFull(layer).pipe(switchMap$1((wmsLayerFull) => from(this.getLonLatBBox(wmsLayerFull))));
|
|
21176
|
-
}
|
|
21177
|
-
async getLonLatBBox(wmsLayerFull) {
|
|
21178
|
-
const { boundingBoxes } = wmsLayerFull;
|
|
21179
|
-
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21180
|
-
if (lonLatCRS) {
|
|
21181
|
-
return boundingBoxes[lonLatCRS];
|
|
21182
|
-
}
|
|
21183
|
-
else {
|
|
21184
|
-
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21185
|
-
register(proj4);
|
|
21186
|
-
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21187
|
-
proj4.defs(availableEPSGCode, proj);
|
|
21188
|
-
const bboxWithFiniteNumbers = [
|
|
21189
|
-
parseFloat(boundingBoxes[availableEPSGCode][0]),
|
|
21190
|
-
parseFloat(boundingBoxes[availableEPSGCode][1]),
|
|
21191
|
-
parseFloat(boundingBoxes[availableEPSGCode][2]),
|
|
21192
|
-
parseFloat(boundingBoxes[availableEPSGCode][3]),
|
|
21193
|
-
];
|
|
21194
|
-
const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21195
|
-
return extent;
|
|
21196
|
-
}
|
|
21197
|
-
}
|
|
21198
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21199
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, providedIn: 'root' }); }
|
|
21200
|
-
}
|
|
21201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, decorators: [{
|
|
21202
|
-
type: Injectable,
|
|
21203
|
-
args: [{
|
|
21204
|
-
providedIn: 'root',
|
|
21205
|
-
}]
|
|
21206
|
-
}], ctorParameters: function () { return [{ type: ProxyService }]; } });
|
|
21207
|
-
|
|
21208
21383
|
const FEATURE_PROJECTION = 'EPSG:3857';
|
|
21209
21384
|
const DATA_PROJECTION = 'EPSG:4326';
|
|
21385
|
+
const GEOJSON = new GeoJSON();
|
|
21210
21386
|
class MapUtilsService {
|
|
21211
|
-
constructor(http,
|
|
21387
|
+
constructor(http, proxy) {
|
|
21212
21388
|
this.http = http;
|
|
21213
|
-
this.
|
|
21389
|
+
this.proxy = proxy;
|
|
21214
21390
|
this.readFeatureCollection = (featureCollection, featureProjection = FEATURE_PROJECTION, dataProjection = DATA_PROJECTION) => {
|
|
21215
|
-
|
|
21391
|
+
return GEOJSON.readFeatures(featureCollection, {
|
|
21216
21392
|
featureProjection,
|
|
21217
21393
|
dataProjection,
|
|
21218
21394
|
});
|
|
21219
|
-
return olFeatures;
|
|
21220
21395
|
};
|
|
21221
21396
|
}
|
|
21222
21397
|
createEmptyMap() {
|
|
21223
|
-
|
|
21398
|
+
return new Map$1({
|
|
21224
21399
|
controls: [],
|
|
21225
21400
|
pixelRatio: 1,
|
|
21226
21401
|
});
|
|
21227
|
-
return map;
|
|
21228
21402
|
}
|
|
21229
21403
|
isWMSLayer(layer) {
|
|
21230
21404
|
return (layer.getSource() instanceof TileWMS ||
|
|
@@ -21239,8 +21413,7 @@ class MapUtilsService {
|
|
|
21239
21413
|
...source.getParams(),
|
|
21240
21414
|
INFO_FORMAT: 'application/json',
|
|
21241
21415
|
};
|
|
21242
|
-
|
|
21243
|
-
return url;
|
|
21416
|
+
return source.getFeatureInfoUrl(coordinate, resolution, projection, params);
|
|
21244
21417
|
}
|
|
21245
21418
|
getVectorFeaturesFromClick(olMap, event) {
|
|
21246
21419
|
const features = [];
|
|
@@ -21268,38 +21441,56 @@ class MapUtilsService {
|
|
|
21268
21441
|
/**
|
|
21269
21442
|
* Will emit `null` if no extent could be computed
|
|
21270
21443
|
*/
|
|
21271
|
-
getLayerExtent(layer) {
|
|
21272
|
-
let
|
|
21444
|
+
async getLayerExtent(layer) {
|
|
21445
|
+
let latLonExtent;
|
|
21273
21446
|
if (layer &&
|
|
21274
21447
|
layer.type === 'geojson' &&
|
|
21275
21448
|
'data' in layer &&
|
|
21276
21449
|
typeof layer.data === 'object' &&
|
|
21277
21450
|
layer.data.features[0] &&
|
|
21278
21451
|
layer.data.features[0].geometry) {
|
|
21279
|
-
|
|
21280
|
-
.readFeatures(
|
|
21452
|
+
latLonExtent = new GeoJSON()
|
|
21453
|
+
.readFeatures(layer.data)
|
|
21281
21454
|
.map((feature) => feature.getGeometry())
|
|
21282
21455
|
.filter((geom) => !!geom)
|
|
21283
|
-
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null)
|
|
21456
|
+
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null);
|
|
21284
21457
|
}
|
|
21285
21458
|
else if (layer && layer.type === 'wms') {
|
|
21286
|
-
|
|
21459
|
+
latLonExtent = await this.getWmsLayerExtent(layer);
|
|
21287
21460
|
}
|
|
21288
21461
|
else if (layer && layer.type === 'wmts') {
|
|
21289
21462
|
if (layer.extent) {
|
|
21290
|
-
|
|
21463
|
+
latLonExtent = layer.extent;
|
|
21291
21464
|
}
|
|
21292
21465
|
else {
|
|
21293
|
-
return
|
|
21466
|
+
return layer.options.tileGrid.getExtent();
|
|
21294
21467
|
}
|
|
21295
21468
|
}
|
|
21296
21469
|
else {
|
|
21297
|
-
return
|
|
21470
|
+
return null;
|
|
21471
|
+
}
|
|
21472
|
+
if (!latLonExtent || isEmpty(latLonExtent)) {
|
|
21473
|
+
return null;
|
|
21474
|
+
}
|
|
21475
|
+
return transformExtent(latLonExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21476
|
+
}
|
|
21477
|
+
async getWmsLayerExtent(layer) {
|
|
21478
|
+
const endpoint = await new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady();
|
|
21479
|
+
const { boundingBoxes } = endpoint.getLayerByName(layer.name);
|
|
21480
|
+
if (!Object.keys(boundingBoxes).length) {
|
|
21481
|
+
return null;
|
|
21482
|
+
}
|
|
21483
|
+
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21484
|
+
if (lonLatCRS) {
|
|
21485
|
+
return boundingBoxes[lonLatCRS].map(parseFloat);
|
|
21486
|
+
}
|
|
21487
|
+
else {
|
|
21488
|
+
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21489
|
+
register(proj4);
|
|
21490
|
+
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21491
|
+
const bboxWithFiniteNumbers = boundingBoxes[availableEPSGCode].map(parseFloat);
|
|
21492
|
+
return transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21298
21493
|
}
|
|
21299
|
-
return geographicExtent.pipe(map$1((extent) => [
|
|
21300
|
-
...fromLonLat([extent[0], extent[1]], 'EPSG:3857'),
|
|
21301
|
-
...fromLonLat([extent[2], extent[3]], 'EPSG:3857'),
|
|
21302
|
-
]), map$1((extent) => (isEmpty(extent) ? null : extent)));
|
|
21303
21494
|
}
|
|
21304
21495
|
getWmtsLayerFromCapabilities(link) {
|
|
21305
21496
|
const getCapabilitiesUrl = new URL(link.url, window.location.toString());
|
|
@@ -21355,7 +21546,18 @@ ${e.stack || e.message || e}`);
|
|
|
21355
21546
|
])
|
|
21356
21547
|
.getArray());
|
|
21357
21548
|
}
|
|
21358
|
-
|
|
21549
|
+
getRecordExtent(record) {
|
|
21550
|
+
if (!('spatialExtents' in record)) {
|
|
21551
|
+
return null;
|
|
21552
|
+
}
|
|
21553
|
+
// transform an array of geojson geometries into a bbox
|
|
21554
|
+
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
21555
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
21556
|
+
return extend(prev, geom.getExtent());
|
|
21557
|
+
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
21558
|
+
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21559
|
+
}
|
|
21560
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, deps: [{ token: i1.HttpClient }, { token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21359
21561
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
21360
21562
|
}
|
|
21361
21563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, decorators: [{
|
|
@@ -21363,7 +21565,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21363
21565
|
args: [{
|
|
21364
21566
|
providedIn: 'root',
|
|
21365
21567
|
}]
|
|
21366
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type:
|
|
21568
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: ProxyService }]; } });
|
|
21367
21569
|
function dragPanCondition(event) {
|
|
21368
21570
|
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
21369
21571
|
if (!dragPanCondition) {
|
|
@@ -22043,6 +22245,7 @@ function loadAppConfig() {
|
|
|
22043
22245
|
'login_url',
|
|
22044
22246
|
'web_component_embedder_url',
|
|
22045
22247
|
'languages',
|
|
22248
|
+
'contact_email',
|
|
22046
22249
|
], warnings, errors);
|
|
22047
22250
|
if (parsedGlobalSection?.metadata_language) {
|
|
22048
22251
|
parsedGlobalSection = checkMetadataLanguage(parsedGlobalSection, warnings);
|
|
@@ -22060,6 +22263,7 @@ function loadAppConfig() {
|
|
|
22060
22263
|
LOGIN_URL: parsedGlobalSection.login_url,
|
|
22061
22264
|
WEB_COMPONENT_EMBEDDER_URL: parsedGlobalSection.web_component_embedder_url,
|
|
22062
22265
|
LANGUAGES: parsedGlobalSection.languages,
|
|
22266
|
+
CONTACT_EMAIL: parsedGlobalSection.contact_email,
|
|
22063
22267
|
};
|
|
22064
22268
|
const parsedLayersSections = parseMultiConfigSection(parsed, 'map_layer', ['type'], ['name', 'url', 'data'], warnings, errors);
|
|
22065
22269
|
const parsedMapSection = parseConfigSection(parsed, 'map', [], [
|
|
@@ -22093,6 +22297,7 @@ function loadAppConfig() {
|
|
|
22093
22297
|
'fonts_stylesheet_url',
|
|
22094
22298
|
'thumbnail_placeholder',
|
|
22095
22299
|
'header_background',
|
|
22300
|
+
'favicon',
|
|
22096
22301
|
], warnings, errors);
|
|
22097
22302
|
themeConfig =
|
|
22098
22303
|
parsedThemeSection === null
|
|
@@ -22108,6 +22313,7 @@ function loadAppConfig() {
|
|
|
22108
22313
|
TITLE_FONT: parsedThemeSection.title_font,
|
|
22109
22314
|
MAIN_FONT: parsedThemeSection.main_font,
|
|
22110
22315
|
FONTS_STYLESHEET_URL: parsedThemeSection.fonts_stylesheet_url,
|
|
22316
|
+
FAVICON: parsedThemeSection.favicon,
|
|
22111
22317
|
};
|
|
22112
22318
|
const parsedSearchSection = parseConfigSection(parsed, 'search', [], [
|
|
22113
22319
|
'filter_geometry_data',
|
|
@@ -22434,6 +22640,7 @@ const DEFAULT_VIEW = {
|
|
|
22434
22640
|
center: [0, 15],
|
|
22435
22641
|
zoom: 2,
|
|
22436
22642
|
};
|
|
22643
|
+
const WFS_MAX_FEATURES = 10000;
|
|
22437
22644
|
class MapContextService {
|
|
22438
22645
|
constructor(mapUtils, styleService) {
|
|
22439
22646
|
this.mapUtils = mapUtils;
|
|
@@ -22492,6 +22699,7 @@ class MapContextService {
|
|
|
22492
22699
|
urlObj.searchParams.set('typename', layerModel.name);
|
|
22493
22700
|
urlObj.searchParams.set('srsname', 'EPSG:3857');
|
|
22494
22701
|
urlObj.searchParams.set('bbox', `${extent.join(',')},EPSG:3857`);
|
|
22702
|
+
urlObj.searchParams.set('maxFeatures', WFS_MAX_FEATURES.toString());
|
|
22495
22703
|
return urlObj.toString();
|
|
22496
22704
|
},
|
|
22497
22705
|
strategy: bbox,
|
|
@@ -23039,6 +23247,7 @@ class ThumbnailComponent {
|
|
|
23039
23247
|
constructor(optionalPlaceholderUrl) {
|
|
23040
23248
|
this.optionalPlaceholderUrl = optionalPlaceholderUrl;
|
|
23041
23249
|
this.fit = 'cover';
|
|
23250
|
+
this.placeholderShown = new EventEmitter();
|
|
23042
23251
|
this.placeholderUrl = this.optionalPlaceholderUrl || DEFAULT_PLACEHOLDER;
|
|
23043
23252
|
this.images = [];
|
|
23044
23253
|
}
|
|
@@ -23074,6 +23283,7 @@ class ThumbnailComponent {
|
|
|
23074
23283
|
setNewSrcImage(image) {
|
|
23075
23284
|
this.imgFit = image.fit;
|
|
23076
23285
|
this.imgUrl = image.url;
|
|
23286
|
+
this.placeholderShown.emit(this.isPlaceholder);
|
|
23077
23287
|
}
|
|
23078
23288
|
setPlaceholder() {
|
|
23079
23289
|
this.setNewSrcImage({ url: this.placeholderUrl, fit: 'scale-down' });
|
|
@@ -23096,7 +23306,7 @@ class ThumbnailComponent {
|
|
|
23096
23306
|
}
|
|
23097
23307
|
}
|
|
23098
23308
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, deps: [{ token: THUMBNAIL_PLACEHOLDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23099
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23309
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23100
23310
|
}
|
|
23101
23311
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, decorators: [{
|
|
23102
23312
|
type: Component,
|
|
@@ -23116,11 +23326,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23116
23326
|
}], containerElement: [{
|
|
23117
23327
|
type: ViewChild,
|
|
23118
23328
|
args: ['containerElement']
|
|
23329
|
+
}], placeholderShown: [{
|
|
23330
|
+
type: Output
|
|
23119
23331
|
}] } });
|
|
23120
23332
|
|
|
23121
23333
|
class RecordPreviewCardComponent extends RecordPreviewComponent {
|
|
23122
23334
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
23123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewCardComponent, selector: "gn-ui-record-preview-card", usesInheritance: true, ngImport: i0, template: "<div\n class=\"h-full border bg-white rounded-sm overflow-hidden transition duration-200 transform hover:scale-105 hover:bg-gray-50 border-gray-300 hover:border-primary hover:text-primary\"\n>\n <a\n [href]=\"record.landingPage\"\n [title]=\"record.abstract\"\n [target]=\"linkTarget\"\n >\n <div class=\"flex flex-col min-h-full\">\n <gn-ui-thumbnail\n class=\"lg:h-48 md:h-36 border-b border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"grow p-4\">\n <h1 class=\"title-font text-lg font-medium mb-3 clamp-2\">\n {{ record.title }}\n </h1>\n <p class=\"leading-relaxed text-sm text-gray-700 clamp-3\">\n {{ record.abstract }}\n </p>\n </div>\n </div>\n </a>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23335
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewCardComponent, selector: "gn-ui-record-preview-card", usesInheritance: true, ngImport: i0, template: "<div\n class=\"h-full border bg-white rounded-sm overflow-hidden transition duration-200 transform hover:scale-105 hover:bg-gray-50 border-gray-300 hover:border-primary hover:text-primary\"\n>\n <a\n [href]=\"record.landingPage\"\n [title]=\"record.abstract\"\n [target]=\"linkTarget\"\n >\n <div class=\"flex flex-col min-h-full\">\n <gn-ui-thumbnail\n class=\"lg:h-48 md:h-36 border-b border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"grow p-4\">\n <h1 class=\"title-font text-lg font-medium mb-3 clamp-2\">\n {{ record.title }}\n </h1>\n <p class=\"leading-relaxed text-sm text-gray-700 clamp-3\">\n {{ record.abstract }}\n </p>\n </div>\n </div>\n </a>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23124
23336
|
}
|
|
23125
23337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewCardComponent, decorators: [{
|
|
23126
23338
|
type: Component,
|
|
@@ -23129,7 +23341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23129
23341
|
|
|
23130
23342
|
class RecordPreviewListComponent extends RecordPreviewComponent {
|
|
23131
23343
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
23132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewListComponent, selector: "gn-ui-record-preview-list", usesInheritance: true, ngImport: i0, template: "<div\n class=\"h-40 bg-white transition duration-200 border border-gray-200 rounded-md hover:bg-gray-50 hover:border-primary hover:text-primary\"\n>\n <a\n [href]=\"record.landingPage\"\n [target]=\"linkTarget\"\n [title]=\"record.abstract\"\n >\n <div class=\"h-full flex flex-row items-center shadow-sm\">\n <gn-ui-thumbnail\n class=\"w-40 h-full shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"grow h-full px-6 py-4 flex flex-col overflow-hidden\">\n <div class=\"title-font text-lg font-medium mb-2\">\n <h1 class=\"truncate\">{{ record.title }}</h1>\n </div>\n <p class=\"leading-relaxed clamp-3 text-sm text-gray-700\">\n {{ record.abstract }}\n </p>\n <div class=\"grow\"></div>\n <div class=\"flex flex-row items-center\">\n <div\n class=\"text-gray-500 text-xs truncate capitalize border-r mr-4 pr-4\"\n *ngIf=\"record.kind === 'dataset'\"\n >\n <span translate>{{ record.updateFrequency }}</span>\n </div>\n <div\n class=\"text-gray-500 text-xs border-gray-300 truncate viewable-downloadable\"\n *ngIf=\"isViewable || isDownloadable\"\n >\n <span *ngIf=\"isViewable\" translate>record.action.view</span>\n <span *ngIf=\"isViewable && isDownloadable\">, </span>\n <span *ngIf=\"isDownloadable\" translate>record.action.download</span>\n </div>\n </div>\n </div>\n </div>\n </a>\n</div>\n", styles: [".viewable-downloadable :first-child{text-transform:capitalize}\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: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23344
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewListComponent, selector: "gn-ui-record-preview-list", usesInheritance: true, ngImport: i0, template: "<div\n class=\"h-40 bg-white transition duration-200 border border-gray-200 rounded-md hover:bg-gray-50 hover:border-primary hover:text-primary\"\n>\n <a\n [href]=\"record.landingPage\"\n [target]=\"linkTarget\"\n [title]=\"record.abstract\"\n >\n <div class=\"h-full flex flex-row items-center shadow-sm\">\n <gn-ui-thumbnail\n class=\"w-40 h-full shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"grow h-full px-6 py-4 flex flex-col overflow-hidden\">\n <div class=\"title-font text-lg font-medium mb-2\">\n <h1 class=\"truncate\">{{ record.title }}</h1>\n </div>\n <p class=\"leading-relaxed clamp-3 text-sm text-gray-700\">\n {{ record.abstract }}\n </p>\n <div class=\"grow\"></div>\n <div class=\"flex flex-row items-center\">\n <div\n class=\"text-gray-500 text-xs truncate capitalize border-r mr-4 pr-4\"\n *ngIf=\"record.kind === 'dataset'\"\n >\n <span translate>{{ record.updateFrequency }}</span>\n </div>\n <div\n class=\"text-gray-500 text-xs border-gray-300 truncate viewable-downloadable\"\n *ngIf=\"isViewable || isDownloadable\"\n >\n <span *ngIf=\"isViewable\" translate>record.action.view</span>\n <span *ngIf=\"isViewable && isDownloadable\">, </span>\n <span *ngIf=\"isDownloadable\" translate>record.action.download</span>\n </div>\n </div>\n </div>\n </div>\n </a>\n</div>\n", styles: [".viewable-downloadable :first-child{text-transform:capitalize}\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: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23133
23345
|
}
|
|
23134
23346
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewListComponent, decorators: [{
|
|
23135
23347
|
type: Component,
|
|
@@ -23277,7 +23489,7 @@ class RecordPreviewRowComponent extends RecordPreviewComponent {
|
|
|
23277
23489
|
this.elementRef = elementRef;
|
|
23278
23490
|
}
|
|
23279
23491
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewRowComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23280
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewRowComponent, selector: "gn-ui-record-preview-row", usesInheritance: true, ngImport: i0, template: "<a\n class=\"group container-lg mx-auto flex cursor-pointer flex-wrap sm:flex-nowrap\"\n [title]=\"record.title\"\n [attr.href]=\"linkHref\"\n>\n <div class=\"shrink-0 w-full sm:w-52\">\n <div\n class=\"overflow-hidden bg-gray-100 rounded-lg w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full object-cover object-left-top\"\n [thumbnailUrl]=\"[record.overviews?.[0]?.url?.toString(), organization?.logoUrl?.toString()]\"\n [fit]=\"['cover', 'contain']\"\n ></gn-ui-thumbnail>\n </div>\n </div>\n <div\n class=\"content grid grow relative sm:pl-6 sm:pr-12\"\n style=\"grid-template-columns: auto 70px\"\n >\n <div class=\"mb-3 mt-5 sm:mt-2\">\n <div\n class=\"font-title text-21 text-title line-clamp-2 col-start-1 col-span-2 sm:line-clamp-1 group-hover:text-primary transition-colors\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </div>\n </div>\n <div\n class=\"abstract mt-4 mb-5 h-36 line-clamp-6 col-start-1 col-span-2 row-start-3 sm:mb-2 sm:h-[4.5rem] sm:line-clamp-3 sm:row-start-2 sm:mt-0\"\n data-cy=\"recordAbstract\"\n >\n {{ abstract }}\n </div>\n <div\n class=\"text-primary opacity-45 uppercase col-start-1 col-span-2 row-start-2 sm:truncate sm:row-start-3 sm:col-span-1\"\n data-cy=\"recordOrg\"\n [class]=\"metadataQualityDisplay ? 'limit-organisation-with-quality' : ''\"\n >\n {{ organization?.name }}\n </div>\n <div\n class=\"icons flex flex-row col-start-1 row-start-4 sm:col-start-2 sm:row-start-3 sm:absolute sm:right-[0.4em]\"\n >\n <mat-icon\n *ngIf=\"isDownloadable\"\n class=\"material-symbols-outlined text-primary opacity-45 mx-1\"\n >cloud_download</mat-icon\n >\n <mat-icon\n *ngIf=\"isViewable\"\n class=\"material-symbols-outlined text-primary opacity-45 mx-1\"\n >map</mat-icon\n >\n </div>\n <div\n *ngIf=\"metadataQualityDisplay\"\n class=\"col-start-2 row-start-4 sm:row-start-3 absolute right-[4em] sm:right-[5em]\"\n >\n <gn-ui-metadata-quality\n smaller=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"text-right col-start-3 row-start-4 sm:absolute sm:col-start-2 sm:row-start-1 sm:top-[-1.125em] sm:right-[0.4em]\"\n data-cy=\"recordFav\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n</a>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23492
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewRowComponent, selector: "gn-ui-record-preview-row", usesInheritance: true, ngImport: i0, template: "<a\n class=\"group container-lg mx-auto flex cursor-pointer flex-wrap sm:flex-nowrap\"\n [title]=\"record.title\"\n [attr.href]=\"linkHref\"\n>\n <div class=\"shrink-0 w-full sm:w-52\">\n <div\n class=\"overflow-hidden bg-gray-100 rounded-lg w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full object-cover object-left-top\"\n [thumbnailUrl]=\"[record.overviews?.[0]?.url?.toString(), organization?.logoUrl?.toString()]\"\n [fit]=\"['cover', 'contain']\"\n ></gn-ui-thumbnail>\n </div>\n </div>\n <div\n class=\"content grid grow relative sm:pl-6 sm:pr-12\"\n style=\"grid-template-columns: auto 70px\"\n >\n <div class=\"mb-3 mt-5 sm:mt-2\">\n <div\n class=\"font-title text-21 text-title line-clamp-2 col-start-1 col-span-2 sm:line-clamp-1 group-hover:text-primary transition-colors\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </div>\n </div>\n <div\n class=\"abstract mt-4 mb-5 h-36 line-clamp-6 col-start-1 col-span-2 row-start-3 sm:mb-2 sm:h-[4.5rem] sm:line-clamp-3 sm:row-start-2 sm:mt-0\"\n data-cy=\"recordAbstract\"\n >\n {{ abstract }}\n </div>\n <div\n class=\"text-primary opacity-45 uppercase col-start-1 col-span-2 row-start-2 sm:truncate sm:row-start-3 sm:col-span-1\"\n data-cy=\"recordOrg\"\n [class]=\"metadataQualityDisplay ? 'limit-organisation-with-quality' : ''\"\n >\n {{ organization?.name }}\n </div>\n <div\n class=\"icons flex flex-row col-start-1 row-start-4 sm:col-start-2 sm:row-start-3 sm:absolute sm:right-[0.4em]\"\n >\n <mat-icon\n *ngIf=\"isDownloadable\"\n class=\"material-symbols-outlined text-primary opacity-45 mx-1\"\n >cloud_download</mat-icon\n >\n <mat-icon\n *ngIf=\"isViewable\"\n class=\"material-symbols-outlined text-primary opacity-45 mx-1\"\n >map</mat-icon\n >\n </div>\n <div\n *ngIf=\"metadataQualityDisplay\"\n class=\"col-start-2 row-start-4 sm:row-start-3 absolute right-[4em] sm:right-[5em]\"\n >\n <gn-ui-metadata-quality\n smaller=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"text-right col-start-3 row-start-4 sm:absolute sm:col-start-2 sm:row-start-1 sm:top-[-1.125em] sm:right-[0.4em]\"\n data-cy=\"recordFav\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n</a>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23281
23493
|
}
|
|
23282
23494
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewRowComponent, decorators: [{
|
|
23283
23495
|
type: Component,
|
|
@@ -23295,7 +23507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23295
23507
|
|
|
23296
23508
|
class RecordPreviewTitleComponent extends RecordPreviewComponent {
|
|
23297
23509
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
23298
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewTitleComponent, selector: "gn-ui-record-preview-title", usesInheritance: true, ngImport: i0, template: "<!-- Record list item: List Small -->\n<div\n class=\"h-10 w-full border-b border-gray-200 transition duration-200 rounded-sm hover:text-primary\"\n>\n <a\n [href]=\"record.landingPage\"\n [target]=\"linkTarget\"\n [title]=\"record.abstract\"\n >\n <div class=\"h-full flex flex-row items-center\">\n <gn-ui-thumbnail\n class=\"w-10 h-full shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"grow px-3 py-1 flex flex-col overflow-hidden\">\n <h1 class=\"title-font text-sm font-bold truncate md:text-clip\">\n {{ record.title }}\n </h1>\n </div>\n </div>\n </a>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23510
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewTitleComponent, selector: "gn-ui-record-preview-title", usesInheritance: true, ngImport: i0, template: "<!-- Record list item: List Small -->\n<div\n class=\"h-10 w-full border-b border-gray-200 transition duration-200 rounded-sm hover:text-primary\"\n>\n <a\n [href]=\"record.landingPage\"\n [target]=\"linkTarget\"\n [title]=\"record.abstract\"\n >\n <div class=\"h-full flex flex-row items-center\">\n <gn-ui-thumbnail\n class=\"w-10 h-full shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"grow px-3 py-1 flex flex-col overflow-hidden\">\n <h1 class=\"title-font text-sm font-bold truncate md:text-clip\">\n {{ record.title }}\n </h1>\n </div>\n </div>\n </a>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23299
23511
|
}
|
|
23300
23512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewTitleComponent, decorators: [{
|
|
23301
23513
|
type: Component,
|
|
@@ -23335,7 +23547,7 @@ class RecordPreviewFeedComponent extends RecordPreviewComponent {
|
|
|
23335
23547
|
return this.timeFormat.format(this.record.recordCreated, Date.now());
|
|
23336
23548
|
}
|
|
23337
23549
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewFeedComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23338
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewFeedComponent, selector: "gn-ui-record-preview-feed", usesInheritance: true, ngImport: i0, template: "<div\n class=\"mx-[18px] pl-[18px] pb-[18px] border-solid border-l-2 border-gray-100\"\n>\n <a\n class=\"record-container block rounded-lg bg-white border border-white card-shadow\"\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n >\n <div\n class=\"record-header py-4 px-4 border-b border-gray-300 flex flex-row items-center relative transition duration-200\"\n >\n <div\n class=\"absolute w-3 h-3 bg-secondary rounded-full\"\n style=\"right: calc(100% + 14px)\"\n ></div>\n <div\n class=\"record-header-image border border-gray-300 bg-white rounded-full w-16 h-16 object-contain mr-4 overflow-hidden transition duration-200 shrink-0\"\n >\n <mat-icon\n *ngIf=\"!hasLogo\"\n class=\"material-symbols-outlined text-gray-200\"\n style=\"width: 42px; height: 42px; font-size: 42px; margin: 10px\"\n >{{ hasOnlyPerson ? 'face' : 'home_work' }}</mat-icon\n >\n <gn-ui-thumbnail\n *ngIf=\"hasLogo\"\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString()\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col overflow-hidden items-start\">\n <span\n *ngIf=\"hasOrganization\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ record.ownerOrganization.name }}\n </span>\n <span\n *ngIf=\"hasOnlyPerson\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ contact.firstName }} {{ contact.lastName }}\n </span>\n <p class=\"\">\n <span translate [translateParams]=\"{ time }\"\n >record.was.created.time</span\n >\n </p>\n </div>\n </div>\n <div class=\"pt-5 pb-5 px-10 relative\">\n <div class=\"absolute top-[0.85em] right-[0.85em]\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n <h1\n class=\"font-title text-black text-[21px] font-medium mb-3 pr-8\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </h1>\n <p class=\"line-clamp-3\">{{ abstract }}</p>\n <gn-ui-thumbnail\n *ngIf=\"record.overviews?.[0]\"\n class=\"block mt-3 w-full h-[136px] border border-gray-100 rounded-lg overflow-hidden\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-row mt-3\" *ngIf=\"isDownloadable || isViewable\">\n <mat-icon\n *ngIf=\"isDownloadable\"\n class=\"material-symbols-outlined text-primary opacity-45 mr-3\"\n >cloud_download\n </mat-icon>\n <mat-icon\n *ngIf=\"isViewable\"\n class=\"material-symbols-outlined text-primary opacity-45 mr-3\"\n >map\n </mat-icon>\n </div>\n </div>\n </a>\n</div>\n", styles: [".record-container:hover .record-header,.record-container:hover .record-header-image{border-color:var(--color-primary-lightest)}\n"], dependencies: [{ 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$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23550
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordPreviewFeedComponent, selector: "gn-ui-record-preview-feed", usesInheritance: true, ngImport: i0, template: "<div\n class=\"mx-[18px] pl-[18px] pb-[18px] border-solid border-l-2 border-gray-100\"\n>\n <a\n class=\"record-container block rounded-lg bg-white border border-white card-shadow\"\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n >\n <div\n class=\"record-header py-4 px-4 border-b border-gray-300 flex flex-row items-center relative transition duration-200\"\n >\n <div\n class=\"absolute w-3 h-3 bg-secondary rounded-full\"\n style=\"right: calc(100% + 14px)\"\n ></div>\n <div\n class=\"record-header-image border border-gray-300 bg-white rounded-full w-16 h-16 object-contain mr-4 overflow-hidden transition duration-200 shrink-0\"\n >\n <mat-icon\n *ngIf=\"!hasLogo\"\n class=\"material-symbols-outlined text-gray-200\"\n style=\"width: 42px; height: 42px; font-size: 42px; margin: 10px\"\n >{{ hasOnlyPerson ? 'face' : 'home_work' }}</mat-icon\n >\n <gn-ui-thumbnail\n *ngIf=\"hasLogo\"\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString()\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col overflow-hidden items-start\">\n <span\n *ngIf=\"hasOrganization\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ record.ownerOrganization.name }}\n </span>\n <span\n *ngIf=\"hasOnlyPerson\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ contact.firstName }} {{ contact.lastName }}\n </span>\n <p class=\"\">\n <span translate [translateParams]=\"{ time }\"\n >record.was.created.time</span\n >\n </p>\n </div>\n </div>\n <div class=\"pt-5 pb-5 px-10 relative\">\n <div class=\"absolute top-[0.85em] right-[0.85em]\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n <h1\n class=\"font-title text-black text-[21px] font-medium mb-3 pr-8\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </h1>\n <p class=\"line-clamp-3\">{{ abstract }}</p>\n <gn-ui-thumbnail\n *ngIf=\"record.overviews?.[0]\"\n class=\"block mt-3 w-full h-[136px] border border-gray-100 rounded-lg overflow-hidden\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-row mt-3\" *ngIf=\"isDownloadable || isViewable\">\n <mat-icon\n *ngIf=\"isDownloadable\"\n class=\"material-symbols-outlined text-primary opacity-45 mr-3\"\n >cloud_download\n </mat-icon>\n <mat-icon\n *ngIf=\"isViewable\"\n class=\"material-symbols-outlined text-primary opacity-45 mr-3\"\n >map\n </mat-icon>\n </div>\n </div>\n </a>\n</div>\n", styles: [".record-container:hover .record-header,.record-container:hover .record-header-image{border-color:var(--color-primary-lightest)}\n"], dependencies: [{ 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$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23339
23551
|
}
|
|
23340
23552
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordPreviewFeedComponent, decorators: [{
|
|
23341
23553
|
type: Component,
|
|
@@ -23668,6 +23880,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23668
23880
|
args: ['contentDiv']
|
|
23669
23881
|
}] } });
|
|
23670
23882
|
|
|
23883
|
+
class CopyTextButtonComponent {
|
|
23884
|
+
constructor() {
|
|
23885
|
+
this.displayText = true;
|
|
23886
|
+
this.rows = 1;
|
|
23887
|
+
}
|
|
23888
|
+
copyText(event) {
|
|
23889
|
+
navigator.clipboard.writeText(this.text);
|
|
23890
|
+
event.target.blur();
|
|
23891
|
+
}
|
|
23892
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23893
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23894
|
+
}
|
|
23895
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
23896
|
+
type: Component,
|
|
23897
|
+
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, 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" }]
|
|
23898
|
+
}], propDecorators: { text: [{
|
|
23899
|
+
type: Input
|
|
23900
|
+
}], tooltipText: [{
|
|
23901
|
+
type: Input
|
|
23902
|
+
}], displayText: [{
|
|
23903
|
+
type: Input
|
|
23904
|
+
}], rows: [{
|
|
23905
|
+
type: Input
|
|
23906
|
+
}] } });
|
|
23907
|
+
|
|
23671
23908
|
class ContentGhostComponent {
|
|
23672
23909
|
constructor() {
|
|
23673
23910
|
this.ghostClass = '';
|
|
@@ -23822,6 +24059,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23822
24059
|
args: ['container']
|
|
23823
24060
|
}] } });
|
|
23824
24061
|
|
|
24062
|
+
class MarkdownParserComponent {
|
|
24063
|
+
get parsedMarkdown() {
|
|
24064
|
+
return marked.parse(this.textContent);
|
|
24065
|
+
}
|
|
24066
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24067
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, 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:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}: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!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}: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 }); }
|
|
24068
|
+
}
|
|
24069
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24070
|
+
type: Component,
|
|
24071
|
+
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, 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:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}: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!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}: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"] }]
|
|
24072
|
+
}], propDecorators: { textContent: [{
|
|
24073
|
+
type: Input
|
|
24074
|
+
}] } });
|
|
24075
|
+
|
|
23825
24076
|
class MetadataInfoComponent {
|
|
23826
24077
|
constructor() {
|
|
23827
24078
|
this.keyword = new EventEmitter();
|
|
@@ -23859,12 +24110,16 @@ class MetadataInfoComponent {
|
|
|
23859
24110
|
onKeywordClick(keyword) {
|
|
23860
24111
|
this.keyword.emit(keyword);
|
|
23861
24112
|
}
|
|
24113
|
+
copyText() {
|
|
24114
|
+
navigator.clipboard.writeText(this.metadata.uniqueIdentifier);
|
|
24115
|
+
event.target.blur();
|
|
24116
|
+
}
|
|
23862
24117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23863
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<
|
|
24118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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 </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\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.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"py-4 px-6 rounded bg-gray-100 text-gray-700 flex flex-wrap gap-2\">\n <gn-ui-badge *ngIf=\"metadata.extras?.isOpenData\">\n <span translate>record.metadata.isOpenData</span>\n </gn-ui-badge>\n <span\n class=\"text-primary font-medium\"\n *ngFor=\"let usage of usages\"\n gnUiLinkify\n >\n {{ usage }}\n </span>\n <span class=\"text-primary font-medium noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | 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.themes?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.themes</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 lowercase\"\n *ngFor=\"let theme of metadata.themes\"\n >{{ theme }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword }}</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: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { 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: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23864
24119
|
}
|
|
23865
24120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
23866
24121
|
type: Component,
|
|
23867
|
-
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
24122
|
+
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 </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\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.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"py-4 px-6 rounded bg-gray-100 text-gray-700 flex flex-wrap gap-2\">\n <gn-ui-badge *ngIf=\"metadata.extras?.isOpenData\">\n <span translate>record.metadata.isOpenData</span>\n </gn-ui-badge>\n <span\n class=\"text-primary font-medium\"\n *ngFor=\"let usage of usages\"\n gnUiLinkify\n >\n {{ usage }}\n </span>\n <span class=\"text-primary font-medium noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | 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.themes?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.themes</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 lowercase\"\n *ngFor=\"let theme of metadata.themes\"\n >{{ theme }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword }}</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"] }]
|
|
23868
24123
|
}], propDecorators: { metadata: [{
|
|
23869
24124
|
type: Input
|
|
23870
24125
|
}], incomplete: [{
|
|
@@ -23900,53 +24155,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23900
24155
|
|
|
23901
24156
|
class ButtonComponent {
|
|
23902
24157
|
constructor() {
|
|
23903
|
-
this.type = 'default';
|
|
23904
24158
|
this.disabled = false;
|
|
23905
24159
|
this.extraClass = '';
|
|
23906
24160
|
this.buttonClick = new EventEmitter();
|
|
23907
24161
|
}
|
|
23908
|
-
|
|
23909
|
-
|
|
23910
|
-
|
|
23911
|
-
get color() {
|
|
23912
|
-
switch (this.type) {
|
|
23913
|
-
case 'default':
|
|
23914
|
-
return 'bg-gray-700 hover:bg-gray-800 hover:bg-gray-800 active:bg-gray-900';
|
|
24162
|
+
// btn-classes are explicited to allow tailwind recognize them and add it in css.
|
|
24163
|
+
set type(value) {
|
|
24164
|
+
switch (value) {
|
|
23915
24165
|
case 'primary':
|
|
23916
|
-
|
|
23917
|
-
|
|
23918
|
-
return 'bg-secondary hover:bg-secondary-darker focus:bg-secondary-darker active:bg-secondary-darkest';
|
|
23919
|
-
case 'outline':
|
|
23920
|
-
return 'bg-white';
|
|
23921
|
-
case 'light':
|
|
23922
|
-
return 'bg-white hover:bg-gray-50 focus:bg-gray-50 active:bg-gray-100';
|
|
23923
|
-
}
|
|
23924
|
-
}
|
|
23925
|
-
get textColor() {
|
|
23926
|
-
switch (this.type) {
|
|
23927
|
-
case 'default':
|
|
24166
|
+
this.btnClass = 'btn-primary';
|
|
24167
|
+
break;
|
|
23928
24168
|
case 'secondary':
|
|
23929
|
-
|
|
23930
|
-
|
|
24169
|
+
this.btnClass = 'btn-secondary';
|
|
24170
|
+
break;
|
|
23931
24171
|
case 'outline':
|
|
23932
|
-
|
|
24172
|
+
this.btnClass = 'btn-outline';
|
|
24173
|
+
break;
|
|
23933
24174
|
case 'light':
|
|
23934
|
-
|
|
24175
|
+
this.btnClass = 'btn-light';
|
|
24176
|
+
break;
|
|
24177
|
+
default:
|
|
24178
|
+
this.btnClass = 'btn-default';
|
|
24179
|
+
break;
|
|
23935
24180
|
}
|
|
23936
24181
|
}
|
|
23937
|
-
get
|
|
23938
|
-
|
|
23939
|
-
case 'default':
|
|
23940
|
-
return 'border border-gray-700 focus:ring-4 focus:ring-gray-200';
|
|
23941
|
-
case 'secondary':
|
|
23942
|
-
return 'border border-secondary focus:ring-4 focus:ring-secondary-lightest';
|
|
23943
|
-
case 'primary':
|
|
23944
|
-
return 'border border-primary focus:ring-4 focus:ring-primary-lightest';
|
|
23945
|
-
case 'outline':
|
|
23946
|
-
return 'border border-gray-300 hover:border-primary-lighter focus:border-primary-lighter focus:ring-4 focus:ring-primary-lightest active:border-primary-darker';
|
|
23947
|
-
case 'light':
|
|
23948
|
-
return 'border border-white focus:ring-4 focus:ring-gray-300';
|
|
23949
|
-
}
|
|
24182
|
+
get classList() {
|
|
24183
|
+
return `${this.btnClass} ${this.extraClass}`;
|
|
23950
24184
|
}
|
|
23951
24185
|
handleClick(event) {
|
|
23952
24186
|
this.buttonClick.emit();
|
|
@@ -23954,11 +24188,11 @@ class ButtonComponent {
|
|
|
23954
24188
|
propagateToDocumentOnly(event);
|
|
23955
24189
|
}
|
|
23956
24190
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23957
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host
|
|
24191
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23958
24192
|
}
|
|
23959
24193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
23960
24194
|
type: Component,
|
|
23961
|
-
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host
|
|
24195
|
+
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
23962
24196
|
}], propDecorators: { type: [{
|
|
23963
24197
|
type: Input
|
|
23964
24198
|
}], disabled: [{
|
|
@@ -24033,40 +24267,15 @@ class DownloadsListComponent {
|
|
|
24033
24267
|
return link.type === 'service' && link.accessServiceProtocol === 'wfs';
|
|
24034
24268
|
}
|
|
24035
24269
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24036
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div
|
|
24270
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromWfs"], outputs: ["exportUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24037
24271
|
}
|
|
24038
24272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
24039
24273
|
type: Component,
|
|
24040
|
-
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div
|
|
24274
|
+
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
24041
24275
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { links: [{
|
|
24042
24276
|
type: Input
|
|
24043
24277
|
}] } });
|
|
24044
24278
|
|
|
24045
|
-
class CopyTextButtonComponent {
|
|
24046
|
-
constructor() {
|
|
24047
|
-
this.displayText = true;
|
|
24048
|
-
this.rows = 1;
|
|
24049
|
-
}
|
|
24050
|
-
copyText(event) {
|
|
24051
|
-
navigator.clipboard.writeText(this.text);
|
|
24052
|
-
event.target.blur();
|
|
24053
|
-
}
|
|
24054
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24055
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24056
|
-
}
|
|
24057
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24058
|
-
type: Component,
|
|
24059
|
-
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, 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" }]
|
|
24060
|
-
}], propDecorators: { text: [{
|
|
24061
|
-
type: Input
|
|
24062
|
-
}], tooltipText: [{
|
|
24063
|
-
type: Input
|
|
24064
|
-
}], displayText: [{
|
|
24065
|
-
type: Input
|
|
24066
|
-
}], rows: [{
|
|
24067
|
-
type: Input
|
|
24068
|
-
}] } });
|
|
24069
|
-
|
|
24070
24279
|
class ApiCardComponent {
|
|
24071
24280
|
constructor() {
|
|
24072
24281
|
this.currentlyActive = false;
|
|
@@ -24263,11 +24472,11 @@ class CarouselComponent {
|
|
|
24263
24472
|
this.emblaApi.scrollTo(stepIndex);
|
|
24264
24473
|
}
|
|
24265
24474
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container
|
|
24475
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24267
24476
|
}
|
|
24268
24477
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
24269
24478
|
type: Component,
|
|
24270
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container
|
|
24479
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24271
24480
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
|
|
24272
24481
|
type: Input
|
|
24273
24482
|
}], stepsContainerClass: [{
|
|
@@ -24324,11 +24533,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24324
24533
|
|
|
24325
24534
|
class RelatedRecordCardComponent {
|
|
24326
24535
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24327
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\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]
|
|
24536
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\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.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$5.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 }); }
|
|
24328
24537
|
}
|
|
24329
24538
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
24330
24539
|
type: Component,
|
|
24331
|
-
args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\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]
|
|
24540
|
+
args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\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" }]
|
|
24332
24541
|
}], propDecorators: { record: [{
|
|
24333
24542
|
type: Input
|
|
24334
24543
|
}] } });
|
|
@@ -24346,15 +24555,21 @@ class MetadataContactComponent {
|
|
|
24346
24555
|
? this.metadata.contactsForResource
|
|
24347
24556
|
: this.metadata.contacts) || []);
|
|
24348
24557
|
}
|
|
24558
|
+
get address() {
|
|
24559
|
+
const addressParts = this.contacts[0].address
|
|
24560
|
+
.split(',')
|
|
24561
|
+
.map((part) => part.trim());
|
|
24562
|
+
return addressParts;
|
|
24563
|
+
}
|
|
24349
24564
|
onOrganizationClick() {
|
|
24350
24565
|
this.organizationClick.emit(this.shownOrganization);
|
|
24351
24566
|
}
|
|
24352
24567
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24353
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div
|
|
24568
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.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]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.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>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.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=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24354
24569
|
}
|
|
24355
24570
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24356
24571
|
type: Component,
|
|
24357
|
-
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
|
24572
|
+
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.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]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.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>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.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=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
24358
24573
|
}], propDecorators: { metadata: [{
|
|
24359
24574
|
type: Input
|
|
24360
24575
|
}], organizationClick: [{
|
|
@@ -24620,7 +24835,10 @@ class DropdownMultiselectComponent {
|
|
|
24620
24835
|
return this.choices.filter((choice) => this.selected.indexOf(choice.value) > -1);
|
|
24621
24836
|
}
|
|
24622
24837
|
get filteredChoicesByText() {
|
|
24623
|
-
|
|
24838
|
+
if (!this.searchInputValue)
|
|
24839
|
+
return this.choices;
|
|
24840
|
+
const filter = createFuzzyFilter(this.searchInputValue);
|
|
24841
|
+
return this.choices.filter((choice) => filter(choice.label));
|
|
24624
24842
|
}
|
|
24625
24843
|
get focusedIndex() {
|
|
24626
24844
|
return this.checkboxes.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
@@ -25071,11 +25289,11 @@ class StarToggleComponent {
|
|
|
25071
25289
|
event.preventDefault();
|
|
25072
25290
|
}
|
|
25073
25291
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25074
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25292
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25075
25293
|
}
|
|
25076
25294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
25077
25295
|
type: Component,
|
|
25078
|
-
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
25296
|
+
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
25079
25297
|
}], propDecorators: { toggled: [{
|
|
25080
25298
|
type: Input
|
|
25081
25299
|
}], disabled: [{
|
|
@@ -25187,11 +25405,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25187
25405
|
|
|
25188
25406
|
class NavigationButtonComponent {
|
|
25189
25407
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25190
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center backdrop-blur p-1 bg-primary-opacity-
|
|
25408
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 text-white rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25191
25409
|
}
|
|
25192
25410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25193
25411
|
type: Component,
|
|
25194
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center backdrop-blur p-1 bg-primary-opacity-
|
|
25412
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 text-white rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n" }]
|
|
25195
25413
|
}], propDecorators: { label: [{
|
|
25196
25414
|
type: Input
|
|
25197
25415
|
}], icon: [{
|
|
@@ -25457,6 +25675,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25457
25675
|
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\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 <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
25458
25676
|
}] });
|
|
25459
25677
|
|
|
25678
|
+
class EditableLabelDirective {
|
|
25679
|
+
constructor(el, renderer) {
|
|
25680
|
+
this.el = el;
|
|
25681
|
+
this.renderer = renderer;
|
|
25682
|
+
this.editableLabelChanged = new EventEmitter();
|
|
25683
|
+
}
|
|
25684
|
+
ngAfterViewInit() {
|
|
25685
|
+
if (this.gnUiEditableLabel !== false) {
|
|
25686
|
+
const appendedInput = this.renderer.createElement('input');
|
|
25687
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
25688
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
25689
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
25690
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
25691
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
25692
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
25693
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
25694
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
25695
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
25696
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
25697
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
25698
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
25699
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
25700
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
25701
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
25702
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
25703
|
+
});
|
|
25704
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
25705
|
+
}
|
|
25706
|
+
}
|
|
25707
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25708
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
25709
|
+
}
|
|
25710
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25711
|
+
type: Directive,
|
|
25712
|
+
args: [{
|
|
25713
|
+
selector: '[gnUiEditableLabel]',
|
|
25714
|
+
}]
|
|
25715
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25716
|
+
type: Output
|
|
25717
|
+
}], gnUiEditableLabel: [{
|
|
25718
|
+
type: Input
|
|
25719
|
+
}] } });
|
|
25720
|
+
|
|
25460
25721
|
class UiInputsModule {
|
|
25461
25722
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25462
25723
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
@@ -25482,7 +25743,8 @@ class UiInputsModule {
|
|
|
25482
25743
|
CopyTextButtonComponent,
|
|
25483
25744
|
CheckboxComponent,
|
|
25484
25745
|
SearchInputComponent,
|
|
25485
|
-
DateRangePickerComponent
|
|
25746
|
+
DateRangePickerComponent,
|
|
25747
|
+
EditableLabelDirective], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25486
25748
|
FormsModule,
|
|
25487
25749
|
ReactiveFormsModule,
|
|
25488
25750
|
TagInputModule,
|
|
@@ -25512,7 +25774,8 @@ class UiInputsModule {
|
|
|
25512
25774
|
CopyTextButtonComponent,
|
|
25513
25775
|
CheckboxComponent,
|
|
25514
25776
|
SearchInputComponent,
|
|
25515
|
-
DateRangePickerComponent
|
|
25777
|
+
DateRangePickerComponent,
|
|
25778
|
+
EditableLabelDirective] }); }
|
|
25516
25779
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, imports: [CommonModule,
|
|
25517
25780
|
TranslateModule.forChild(),
|
|
25518
25781
|
NgxDropzoneModule,
|
|
@@ -25559,6 +25822,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25559
25822
|
CheckboxComponent,
|
|
25560
25823
|
SearchInputComponent,
|
|
25561
25824
|
DateRangePickerComponent,
|
|
25825
|
+
EditableLabelDirective,
|
|
25562
25826
|
],
|
|
25563
25827
|
imports: [
|
|
25564
25828
|
CommonModule,
|
|
@@ -25597,6 +25861,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25597
25861
|
CheckboxComponent,
|
|
25598
25862
|
SearchInputComponent,
|
|
25599
25863
|
DateRangePickerComponent,
|
|
25864
|
+
EditableLabelDirective,
|
|
25600
25865
|
],
|
|
25601
25866
|
}]
|
|
25602
25867
|
}] });
|
|
@@ -25754,6 +26019,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25754
26019
|
type: Input
|
|
25755
26020
|
}] } });
|
|
25756
26021
|
|
|
26022
|
+
class ImageOverlayPreviewComponent {
|
|
26023
|
+
constructor() {
|
|
26024
|
+
this.isPlaceholderShown = new EventEmitter();
|
|
26025
|
+
}
|
|
26026
|
+
openLightbox(src) {
|
|
26027
|
+
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
26028
|
+
}
|
|
26029
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26030
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ 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: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }] }); }
|
|
26031
|
+
}
|
|
26032
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
26033
|
+
type: Component,
|
|
26034
|
+
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
|
|
26035
|
+
}], propDecorators: { imageUrl: [{
|
|
26036
|
+
type: Input
|
|
26037
|
+
}], isPlaceholderShown: [{
|
|
26038
|
+
type: Output
|
|
26039
|
+
}] } });
|
|
26040
|
+
|
|
25757
26041
|
class UiElementsModule {
|
|
25758
26042
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25759
26043
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, declarations: [MetadataInfoComponent,
|
|
@@ -25775,7 +26059,9 @@ class UiElementsModule {
|
|
|
25775
26059
|
GnUiLinkifyDirective,
|
|
25776
26060
|
PaginationButtonsComponent,
|
|
25777
26061
|
MaxLinesComponent,
|
|
25778
|
-
RecordApiFormComponent
|
|
26062
|
+
RecordApiFormComponent,
|
|
26063
|
+
MarkdownParserComponent,
|
|
26064
|
+
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
25779
26065
|
MatIconModule,
|
|
25780
26066
|
MatTooltipModule,
|
|
25781
26067
|
UiWidgetsModule,
|
|
@@ -25800,7 +26086,10 @@ class UiElementsModule {
|
|
|
25800
26086
|
AvatarComponent,
|
|
25801
26087
|
UserPreviewComponent,
|
|
25802
26088
|
PaginationButtonsComponent,
|
|
25803
|
-
|
|
26089
|
+
MaxLinesComponent,
|
|
26090
|
+
RecordApiFormComponent,
|
|
26091
|
+
MarkdownParserComponent,
|
|
26092
|
+
ImageOverlayPreviewComponent] }); }
|
|
25804
26093
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, imports: [CommonModule,
|
|
25805
26094
|
MatIconModule,
|
|
25806
26095
|
MatTooltipModule,
|
|
@@ -25849,6 +26138,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25849
26138
|
PaginationButtonsComponent,
|
|
25850
26139
|
MaxLinesComponent,
|
|
25851
26140
|
RecordApiFormComponent,
|
|
26141
|
+
MarkdownParserComponent,
|
|
26142
|
+
ImageOverlayPreviewComponent,
|
|
25852
26143
|
],
|
|
25853
26144
|
exports: [
|
|
25854
26145
|
MetadataInfoComponent,
|
|
@@ -25868,7 +26159,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25868
26159
|
AvatarComponent,
|
|
25869
26160
|
UserPreviewComponent,
|
|
25870
26161
|
PaginationButtonsComponent,
|
|
26162
|
+
MaxLinesComponent,
|
|
25871
26163
|
RecordApiFormComponent,
|
|
26164
|
+
MarkdownParserComponent,
|
|
26165
|
+
ImageOverlayPreviewComponent,
|
|
25872
26166
|
],
|
|
25873
26167
|
}]
|
|
25874
26168
|
}] });
|
|
@@ -25987,11 +26281,11 @@ class RecordTableComponent {
|
|
|
25987
26281
|
return false;
|
|
25988
26282
|
}
|
|
25989
26283
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25990
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordTableComponent, selector: "gn-ui-record-table", inputs: { selectedRecords: "selectedRecords", records: "records", totalHits: "totalHits", sortBy: "sortBy" }, outputs: { recordClick: "recordClick", recordsSelect: "recordsSelect", recordsDeselect: "recordsDeselect", sortByChange: "sortByChange" }, ngImport: i0, template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"
|
|
26284
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordTableComponent, selector: "gn-ui-record-table", inputs: { selectedRecords: "selectedRecords", records: "records", totalHits: "totalHits", sortBy: "sortBy" }, outputs: { recordClick: "recordClick", recordsSelect: "recordsSelect", recordsDeselect: "recordsDeselect", sortByChange: "sortByChange" }, ngImport: i0, template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordsSelect.emit([record])\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordsSelect.emit([record])\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-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 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
25991
26285
|
}
|
|
25992
26286
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, decorators: [{
|
|
25993
26287
|
type: Component,
|
|
25994
|
-
args: [{ selector: 'gn-ui-record-table', template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"
|
|
26288
|
+
args: [{ selector: 'gn-ui-record-table', template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordsSelect.emit([record])\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordsSelect.emit([record])\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-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 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"] }]
|
|
25995
26289
|
}], propDecorators: { selectedRecords: [{
|
|
25996
26290
|
type: Input
|
|
25997
26291
|
}], records: [{
|
|
@@ -27255,6 +27549,7 @@ class FavoriteStarComponent {
|
|
|
27255
27549
|
this.changeDetector = changeDetector;
|
|
27256
27550
|
this.authService = authService;
|
|
27257
27551
|
this.translateService = translateService;
|
|
27552
|
+
this.displayCount = true;
|
|
27258
27553
|
this.isFavorite$ = this.favoritesService.myFavoritesUuid$.pipe(map$1((favorites) => favorites.indexOf(this.record.uniqueIdentifier) > -1));
|
|
27259
27554
|
this.isAnonymous$ = this.platformService.isAnonymous();
|
|
27260
27555
|
this.loading = false;
|
|
@@ -27317,12 +27612,14 @@ class FavoriteStarComponent {
|
|
|
27317
27612
|
});
|
|
27318
27613
|
}
|
|
27319
27614
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27320
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div>\n <span
|
|
27615
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row content-center\">\n <span\n class=\"align-text-top mr-1.5 mt-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n class=\"mt-1\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count mt-1.5\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n", styles: [""], 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: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27321
27616
|
}
|
|
27322
27617
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
27323
27618
|
type: Component,
|
|
27324
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <span
|
|
27325
|
-
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: {
|
|
27619
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row content-center\">\n <span\n class=\"align-text-top mr-1.5 mt-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n class=\"mt-1\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count mt-1.5\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n" }]
|
|
27620
|
+
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: { displayCount: [{
|
|
27621
|
+
type: Input
|
|
27622
|
+
}], record: [{
|
|
27326
27623
|
type: Input
|
|
27327
27624
|
}], starToggleRef: [{
|
|
27328
27625
|
type: ViewChild,
|
|
@@ -27365,7 +27662,7 @@ class ResultsListContainerComponent {
|
|
|
27365
27662
|
return this.recordUrlTemplate.replace('${uuid}', metadata.uniqueIdentifier);
|
|
27366
27663
|
}
|
|
27367
27664
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27368
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container\n *ngIf=\"\n (facade.isLoading$ | async) === false &&\n (facade.isEndOfResults$ | async) === false\n \"\n >\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-search-results-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-search-results-error>\n <gn-ui-search-results-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-search-results-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [""], 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: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: SearchResultsErrorComponent, selector: "gn-ui-search-results-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["record"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }] }); }
|
|
27665
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container\n *ngIf=\"\n (facade.isLoading$ | async) === false &&\n (facade.isEndOfResults$ | async) === false\n \"\n >\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-search-results-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-search-results-error>\n <gn-ui-search-results-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-search-results-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [""], 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: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: SearchResultsErrorComponent, selector: "gn-ui-search-results-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }] }); }
|
|
27369
27666
|
}
|
|
27370
27667
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
27371
27668
|
type: Component,
|
|
@@ -28080,7 +28377,7 @@ class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
|
28080
28377
|
return getLinkLabel(link);
|
|
28081
28378
|
}
|
|
28082
28379
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerRecordPreviewComponent, deps: [{ token: i0.ElementRef }, { token: LinkClassifierService }, { token: MapFacade }, { token: MapUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28083
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerRecordPreviewComponent, selector: "gn-ui-add-layer-record-preview", usesInheritance: true, ngImport: i0, template: "<div class=\"w-full flex flex-row rounded-sm\" [title]=\"record.abstract\">\n <gn-ui-thumbnail\n class=\"w-16 h-16 shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"flex flex-col p-2 gap-2 overflow-hidden\">\n <h1 class=\"text-sm font-medium truncate\">\n {{ record.title }}\n </h1>\n <ng-container *ngFor=\"let link of mapLinks\">\n <gn-ui-button\n [type]=\"'outline'\"\n (buttonClick)=\"handleLinkClick(link)\"\n extraClass=\"!py-[8px] !px-[12px]\"\n >\n <div class=\"text-left text-[12px] line-clamp-2\">\n {{ getLinkLabel(link) }}\n </div>\n </gn-ui-button>\n </ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28380
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerRecordPreviewComponent, selector: "gn-ui-add-layer-record-preview", usesInheritance: true, ngImport: i0, template: "<div class=\"w-full flex flex-row rounded-sm\" [title]=\"record.abstract\">\n <gn-ui-thumbnail\n class=\"w-16 h-16 shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"flex flex-col p-2 gap-2 overflow-hidden\">\n <h1 class=\"text-sm font-medium truncate\">\n {{ record.title }}\n </h1>\n <ng-container *ngFor=\"let link of mapLinks\">\n <gn-ui-button\n [type]=\"'outline'\"\n (buttonClick)=\"handleLinkClick(link)\"\n extraClass=\"!py-[8px] !px-[12px]\"\n >\n <div class=\"text-left text-[12px] line-clamp-2\">\n {{ getLinkLabel(link) }}\n </div>\n </gn-ui-button>\n </ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28084
28381
|
}
|
|
28085
28382
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerRecordPreviewComponent, decorators: [{
|
|
28086
28383
|
type: Component,
|
|
@@ -28124,6 +28421,208 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28124
28421
|
], template: "<div class=\"h-full text-sm\">\n <gn-ui-fuzzy-search></gn-ui-fuzzy-search>\n <gn-ui-results-list-container\n layout=\"ADDLAYER\"\n ></gn-ui-results-list-container>\n</div>\n", styles: ["::ng-deep .mat-tab-body-wrapper{flex-grow:1}\n"] }]
|
|
28125
28422
|
}], ctorParameters: function () { return [{ type: SearchFacade }]; } });
|
|
28126
28423
|
|
|
28424
|
+
class AddLayerFromWmsComponent {
|
|
28425
|
+
constructor(mapFacade, changeDetectorRef) {
|
|
28426
|
+
this.mapFacade = mapFacade;
|
|
28427
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
28428
|
+
this.wmsUrl = '';
|
|
28429
|
+
this.loading = false;
|
|
28430
|
+
this.layers = [];
|
|
28431
|
+
this.wmsEndpoint = null;
|
|
28432
|
+
this.urlChange = new Subject();
|
|
28433
|
+
this.errorMessage = null;
|
|
28434
|
+
}
|
|
28435
|
+
ngOnInit() {
|
|
28436
|
+
this.urlChange.pipe(debounceTime(700)).subscribe(() => this.loadLayers());
|
|
28437
|
+
}
|
|
28438
|
+
async loadLayers() {
|
|
28439
|
+
this.errorMessage = null;
|
|
28440
|
+
try {
|
|
28441
|
+
this.loading = true;
|
|
28442
|
+
if (this.wmsUrl.trim() === '') {
|
|
28443
|
+
this.layers = [];
|
|
28444
|
+
return;
|
|
28445
|
+
}
|
|
28446
|
+
this.wmsEndpoint = await new WmsEndpoint(this.wmsUrl).isReady();
|
|
28447
|
+
this.layers = this.wmsEndpoint.getLayers();
|
|
28448
|
+
}
|
|
28449
|
+
catch (error) {
|
|
28450
|
+
const err = error;
|
|
28451
|
+
this.layers = [];
|
|
28452
|
+
this.errorMessage = 'Error loading layers: ' + err.message;
|
|
28453
|
+
}
|
|
28454
|
+
finally {
|
|
28455
|
+
this.loading = false;
|
|
28456
|
+
this.changeDetectorRef.markForCheck();
|
|
28457
|
+
}
|
|
28458
|
+
}
|
|
28459
|
+
addLayer(layer) {
|
|
28460
|
+
const layerToAdd = {
|
|
28461
|
+
name: layer.name,
|
|
28462
|
+
url: this.wmsUrl.toString(),
|
|
28463
|
+
type: MapContextLayerTypeEnum.WMS,
|
|
28464
|
+
};
|
|
28465
|
+
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
28466
|
+
}
|
|
28467
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28468
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], 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: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28469
|
+
}
|
|
28470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
28471
|
+
type: Component,
|
|
28472
|
+
args: [{ selector: 'gn-ui-add-layer-from-wms', template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n" }]
|
|
28473
|
+
}], ctorParameters: function () { return [{ type: MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
28474
|
+
|
|
28475
|
+
const INVALID_FILE_FORMAT_ERROR_MESSAGE = 'Invalid file format';
|
|
28476
|
+
class AddLayerFromFileComponent {
|
|
28477
|
+
constructor(mapFacade, changeDetectorRef) {
|
|
28478
|
+
this.mapFacade = mapFacade;
|
|
28479
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
28480
|
+
this.errorMessage = null;
|
|
28481
|
+
this.successMessage = null;
|
|
28482
|
+
this.loading = false;
|
|
28483
|
+
this.acceptedMimeType = ['.geojson'];
|
|
28484
|
+
this.maxFileSize = 5000000;
|
|
28485
|
+
}
|
|
28486
|
+
async handleFileChange(file) {
|
|
28487
|
+
if (!file) {
|
|
28488
|
+
this.displayMessage(INVALID_FILE_FORMAT_ERROR_MESSAGE, 'error');
|
|
28489
|
+
return;
|
|
28490
|
+
}
|
|
28491
|
+
if (file.size > this.maxFileSize) {
|
|
28492
|
+
this.displayMessage('File size exceeds the limit of 5MB', 'error');
|
|
28493
|
+
return;
|
|
28494
|
+
}
|
|
28495
|
+
await this.addLayer(file);
|
|
28496
|
+
}
|
|
28497
|
+
async addLayer(file) {
|
|
28498
|
+
this.errorMessage = null;
|
|
28499
|
+
this.loading = true;
|
|
28500
|
+
try {
|
|
28501
|
+
if (!this.isFileFormatValid(file)) {
|
|
28502
|
+
this.displayMessage(INVALID_FILE_FORMAT_ERROR_MESSAGE, 'error');
|
|
28503
|
+
return;
|
|
28504
|
+
}
|
|
28505
|
+
const fileExtension = this.getFileExtension(file);
|
|
28506
|
+
switch (fileExtension) {
|
|
28507
|
+
case 'geojson':
|
|
28508
|
+
await this.addGeoJsonLayer(file);
|
|
28509
|
+
break;
|
|
28510
|
+
default:
|
|
28511
|
+
this.displayMessage(INVALID_FILE_FORMAT_ERROR_MESSAGE, 'error');
|
|
28512
|
+
break;
|
|
28513
|
+
}
|
|
28514
|
+
}
|
|
28515
|
+
catch (error) {
|
|
28516
|
+
const err = error;
|
|
28517
|
+
this.displayMessage('Error loading file: ' + err.message, 'error');
|
|
28518
|
+
}
|
|
28519
|
+
finally {
|
|
28520
|
+
this.loading = false;
|
|
28521
|
+
}
|
|
28522
|
+
}
|
|
28523
|
+
addGeoJsonLayer(file) {
|
|
28524
|
+
return new Promise((resolve, reject) => {
|
|
28525
|
+
try {
|
|
28526
|
+
const reader = new FileReader();
|
|
28527
|
+
reader.onload = () => {
|
|
28528
|
+
const result = reader.result;
|
|
28529
|
+
const title = file.name.split('.').slice(0, -1).join('.');
|
|
28530
|
+
const layerToAdd = {
|
|
28531
|
+
type: 'geojson',
|
|
28532
|
+
data: result,
|
|
28533
|
+
};
|
|
28534
|
+
this.mapFacade.addLayer({ ...layerToAdd, title: title });
|
|
28535
|
+
this.displayMessage('File successfully added to map', 'success');
|
|
28536
|
+
resolve();
|
|
28537
|
+
};
|
|
28538
|
+
reader.onerror = reject;
|
|
28539
|
+
reader.readAsText(file);
|
|
28540
|
+
}
|
|
28541
|
+
catch (error) {
|
|
28542
|
+
reject(error);
|
|
28543
|
+
}
|
|
28544
|
+
});
|
|
28545
|
+
}
|
|
28546
|
+
isFileFormatValid(file) {
|
|
28547
|
+
const fileExtension = this.getFileExtension(file);
|
|
28548
|
+
return this.acceptedMimeType.includes(`.${fileExtension}`);
|
|
28549
|
+
}
|
|
28550
|
+
getFileExtension(file) {
|
|
28551
|
+
return file.name.split('.').pop();
|
|
28552
|
+
}
|
|
28553
|
+
displayMessage(message, type) {
|
|
28554
|
+
if (type === 'success') {
|
|
28555
|
+
this.successMessage = message;
|
|
28556
|
+
}
|
|
28557
|
+
else if (type === 'error') {
|
|
28558
|
+
this.errorMessage = message;
|
|
28559
|
+
}
|
|
28560
|
+
setTimeout(() => {
|
|
28561
|
+
this.successMessage = null;
|
|
28562
|
+
this.errorMessage = null;
|
|
28563
|
+
this.changeDetectorRef.detectChanges();
|
|
28564
|
+
}, 5000);
|
|
28565
|
+
}
|
|
28566
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromFileComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28567
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file", ngImport: i0, template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"flex-grow rounded-md border-2 border-gray-200\">\n <gn-ui-drag-and-drop-file-input\n (fileChange)=\"handleFileChange($event)\"\n [accept]=\"acceptedMimeType.join(',')\"\n [placeholder]=\"'map.addFromFile.placeholder' | translate\"\n class=\"placeholder-grey\"\n ></gn-ui-drag-and-drop-file-input>\n </div>\n </div>\n <p class=\"text-sm text-gray-600\" translate>map.help.addFromFile</p>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"successMessage\" class=\"text-green-500 mt-2\">\n {{ successMessage }}\n</div>\n", styles: [""], 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: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: ["placeholder", "accept"], outputs: ["fileChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28568
|
+
}
|
|
28569
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromFileComponent, decorators: [{
|
|
28570
|
+
type: Component,
|
|
28571
|
+
args: [{ selector: 'gn-ui-add-layer-from-file', template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"flex-grow rounded-md border-2 border-gray-200\">\n <gn-ui-drag-and-drop-file-input\n (fileChange)=\"handleFileChange($event)\"\n [accept]=\"acceptedMimeType.join(',')\"\n [placeholder]=\"'map.addFromFile.placeholder' | translate\"\n class=\"placeholder-grey\"\n ></gn-ui-drag-and-drop-file-input>\n </div>\n </div>\n <p class=\"text-sm text-gray-600\" translate>map.help.addFromFile</p>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"successMessage\" class=\"text-green-500 mt-2\">\n {{ successMessage }}\n</div>\n" }]
|
|
28572
|
+
}], ctorParameters: function () { return [{ type: MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
28573
|
+
|
|
28574
|
+
class AddLayerFromWfsComponent {
|
|
28575
|
+
constructor(mapFacade, changeDetectorRef) {
|
|
28576
|
+
this.mapFacade = mapFacade;
|
|
28577
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
28578
|
+
this.wfsUrl = '';
|
|
28579
|
+
this.loading = false;
|
|
28580
|
+
this.layers = [];
|
|
28581
|
+
this.wfsEndpoint = null;
|
|
28582
|
+
this.urlChange = new Subject();
|
|
28583
|
+
this.errorMessage = null;
|
|
28584
|
+
}
|
|
28585
|
+
ngOnInit() {
|
|
28586
|
+
this.urlChange.pipe(debounceTime(700)).subscribe(() => this.loadLayers());
|
|
28587
|
+
}
|
|
28588
|
+
async loadLayers() {
|
|
28589
|
+
this.errorMessage = null;
|
|
28590
|
+
try {
|
|
28591
|
+
this.loading = true;
|
|
28592
|
+
if (this.wfsUrl.trim() === '') {
|
|
28593
|
+
this.layers = [];
|
|
28594
|
+
return;
|
|
28595
|
+
}
|
|
28596
|
+
this.wfsEndpoint = await new WfsEndpoint(this.wfsUrl).isReady();
|
|
28597
|
+
this.layers = this.wfsEndpoint.getFeatureTypes();
|
|
28598
|
+
console.log(this.layers);
|
|
28599
|
+
}
|
|
28600
|
+
catch (error) {
|
|
28601
|
+
const err = error;
|
|
28602
|
+
this.layers = [];
|
|
28603
|
+
this.errorMessage = 'Error loading layers: ' + err.message;
|
|
28604
|
+
}
|
|
28605
|
+
finally {
|
|
28606
|
+
this.loading = false;
|
|
28607
|
+
this.changeDetectorRef.markForCheck();
|
|
28608
|
+
}
|
|
28609
|
+
}
|
|
28610
|
+
addLayer(layer) {
|
|
28611
|
+
const layerToAdd = {
|
|
28612
|
+
name: layer.name,
|
|
28613
|
+
url: this.wfsUrl.toString(),
|
|
28614
|
+
type: MapContextLayerTypeEnum.WFS,
|
|
28615
|
+
};
|
|
28616
|
+
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
28617
|
+
}
|
|
28618
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28619
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28620
|
+
}
|
|
28621
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
28622
|
+
type: Component,
|
|
28623
|
+
args: [{ selector: 'gn-ui-add-layer-from-wfs', template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n" }]
|
|
28624
|
+
}], ctorParameters: function () { return [{ type: MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
28625
|
+
|
|
28127
28626
|
class LayersPanelComponent {
|
|
28128
28627
|
constructor(mapFacade) {
|
|
28129
28628
|
this.mapFacade = mapFacade;
|
|
@@ -28133,11 +28632,11 @@ class LayersPanelComponent {
|
|
|
28133
28632
|
this.mapFacade.removeLayer(index);
|
|
28134
28633
|
}
|
|
28135
28634
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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
|
|
28635
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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.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$3.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$3.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: 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 }); }
|
|
28137
28636
|
}
|
|
28138
28637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
28139
28638
|
type: Component,
|
|
28140
|
-
args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, 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
|
|
28639
|
+
args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, 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.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" }]
|
|
28141
28640
|
}], ctorParameters: function () { return [{ type: MapFacade }]; } });
|
|
28142
28641
|
|
|
28143
28642
|
class MapEffects {
|
|
@@ -28170,6 +28669,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28170
28669
|
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-context [context]=\"context$ | async\"></gn-ui-map-context>\n" }]
|
|
28171
28670
|
}], ctorParameters: function () { return [{ type: MapFacade }]; } });
|
|
28172
28671
|
|
|
28672
|
+
const GEOCODING_PROVIDER = new InjectionToken('geocoding-provider');
|
|
28673
|
+
class GeocodingService {
|
|
28674
|
+
constructor(provider) {
|
|
28675
|
+
this.provider = provider;
|
|
28676
|
+
}
|
|
28677
|
+
query(text) {
|
|
28678
|
+
let queryObservable;
|
|
28679
|
+
switch (this.provider[0]) {
|
|
28680
|
+
case 'geoadmin':
|
|
28681
|
+
queryObservable = from(queryGeoadmin(text, this.provider[1]));
|
|
28682
|
+
break;
|
|
28683
|
+
case 'geonames':
|
|
28684
|
+
queryObservable = from(queryGeonames(text, this.provider[1]));
|
|
28685
|
+
break;
|
|
28686
|
+
case 'data-gouv-fr':
|
|
28687
|
+
queryObservable = from(queryDataGouvFr(text, this.provider[1]));
|
|
28688
|
+
break;
|
|
28689
|
+
default:
|
|
28690
|
+
return throwError(() => new Error(`Unsupported geocoding provider: ${this.provider[0]}`));
|
|
28691
|
+
}
|
|
28692
|
+
return queryObservable.pipe(catchError((error) => throwError(error)));
|
|
28693
|
+
}
|
|
28694
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, deps: [{ token: GEOCODING_PROVIDER }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28695
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, providedIn: 'root' }); }
|
|
28696
|
+
}
|
|
28697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, decorators: [{
|
|
28698
|
+
type: Injectable,
|
|
28699
|
+
args: [{
|
|
28700
|
+
providedIn: 'root',
|
|
28701
|
+
}]
|
|
28702
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
28703
|
+
type: Inject,
|
|
28704
|
+
args: [GEOCODING_PROVIDER]
|
|
28705
|
+
}] }]; } });
|
|
28706
|
+
|
|
28707
|
+
class GeocodingComponent {
|
|
28708
|
+
constructor(mapManager, geocodingService) {
|
|
28709
|
+
this.mapManager = mapManager;
|
|
28710
|
+
this.geocodingService = geocodingService;
|
|
28711
|
+
this.searchText = '';
|
|
28712
|
+
this.results = [];
|
|
28713
|
+
this.searchTextChanged = new Subject();
|
|
28714
|
+
this.destroy$ = new Subject();
|
|
28715
|
+
this.errorMessage = null;
|
|
28716
|
+
this.searchTextChanged
|
|
28717
|
+
.pipe(debounceTime(300), switchMap$1((searchText) => {
|
|
28718
|
+
return from(this.geocodingService.query(searchText)).pipe(catchError$1((error) => {
|
|
28719
|
+
this.errorMessage =
|
|
28720
|
+
'An error occurred while searching. Please try again.';
|
|
28721
|
+
console.error(error);
|
|
28722
|
+
return [];
|
|
28723
|
+
}));
|
|
28724
|
+
}), takeUntil(this.destroy$))
|
|
28725
|
+
.subscribe((results) => {
|
|
28726
|
+
this.results = results;
|
|
28727
|
+
});
|
|
28728
|
+
}
|
|
28729
|
+
ngOnDestroy() {
|
|
28730
|
+
this.destroy$.next();
|
|
28731
|
+
this.destroy$.complete();
|
|
28732
|
+
}
|
|
28733
|
+
onSearchChange(searchText) {
|
|
28734
|
+
if (!searchText) {
|
|
28735
|
+
this.clearSearch();
|
|
28736
|
+
return;
|
|
28737
|
+
}
|
|
28738
|
+
else {
|
|
28739
|
+
this.searchTextChanged.next(searchText);
|
|
28740
|
+
}
|
|
28741
|
+
}
|
|
28742
|
+
clearSearch() {
|
|
28743
|
+
this.searchText = '';
|
|
28744
|
+
this.results = [];
|
|
28745
|
+
this.errorMessage = null;
|
|
28746
|
+
}
|
|
28747
|
+
zoomToLocation(result) {
|
|
28748
|
+
const map = this.mapManager.map;
|
|
28749
|
+
const view = map.getView();
|
|
28750
|
+
const geometry = result.geom;
|
|
28751
|
+
if (geometry.type === 'Point') {
|
|
28752
|
+
this.zoomToPoint(geometry.coordinates, view);
|
|
28753
|
+
}
|
|
28754
|
+
else if (geometry.type === 'Polygon') {
|
|
28755
|
+
this.zoomToPolygon(geometry.coordinates, view);
|
|
28756
|
+
}
|
|
28757
|
+
else {
|
|
28758
|
+
console.error(`Unsupported geometry type: ${geometry.type}`);
|
|
28759
|
+
}
|
|
28760
|
+
}
|
|
28761
|
+
zoomToPoint(pointCoords, view) {
|
|
28762
|
+
const transformedCoords = fromLonLat(pointCoords);
|
|
28763
|
+
view.setCenter(transformedCoords);
|
|
28764
|
+
view.setZoom(12);
|
|
28765
|
+
}
|
|
28766
|
+
zoomToPolygon(polygonCoords, view) {
|
|
28767
|
+
const transformedCoords = polygonCoords[0].map((coord) => fromLonLat(coord));
|
|
28768
|
+
const polygon = new Polygon([transformedCoords]);
|
|
28769
|
+
view.fit(polygon, {
|
|
28770
|
+
duration: 100,
|
|
28771
|
+
maxZoom: 12,
|
|
28772
|
+
});
|
|
28773
|
+
}
|
|
28774
|
+
onEnterPress() {
|
|
28775
|
+
if (this.results && this.results.length > 0) {
|
|
28776
|
+
this.zoomToLocation(this.results[0]);
|
|
28777
|
+
}
|
|
28778
|
+
}
|
|
28779
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, deps: [{ token: MapManagerService }, { token: GeocodingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28780
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: GeocodingComponent, selector: "gn-ui-geocoding", ngImport: i0, template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n", styles: [""], 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: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28781
|
+
}
|
|
28782
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, decorators: [{
|
|
28783
|
+
type: Component,
|
|
28784
|
+
args: [{ selector: 'gn-ui-geocoding', template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n" }]
|
|
28785
|
+
}], ctorParameters: function () { return [{ type: MapManagerService }, { type: GeocodingService }]; } });
|
|
28786
|
+
|
|
28173
28787
|
class FeatureMapModule {
|
|
28174
28788
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28175
28789
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, declarations: [MapContextComponent,
|
|
@@ -28177,7 +28791,11 @@ class FeatureMapModule {
|
|
|
28177
28791
|
LayersPanelComponent,
|
|
28178
28792
|
AddLayerFromCatalogComponent,
|
|
28179
28793
|
MapContainerComponent,
|
|
28180
|
-
AddLayerRecordPreviewComponent
|
|
28794
|
+
AddLayerRecordPreviewComponent,
|
|
28795
|
+
AddLayerFromWmsComponent,
|
|
28796
|
+
AddLayerFromFileComponent,
|
|
28797
|
+
AddLayerFromWfsComponent,
|
|
28798
|
+
GeocodingComponent], imports: [CommonModule,
|
|
28181
28799
|
UiMapModule,
|
|
28182
28800
|
UiLayoutModule,
|
|
28183
28801
|
MatIconModule,
|
|
@@ -28188,13 +28806,18 @@ class FeatureMapModule {
|
|
|
28188
28806
|
MapInstanceDirective,
|
|
28189
28807
|
LayersPanelComponent,
|
|
28190
28808
|
AddLayerFromCatalogComponent,
|
|
28191
|
-
MapContainerComponent
|
|
28809
|
+
MapContainerComponent,
|
|
28810
|
+
GeocodingComponent] }); }
|
|
28192
28811
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, providers: [
|
|
28193
28812
|
{
|
|
28194
28813
|
provide: FEATURE_MAP_OPTIONS,
|
|
28195
28814
|
useValue: defaultMapOptions,
|
|
28196
28815
|
},
|
|
28197
28816
|
MapFacade,
|
|
28817
|
+
{
|
|
28818
|
+
provide: GEOCODING_PROVIDER,
|
|
28819
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28820
|
+
},
|
|
28198
28821
|
], imports: [CommonModule,
|
|
28199
28822
|
UiMapModule,
|
|
28200
28823
|
UiLayoutModule,
|
|
@@ -28217,6 +28840,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28217
28840
|
AddLayerFromCatalogComponent,
|
|
28218
28841
|
MapContainerComponent,
|
|
28219
28842
|
AddLayerRecordPreviewComponent,
|
|
28843
|
+
AddLayerFromWmsComponent,
|
|
28844
|
+
AddLayerFromFileComponent,
|
|
28845
|
+
AddLayerFromWfsComponent,
|
|
28846
|
+
GeocodingComponent,
|
|
28220
28847
|
],
|
|
28221
28848
|
exports: [
|
|
28222
28849
|
MapContextComponent,
|
|
@@ -28224,6 +28851,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28224
28851
|
LayersPanelComponent,
|
|
28225
28852
|
AddLayerFromCatalogComponent,
|
|
28226
28853
|
MapContainerComponent,
|
|
28854
|
+
GeocodingComponent,
|
|
28227
28855
|
],
|
|
28228
28856
|
imports: [
|
|
28229
28857
|
CommonModule,
|
|
@@ -28244,6 +28872,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28244
28872
|
useValue: defaultMapOptions,
|
|
28245
28873
|
},
|
|
28246
28874
|
MapFacade,
|
|
28875
|
+
{
|
|
28876
|
+
provide: GEOCODING_PROVIDER,
|
|
28877
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28878
|
+
},
|
|
28247
28879
|
],
|
|
28248
28880
|
}]
|
|
28249
28881
|
}] });
|
|
@@ -29605,15 +30237,16 @@ class DataService {
|
|
|
29605
30237
|
// Pour DL toutes les données
|
|
29606
30238
|
return this.getDownloadUrlsFromWfs(wfsLink.url.toString(), wfsLink.name).pipe(map$1((urls) => urls.all), map$1((urls) => Object.keys(urls).map((format) => ({
|
|
29607
30239
|
...wfsLink,
|
|
30240
|
+
type: 'download',
|
|
29608
30241
|
url: new URL(urls[format]),
|
|
29609
|
-
mimeType: getMimeTypeForFormat(
|
|
30242
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
29610
30243
|
}))));
|
|
29611
30244
|
}
|
|
29612
30245
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
29613
30246
|
return ['json', 'geojson'].map((format) => ({
|
|
29614
30247
|
...esriRestLink,
|
|
29615
30248
|
url: new URL(this.getDownloadUrlFromEsriRest(esriRestLink.url.toString(), format)),
|
|
29616
|
-
mimeType: getMimeTypeForFormat(
|
|
30249
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
29617
30250
|
}));
|
|
29618
30251
|
}
|
|
29619
30252
|
readAsGeoJson(link) {
|
|
@@ -30007,12 +30640,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30007
30640
|
}] } });
|
|
30008
30641
|
|
|
30009
30642
|
class MapViewComponent {
|
|
30010
|
-
constructor(mdViewFacade, mapManager, mapUtils, dataService,
|
|
30643
|
+
constructor(mdViewFacade, mapManager, mapUtils, dataService, featureInfo, changeRef, styleService) {
|
|
30011
30644
|
this.mdViewFacade = mdViewFacade;
|
|
30012
30645
|
this.mapManager = mapManager;
|
|
30013
30646
|
this.mapUtils = mapUtils;
|
|
30014
30647
|
this.dataService = dataService;
|
|
30015
|
-
this.proxy = proxy;
|
|
30016
30648
|
this.featureInfo = featureInfo;
|
|
30017
30649
|
this.changeRef = changeRef;
|
|
30018
30650
|
this.styleService = styleService;
|
|
@@ -30047,7 +30679,7 @@ class MapViewComponent {
|
|
|
30047
30679
|
return of([]);
|
|
30048
30680
|
}), finalize(() => (this.loading = false)));
|
|
30049
30681
|
}));
|
|
30050
|
-
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => this.mapUtils.getLayerExtent(layers[0]).pipe(catchError((error) => {
|
|
30682
|
+
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(this.mapUtils.getLayerExtent(layers[0])).pipe(catchError((error) => {
|
|
30051
30683
|
console.warn(error); // FIXME: report this to the user somehow
|
|
30052
30684
|
return of(undefined);
|
|
30053
30685
|
}), map$1((extent) => ({
|
|
@@ -30055,7 +30687,18 @@ class MapViewComponent {
|
|
|
30055
30687
|
view: {
|
|
30056
30688
|
extent,
|
|
30057
30689
|
},
|
|
30058
|
-
})), tap$1(() => this.resetSelection()))))
|
|
30690
|
+
})), tap$1(() => this.resetSelection()))), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
30691
|
+
if (context.view.extent)
|
|
30692
|
+
return context;
|
|
30693
|
+
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
30694
|
+
return {
|
|
30695
|
+
...context,
|
|
30696
|
+
view: {
|
|
30697
|
+
...context.view,
|
|
30698
|
+
extent,
|
|
30699
|
+
},
|
|
30700
|
+
};
|
|
30701
|
+
}));
|
|
30059
30702
|
}
|
|
30060
30703
|
ngOnDestroy() {
|
|
30061
30704
|
this.subscription.unsubscribe();
|
|
@@ -30108,13 +30751,13 @@ class MapViewComponent {
|
|
|
30108
30751
|
selectLinkToDisplay(link) {
|
|
30109
30752
|
this.selectedLinkIndex$.next(link);
|
|
30110
30753
|
}
|
|
30111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token:
|
|
30754
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token: FeatureInfoService }, { token: i0.ChangeDetectorRef }, { token: MapStyleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30112
30755
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30113
30756
|
}
|
|
30114
30757
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
30115
30758
|
type: Component,
|
|
30116
30759
|
args: [{ selector: 'gn-ui-map-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
30117
|
-
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type:
|
|
30760
|
+
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type: FeatureInfoService }, { type: i0.ChangeDetectorRef }, { type: MapStyleService }]; } });
|
|
30118
30761
|
|
|
30119
30762
|
class DataViewComponent {
|
|
30120
30763
|
constructor(mdViewFacade) {
|
|
@@ -30197,7 +30840,7 @@ class OrganisationPreviewComponent {
|
|
|
30197
30840
|
this.clickedOrganisation.emit(this.organisation);
|
|
30198
30841
|
}
|
|
30199
30842
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30200
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organisation: "organisation", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col flex-grow overflow-hidden\">\n <span\n class=\"flex-shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 flex-grow flex-shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"flex-shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30843
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organisation: "organisation", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col flex-grow overflow-hidden\">\n <span\n class=\"flex-shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 flex-grow flex-shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"flex-shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30201
30844
|
}
|
|
30202
30845
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationPreviewComponent, decorators: [{
|
|
30203
30846
|
type: Component,
|
|
@@ -30266,7 +30909,7 @@ class LanguageSwitcherComponent {
|
|
|
30266
30909
|
ngOnInit() {
|
|
30267
30910
|
const languages = this.languagePlaceholder || DEFAULT_LANGUAGES;
|
|
30268
30911
|
this.languageList = languages.map((language) => ({
|
|
30269
|
-
label:
|
|
30912
|
+
label: `${language}`.toUpperCase(),
|
|
30270
30913
|
value: language,
|
|
30271
30914
|
}));
|
|
30272
30915
|
}
|
|
@@ -30281,11 +30924,11 @@ class LanguageSwitcherComponent {
|
|
|
30281
30924
|
this.translate.use(value);
|
|
30282
30925
|
}
|
|
30283
30926
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30284
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }] }); }
|
|
30927
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n [extraBtnClass]=\"'flex justify-items-center text-white !pl-2 !py-1'\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }] }); }
|
|
30285
30928
|
}
|
|
30286
30929
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30287
30930
|
type: Component,
|
|
30288
|
-
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
30931
|
+
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n [extraBtnClass]=\"'flex justify-items-center text-white !pl-2 !py-1'\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
30289
30932
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30290
30933
|
type: Optional
|
|
30291
30934
|
}, {
|
|
@@ -30427,20 +31070,8 @@ class OrganisationsComponent {
|
|
|
30427
31070
|
filterOrganisations(organisations, filterBy) {
|
|
30428
31071
|
if (!filterBy)
|
|
30429
31072
|
return organisations;
|
|
30430
|
-
const
|
|
30431
|
-
|
|
30432
|
-
.replace(/\s(?=.)/g, '.*') //replace whitespaces by "AND" separator
|
|
30433
|
-
.replace(/\s/g, ''), //remove potential whitespaces left
|
|
30434
|
-
'i');
|
|
30435
|
-
return [...organisations].filter((org) => {
|
|
30436
|
-
return this.normalizeString(org.name).match(filterRegex);
|
|
30437
|
-
});
|
|
30438
|
-
}
|
|
30439
|
-
normalizeString(str) {
|
|
30440
|
-
return str
|
|
30441
|
-
.normalize('NFD')
|
|
30442
|
-
.replace(/[\u0300-\u036f]/g, '')
|
|
30443
|
-
.toLowerCase();
|
|
31073
|
+
const filter = createFuzzyFilter(filterBy);
|
|
31074
|
+
return organisations.filter((org) => filter(org.name));
|
|
30444
31075
|
}
|
|
30445
31076
|
sortOrganisations(organisations, sortBy) {
|
|
30446
31077
|
let order;
|
|
@@ -31296,11 +31927,11 @@ class RecordFormComponent {
|
|
|
31296
31927
|
return field.config.model;
|
|
31297
31928
|
}
|
|
31298
31929
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31299
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31930
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\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: "ngmodule", type: UiInputsModule }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["config", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31300
31931
|
}
|
|
31301
31932
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31302
31933
|
type: Component,
|
|
31303
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
31934
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
31304
31935
|
}], ctorParameters: function () { return [{ type: EditorService }]; } });
|
|
31305
31936
|
|
|
31306
31937
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -31668,5 +32299,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31668
32299
|
* Generated bundle index. Do not edit.
|
|
31669
32300
|
*/
|
|
31670
32301
|
|
|
31671
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AutocompleteComponent, AvatarComponent, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, 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_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, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_RESOURCES_VALUES, EditorService, EmbeddedTranslateLoader, 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, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, Gn4MetadataMapper, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, 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,
|
|
32302
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, 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, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditorService, ElasticsearchService, EmbeddedTranslateLoader, 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, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, 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, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordTableComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, 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, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, 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, TranslateTestingModule, 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, dragPanCondition, dropEmptyTranslations, 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, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
31672
32303
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|