geonetwork-ui 2.6.0-dev.b306f1194 → 2.6.0-dev.d216c4dea
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/base.converter.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
- package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +5 -1
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +5 -1
- package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
- package/esm2022/libs/feature/record/src/index.mjs +1 -2
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -1
- package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
- package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
- package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
- package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -15
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
- package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
- package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
- package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
- package/esm2022/libs/ui/map/src/index.mjs +2 -1
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
- package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +13 -6
- package/esm2022/translations/de.json +27 -4
- package/esm2022/translations/en.json +28 -5
- package/esm2022/translations/es.json +27 -4
- package/esm2022/translations/fr.json +29 -6
- package/esm2022/translations/it.json +27 -4
- package/esm2022/translations/nl.json +27 -4
- package/esm2022/translations/pt.json +27 -4
- package/fesm2022/geonetwork-ui.mjs +969 -478
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +5 -2
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +0 -1
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
- package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
- package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +0 -1
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
- package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/map/src/index.d.ts +1 -0
- package/libs/ui/map/src/index.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.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/fixtures.d.ts.map +1 -1
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
- package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
- package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +5 -2
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
- package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -0
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -0
- package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
- package/src/libs/feature/record/src/index.ts +0 -1
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -0
- package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
- package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
- package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
- package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -8
- package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
- package/src/libs/ui/inputs/src/index.ts +0 -1
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -5
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
- package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
- package/src/libs/ui/map/src/index.ts +1 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
- package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +7 -8
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
- package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
- package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
- package/src/libs/util/shared/src/lib/links/link-utils.ts +30 -12
- package/tailwind.base.css +18 -13
- package/translations/de.json +27 -4
- package/translations/en.json +28 -5
- package/translations/es.json +27 -4
- package/translations/fr.json +29 -6
- package/translations/it.json +27 -4
- package/translations/nl.json +27 -4
- package/translations/pt.json +27 -4
- package/translations/sk.json +27 -4
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
- package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
- package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
- package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
- package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
- /package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css → ui/elements/src/lib/service-capabilities/service-capabilities.component.css} +0 -0
|
@@ -7,17 +7,17 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef,
|
|
10
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef, ViewEncapsulation, Pipe, inject } from '@angular/core';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpEventType, HttpClientXsrfModule } from '@angular/common/http';
|
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
|
14
14
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
15
15
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
|
-
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, first as first$1, share, pairwise,
|
|
17
|
+
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, delay, first as first$1, share, pairwise, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
18
|
import * as i1$2 from '@angular/common';
|
|
19
|
-
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault,
|
|
20
|
-
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1,
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf, NgClass, NgTemplateOutlet, NgOptimizedImage, DatePipe } from '@angular/common';
|
|
20
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, timer, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, startWith as startWith$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
|
|
21
21
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
22
22
|
import chroma from 'chroma-js';
|
|
23
23
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
@@ -41,7 +41,7 @@ import { TagInputModule } from 'ngx-chips';
|
|
|
41
41
|
import * as i1$5 from '@angular/material/progress-spinner';
|
|
42
42
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
43
43
|
import tippy from 'tippy.js';
|
|
44
|
-
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline,
|
|
44
|
+
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matSwipeOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline } from '@ng-icons/material-icons/outline';
|
|
45
45
|
import * as i2 from '@angular/material/core';
|
|
46
46
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
47
47
|
import * as i1$7 from '@angular/material/checkbox';
|
|
@@ -58,11 +58,17 @@ import * as i1$b from '@angular/material/dialog';
|
|
|
58
58
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
59
59
|
import * as i2$3 from '@angular/material/tabs';
|
|
60
60
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
61
|
-
import * as i1$
|
|
61
|
+
import * as i1$d from '@angular/router';
|
|
62
62
|
import { RouterLink, RouterModule, RouteReuseStrategy } from '@angular/router';
|
|
63
63
|
import { marked } from 'marked';
|
|
64
64
|
import Duration from 'duration-relativetimeformat';
|
|
65
65
|
import * as basicLightbox from 'basiclightbox';
|
|
66
|
+
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
67
|
+
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
68
|
+
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
69
|
+
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
70
|
+
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
71
|
+
import { Polygon } from 'ol/geom';
|
|
66
72
|
import { formatDistance } from 'date-fns/formatDistance';
|
|
67
73
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
68
74
|
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
@@ -72,11 +78,6 @@ import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
|
72
78
|
import { valid as valid$1 } from 'geojson-validation';
|
|
73
79
|
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
74
80
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
75
|
-
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
76
|
-
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
77
|
-
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
78
|
-
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
79
|
-
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
80
81
|
import { extend } from 'ol/extent';
|
|
81
82
|
import * as TOML from '@ltd/j-toml';
|
|
82
83
|
import { Style, Fill, Stroke, Circle } from 'ol/style';
|
|
@@ -96,9 +97,8 @@ import * as i4 from '@angular/material/paginator';
|
|
|
96
97
|
import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
97
98
|
import { LetDirective } from '@ngrx/component';
|
|
98
99
|
import axios from 'axios';
|
|
99
|
-
import * as i1$
|
|
100
|
+
import * as i1$e from '@angular/platform-browser';
|
|
100
101
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
101
|
-
import { Polygon } from 'ol/geom';
|
|
102
102
|
import * as i4$1 from '@angular/material/radio';
|
|
103
103
|
import { MatRadioModule } from '@angular/material/radio';
|
|
104
104
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -1351,8 +1351,8 @@ function extractServiceOnlineResources() {
|
|
|
1351
1351
|
else {
|
|
1352
1352
|
return {
|
|
1353
1353
|
type: 'endpoint',
|
|
1354
|
-
|
|
1355
|
-
protocol,
|
|
1354
|
+
url: url,
|
|
1355
|
+
accessServiceProtocol: protocol,
|
|
1356
1356
|
...(description && { description }),
|
|
1357
1357
|
translations,
|
|
1358
1358
|
};
|
|
@@ -1851,7 +1851,7 @@ function writeLineage$1(record, rootEl) {
|
|
|
1851
1851
|
pipe(findNestedChildOrCreate('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage', 'gmd:statement'), writeLocalizedCharacterString(record.lineage, record.translations?.lineage, record.defaultLanguage))(rootEl);
|
|
1852
1852
|
}
|
|
1853
1853
|
function getServiceEndpointProtocol(endpoint) {
|
|
1854
|
-
switch (endpoint.
|
|
1854
|
+
switch (endpoint.accessServiceProtocol.toLowerCase()) {
|
|
1855
1855
|
case 'wfs':
|
|
1856
1856
|
return 'OGC:WFS';
|
|
1857
1857
|
case 'wms':
|
|
@@ -1859,13 +1859,13 @@ function getServiceEndpointProtocol(endpoint) {
|
|
|
1859
1859
|
case 'wps':
|
|
1860
1860
|
return 'OGC:WPS';
|
|
1861
1861
|
default:
|
|
1862
|
-
return endpoint.
|
|
1862
|
+
return endpoint.accessServiceProtocol;
|
|
1863
1863
|
}
|
|
1864
1864
|
}
|
|
1865
1865
|
function createOnlineResource(onlineResource) {
|
|
1866
1866
|
let linkageUrl, functionCode, protocol;
|
|
1867
1867
|
if (onlineResource.type === 'endpoint') {
|
|
1868
|
-
linkageUrl = onlineResource.
|
|
1868
|
+
linkageUrl = onlineResource.url.toString();
|
|
1869
1869
|
protocol = getServiceEndpointProtocol(onlineResource);
|
|
1870
1870
|
functionCode = 'download';
|
|
1871
1871
|
}
|
|
@@ -18664,7 +18664,6 @@ var de = {
|
|
|
18664
18664
|
"datahub.news.contact.title": "Ein spezielles Bedürfnis?",
|
|
18665
18665
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
18666
18666
|
"datahub.news.figures": "Indikatoren",
|
|
18667
|
-
"datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
|
|
18668
18667
|
"datahub.search.back": "Zurück",
|
|
18669
18668
|
"datahub.search.filter.all": "Alle",
|
|
18670
18669
|
"datahub.search.filter.generatedByAPI": "Generiert durch eine API",
|
|
@@ -18674,6 +18673,7 @@ var de = {
|
|
|
18674
18673
|
"dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
|
|
18675
18674
|
"dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
|
|
18676
18675
|
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
18676
|
+
"dataset.error.restrictedAccess": "",
|
|
18677
18677
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
18678
18678
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
18679
18679
|
"domain.contact.role.author": "",
|
|
@@ -18834,6 +18834,7 @@ var de = {
|
|
|
18834
18834
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18835
18835
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18836
18836
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18837
|
+
"editor.record.lock.format": "",
|
|
18837
18838
|
"editor.record.lock.reason": "",
|
|
18838
18839
|
"editor.record.onlineResource.protocol.other": "",
|
|
18839
18840
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -18893,7 +18894,6 @@ var de = {
|
|
|
18893
18894
|
"input.image.dropFileLabel": "",
|
|
18894
18895
|
"input.image.selectFileLabel": "",
|
|
18895
18896
|
"input.image.uploadErrorLabel": "",
|
|
18896
|
-
"input.image.uploadErrorRetry": "",
|
|
18897
18897
|
"input.image.uploadProgressCancel": "",
|
|
18898
18898
|
"input.image.uploadProgressLabel": "",
|
|
18899
18899
|
"language.ca": "Katalanisch",
|
|
@@ -18933,6 +18933,7 @@ var de = {
|
|
|
18933
18933
|
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
18934
18934
|
"multiselect.filter.placeholder": "Suche",
|
|
18935
18935
|
"nav.back": "Zurück",
|
|
18936
|
+
"navbar.mobile.menuTitle": "Schnellzugriff",
|
|
18936
18937
|
next: next$6,
|
|
18937
18938
|
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
18938
18939
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
@@ -18959,6 +18960,7 @@ var de = {
|
|
|
18959
18960
|
"record.card.metadata.contact": "",
|
|
18960
18961
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
18961
18962
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
18963
|
+
"record.kind.data": "",
|
|
18962
18964
|
"record.kind.dataset": "",
|
|
18963
18965
|
"record.kind.reuse": "",
|
|
18964
18966
|
"record.kind.service": "",
|
|
@@ -18995,6 +18997,7 @@ var de = {
|
|
|
18995
18997
|
"record.metadata.api.form.zoneTitle": "",
|
|
18996
18998
|
"record.metadata.api.form.zoneTooltip": "",
|
|
18997
18999
|
"record.metadata.api.gpfdl": "",
|
|
19000
|
+
"record.metadata.capabilities": "",
|
|
18998
19001
|
"record.metadata.catalog": "Katalog",
|
|
18999
19002
|
"record.metadata.contact": "Kontakt",
|
|
19000
19003
|
"record.metadata.creation": "Erstellungsdatum",
|
|
@@ -19031,13 +19034,12 @@ var de = {
|
|
|
19031
19034
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19032
19035
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19033
19036
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
19034
|
-
"record.metadata.related.contents": "
|
|
19037
|
+
"record.metadata.related.contents": "",
|
|
19035
19038
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19036
19039
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19037
19040
|
"record.metadata.status": "Status",
|
|
19038
19041
|
"record.metadata.status.notPublished": "",
|
|
19039
19042
|
"record.metadata.status.published": "",
|
|
19040
|
-
"record.metadata.technical": "Technische Informationen",
|
|
19041
19043
|
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
19042
19044
|
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
19043
19045
|
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
@@ -19074,6 +19076,7 @@ var de = {
|
|
|
19074
19076
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19075
19077
|
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
19076
19078
|
"results.sortBy.relevancy": "Relevanz",
|
|
19079
|
+
"reuse.metadata.access": "",
|
|
19077
19080
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
19078
19081
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
19079
19082
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -19123,6 +19126,26 @@ var de = {
|
|
|
19123
19126
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
19124
19127
|
"search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
|
|
19125
19128
|
"search.filters.user": "Editor",
|
|
19129
|
+
"service.metadata.capabilities": "",
|
|
19130
|
+
"service.metadata.capabilities.abstract": "",
|
|
19131
|
+
"service.metadata.capabilities.attribution": "",
|
|
19132
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
19133
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
19134
|
+
"service.metadata.capabilities.geometryName": "",
|
|
19135
|
+
"service.metadata.capabilities.geometryType": "",
|
|
19136
|
+
"service.metadata.capabilities.keywords": "",
|
|
19137
|
+
"service.metadata.capabilities.name": "",
|
|
19138
|
+
"service.metadata.capabilities.objectCount": "",
|
|
19139
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
19140
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
19141
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
19142
|
+
"service.metadata.capabilities.title": "",
|
|
19143
|
+
"service.metadata.filter": "",
|
|
19144
|
+
"service.metadata.filter.noLayers": "",
|
|
19145
|
+
"service.metadata.other": "",
|
|
19146
|
+
"service.metadata.question": "",
|
|
19147
|
+
"service.metadata.search": "",
|
|
19148
|
+
"service.metadata.spatialExtent": "",
|
|
19126
19149
|
"share.tab.permalink": "Teilen",
|
|
19127
19150
|
"share.tab.webComponent": "Integrieren",
|
|
19128
19151
|
"table.loading.data": "Daten werden geladen...",
|
|
@@ -19217,7 +19240,6 @@ var en = {
|
|
|
19217
19240
|
"datahub.news.contact.title": "A specific need?",
|
|
19218
19241
|
"datahub.news.feed": "News feed",
|
|
19219
19242
|
"datahub.news.figures": "Indicators",
|
|
19220
|
-
"datahub.record.addToFavorites": "Add to favorites",
|
|
19221
19243
|
"datahub.search.back": "Back",
|
|
19222
19244
|
"datahub.search.filter.all": "All",
|
|
19223
19245
|
"datahub.search.filter.generatedByAPI": "Generated by an API",
|
|
@@ -19227,6 +19249,7 @@ var en = {
|
|
|
19227
19249
|
"dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
|
|
19228
19250
|
"dataset.error.network": "The data could not be loaded because of a network error or CORS limitations: \"{ info }\"",
|
|
19229
19251
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
19252
|
+
"dataset.error.restrictedAccess": "Access to this resource is restricted",
|
|
19230
19253
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
19231
19254
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
19232
19255
|
"domain.contact.role.author": "Author",
|
|
@@ -19387,6 +19410,7 @@ var en = {
|
|
|
19387
19410
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19388
19411
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19389
19412
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19413
|
+
"editor.record.lock.format": "Record with the format 'service' or 'reuse' are not editable",
|
|
19390
19414
|
"editor.record.lock.reason": "You are not an editor of the allowed groups",
|
|
19391
19415
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19392
19416
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
@@ -19446,7 +19470,6 @@ var en = {
|
|
|
19446
19470
|
"input.image.dropFileLabel": "or drop it here",
|
|
19447
19471
|
"input.image.selectFileLabel": "Select an image",
|
|
19448
19472
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19449
|
-
"input.image.uploadErrorRetry": "Retry",
|
|
19450
19473
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19451
19474
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19452
19475
|
"language.ca": "Catalan",
|
|
@@ -19486,6 +19509,7 @@ var en = {
|
|
|
19486
19509
|
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
19487
19510
|
"multiselect.filter.placeholder": "Search",
|
|
19488
19511
|
"nav.back": "Back",
|
|
19512
|
+
"navbar.mobile.menuTitle": "Quick access",
|
|
19489
19513
|
next: next$5,
|
|
19490
19514
|
"ogc.unreachable.unknown": "The service could not be reached",
|
|
19491
19515
|
"organisation.filter.placeholder": "Filter results",
|
|
@@ -19512,7 +19536,8 @@ var en = {
|
|
|
19512
19536
|
"record.card.metadata.contact": "Metadata Contact",
|
|
19513
19537
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19514
19538
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19515
|
-
"record.kind.
|
|
19539
|
+
"record.kind.data": "Data",
|
|
19540
|
+
"record.kind.dataset": "Dataset",
|
|
19516
19541
|
"record.kind.reuse": "Reuse",
|
|
19517
19542
|
"record.kind.service": "Service",
|
|
19518
19543
|
"record.metadata.about": "Description",
|
|
@@ -19548,6 +19573,7 @@ var en = {
|
|
|
19548
19573
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
19549
19574
|
"record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
|
|
19550
19575
|
"record.metadata.api.gpfdl": "Data download",
|
|
19576
|
+
"record.metadata.capabilities": "Service capabilities",
|
|
19551
19577
|
"record.metadata.catalog": "Catalog",
|
|
19552
19578
|
"record.metadata.contact": "Contact",
|
|
19553
19579
|
"record.metadata.creation": "Date of creation",
|
|
@@ -19584,13 +19610,12 @@ var en = {
|
|
|
19584
19610
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19585
19611
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19586
19612
|
"record.metadata.related": "Related datasets",
|
|
19587
|
-
"record.metadata.related.contents": "Related
|
|
19613
|
+
"record.metadata.related.contents": "Related content",
|
|
19588
19614
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19589
19615
|
"record.metadata.sheet": "Original metadata",
|
|
19590
19616
|
"record.metadata.status": "Status",
|
|
19591
19617
|
"record.metadata.status.notPublished": "Not published",
|
|
19592
19618
|
"record.metadata.status.published": "Published",
|
|
19593
|
-
"record.metadata.technical": "Technical information",
|
|
19594
19619
|
"record.metadata.temporalExtent": "Temporal extent",
|
|
19595
19620
|
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
19596
19621
|
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
@@ -19627,6 +19652,7 @@ var en = {
|
|
|
19627
19652
|
"results.sortBy.popularity": "Popularity",
|
|
19628
19653
|
"results.sortBy.qualityScore": "Quality score",
|
|
19629
19654
|
"results.sortBy.relevancy": "Relevancy",
|
|
19655
|
+
"reuse.metadata.access": "Access the reuse",
|
|
19630
19656
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
19631
19657
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
19632
19658
|
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
@@ -19676,6 +19702,26 @@ var en = {
|
|
|
19676
19702
|
"search.filters.useSpatialFilter": "Show datasets in the area of interest first",
|
|
19677
19703
|
"search.filters.useSpatialFilterHelp": "When this is enabled, datasets situated in the catalog's area of interest are shown first; records outside of this area will not show up.",
|
|
19678
19704
|
"search.filters.user": "Editor",
|
|
19705
|
+
"service.metadata.capabilities": "Technical information",
|
|
19706
|
+
"service.metadata.capabilities.abstract": "Abstract",
|
|
19707
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
19708
|
+
"service.metadata.capabilities.availableCrs": "Available CRS",
|
|
19709
|
+
"service.metadata.capabilities.defaultCrs": "Default CRS",
|
|
19710
|
+
"service.metadata.capabilities.geometryName": "Geometry name",
|
|
19711
|
+
"service.metadata.capabilities.geometryType": "Geometry type",
|
|
19712
|
+
"service.metadata.capabilities.keywords": "Keywords",
|
|
19713
|
+
"service.metadata.capabilities.name": "Name",
|
|
19714
|
+
"service.metadata.capabilities.objectCount": "Object count",
|
|
19715
|
+
"service.metadata.capabilities.otherCrs": "Other CRS",
|
|
19716
|
+
"service.metadata.capabilities.outputFormats": "Output formats",
|
|
19717
|
+
"service.metadata.capabilities.resourceLinks": "Resource links",
|
|
19718
|
+
"service.metadata.capabilities.title": "Title",
|
|
19719
|
+
"service.metadata.filter": "Layers will be filtered by title and abstract",
|
|
19720
|
+
"service.metadata.filter.noLayers": "No layer matches your search",
|
|
19721
|
+
"service.metadata.other": "Other information",
|
|
19722
|
+
"service.metadata.question": "Ask a question",
|
|
19723
|
+
"service.metadata.search": "Search through the layer list",
|
|
19724
|
+
"service.metadata.spatialExtent": "Spatial extent",
|
|
19679
19725
|
"share.tab.permalink": "Share",
|
|
19680
19726
|
"share.tab.webComponent": "Integrate",
|
|
19681
19727
|
"table.loading.data": "Loading data...",
|
|
@@ -19770,7 +19816,6 @@ var es = {
|
|
|
19770
19816
|
"datahub.news.contact.title": "",
|
|
19771
19817
|
"datahub.news.feed": "",
|
|
19772
19818
|
"datahub.news.figures": "",
|
|
19773
|
-
"datahub.record.addToFavorites": "",
|
|
19774
19819
|
"datahub.search.back": "",
|
|
19775
19820
|
"datahub.search.filter.all": "",
|
|
19776
19821
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -19780,6 +19825,7 @@ var es = {
|
|
|
19780
19825
|
"dataset.error.http": "",
|
|
19781
19826
|
"dataset.error.network": "",
|
|
19782
19827
|
"dataset.error.parse": "",
|
|
19828
|
+
"dataset.error.restrictedAccess": "",
|
|
19783
19829
|
"dataset.error.unknown": "",
|
|
19784
19830
|
"dataset.error.unsupportedType": "",
|
|
19785
19831
|
"domain.contact.role.author": "",
|
|
@@ -19940,6 +19986,7 @@ var es = {
|
|
|
19940
19986
|
"editor.record.loadError.body": "",
|
|
19941
19987
|
"editor.record.loadError.closeMessage": "",
|
|
19942
19988
|
"editor.record.loadError.title": "",
|
|
19989
|
+
"editor.record.lock.format": "",
|
|
19943
19990
|
"editor.record.lock.reason": "",
|
|
19944
19991
|
"editor.record.onlineResource.protocol.other": "",
|
|
19945
19992
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -19999,7 +20046,6 @@ var es = {
|
|
|
19999
20046
|
"input.image.dropFileLabel": "",
|
|
20000
20047
|
"input.image.selectFileLabel": "",
|
|
20001
20048
|
"input.image.uploadErrorLabel": "",
|
|
20002
|
-
"input.image.uploadErrorRetry": "",
|
|
20003
20049
|
"input.image.uploadProgressCancel": "",
|
|
20004
20050
|
"input.image.uploadProgressLabel": "",
|
|
20005
20051
|
"language.ca": "Catalán",
|
|
@@ -20039,6 +20085,7 @@ var es = {
|
|
|
20039
20085
|
"map.wms.urlInput.hint": "",
|
|
20040
20086
|
"multiselect.filter.placeholder": "",
|
|
20041
20087
|
"nav.back": "",
|
|
20088
|
+
"navbar.mobile.menuTitle": "Acceso rápido",
|
|
20042
20089
|
next: next$4,
|
|
20043
20090
|
"ogc.unreachable.unknown": "",
|
|
20044
20091
|
"organisation.filter.placeholder": "",
|
|
@@ -20065,6 +20112,7 @@ var es = {
|
|
|
20065
20112
|
"record.card.metadata.contact": "",
|
|
20066
20113
|
"record.externalViewer.open": "",
|
|
20067
20114
|
"record.feature.limit": "",
|
|
20115
|
+
"record.kind.data": "",
|
|
20068
20116
|
"record.kind.dataset": "",
|
|
20069
20117
|
"record.kind.reuse": "",
|
|
20070
20118
|
"record.kind.service": "",
|
|
@@ -20101,6 +20149,7 @@ var es = {
|
|
|
20101
20149
|
"record.metadata.api.form.zoneTitle": "",
|
|
20102
20150
|
"record.metadata.api.form.zoneTooltip": "",
|
|
20103
20151
|
"record.metadata.api.gpfdl": "",
|
|
20152
|
+
"record.metadata.capabilities": "",
|
|
20104
20153
|
"record.metadata.catalog": "",
|
|
20105
20154
|
"record.metadata.contact": "",
|
|
20106
20155
|
"record.metadata.creation": "",
|
|
@@ -20137,13 +20186,12 @@ var es = {
|
|
|
20137
20186
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20138
20187
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20139
20188
|
"record.metadata.related": "",
|
|
20140
|
-
"record.metadata.related.contents": "
|
|
20189
|
+
"record.metadata.related.contents": "",
|
|
20141
20190
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20142
20191
|
"record.metadata.sheet": "",
|
|
20143
20192
|
"record.metadata.status": "",
|
|
20144
20193
|
"record.metadata.status.notPublished": "",
|
|
20145
20194
|
"record.metadata.status.published": "",
|
|
20146
|
-
"record.metadata.technical": "",
|
|
20147
20195
|
"record.metadata.temporalExtent": "",
|
|
20148
20196
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
20149
20197
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -20180,6 +20228,7 @@ var es = {
|
|
|
20180
20228
|
"results.sortBy.popularity": "",
|
|
20181
20229
|
"results.sortBy.qualityScore": "",
|
|
20182
20230
|
"results.sortBy.relevancy": "",
|
|
20231
|
+
"reuse.metadata.access": "",
|
|
20183
20232
|
"search.autocomplete.error": "",
|
|
20184
20233
|
"search.error.couldNotReachApi": "",
|
|
20185
20234
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -20229,6 +20278,26 @@ var es = {
|
|
|
20229
20278
|
"search.filters.useSpatialFilter": "",
|
|
20230
20279
|
"search.filters.useSpatialFilterHelp": "",
|
|
20231
20280
|
"search.filters.user": "",
|
|
20281
|
+
"service.metadata.capabilities": "",
|
|
20282
|
+
"service.metadata.capabilities.abstract": "",
|
|
20283
|
+
"service.metadata.capabilities.attribution": "",
|
|
20284
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
20285
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
20286
|
+
"service.metadata.capabilities.geometryName": "",
|
|
20287
|
+
"service.metadata.capabilities.geometryType": "",
|
|
20288
|
+
"service.metadata.capabilities.keywords": "",
|
|
20289
|
+
"service.metadata.capabilities.name": "",
|
|
20290
|
+
"service.metadata.capabilities.objectCount": "",
|
|
20291
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
20292
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
20293
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
20294
|
+
"service.metadata.capabilities.title": "",
|
|
20295
|
+
"service.metadata.filter": "",
|
|
20296
|
+
"service.metadata.filter.noLayers": "",
|
|
20297
|
+
"service.metadata.other": "",
|
|
20298
|
+
"service.metadata.question": "",
|
|
20299
|
+
"service.metadata.search": "",
|
|
20300
|
+
"service.metadata.spatialExtent": "",
|
|
20232
20301
|
"share.tab.permalink": "",
|
|
20233
20302
|
"share.tab.webComponent": "",
|
|
20234
20303
|
"table.loading.data": "",
|
|
@@ -20323,7 +20392,6 @@ var fr = {
|
|
|
20323
20392
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
20324
20393
|
"datahub.news.feed": "Fil d'activité",
|
|
20325
20394
|
"datahub.news.figures": "Quelques chiffres",
|
|
20326
|
-
"datahub.record.addToFavorites": "Ajouter aux favoris",
|
|
20327
20395
|
"datahub.search.back": "Retour",
|
|
20328
20396
|
"datahub.search.filter.all": "Tous",
|
|
20329
20397
|
"datahub.search.filter.generatedByAPI": "généré par une API",
|
|
@@ -20333,6 +20401,7 @@ var fr = {
|
|
|
20333
20401
|
"dataset.error.http": "Le chargement des données a échoué en raison d'une erreur HTTP: \"{ info }\"",
|
|
20334
20402
|
"dataset.error.network": "Le chargement des données a échoué en raison d'une erreur réseau ou de limitations CORS: \"{ info }\"",
|
|
20335
20403
|
"dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
|
|
20404
|
+
"dataset.error.restrictedAccess": "L’accès à cette ressource est restreint",
|
|
20336
20405
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
20337
20406
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
20338
20407
|
"domain.contact.role.author": "Auteur",
|
|
@@ -20493,6 +20562,7 @@ var fr = {
|
|
|
20493
20562
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20494
20563
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20495
20564
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20565
|
+
"editor.record.lock.format": "Les jeux de données de type 'service' et 'reuse' ne sont pas éditables",
|
|
20496
20566
|
"editor.record.lock.reason": "Vous n'êtes pas éditeur d'un des groupes autorisés.",
|
|
20497
20567
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20498
20568
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
@@ -20552,7 +20622,6 @@ var fr = {
|
|
|
20552
20622
|
"input.image.dropFileLabel": "ou glissez-la ici",
|
|
20553
20623
|
"input.image.selectFileLabel": "Sélectionnez une image",
|
|
20554
20624
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20555
|
-
"input.image.uploadErrorRetry": "Réessayer",
|
|
20556
20625
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20557
20626
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20558
20627
|
"language.ca": "Catalan",
|
|
@@ -20592,6 +20661,7 @@ var fr = {
|
|
|
20592
20661
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
20593
20662
|
"multiselect.filter.placeholder": "Rechercher",
|
|
20594
20663
|
"nav.back": "Retour",
|
|
20664
|
+
"navbar.mobile.menuTitle": "Navigation rapide",
|
|
20595
20665
|
next: next$3,
|
|
20596
20666
|
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
20597
20667
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
@@ -20618,10 +20688,11 @@ var fr = {
|
|
|
20618
20688
|
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20619
20689
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20620
20690
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20691
|
+
"record.kind.data": "Donnée",
|
|
20621
20692
|
"record.kind.dataset": "Donnée",
|
|
20622
20693
|
"record.kind.reuse": "Réutilisation",
|
|
20623
20694
|
"record.kind.service": "Service",
|
|
20624
|
-
"record.metadata.about": "
|
|
20695
|
+
"record.metadata.about": "A propos",
|
|
20625
20696
|
"record.metadata.api": "API",
|
|
20626
20697
|
"record.metadata.api.form.closeButton": "Fermer",
|
|
20627
20698
|
"record.metadata.api.form.closeForm": "Fermer le panneau de personnalisation",
|
|
@@ -20654,6 +20725,7 @@ var fr = {
|
|
|
20654
20725
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
20655
20726
|
"record.metadata.api.form.zoneTooltip": "Menu déroulant pour sélectionner une zone géographique",
|
|
20656
20727
|
"record.metadata.api.gpfdl": "Téléchargement",
|
|
20728
|
+
"record.metadata.capabilities": "Capacités du service",
|
|
20657
20729
|
"record.metadata.catalog": "Catalogue",
|
|
20658
20730
|
"record.metadata.contact": "Contact",
|
|
20659
20731
|
"record.metadata.creation": "Date de création",
|
|
@@ -20663,7 +20735,7 @@ var fr = {
|
|
|
20663
20735
|
"record.metadata.keywords": "Mots-clés",
|
|
20664
20736
|
"record.metadata.languages": "Langues",
|
|
20665
20737
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20666
|
-
"record.metadata.links": "
|
|
20738
|
+
"record.metadata.links": "Ressources & liens",
|
|
20667
20739
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20668
20740
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
20669
20741
|
"record.metadata.owner": "Catalogue d'origine",
|
|
@@ -20690,13 +20762,12 @@ var fr = {
|
|
|
20690
20762
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20691
20763
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20692
20764
|
"record.metadata.related": "Voir aussi",
|
|
20693
|
-
"record.metadata.related.contents": "
|
|
20765
|
+
"record.metadata.related.contents": "Contenu associé",
|
|
20694
20766
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20695
20767
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20696
20768
|
"record.metadata.status": "Statut",
|
|
20697
20769
|
"record.metadata.status.notPublished": "Non publié",
|
|
20698
20770
|
"record.metadata.status.published": "Publié",
|
|
20699
|
-
"record.metadata.technical": "Informations techniques",
|
|
20700
20771
|
"record.metadata.temporalExtent": "Étendue temporelle",
|
|
20701
20772
|
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
20702
20773
|
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
@@ -20733,6 +20804,7 @@ var fr = {
|
|
|
20733
20804
|
"results.sortBy.popularity": "Popularité",
|
|
20734
20805
|
"results.sortBy.qualityScore": "Indicateur de qualité",
|
|
20735
20806
|
"results.sortBy.relevancy": "Pertinence",
|
|
20807
|
+
"reuse.metadata.access": "Accéder à la réutilisation",
|
|
20736
20808
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
20737
20809
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
20738
20810
|
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
@@ -20782,6 +20854,26 @@ var fr = {
|
|
|
20782
20854
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
20783
20855
|
"search.filters.useSpatialFilterHelp": "Si cette option est activée, les jeux de données portant sur la zone d'intérêt du catalogue seront montrés en premier; les jeux de données situés en dehors de cette zone n'apparaîtront pas dans les résultats.",
|
|
20784
20856
|
"search.filters.user": "Éditeur",
|
|
20857
|
+
"service.metadata.capabilities": "Informations techniques",
|
|
20858
|
+
"service.metadata.capabilities.abstract": "Description",
|
|
20859
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
20860
|
+
"service.metadata.capabilities.availableCrs": "CRS disponibles",
|
|
20861
|
+
"service.metadata.capabilities.defaultCrs": "CRS par défaut",
|
|
20862
|
+
"service.metadata.capabilities.geometryName": "Nom de la géométrie",
|
|
20863
|
+
"service.metadata.capabilities.geometryType": "Type de géométrie",
|
|
20864
|
+
"service.metadata.capabilities.keywords": "Mots-clés",
|
|
20865
|
+
"service.metadata.capabilities.name": "Nom",
|
|
20866
|
+
"service.metadata.capabilities.objectCount": "Nombre d'objets",
|
|
20867
|
+
"service.metadata.capabilities.otherCrs": "Autres CRS",
|
|
20868
|
+
"service.metadata.capabilities.outputFormats": "Formats de sortie",
|
|
20869
|
+
"service.metadata.capabilities.resourceLinks": "Liens vers les ressources",
|
|
20870
|
+
"service.metadata.capabilities.title": "Titre",
|
|
20871
|
+
"service.metadata.filter": "Les couches seront filtrées par titre et description",
|
|
20872
|
+
"service.metadata.filter.noLayers": "Aucune couche ne correspond à votre recherche",
|
|
20873
|
+
"service.metadata.other": "Autres informations",
|
|
20874
|
+
"service.metadata.question": "Poser une question",
|
|
20875
|
+
"service.metadata.search": "Rechercher dans la liste des couches",
|
|
20876
|
+
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
20785
20877
|
"share.tab.permalink": "Partager",
|
|
20786
20878
|
"share.tab.webComponent": "Intégrer",
|
|
20787
20879
|
"table.loading.data": "Chargement des données...",
|
|
@@ -20876,7 +20968,6 @@ var it = {
|
|
|
20876
20968
|
"datahub.news.contact.title": "Ha un bisogno specifico?",
|
|
20877
20969
|
"datahub.news.feed": "Feed di attività",
|
|
20878
20970
|
"datahub.news.figures": "Alcune figure",
|
|
20879
|
-
"datahub.record.addToFavorites": "Aggiungere a miei preferiti",
|
|
20880
20971
|
"datahub.search.back": "Ritorna",
|
|
20881
20972
|
"datahub.search.filter.all": "Tutti",
|
|
20882
20973
|
"datahub.search.filter.generatedByAPI": "generato da un'API",
|
|
@@ -20886,6 +20977,7 @@ var it = {
|
|
|
20886
20977
|
"dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
|
|
20887
20978
|
"dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
|
|
20888
20979
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
20980
|
+
"dataset.error.restrictedAccess": "",
|
|
20889
20981
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
20890
20982
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
20891
20983
|
"domain.contact.role.author": "Autore",
|
|
@@ -21046,6 +21138,7 @@ var it = {
|
|
|
21046
21138
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21047
21139
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21048
21140
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21141
|
+
"editor.record.lock.format": "",
|
|
21049
21142
|
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21050
21143
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21051
21144
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
@@ -21105,7 +21198,6 @@ var it = {
|
|
|
21105
21198
|
"input.image.dropFileLabel": "oppure trascinalo qui",
|
|
21106
21199
|
"input.image.selectFileLabel": "Seleziona un'immagine",
|
|
21107
21200
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21108
|
-
"input.image.uploadErrorRetry": "Riprova",
|
|
21109
21201
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21110
21202
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21111
21203
|
"language.ca": "Catalano",
|
|
@@ -21145,6 +21237,7 @@ var it = {
|
|
|
21145
21237
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21146
21238
|
"multiselect.filter.placeholder": "Cerca",
|
|
21147
21239
|
"nav.back": "Indietro",
|
|
21240
|
+
"navbar.mobile.menuTitle": "",
|
|
21148
21241
|
next: next$2,
|
|
21149
21242
|
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
21150
21243
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
@@ -21171,6 +21264,7 @@ var it = {
|
|
|
21171
21264
|
"record.card.metadata.contact": "",
|
|
21172
21265
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21173
21266
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21267
|
+
"record.kind.data": "",
|
|
21174
21268
|
"record.kind.dataset": "",
|
|
21175
21269
|
"record.kind.reuse": "",
|
|
21176
21270
|
"record.kind.service": "",
|
|
@@ -21207,6 +21301,7 @@ var it = {
|
|
|
21207
21301
|
"record.metadata.api.form.zoneTitle": "Zona",
|
|
21208
21302
|
"record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
|
|
21209
21303
|
"record.metadata.api.gpfdl": "Scarica",
|
|
21304
|
+
"record.metadata.capabilities": "",
|
|
21210
21305
|
"record.metadata.catalog": "Catalogo",
|
|
21211
21306
|
"record.metadata.contact": "Contatto",
|
|
21212
21307
|
"record.metadata.creation": "Data di creazione",
|
|
@@ -21243,13 +21338,12 @@ var it = {
|
|
|
21243
21338
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21244
21339
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21245
21340
|
"record.metadata.related": "Vedi anche",
|
|
21246
|
-
"record.metadata.related.contents": "
|
|
21341
|
+
"record.metadata.related.contents": "",
|
|
21247
21342
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21248
21343
|
"record.metadata.sheet": "Origine del metadata",
|
|
21249
21344
|
"record.metadata.status": "Stato",
|
|
21250
21345
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
21251
21346
|
"record.metadata.status.published": "Pubblicato",
|
|
21252
|
-
"record.metadata.technical": "Informazioni tecniche",
|
|
21253
21347
|
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
21254
21348
|
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
21255
21349
|
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
@@ -21286,6 +21380,7 @@ var it = {
|
|
|
21286
21380
|
"results.sortBy.popularity": "Popolarità",
|
|
21287
21381
|
"results.sortBy.qualityScore": "Indicatore di qualità",
|
|
21288
21382
|
"results.sortBy.relevancy": "Rilevanza",
|
|
21383
|
+
"reuse.metadata.access": "",
|
|
21289
21384
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
21290
21385
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
21291
21386
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
|
|
@@ -21335,6 +21430,26 @@ var it = {
|
|
|
21335
21430
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
21336
21431
|
"search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
|
|
21337
21432
|
"search.filters.user": "Editore",
|
|
21433
|
+
"service.metadata.capabilities": "Informazioni tecniche",
|
|
21434
|
+
"service.metadata.capabilities.abstract": "",
|
|
21435
|
+
"service.metadata.capabilities.attribution": "",
|
|
21436
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
21437
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
21438
|
+
"service.metadata.capabilities.geometryName": "",
|
|
21439
|
+
"service.metadata.capabilities.geometryType": "",
|
|
21440
|
+
"service.metadata.capabilities.keywords": "",
|
|
21441
|
+
"service.metadata.capabilities.name": "",
|
|
21442
|
+
"service.metadata.capabilities.objectCount": "",
|
|
21443
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
21444
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
21445
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
21446
|
+
"service.metadata.capabilities.title": "",
|
|
21447
|
+
"service.metadata.filter": "",
|
|
21448
|
+
"service.metadata.filter.noLayers": "",
|
|
21449
|
+
"service.metadata.other": "",
|
|
21450
|
+
"service.metadata.question": "",
|
|
21451
|
+
"service.metadata.search": "",
|
|
21452
|
+
"service.metadata.spatialExtent": "",
|
|
21338
21453
|
"share.tab.permalink": "Condividere",
|
|
21339
21454
|
"share.tab.webComponent": "Incorporare",
|
|
21340
21455
|
"table.loading.data": "Caricamento dei dati...",
|
|
@@ -21429,7 +21544,6 @@ var nl = {
|
|
|
21429
21544
|
"datahub.news.contact.title": "",
|
|
21430
21545
|
"datahub.news.feed": "",
|
|
21431
21546
|
"datahub.news.figures": "",
|
|
21432
|
-
"datahub.record.addToFavorites": "",
|
|
21433
21547
|
"datahub.search.back": "",
|
|
21434
21548
|
"datahub.search.filter.all": "",
|
|
21435
21549
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -21439,6 +21553,7 @@ var nl = {
|
|
|
21439
21553
|
"dataset.error.http": "",
|
|
21440
21554
|
"dataset.error.network": "",
|
|
21441
21555
|
"dataset.error.parse": "",
|
|
21556
|
+
"dataset.error.restrictedAccess": "",
|
|
21442
21557
|
"dataset.error.unknown": "",
|
|
21443
21558
|
"dataset.error.unsupportedType": "",
|
|
21444
21559
|
"domain.contact.role.author": "",
|
|
@@ -21599,6 +21714,7 @@ var nl = {
|
|
|
21599
21714
|
"editor.record.loadError.body": "",
|
|
21600
21715
|
"editor.record.loadError.closeMessage": "",
|
|
21601
21716
|
"editor.record.loadError.title": "",
|
|
21717
|
+
"editor.record.lock.format": "",
|
|
21602
21718
|
"editor.record.lock.reason": "",
|
|
21603
21719
|
"editor.record.onlineResource.protocol.other": "",
|
|
21604
21720
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -21658,7 +21774,6 @@ var nl = {
|
|
|
21658
21774
|
"input.image.dropFileLabel": "",
|
|
21659
21775
|
"input.image.selectFileLabel": "",
|
|
21660
21776
|
"input.image.uploadErrorLabel": "",
|
|
21661
|
-
"input.image.uploadErrorRetry": "",
|
|
21662
21777
|
"input.image.uploadProgressCancel": "",
|
|
21663
21778
|
"input.image.uploadProgressLabel": "",
|
|
21664
21779
|
"language.ca": "Catalaans",
|
|
@@ -21698,6 +21813,7 @@ var nl = {
|
|
|
21698
21813
|
"map.wms.urlInput.hint": "",
|
|
21699
21814
|
"multiselect.filter.placeholder": "",
|
|
21700
21815
|
"nav.back": "",
|
|
21816
|
+
"navbar.mobile.menuTitle": "",
|
|
21701
21817
|
next: next$1,
|
|
21702
21818
|
"ogc.unreachable.unknown": "",
|
|
21703
21819
|
"organisation.filter.placeholder": "",
|
|
@@ -21724,6 +21840,7 @@ var nl = {
|
|
|
21724
21840
|
"record.card.metadata.contact": "",
|
|
21725
21841
|
"record.externalViewer.open": "",
|
|
21726
21842
|
"record.feature.limit": "",
|
|
21843
|
+
"record.kind.data": "",
|
|
21727
21844
|
"record.kind.dataset": "",
|
|
21728
21845
|
"record.kind.reuse": "",
|
|
21729
21846
|
"record.kind.service": "",
|
|
@@ -21760,6 +21877,7 @@ var nl = {
|
|
|
21760
21877
|
"record.metadata.api.form.zoneTitle": "",
|
|
21761
21878
|
"record.metadata.api.form.zoneTooltip": "",
|
|
21762
21879
|
"record.metadata.api.gpfdl": "",
|
|
21880
|
+
"record.metadata.capabilities": "",
|
|
21763
21881
|
"record.metadata.catalog": "",
|
|
21764
21882
|
"record.metadata.contact": "",
|
|
21765
21883
|
"record.metadata.creation": "",
|
|
@@ -21796,13 +21914,12 @@ var nl = {
|
|
|
21796
21914
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21797
21915
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21798
21916
|
"record.metadata.related": "",
|
|
21799
|
-
"record.metadata.related.contents": "
|
|
21917
|
+
"record.metadata.related.contents": "",
|
|
21800
21918
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21801
21919
|
"record.metadata.sheet": "",
|
|
21802
21920
|
"record.metadata.status": "",
|
|
21803
21921
|
"record.metadata.status.notPublished": "",
|
|
21804
21922
|
"record.metadata.status.published": "",
|
|
21805
|
-
"record.metadata.technical": "",
|
|
21806
21923
|
"record.metadata.temporalExtent": "",
|
|
21807
21924
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
21808
21925
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -21839,6 +21956,7 @@ var nl = {
|
|
|
21839
21956
|
"results.sortBy.popularity": "",
|
|
21840
21957
|
"results.sortBy.qualityScore": "",
|
|
21841
21958
|
"results.sortBy.relevancy": "",
|
|
21959
|
+
"reuse.metadata.access": "",
|
|
21842
21960
|
"search.autocomplete.error": "",
|
|
21843
21961
|
"search.error.couldNotReachApi": "",
|
|
21844
21962
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -21888,6 +22006,26 @@ var nl = {
|
|
|
21888
22006
|
"search.filters.useSpatialFilter": "",
|
|
21889
22007
|
"search.filters.useSpatialFilterHelp": "",
|
|
21890
22008
|
"search.filters.user": "",
|
|
22009
|
+
"service.metadata.capabilities": "",
|
|
22010
|
+
"service.metadata.capabilities.abstract": "",
|
|
22011
|
+
"service.metadata.capabilities.attribution": "",
|
|
22012
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22013
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22014
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22015
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22016
|
+
"service.metadata.capabilities.keywords": "",
|
|
22017
|
+
"service.metadata.capabilities.name": "",
|
|
22018
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22019
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22020
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22021
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22022
|
+
"service.metadata.capabilities.title": "",
|
|
22023
|
+
"service.metadata.filter": "",
|
|
22024
|
+
"service.metadata.filter.noLayers": "",
|
|
22025
|
+
"service.metadata.other": "",
|
|
22026
|
+
"service.metadata.question": "",
|
|
22027
|
+
"service.metadata.search": "",
|
|
22028
|
+
"service.metadata.spatialExtent": "",
|
|
21891
22029
|
"share.tab.permalink": "",
|
|
21892
22030
|
"share.tab.webComponent": "",
|
|
21893
22031
|
"table.loading.data": "",
|
|
@@ -21982,7 +22120,6 @@ var pt = {
|
|
|
21982
22120
|
"datahub.news.contact.title": "",
|
|
21983
22121
|
"datahub.news.feed": "",
|
|
21984
22122
|
"datahub.news.figures": "",
|
|
21985
|
-
"datahub.record.addToFavorites": "",
|
|
21986
22123
|
"datahub.search.back": "",
|
|
21987
22124
|
"datahub.search.filter.all": "",
|
|
21988
22125
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -21992,6 +22129,7 @@ var pt = {
|
|
|
21992
22129
|
"dataset.error.http": "",
|
|
21993
22130
|
"dataset.error.network": "",
|
|
21994
22131
|
"dataset.error.parse": "",
|
|
22132
|
+
"dataset.error.restrictedAccess": "",
|
|
21995
22133
|
"dataset.error.unknown": "",
|
|
21996
22134
|
"dataset.error.unsupportedType": "",
|
|
21997
22135
|
"domain.contact.role.author": "",
|
|
@@ -22152,6 +22290,7 @@ var pt = {
|
|
|
22152
22290
|
"editor.record.loadError.body": "",
|
|
22153
22291
|
"editor.record.loadError.closeMessage": "",
|
|
22154
22292
|
"editor.record.loadError.title": "",
|
|
22293
|
+
"editor.record.lock.format": "",
|
|
22155
22294
|
"editor.record.lock.reason": "",
|
|
22156
22295
|
"editor.record.onlineResource.protocol.other": "",
|
|
22157
22296
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -22211,7 +22350,6 @@ var pt = {
|
|
|
22211
22350
|
"input.image.dropFileLabel": "",
|
|
22212
22351
|
"input.image.selectFileLabel": "",
|
|
22213
22352
|
"input.image.uploadErrorLabel": "",
|
|
22214
|
-
"input.image.uploadErrorRetry": "",
|
|
22215
22353
|
"input.image.uploadProgressCancel": "",
|
|
22216
22354
|
"input.image.uploadProgressLabel": "",
|
|
22217
22355
|
"language.ca": "Catalão",
|
|
@@ -22251,6 +22389,7 @@ var pt = {
|
|
|
22251
22389
|
"map.wms.urlInput.hint": "",
|
|
22252
22390
|
"multiselect.filter.placeholder": "",
|
|
22253
22391
|
"nav.back": "",
|
|
22392
|
+
"navbar.mobile.menuTitle": "",
|
|
22254
22393
|
next: next,
|
|
22255
22394
|
"ogc.unreachable.unknown": "",
|
|
22256
22395
|
"organisation.filter.placeholder": "",
|
|
@@ -22277,6 +22416,7 @@ var pt = {
|
|
|
22277
22416
|
"record.card.metadata.contact": "",
|
|
22278
22417
|
"record.externalViewer.open": "",
|
|
22279
22418
|
"record.feature.limit": "",
|
|
22419
|
+
"record.kind.data": "",
|
|
22280
22420
|
"record.kind.dataset": "",
|
|
22281
22421
|
"record.kind.reuse": "",
|
|
22282
22422
|
"record.kind.service": "",
|
|
@@ -22313,6 +22453,7 @@ var pt = {
|
|
|
22313
22453
|
"record.metadata.api.form.zoneTitle": "",
|
|
22314
22454
|
"record.metadata.api.form.zoneTooltip": "",
|
|
22315
22455
|
"record.metadata.api.gpfdl": "",
|
|
22456
|
+
"record.metadata.capabilities": "",
|
|
22316
22457
|
"record.metadata.catalog": "",
|
|
22317
22458
|
"record.metadata.contact": "",
|
|
22318
22459
|
"record.metadata.creation": "",
|
|
@@ -22349,13 +22490,12 @@ var pt = {
|
|
|
22349
22490
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22350
22491
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22351
22492
|
"record.metadata.related": "",
|
|
22352
|
-
"record.metadata.related.contents": "
|
|
22493
|
+
"record.metadata.related.contents": "",
|
|
22353
22494
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22354
22495
|
"record.metadata.sheet": "",
|
|
22355
22496
|
"record.metadata.status": "",
|
|
22356
22497
|
"record.metadata.status.notPublished": "",
|
|
22357
22498
|
"record.metadata.status.published": "",
|
|
22358
|
-
"record.metadata.technical": "",
|
|
22359
22499
|
"record.metadata.temporalExtent": "",
|
|
22360
22500
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
22361
22501
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -22392,6 +22532,7 @@ var pt = {
|
|
|
22392
22532
|
"results.sortBy.popularity": "",
|
|
22393
22533
|
"results.sortBy.qualityScore": "",
|
|
22394
22534
|
"results.sortBy.relevancy": "",
|
|
22535
|
+
"reuse.metadata.access": "",
|
|
22395
22536
|
"search.autocomplete.error": "",
|
|
22396
22537
|
"search.error.couldNotReachApi": "",
|
|
22397
22538
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -22441,6 +22582,26 @@ var pt = {
|
|
|
22441
22582
|
"search.filters.useSpatialFilter": "",
|
|
22442
22583
|
"search.filters.useSpatialFilterHelp": "",
|
|
22443
22584
|
"search.filters.user": "",
|
|
22585
|
+
"service.metadata.capabilities": "",
|
|
22586
|
+
"service.metadata.capabilities.abstract": "",
|
|
22587
|
+
"service.metadata.capabilities.attribution": "",
|
|
22588
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22589
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22590
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22591
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22592
|
+
"service.metadata.capabilities.keywords": "",
|
|
22593
|
+
"service.metadata.capabilities.name": "",
|
|
22594
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22595
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22596
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22597
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22598
|
+
"service.metadata.capabilities.title": "",
|
|
22599
|
+
"service.metadata.filter": "",
|
|
22600
|
+
"service.metadata.filter.noLayers": "",
|
|
22601
|
+
"service.metadata.other": "",
|
|
22602
|
+
"service.metadata.question": "",
|
|
22603
|
+
"service.metadata.search": "",
|
|
22604
|
+
"service.metadata.spatialExtent": "",
|
|
22444
22605
|
"share.tab.permalink": "",
|
|
22445
22606
|
"share.tab.webComponent": "",
|
|
22446
22607
|
"table.loading.data": "",
|
|
@@ -22744,6 +22905,10 @@ class Gn4FieldMapper {
|
|
|
22744
22905
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
22745
22906
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
22746
22907
|
const description = selectFallback(selectTranslatedField(sourceLink, 'descriptionObject', this.lang3), selectField(sourceLink, 'description'));
|
|
22908
|
+
const descriptionLink = selectField(sourceLink, 'descriptionObject');
|
|
22909
|
+
const accessRestricted = descriptionLink &&
|
|
22910
|
+
'link' in descriptionLink &&
|
|
22911
|
+
descriptionLink.link.toString().includes('#MD_RestrictionCode_restricted');
|
|
22747
22912
|
// no url: fail early
|
|
22748
22913
|
if (url === null) {
|
|
22749
22914
|
// TODO: collect errors at the record level?
|
|
@@ -22766,6 +22931,7 @@ class Gn4FieldMapper {
|
|
|
22766
22931
|
type,
|
|
22767
22932
|
url: url,
|
|
22768
22933
|
accessServiceProtocol,
|
|
22934
|
+
accessRestricted: accessRestricted,
|
|
22769
22935
|
};
|
|
22770
22936
|
case 'link':
|
|
22771
22937
|
return {
|
|
@@ -22784,8 +22950,8 @@ class Gn4FieldMapper {
|
|
|
22784
22950
|
return {
|
|
22785
22951
|
...distribution,
|
|
22786
22952
|
type,
|
|
22787
|
-
|
|
22788
|
-
|
|
22953
|
+
url: url,
|
|
22954
|
+
accessServiceProtocol: accessServiceProtocol,
|
|
22789
22955
|
};
|
|
22790
22956
|
}
|
|
22791
22957
|
};
|
|
@@ -23181,14 +23347,6 @@ class ElasticsearchService {
|
|
|
23181
23347
|
}
|
|
23182
23348
|
mustNotFilters() {
|
|
23183
23349
|
return [
|
|
23184
|
-
{
|
|
23185
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23186
|
-
'service',
|
|
23187
|
-
'map',
|
|
23188
|
-
'map/static',
|
|
23189
|
-
'mapDigital',
|
|
23190
|
-
]),
|
|
23191
|
-
},
|
|
23192
23350
|
{
|
|
23193
23351
|
query_string: {
|
|
23194
23352
|
query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
@@ -23287,7 +23445,7 @@ class ElasticsearchService {
|
|
|
23287
23445
|
must_not: this.mustNotFilters(),
|
|
23288
23446
|
},
|
|
23289
23447
|
},
|
|
23290
|
-
_source: ['resourceTitleObject', 'uuid'],
|
|
23448
|
+
_source: ['resourceTitleObject', 'uuid', 'resourceType'],
|
|
23291
23449
|
from: 0,
|
|
23292
23450
|
size: 20,
|
|
23293
23451
|
};
|
|
@@ -25025,7 +25183,7 @@ function getLinkLabel(link) {
|
|
|
25025
25183
|
default:
|
|
25026
25184
|
format = getFileFormat(link);
|
|
25027
25185
|
}
|
|
25028
|
-
const label = link.description || link.name;
|
|
25186
|
+
const label = link.description || ('name' in link ? link.name : '');
|
|
25029
25187
|
return format ? `${label} (${format})` : label;
|
|
25030
25188
|
}
|
|
25031
25189
|
async function getLayers(url, serviceProtocol) {
|
|
@@ -25036,14 +25194,21 @@ async function getLayers(url, serviceProtocol) {
|
|
|
25036
25194
|
}
|
|
25037
25195
|
case 'wfs': {
|
|
25038
25196
|
const endpointWfs = await new WfsEndpoint(url).isReady();
|
|
25039
|
-
|
|
25197
|
+
const featureTypes = await endpointWfs.getFeatureTypes();
|
|
25198
|
+
const layers = await Promise.all(featureTypes.map(async (collection) => {
|
|
25199
|
+
return await endpointWfs.getFeatureTypeFull(collection.name);
|
|
25200
|
+
}));
|
|
25201
|
+
return layers;
|
|
25040
25202
|
}
|
|
25041
25203
|
case 'wms': {
|
|
25042
25204
|
const endpointWms = await new WmsEndpoint(url).isReady();
|
|
25043
|
-
|
|
25205
|
+
const layers = (await endpointWms
|
|
25044
25206
|
.getLayers()
|
|
25045
25207
|
.flatMap(wmsLayerFlatten)
|
|
25046
|
-
.filter((l) => l.name)
|
|
25208
|
+
.filter((l) => l.name)).map((collection) => {
|
|
25209
|
+
return endpointWms.getLayerByName(collection.name);
|
|
25210
|
+
});
|
|
25211
|
+
return layers;
|
|
25047
25212
|
}
|
|
25048
25213
|
case 'wmts': {
|
|
25049
25214
|
const endpointWmts = await new WmtsEndpoint(url).isReady();
|
|
@@ -25080,6 +25245,7 @@ var LinkUsage;
|
|
|
25080
25245
|
class LinkClassifierService {
|
|
25081
25246
|
getUsagesForLink(link) {
|
|
25082
25247
|
switch (link.type) {
|
|
25248
|
+
case 'endpoint':
|
|
25083
25249
|
case 'service': {
|
|
25084
25250
|
switch (link.accessServiceProtocol) {
|
|
25085
25251
|
case 'esriRest':
|
|
@@ -25128,6 +25294,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25128
25294
|
}]
|
|
25129
25295
|
}] });
|
|
25130
25296
|
|
|
25297
|
+
var name = "geonetwork-ui";
|
|
25298
|
+
var version = "2.6.0-dev.d216c4dea";
|
|
25299
|
+
var engines = {
|
|
25300
|
+
node: ">=20"
|
|
25301
|
+
};
|
|
25302
|
+
var main = "./index.ts";
|
|
25303
|
+
var type = "module";
|
|
25304
|
+
var exports = {
|
|
25305
|
+
"./tailwind.base.config.js": "./tailwind.base.config.js",
|
|
25306
|
+
"./style.css": "./style.css"
|
|
25307
|
+
};
|
|
25308
|
+
var repository = {
|
|
25309
|
+
url: "https://github.com/geonetwork/geonetwork-ui"
|
|
25310
|
+
};
|
|
25311
|
+
var peerDependencies = {
|
|
25312
|
+
"@angular/animations": "17.x || 18.x || 19.x",
|
|
25313
|
+
"@angular/cdk": "17.x || 18.x || 19.x",
|
|
25314
|
+
"@angular/common": "17.x || 18.x || 19.x",
|
|
25315
|
+
"@angular/compiler": "17.x || 18.x || 19.x",
|
|
25316
|
+
"@angular/core": "17.x || 18.x || 19.x",
|
|
25317
|
+
"@angular/forms": "17.x || 18.x || 19.x",
|
|
25318
|
+
"@angular/material": "17.x || 18.x || 19.x",
|
|
25319
|
+
"@angular/material-moment-adapter": "17.x || 18.x || 19.x",
|
|
25320
|
+
"@angular/platform-browser": "17.x || 18.x || 19.x",
|
|
25321
|
+
"@angular/platform-browser-dynamic": "17.x || 18.x || 19.x",
|
|
25322
|
+
"@angular/router": "17.x || 18.x || 19.x",
|
|
25323
|
+
"@ngrx/component": "17.x || 18.x || 19.x",
|
|
25324
|
+
"@ngrx/effects": "17.x || 18.x || 19.x",
|
|
25325
|
+
"@ngrx/router-store": "17.x || 18.x || 19.x",
|
|
25326
|
+
"@ngrx/store": "17.x || 18.x || 19.x",
|
|
25327
|
+
"@ngrx/store-devtools": "17.x || 18.x || 19.x",
|
|
25328
|
+
"@ngrx/operators": "18.x",
|
|
25329
|
+
"@ngx-translate/core": "15.x",
|
|
25330
|
+
"@ngx-translate/http-loader": "16.x",
|
|
25331
|
+
rxjs: "7.x",
|
|
25332
|
+
"zone.js": "*",
|
|
25333
|
+
tailwindcss: "3.x"
|
|
25334
|
+
};
|
|
25335
|
+
var dependencies = {
|
|
25336
|
+
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
|
|
25337
|
+
"@camptocamp/ogc-client": "1.1.1-dev.3e2d3cc",
|
|
25338
|
+
"@geospatial-sdk/core": "0.0.5-dev.31",
|
|
25339
|
+
"@geospatial-sdk/geocoding": "0.0.5-dev.31",
|
|
25340
|
+
"@geospatial-sdk/legend": "0.0.5-dev.31",
|
|
25341
|
+
"@geospatial-sdk/openlayers": "0.0.5-dev.31",
|
|
25342
|
+
"@ltd/j-toml": "~1.35.2",
|
|
25343
|
+
"@messageformat/core": "^3.0.1",
|
|
25344
|
+
"@ng-icons/core": "29.10.0",
|
|
25345
|
+
"@ng-icons/iconoir": "29.10.0",
|
|
25346
|
+
"@ng-icons/material-icons": "29.10.0",
|
|
25347
|
+
"@ng-icons/tabler-icons": "29.10.0",
|
|
25348
|
+
"@nx/angular": "20.2.2",
|
|
25349
|
+
"@rgrove/parse-xml": "4.2.0",
|
|
25350
|
+
alasql: "4.6.0",
|
|
25351
|
+
axios: "1.7.9",
|
|
25352
|
+
basiclightbox: "^5.0.4",
|
|
25353
|
+
"chart.js": "4.4.7",
|
|
25354
|
+
"chroma-js": "3.1.2",
|
|
25355
|
+
"date-fns": "4.1.0",
|
|
25356
|
+
"document-register-element": "^1.14.10",
|
|
25357
|
+
"duration-relativetimeformat": "^2.0.4",
|
|
25358
|
+
"embla-carousel": "8.5.1",
|
|
25359
|
+
express: "^4.21.1",
|
|
25360
|
+
"geojson-validation": "^1.0.2",
|
|
25361
|
+
marked: "15.0.4",
|
|
25362
|
+
moment: "2.30.1",
|
|
25363
|
+
"ng-table-virtual-scroll": "1.6.1",
|
|
25364
|
+
"ngx-chips": "3.0.0",
|
|
25365
|
+
"ngx-dropzone": "3.1.0",
|
|
25366
|
+
"ngx-translate-messageformat-compiler": "7.0.0",
|
|
25367
|
+
ol: "^8.2.0",
|
|
25368
|
+
papaparse: "5.4.1",
|
|
25369
|
+
pg: "^8.9.0",
|
|
25370
|
+
proj4: "^2.9.2",
|
|
25371
|
+
rdflib: "^2.2.35",
|
|
25372
|
+
"reflect-metadata": "^0.1.13",
|
|
25373
|
+
semver: "7.6.3",
|
|
25374
|
+
"tippy.js": "6.3.7",
|
|
25375
|
+
tslib: "^2.3.0",
|
|
25376
|
+
typeorm: "^0.3.14",
|
|
25377
|
+
"whatwg-fetch": "^3.6.2",
|
|
25378
|
+
xlsx: "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
|
|
25379
|
+
};
|
|
25380
|
+
var packageJson = {
|
|
25381
|
+
name: name,
|
|
25382
|
+
version: version,
|
|
25383
|
+
engines: engines,
|
|
25384
|
+
main: main,
|
|
25385
|
+
type: type,
|
|
25386
|
+
exports: exports,
|
|
25387
|
+
repository: repository,
|
|
25388
|
+
peerDependencies: peerDependencies,
|
|
25389
|
+
dependencies: dependencies
|
|
25390
|
+
};
|
|
25391
|
+
|
|
25392
|
+
const GEONETWORK_UI_VERSION = packageJson.version;
|
|
25393
|
+
const GEONETWORK_UI_TAG_NAME = GEONETWORK_UI_VERSION.split('-')[1] === 'dev'
|
|
25394
|
+
? 'main'
|
|
25395
|
+
: `v${packageJson.version}`;
|
|
25396
|
+
|
|
25131
25397
|
const minApiVersion = '4.2.2';
|
|
25132
25398
|
class Gn4PlatformService {
|
|
25133
25399
|
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService, httpClient, recordsApiService) {
|
|
@@ -25321,12 +25587,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25321
25587
|
type: Injectable
|
|
25322
25588
|
}], ctorParameters: () => [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }] });
|
|
25323
25589
|
|
|
25590
|
+
class RecordsRepositoryInterface {
|
|
25591
|
+
}
|
|
25592
|
+
|
|
25324
25593
|
function provideGn4() {
|
|
25325
25594
|
return [
|
|
25326
25595
|
{
|
|
25327
25596
|
provide: PlatformServiceInterface,
|
|
25328
25597
|
useClass: Gn4PlatformService,
|
|
25329
25598
|
},
|
|
25599
|
+
{
|
|
25600
|
+
provide: RecordsRepositoryInterface,
|
|
25601
|
+
useClass: Gn4Repository,
|
|
25602
|
+
},
|
|
25330
25603
|
Gn4PlatformMapper,
|
|
25331
25604
|
];
|
|
25332
25605
|
}
|
|
@@ -25402,7 +25675,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25402
25675
|
|
|
25403
25676
|
class AnchorLinkDirective {
|
|
25404
25677
|
get elementClass() {
|
|
25405
|
-
|
|
25678
|
+
if (this.disabled) {
|
|
25679
|
+
return this.disabledClass;
|
|
25680
|
+
}
|
|
25681
|
+
if (this.inView) {
|
|
25682
|
+
return `${this.inViewClass} ${this.enabledClass}`;
|
|
25683
|
+
}
|
|
25684
|
+
else {
|
|
25685
|
+
return `${this.outOfViewClass} ${this.enabledClass}`;
|
|
25686
|
+
}
|
|
25406
25687
|
}
|
|
25407
25688
|
constructor(changeDetector) {
|
|
25408
25689
|
this.changeDetector = changeDetector;
|
|
@@ -25410,6 +25691,8 @@ class AnchorLinkDirective {
|
|
|
25410
25691
|
this.observer = new MutationObserver(() => {
|
|
25411
25692
|
this.refreshDisabledState();
|
|
25412
25693
|
});
|
|
25694
|
+
this.inView = false;
|
|
25695
|
+
this.initialized = false;
|
|
25413
25696
|
}
|
|
25414
25697
|
ngOnInit() {
|
|
25415
25698
|
this.observer.observe(document.body, {
|
|
@@ -25418,8 +25701,32 @@ class AnchorLinkDirective {
|
|
|
25418
25701
|
});
|
|
25419
25702
|
this.refreshDisabledState();
|
|
25420
25703
|
}
|
|
25704
|
+
ngAfterViewChecked() {
|
|
25705
|
+
if (!this.initialized && !this.disabled) {
|
|
25706
|
+
const target = document.getElementById(this.targetId);
|
|
25707
|
+
if (target) {
|
|
25708
|
+
this.initializeIntersectionObserver(target);
|
|
25709
|
+
this.initialized = true;
|
|
25710
|
+
}
|
|
25711
|
+
}
|
|
25712
|
+
}
|
|
25713
|
+
initializeIntersectionObserver(target) {
|
|
25714
|
+
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
25715
|
+
entries.forEach((entry) => {
|
|
25716
|
+
this.inView = entry.isIntersecting;
|
|
25717
|
+
this.changeDetector.detectChanges();
|
|
25718
|
+
});
|
|
25719
|
+
}, {
|
|
25720
|
+
root: null,
|
|
25721
|
+
rootMargin: '-30% 0% -60% 0%',
|
|
25722
|
+
});
|
|
25723
|
+
this.intersectionObserver.observe(target);
|
|
25724
|
+
}
|
|
25421
25725
|
ngOnDestroy() {
|
|
25422
25726
|
this.observer.disconnect();
|
|
25727
|
+
if (this.intersectionObserver) {
|
|
25728
|
+
this.intersectionObserver.disconnect();
|
|
25729
|
+
}
|
|
25423
25730
|
}
|
|
25424
25731
|
refreshDisabledState() {
|
|
25425
25732
|
const targetNotPresent = !document.getElementById(this.targetId);
|
|
@@ -25438,7 +25745,7 @@ class AnchorLinkDirective {
|
|
|
25438
25745
|
});
|
|
25439
25746
|
}
|
|
25440
25747
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorLinkDirective, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25441
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AnchorLinkDirective, selector: "[gnUiAnchorLink]", inputs: { targetId: ["gnUiAnchorLink", "targetId"], disabledClass: ["gnUiAnchorLinkDisabledClass", "disabledClass"], enabledClass: ["gnUiAnchorLinkEnabledClass", "enabledClass"] }, host: { listeners: { "click": "scrollToTarget()" }, properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
|
|
25748
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AnchorLinkDirective, selector: "[gnUiAnchorLink]", inputs: { targetId: ["gnUiAnchorLink", "targetId"], disabledClass: ["gnUiAnchorLinkDisabledClass", "disabledClass"], enabledClass: ["gnUiAnchorLinkEnabledClass", "enabledClass"], inViewClass: ["gnUiAnchorLinkInViewClass", "inViewClass"], outOfViewClass: ["gnUiAnchorLinkOutOfViewClass", "outOfViewClass"] }, host: { listeners: { "click": "scrollToTarget()" }, properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
|
|
25442
25749
|
}
|
|
25443
25750
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorLinkDirective, decorators: [{
|
|
25444
25751
|
type: Directive,
|
|
@@ -25454,6 +25761,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25454
25761
|
}], enabledClass: [{
|
|
25455
25762
|
type: Input,
|
|
25456
25763
|
args: ['gnUiAnchorLinkEnabledClass']
|
|
25764
|
+
}], inViewClass: [{
|
|
25765
|
+
type: Input,
|
|
25766
|
+
args: ['gnUiAnchorLinkInViewClass']
|
|
25767
|
+
}], outOfViewClass: [{
|
|
25768
|
+
type: Input,
|
|
25769
|
+
args: ['gnUiAnchorLinkOutOfViewClass']
|
|
25457
25770
|
}], elementClass: [{
|
|
25458
25771
|
type: HostBinding,
|
|
25459
25772
|
args: ['class']
|
|
@@ -25718,6 +26031,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25718
26031
|
type: Output
|
|
25719
26032
|
}] } });
|
|
25720
26033
|
|
|
26034
|
+
marker('editor.record.lock.reason');
|
|
26035
|
+
marker('editor.record.lock.format');
|
|
25721
26036
|
class InteractiveTableComponent {
|
|
25722
26037
|
constructor() {
|
|
25723
26038
|
this.items = [];
|
|
@@ -25735,15 +26050,24 @@ class InteractiveTableComponent {
|
|
|
25735
26050
|
.join(' '),
|
|
25736
26051
|
};
|
|
25737
26052
|
}
|
|
26053
|
+
getItemTitle(item) {
|
|
26054
|
+
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
26055
|
+
return 'editor.record.lock.reason';
|
|
26056
|
+
}
|
|
26057
|
+
else if (item.kind !== 'dataset') {
|
|
26058
|
+
return 'editor.record.lock.format';
|
|
26059
|
+
}
|
|
26060
|
+
return '';
|
|
26061
|
+
}
|
|
25738
26062
|
handleRowClick(item) {
|
|
25739
26063
|
this.itemClick.emit(item);
|
|
25740
26064
|
}
|
|
25741
26065
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25742
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
26066
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25743
26067
|
}
|
|
25744
26068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
25745
26069
|
type: Component,
|
|
25746
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
26070
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"] }]
|
|
25747
26071
|
}], propDecorators: { columns: [{
|
|
25748
26072
|
type: ContentChildren,
|
|
25749
26073
|
args: [InteractiveTableColumnComponent]
|
|
@@ -27385,19 +27709,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27385
27709
|
type: Input
|
|
27386
27710
|
}] } });
|
|
27387
27711
|
|
|
27388
|
-
class NavigationButtonComponent {
|
|
27389
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27390
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NavigationButtonComponent, isStandalone: true, 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 rounded content-center\"\n>\n <ng-icon [name]=\"icon\" class=\"align-middle w-[18px]\"></ng-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: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27391
|
-
}
|
|
27392
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
27393
|
-
type: Component,
|
|
27394
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIcon], standalone: true, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <ng-icon [name]=\"icon\" class=\"align-middle w-[18px]\"></ng-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: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
27395
|
-
}], propDecorators: { label: [{
|
|
27396
|
-
type: Input
|
|
27397
|
-
}], icon: [{
|
|
27398
|
-
type: Input
|
|
27399
|
-
}] } });
|
|
27400
|
-
|
|
27401
27712
|
class SearchInputComponent {
|
|
27402
27713
|
constructor() {
|
|
27403
27714
|
this.value = '';
|
|
@@ -27456,11 +27767,11 @@ class StarToggleComponent {
|
|
|
27456
27767
|
event.preventDefault();
|
|
27457
27768
|
}
|
|
27458
27769
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27459
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, 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=\"
|
|
27770
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, 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 <gn-ui-button\n [type]=\"'outline'\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-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))}.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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], viewProviders: [provideIcons({ matStar, matStarBorder })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27460
27771
|
}
|
|
27461
27772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
27462
27773
|
type: Component,
|
|
27463
|
-
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"
|
|
27774
|
+
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-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))}.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"] }]
|
|
27464
27775
|
}], propDecorators: { toggled: [{
|
|
27465
27776
|
type: Input
|
|
27466
27777
|
}], disabled: [{
|
|
@@ -29372,7 +29683,7 @@ class MetadataContactComponent {
|
|
|
29372
29683
|
this.organizationClick.emit(this.shownOrganization);
|
|
29373
29684
|
}
|
|
29374
29685
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29375
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, 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
|
|
29686
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, 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\">\n <div class=\"grid gap-3 overflow-hidden\">\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 <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
|
|
29376
29687
|
provideIcons({
|
|
29377
29688
|
matOpenInNew,
|
|
29378
29689
|
matCallOutline,
|
|
@@ -29392,7 +29703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29392
29703
|
matPersonOutline,
|
|
29393
29704
|
matLocationOnOutline,
|
|
29394
29705
|
}),
|
|
29395
|
-
], template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black
|
|
29706
|
+
], template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black\">\n <div class=\"grid gap-3 overflow-hidden\">\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 <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\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 <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\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" }]
|
|
29396
29707
|
}], propDecorators: { metadata: [{
|
|
29397
29708
|
type: Input
|
|
29398
29709
|
}], organizationClick: [{
|
|
@@ -29477,6 +29788,316 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29477
29788
|
}]
|
|
29478
29789
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
|
|
29479
29790
|
|
|
29791
|
+
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
29792
|
+
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
29793
|
+
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
29794
|
+
factory: () => ({}),
|
|
29795
|
+
});
|
|
29796
|
+
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
29797
|
+
factory: () => ({
|
|
29798
|
+
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
29799
|
+
stroke: { color: '#ffcc33', width: 2 },
|
|
29800
|
+
}),
|
|
29801
|
+
});
|
|
29802
|
+
|
|
29803
|
+
const DEFAULT_BASEMAP_LAYER = {
|
|
29804
|
+
type: 'xyz',
|
|
29805
|
+
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
29806
|
+
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
29807
|
+
};
|
|
29808
|
+
const DEFAULT_VIEW = {
|
|
29809
|
+
center: [0, 15],
|
|
29810
|
+
zoom: 2,
|
|
29811
|
+
};
|
|
29812
|
+
class MapContainerComponent {
|
|
29813
|
+
get featuresClick() {
|
|
29814
|
+
if (!this._featuresClick) {
|
|
29815
|
+
this.openlayersMap.then((olMap) => {
|
|
29816
|
+
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
29817
|
+
});
|
|
29818
|
+
this._featuresClick = new EventEmitter();
|
|
29819
|
+
}
|
|
29820
|
+
return this._featuresClick;
|
|
29821
|
+
}
|
|
29822
|
+
get featuresHover() {
|
|
29823
|
+
if (!this._featuresHover) {
|
|
29824
|
+
this.openlayersMap.then((olMap) => {
|
|
29825
|
+
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
29826
|
+
});
|
|
29827
|
+
this._featuresHover = new EventEmitter();
|
|
29828
|
+
}
|
|
29829
|
+
return this._featuresHover;
|
|
29830
|
+
}
|
|
29831
|
+
get mapClick() {
|
|
29832
|
+
if (!this._mapClick) {
|
|
29833
|
+
this.openlayersMap.then((olMap) => {
|
|
29834
|
+
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
29835
|
+
});
|
|
29836
|
+
this._mapClick = new EventEmitter();
|
|
29837
|
+
}
|
|
29838
|
+
return this._mapClick;
|
|
29839
|
+
}
|
|
29840
|
+
get sourceLoadError() {
|
|
29841
|
+
if (!this._sourceLoadError) {
|
|
29842
|
+
this.openlayersMap.then((olMap) => {
|
|
29843
|
+
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
29844
|
+
});
|
|
29845
|
+
this._sourceLoadError = new EventEmitter();
|
|
29846
|
+
}
|
|
29847
|
+
return this._sourceLoadError;
|
|
29848
|
+
}
|
|
29849
|
+
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
29850
|
+
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
29851
|
+
this.basemapLayers = basemapLayers;
|
|
29852
|
+
this.mapViewConstraints = mapViewConstraints;
|
|
29853
|
+
this.openlayersMap = new Promise((resolve) => {
|
|
29854
|
+
this.olMapResolver = resolve;
|
|
29855
|
+
});
|
|
29856
|
+
}
|
|
29857
|
+
async ngAfterViewInit() {
|
|
29858
|
+
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
29859
|
+
this.displayMessage$ = merge(fromEvent(this.olMap, 'mapmuted').pipe(map$1(() => true)), fromEvent(this.olMap, 'movestart').pipe(map$1(() => false)), fromEvent(this.olMap, 'singleclick').pipe(map$1(() => false))).pipe(switchMap$1((muted) => muted
|
|
29860
|
+
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
29861
|
+
: of(false)));
|
|
29862
|
+
this.olMapResolver(this.olMap);
|
|
29863
|
+
}
|
|
29864
|
+
async ngOnChanges(changes) {
|
|
29865
|
+
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
29866
|
+
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
29867
|
+
await applyContextDiffToMap(this.olMap, diff);
|
|
29868
|
+
}
|
|
29869
|
+
}
|
|
29870
|
+
// This will apply basemap layers & view constraints
|
|
29871
|
+
processContext(context) {
|
|
29872
|
+
const processed = context
|
|
29873
|
+
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
29874
|
+
: { layers: [], view: DEFAULT_VIEW };
|
|
29875
|
+
if (this.basemapLayers.length) {
|
|
29876
|
+
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
29877
|
+
}
|
|
29878
|
+
if (!this.doNotUseDefaultBasemap) {
|
|
29879
|
+
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
29880
|
+
}
|
|
29881
|
+
if (this.mapViewConstraints.maxZoom) {
|
|
29882
|
+
processed.view = {
|
|
29883
|
+
maxZoom: this.mapViewConstraints.maxZoom,
|
|
29884
|
+
...processed.view,
|
|
29885
|
+
};
|
|
29886
|
+
}
|
|
29887
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
29888
|
+
processed.view = {
|
|
29889
|
+
maxExtent: this.mapViewConstraints.maxExtent,
|
|
29890
|
+
...processed.view,
|
|
29891
|
+
};
|
|
29892
|
+
}
|
|
29893
|
+
if (processed.view &&
|
|
29894
|
+
!('zoom' in processed.view) &&
|
|
29895
|
+
!('center' in processed.view)) {
|
|
29896
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
29897
|
+
processed.view = {
|
|
29898
|
+
extent: this.mapViewConstraints.maxExtent,
|
|
29899
|
+
...processed.view,
|
|
29900
|
+
};
|
|
29901
|
+
}
|
|
29902
|
+
else {
|
|
29903
|
+
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
29904
|
+
}
|
|
29905
|
+
}
|
|
29906
|
+
return processed;
|
|
29907
|
+
}
|
|
29908
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29909
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", sourceLoadError: "sourceLoadError" }, providers: [
|
|
29910
|
+
provideIcons({ matSwipeOutline }),
|
|
29911
|
+
provideNgIconsConfig({
|
|
29912
|
+
size: '1.5em',
|
|
29913
|
+
}),
|
|
29914
|
+
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29915
|
+
}
|
|
29916
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
29917
|
+
type: Component,
|
|
29918
|
+
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
29919
|
+
provideIcons({ matSwipeOutline }),
|
|
29920
|
+
provideNgIconsConfig({
|
|
29921
|
+
size: '1.5em',
|
|
29922
|
+
}),
|
|
29923
|
+
], template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n" }]
|
|
29924
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
29925
|
+
type: Inject,
|
|
29926
|
+
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
29927
|
+
}] }, { type: undefined, decorators: [{
|
|
29928
|
+
type: Inject,
|
|
29929
|
+
args: [BASEMAP_LAYERS]
|
|
29930
|
+
}] }, { type: undefined, decorators: [{
|
|
29931
|
+
type: Inject,
|
|
29932
|
+
args: [MAP_VIEW_CONSTRAINTS]
|
|
29933
|
+
}] }], propDecorators: { context: [{
|
|
29934
|
+
type: Input
|
|
29935
|
+
}], featuresClick: [{
|
|
29936
|
+
type: Output
|
|
29937
|
+
}], featuresHover: [{
|
|
29938
|
+
type: Output
|
|
29939
|
+
}], mapClick: [{
|
|
29940
|
+
type: Output
|
|
29941
|
+
}], sourceLoadError: [{
|
|
29942
|
+
type: Output
|
|
29943
|
+
}], container: [{
|
|
29944
|
+
type: ViewChild,
|
|
29945
|
+
args: ['map']
|
|
29946
|
+
}] } });
|
|
29947
|
+
|
|
29948
|
+
const geometryKeys = ['geometry', 'the_geom'];
|
|
29949
|
+
class FeatureDetailComponent {
|
|
29950
|
+
get properties() {
|
|
29951
|
+
if (!this.feature)
|
|
29952
|
+
return [];
|
|
29953
|
+
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
29954
|
+
}
|
|
29955
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29956
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29957
|
+
}
|
|
29958
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
29959
|
+
type: Component,
|
|
29960
|
+
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"] }]
|
|
29961
|
+
}], propDecorators: { feature: [{
|
|
29962
|
+
type: Input
|
|
29963
|
+
}] } });
|
|
29964
|
+
|
|
29965
|
+
class MapLegendComponent {
|
|
29966
|
+
constructor() {
|
|
29967
|
+
this.legendStatusChange = new EventEmitter();
|
|
29968
|
+
}
|
|
29969
|
+
async ngOnChanges(changes) {
|
|
29970
|
+
if ('context' in changes) {
|
|
29971
|
+
const mapContext = changes['context'].currentValue;
|
|
29972
|
+
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
29973
|
+
const mapContextLayer = mapContext.layers[0];
|
|
29974
|
+
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
29975
|
+
if (this.legendHTML) {
|
|
29976
|
+
this.legendStatusChange.emit(true);
|
|
29977
|
+
}
|
|
29978
|
+
}
|
|
29979
|
+
else {
|
|
29980
|
+
this.legendHTML = false;
|
|
29981
|
+
this.legendStatusChange.emit(false);
|
|
29982
|
+
}
|
|
29983
|
+
}
|
|
29984
|
+
}
|
|
29985
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29986
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapLegendComponent, isStandalone: true, selector: "gn-ui-map-legend", inputs: { context: "context" }, outputs: { legendStatusChange: "legendStatusChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
29987
|
+
}
|
|
29988
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
29989
|
+
type: Component,
|
|
29990
|
+
args: [{ selector: 'gn-ui-map-legend', standalone: true, encapsulation: ViewEncapsulation.None, imports: [NgIf], template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"] }]
|
|
29991
|
+
}], propDecorators: { context: [{
|
|
29992
|
+
type: Input
|
|
29993
|
+
}], legendStatusChange: [{
|
|
29994
|
+
type: Output
|
|
29995
|
+
}] } });
|
|
29996
|
+
|
|
29997
|
+
function prioritizePageScroll(interactions) {
|
|
29998
|
+
interactions.clear();
|
|
29999
|
+
interactions.extend(defaults({
|
|
30000
|
+
// remove rotate interactions
|
|
30001
|
+
altShiftDragRotate: false,
|
|
30002
|
+
pinchRotate: false,
|
|
30003
|
+
// replace drag and zoom interactions
|
|
30004
|
+
dragPan: false,
|
|
30005
|
+
mouseWheelZoom: false,
|
|
30006
|
+
})
|
|
30007
|
+
.extend([
|
|
30008
|
+
new DragPan({
|
|
30009
|
+
condition: dragPanCondition,
|
|
30010
|
+
}),
|
|
30011
|
+
new MouseWheelZoom({
|
|
30012
|
+
condition: mouseWheelZoomCondition,
|
|
30013
|
+
}),
|
|
30014
|
+
])
|
|
30015
|
+
.getArray());
|
|
30016
|
+
}
|
|
30017
|
+
function dragPanCondition(event) {
|
|
30018
|
+
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
30019
|
+
if (!dragPanCondition) {
|
|
30020
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30021
|
+
}
|
|
30022
|
+
// combine the condition with the default DragPan conditions
|
|
30023
|
+
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
30024
|
+
}
|
|
30025
|
+
function mouseWheelZoomCondition(event) {
|
|
30026
|
+
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
30027
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30028
|
+
}
|
|
30029
|
+
return platformModifierKeyOnly(event);
|
|
30030
|
+
}
|
|
30031
|
+
|
|
30032
|
+
class SpatialExtentComponent {
|
|
30033
|
+
constructor() {
|
|
30034
|
+
this.spatialExtents$ = new BehaviorSubject([]);
|
|
30035
|
+
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
30036
|
+
if (extents.length === 0) {
|
|
30037
|
+
return null; // null extent means default view
|
|
30038
|
+
}
|
|
30039
|
+
const featureCollection = {
|
|
30040
|
+
type: 'FeatureCollection',
|
|
30041
|
+
features: [],
|
|
30042
|
+
};
|
|
30043
|
+
extents.forEach((extent) => {
|
|
30044
|
+
if (extent.geometry) {
|
|
30045
|
+
featureCollection.features.push({
|
|
30046
|
+
type: 'Feature',
|
|
30047
|
+
properties: {},
|
|
30048
|
+
geometry: extent.geometry,
|
|
30049
|
+
});
|
|
30050
|
+
}
|
|
30051
|
+
else if (extent.bbox?.length >= 0) {
|
|
30052
|
+
featureCollection.features.push({
|
|
30053
|
+
type: 'Feature',
|
|
30054
|
+
properties: {},
|
|
30055
|
+
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
30056
|
+
});
|
|
30057
|
+
}
|
|
30058
|
+
});
|
|
30059
|
+
const layer = {
|
|
30060
|
+
type: 'geojson',
|
|
30061
|
+
data: featureCollection,
|
|
30062
|
+
label: 'Spatial extents',
|
|
30063
|
+
style: {
|
|
30064
|
+
'stroke-color': 'black',
|
|
30065
|
+
'stroke-width': 2,
|
|
30066
|
+
},
|
|
30067
|
+
};
|
|
30068
|
+
const view = await createViewFromLayer(layer);
|
|
30069
|
+
return {
|
|
30070
|
+
view,
|
|
30071
|
+
layers: [layer],
|
|
30072
|
+
};
|
|
30073
|
+
}));
|
|
30074
|
+
this.error = '';
|
|
30075
|
+
}
|
|
30076
|
+
set spatialExtents(value) {
|
|
30077
|
+
this.spatialExtents$.next(value);
|
|
30078
|
+
}
|
|
30079
|
+
bboxCoordsToGeometry(bbox) {
|
|
30080
|
+
const geometry = new Polygon([
|
|
30081
|
+
[
|
|
30082
|
+
[bbox[0], bbox[1]],
|
|
30083
|
+
[bbox[0], bbox[3]],
|
|
30084
|
+
[bbox[2], bbox[3]],
|
|
30085
|
+
[bbox[2], bbox[1]],
|
|
30086
|
+
[bbox[0], bbox[1]],
|
|
30087
|
+
],
|
|
30088
|
+
]);
|
|
30089
|
+
return new GeoJSON().writeGeometryObject(geometry);
|
|
30090
|
+
}
|
|
30091
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30092
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpatialExtentComponent, isStandalone: true, selector: "gn-ui-spatial-extent", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }] }); }
|
|
30093
|
+
}
|
|
30094
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, decorators: [{
|
|
30095
|
+
type: Component,
|
|
30096
|
+
args: [{ selector: 'gn-ui-spatial-extent', standalone: true, imports: [CommonModule, MapContainerComponent], template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n" }]
|
|
30097
|
+
}], propDecorators: { spatialExtents: [{
|
|
30098
|
+
type: Input
|
|
30099
|
+
}] } });
|
|
30100
|
+
|
|
29480
30101
|
class MetadataInfoComponent {
|
|
29481
30102
|
constructor(dateService) {
|
|
29482
30103
|
this.dateService = dateService;
|
|
@@ -29529,7 +30150,7 @@ class MetadataInfoComponent {
|
|
|
29529
30150
|
}
|
|
29530
30151
|
}
|
|
29531
30152
|
get temporalExtent() {
|
|
29532
|
-
const temporalExtents = this.metadata.temporalExtents;
|
|
30153
|
+
const temporalExtents = this.metadata.kind === 'dataset' ? this.metadata.temporalExtents : [];
|
|
29533
30154
|
return getTemporalRangeUnion(temporalExtents, this.dateService);
|
|
29534
30155
|
}
|
|
29535
30156
|
get shownOrganization() {
|
|
@@ -29551,7 +30172,7 @@ class MetadataInfoComponent {
|
|
|
29551
30172
|
return this.dateService.formatDateTime(date);
|
|
29552
30173
|
}
|
|
29553
30174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29554
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, 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\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-primary text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\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.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { 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"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }], viewProviders: [
|
|
30175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, 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\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\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.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | 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 && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { 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"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
29555
30176
|
provideIcons({
|
|
29556
30177
|
matOpenInNew,
|
|
29557
30178
|
matMailOutline: matMailOutline$1,
|
|
@@ -29572,12 +30193,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29572
30193
|
CopyTextButtonComponent,
|
|
29573
30194
|
NgIcon,
|
|
29574
30195
|
GnUiLinkifyDirective,
|
|
30196
|
+
MapContainerComponent,
|
|
30197
|
+
SpatialExtentComponent,
|
|
29575
30198
|
], viewProviders: [
|
|
29576
30199
|
provideIcons({
|
|
29577
30200
|
matOpenInNew,
|
|
29578
30201
|
matMailOutline: matMailOutline$1,
|
|
29579
30202
|
}),
|
|
29580
|
-
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-primary text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\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.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}\n"] }]
|
|
30203
|
+
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\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.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | 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 && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
29581
30204
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
29582
30205
|
type: Input
|
|
29583
30206
|
}], incomplete: [{
|
|
@@ -29949,7 +30572,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29949
30572
|
type: Input
|
|
29950
30573
|
}] } });
|
|
29951
30574
|
|
|
29952
|
-
marker('record.kind.
|
|
30575
|
+
marker('record.kind.data');
|
|
29953
30576
|
marker('record.kind.reuse');
|
|
29954
30577
|
marker('record.kind.service');
|
|
29955
30578
|
class InternalLinkCardComponent {
|
|
@@ -30029,7 +30652,7 @@ class InternalLinkCardComponent {
|
|
|
30029
30652
|
return { text: '', icon: '' };
|
|
30030
30653
|
switch (this.record.kind.toLowerCase()) {
|
|
30031
30654
|
case 'dataset':
|
|
30032
|
-
return { text: 'record.kind.
|
|
30655
|
+
return { text: 'record.kind.data', icon: 'iconoirDatabase' };
|
|
30033
30656
|
case 'reuse':
|
|
30034
30657
|
return { text: 'record.kind.reuse', icon: 'iconoirMap' };
|
|
30035
30658
|
case 'service':
|
|
@@ -30097,6 +30720,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30097
30720
|
type: Output
|
|
30098
30721
|
}] } });
|
|
30099
30722
|
|
|
30723
|
+
marker(`service.metadata.search`);
|
|
30724
|
+
marker(`service.metadata.capabilities.title`);
|
|
30725
|
+
marker(`service.metadata.capabilities.abstract`);
|
|
30726
|
+
marker(`service.metadata.capabilities.name`);
|
|
30727
|
+
marker(`service.metadata.capabilities.defaultCrs`);
|
|
30728
|
+
marker(`service.metadata.capabilities.availableCrs`);
|
|
30729
|
+
marker(`service.metadata.capabilities.otherCrs`);
|
|
30730
|
+
marker(`service.metadata.capabilities.objectCount`);
|
|
30731
|
+
marker(`service.metadata.capabilities.geometryName`);
|
|
30732
|
+
marker(`service.metadata.capabilities.geometryType`);
|
|
30733
|
+
marker(`service.metadata.capabilities.keywords`);
|
|
30734
|
+
marker(`service.metadata.capabilities.outputFormats`);
|
|
30735
|
+
marker(`service.metadata.capabilities.resourceLinks`);
|
|
30736
|
+
marker(`service.metadata.capabilities.attribution`);
|
|
30737
|
+
class ServiceCapabilitiesComponent {
|
|
30738
|
+
constructor(cdr, translateService) {
|
|
30739
|
+
this.cdr = cdr;
|
|
30740
|
+
this.translateService = translateService;
|
|
30741
|
+
this.apiLinks = [];
|
|
30742
|
+
this.availableLayers = [];
|
|
30743
|
+
this.filteredLayers = [];
|
|
30744
|
+
this.selectedLayer = null;
|
|
30745
|
+
this.layerInformation = [];
|
|
30746
|
+
this.searchQuery = '';
|
|
30747
|
+
this.loading = false;
|
|
30748
|
+
this.capabilitiesKeys = [
|
|
30749
|
+
'title',
|
|
30750
|
+
'abstract',
|
|
30751
|
+
'name',
|
|
30752
|
+
'defaultCrs',
|
|
30753
|
+
'availableCrs',
|
|
30754
|
+
'otherCrs',
|
|
30755
|
+
'objectCount',
|
|
30756
|
+
'geometryName',
|
|
30757
|
+
'geometryType',
|
|
30758
|
+
'keywords',
|
|
30759
|
+
'outputFormats',
|
|
30760
|
+
'resourceLinks',
|
|
30761
|
+
'attribution',
|
|
30762
|
+
];
|
|
30763
|
+
}
|
|
30764
|
+
ngOnInit() {
|
|
30765
|
+
this.loadLayers();
|
|
30766
|
+
}
|
|
30767
|
+
onSearchChange(event) {
|
|
30768
|
+
const input = event.target;
|
|
30769
|
+
this.searchQuery = input.value;
|
|
30770
|
+
if (!input.value) {
|
|
30771
|
+
this.searchActive = false;
|
|
30772
|
+
this.filteredLayers = this.availableLayers;
|
|
30773
|
+
}
|
|
30774
|
+
}
|
|
30775
|
+
onSearchEnter(event) {
|
|
30776
|
+
if (event.key === 'Enter') {
|
|
30777
|
+
this.searchActive = true;
|
|
30778
|
+
this.searchLayers();
|
|
30779
|
+
}
|
|
30780
|
+
}
|
|
30781
|
+
async loadLayers() {
|
|
30782
|
+
if (this.apiLinks.length > 0 &&
|
|
30783
|
+
this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures') {
|
|
30784
|
+
this.loading = true;
|
|
30785
|
+
this.availableLayers = await getLayers(this.apiLinks[0].url.href, this.apiLinks[0].accessServiceProtocol);
|
|
30786
|
+
this.loading = false;
|
|
30787
|
+
this.cdr.detectChanges();
|
|
30788
|
+
this.filteredLayers = this.availableLayers;
|
|
30789
|
+
}
|
|
30790
|
+
else {
|
|
30791
|
+
this.availableLayers = [];
|
|
30792
|
+
}
|
|
30793
|
+
}
|
|
30794
|
+
selectLayer(layer) {
|
|
30795
|
+
if (layer === this.selectedLayer) {
|
|
30796
|
+
this.selectedLayer = null;
|
|
30797
|
+
this.layerInformation = [];
|
|
30798
|
+
return;
|
|
30799
|
+
}
|
|
30800
|
+
this.selectedLayer = layer;
|
|
30801
|
+
const filteredInfo = [];
|
|
30802
|
+
Object.keys(layer).map((key) => {
|
|
30803
|
+
if (this.capabilitiesKeys.includes(key)) {
|
|
30804
|
+
const displayName = this.translateService.instant(`service.metadata.capabilities.${key}`);
|
|
30805
|
+
if (key in layer && layer[key]?.length) {
|
|
30806
|
+
filteredInfo.push({ displayName, value: layer[key] });
|
|
30807
|
+
}
|
|
30808
|
+
}
|
|
30809
|
+
});
|
|
30810
|
+
this.layerInformation = filteredInfo;
|
|
30811
|
+
}
|
|
30812
|
+
isList(value) {
|
|
30813
|
+
return Array.isArray(value);
|
|
30814
|
+
}
|
|
30815
|
+
getExtraInputClass() {
|
|
30816
|
+
if (this.searchActive) {
|
|
30817
|
+
return 'h-14 border rounded-lg border-primary text-primary focus:border-primary hover:border-primary';
|
|
30818
|
+
}
|
|
30819
|
+
return 'h-14 border rounded-lg';
|
|
30820
|
+
}
|
|
30821
|
+
searchLayers() {
|
|
30822
|
+
this.searchActive = true;
|
|
30823
|
+
this.filteredLayers = this.availableLayers.filter((layer) => {
|
|
30824
|
+
const query = this.searchQuery.toLowerCase();
|
|
30825
|
+
if (layer.title) {
|
|
30826
|
+
return (layer.title.toLowerCase().includes(query) ||
|
|
30827
|
+
layer.abstract?.toLowerCase().includes(query));
|
|
30828
|
+
}
|
|
30829
|
+
else {
|
|
30830
|
+
return layer.name.toLowerCase().includes(query);
|
|
30831
|
+
}
|
|
30832
|
+
});
|
|
30833
|
+
if (!this.filteredLayers.includes(this.selectedLayer)) {
|
|
30834
|
+
this.selectedLayer = null;
|
|
30835
|
+
this.layerInformation = [];
|
|
30836
|
+
}
|
|
30837
|
+
}
|
|
30838
|
+
getExtraClass(layerItem) {
|
|
30839
|
+
return layerItem.title === this.selectedLayer?.title
|
|
30840
|
+
? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
|
|
30841
|
+
: `h-8 rounded-lg`;
|
|
30842
|
+
}
|
|
30843
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30844
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 512px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
|
|
30845
|
+
provideIcons({
|
|
30846
|
+
iconoirSearch,
|
|
30847
|
+
matInfoOutline,
|
|
30848
|
+
}),
|
|
30849
|
+
] }); }
|
|
30850
|
+
}
|
|
30851
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, decorators: [{
|
|
30852
|
+
type: Component,
|
|
30853
|
+
args: [{ selector: 'gn-ui-service-capabilities', standalone: true, imports: [
|
|
30854
|
+
CommonModule,
|
|
30855
|
+
TranslateModule,
|
|
30856
|
+
ButtonComponent,
|
|
30857
|
+
TextInputComponent,
|
|
30858
|
+
NgIcon,
|
|
30859
|
+
PopoverComponent,
|
|
30860
|
+
SpinningLoaderComponent,
|
|
30861
|
+
], viewProviders: [
|
|
30862
|
+
provideIcons({
|
|
30863
|
+
iconoirSearch,
|
|
30864
|
+
matInfoOutline,
|
|
30865
|
+
}),
|
|
30866
|
+
], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 512px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
|
|
30867
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { apiLinks: [{
|
|
30868
|
+
type: Input
|
|
30869
|
+
}] } });
|
|
30870
|
+
|
|
30100
30871
|
class UiElementsModule {
|
|
30101
30872
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
30102
30873
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, declarations: [AvatarComponent, UserPreviewComponent], imports: [CommonModule,
|
|
@@ -30116,13 +30887,15 @@ class UiElementsModule {
|
|
|
30116
30887
|
TextInputComponent,
|
|
30117
30888
|
ImageInputComponent,
|
|
30118
30889
|
ApplicationBannerComponent,
|
|
30119
|
-
InternalLinkCardComponent
|
|
30890
|
+
InternalLinkCardComponent,
|
|
30891
|
+
ServiceCapabilitiesComponent], exports: [ThumbnailComponent,
|
|
30120
30892
|
AvatarComponent,
|
|
30121
30893
|
UserPreviewComponent,
|
|
30122
30894
|
MarkdownParserComponent,
|
|
30123
30895
|
ImageInputComponent,
|
|
30124
30896
|
ApplicationBannerComponent,
|
|
30125
|
-
InternalLinkCardComponent
|
|
30897
|
+
InternalLinkCardComponent,
|
|
30898
|
+
ServiceCapabilitiesComponent] }); }
|
|
30126
30899
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
30127
30900
|
provideNgIconsConfig({
|
|
30128
30901
|
size: '1.5em',
|
|
@@ -30143,7 +30916,8 @@ class UiElementsModule {
|
|
|
30143
30916
|
TextInputComponent,
|
|
30144
30917
|
ImageInputComponent,
|
|
30145
30918
|
ApplicationBannerComponent,
|
|
30146
|
-
InternalLinkCardComponent
|
|
30919
|
+
InternalLinkCardComponent,
|
|
30920
|
+
ServiceCapabilitiesComponent] }); }
|
|
30147
30921
|
}
|
|
30148
30922
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
30149
30923
|
type: NgModule,
|
|
@@ -30169,6 +30943,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30169
30943
|
ImageInputComponent,
|
|
30170
30944
|
ApplicationBannerComponent,
|
|
30171
30945
|
InternalLinkCardComponent,
|
|
30946
|
+
ServiceCapabilitiesComponent,
|
|
30172
30947
|
],
|
|
30173
30948
|
providers: [
|
|
30174
30949
|
provideNgIconsConfig({
|
|
@@ -30184,6 +30959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30184
30959
|
ImageInputComponent,
|
|
30185
30960
|
ApplicationBannerComponent,
|
|
30186
30961
|
InternalLinkCardComponent,
|
|
30962
|
+
ServiceCapabilitiesComponent,
|
|
30187
30963
|
],
|
|
30188
30964
|
}]
|
|
30189
30965
|
}] });
|
|
@@ -30524,8 +31300,9 @@ class ResultsTableComponent {
|
|
|
30524
31300
|
return getBadgeColor(format);
|
|
30525
31301
|
}
|
|
30526
31302
|
handleRecordClick(item) {
|
|
30527
|
-
if (item?.extras?.edit || this.isDraftPage)
|
|
31303
|
+
if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
|
|
30528
31304
|
this.recordClick.emit(item);
|
|
31305
|
+
}
|
|
30529
31306
|
}
|
|
30530
31307
|
handleDuplicate(item) {
|
|
30531
31308
|
this.duplicateRecord.emit(item);
|
|
@@ -30562,7 +31339,7 @@ class ResultsTableComponent {
|
|
|
30562
31339
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30563
31340
|
}
|
|
30564
31341
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1$9.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30565
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light'
|
|
31342
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete", "isDraftPage"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
|
|
30566
31343
|
}
|
|
30567
31344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30568
31345
|
type: Component,
|
|
@@ -30576,7 +31353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30576
31353
|
ActionMenuComponent,
|
|
30577
31354
|
NgIconComponent,
|
|
30578
31355
|
CdkOverlayOrigin,
|
|
30579
|
-
], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light'
|
|
31356
|
+
], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
30580
31357
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30581
31358
|
type: Input
|
|
30582
31359
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -31607,9 +32384,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31607
32384
|
type: Injectable
|
|
31608
32385
|
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
31609
32386
|
|
|
31610
|
-
class RecordsRepositoryInterface {
|
|
31611
|
-
}
|
|
31612
|
-
|
|
31613
32387
|
class FuzzySearchComponent {
|
|
31614
32388
|
constructor(searchFacade, searchService, recordsRepository) {
|
|
31615
32389
|
this.searchFacade = searchFacade;
|
|
@@ -31748,7 +32522,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31748
32522
|
}] }] });
|
|
31749
32523
|
|
|
31750
32524
|
// expects the replacement key ${uuid}
|
|
31751
|
-
const
|
|
32525
|
+
const RECORD_DATASET_URL_TOKEN = new InjectionToken('record-dataset-url-token');
|
|
32526
|
+
const RECORD_SERVICE_URL_TOKEN = new InjectionToken('record-service-url-token');
|
|
32527
|
+
const RECORD_REUSE_URL_TOKEN = new InjectionToken('record-reuse-url-token');
|
|
31752
32528
|
|
|
31753
32529
|
class FavoriteStarComponent {
|
|
31754
32530
|
set record(value) {
|
|
@@ -31775,9 +32551,10 @@ class FavoriteStarComponent {
|
|
|
31775
32551
|
this.isAnonymous$ = this.platformService.isAnonymous();
|
|
31776
32552
|
this.loading = false;
|
|
31777
32553
|
this.loginUrl = this.authService.loginUrl;
|
|
31778
|
-
this.loginMessage$ = this.translateService.
|
|
32554
|
+
this.loginMessage$ = this.translateService.onLangChange.pipe(startWith(null), // make sure to wait for translations to be loaded with and without language change
|
|
32555
|
+
switchMap$1(() => this.translateService.get('favorite.not.authenticated.tooltip', {
|
|
31779
32556
|
link: this.loginUrl,
|
|
31780
|
-
});
|
|
32557
|
+
})));
|
|
31781
32558
|
}
|
|
31782
32559
|
ngAfterViewInit() {
|
|
31783
32560
|
this.subscription = this.isAnonymous$
|
|
@@ -31833,11 +32610,11 @@ class FavoriteStarComponent {
|
|
|
31833
32610
|
});
|
|
31834
32611
|
}
|
|
31835
32612
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31836
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, 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 items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"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 ></gn-ui-star-toggle>\n
|
|
32613
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, 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 items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"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 ></gn-ui-star-toggle>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31837
32614
|
}
|
|
31838
32615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
31839
32616
|
type: Component,
|
|
31840
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"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 ></gn-ui-star-toggle>\n
|
|
32617
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent, TranslateModule], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"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 ></gn-ui-star-toggle>\n</div>\n" }]
|
|
31841
32618
|
}], ctorParameters: () => [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }], propDecorators: { displayCount: [{
|
|
31842
32619
|
type: Input
|
|
31843
32620
|
}], record: [{
|
|
@@ -31848,10 +32625,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31848
32625
|
}] } });
|
|
31849
32626
|
|
|
31850
32627
|
class ResultsListContainerComponent {
|
|
31851
|
-
constructor(facade, resultsLayoutConfig,
|
|
32628
|
+
constructor(facade, resultsLayoutConfig, recordDatasetUrlTemplate, recordServiceUrlTemplate, recordReuseUrlTemplate) {
|
|
31852
32629
|
this.facade = facade;
|
|
31853
32630
|
this.resultsLayoutConfig = resultsLayoutConfig;
|
|
31854
|
-
this.
|
|
32631
|
+
this.recordDatasetUrlTemplate = recordDatasetUrlTemplate;
|
|
32632
|
+
this.recordServiceUrlTemplate = recordServiceUrlTemplate;
|
|
32633
|
+
this.recordReuseUrlTemplate = recordReuseUrlTemplate;
|
|
31855
32634
|
this.showMore = 'auto';
|
|
31856
32635
|
this.mdSelect = new EventEmitter();
|
|
31857
32636
|
this.errorTypes = ErrorType;
|
|
@@ -31883,16 +32662,24 @@ class ResultsListContainerComponent {
|
|
|
31883
32662
|
this.facade.scroll();
|
|
31884
32663
|
}
|
|
31885
32664
|
getRecordUrl(metadata) {
|
|
31886
|
-
|
|
32665
|
+
const tokenMap = {
|
|
32666
|
+
dataset: this.recordDatasetUrlTemplate,
|
|
32667
|
+
service: this.recordServiceUrlTemplate,
|
|
32668
|
+
reuse: this.recordReuseUrlTemplate,
|
|
32669
|
+
};
|
|
32670
|
+
if (!this.recordDatasetUrlTemplate &&
|
|
32671
|
+
!this.recordServiceUrlTemplate &&
|
|
32672
|
+
!this.recordReuseUrlTemplate)
|
|
31887
32673
|
return null;
|
|
31888
|
-
|
|
32674
|
+
const urlKind = tokenMap[metadata.kind];
|
|
32675
|
+
return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
|
|
31889
32676
|
}
|
|
31890
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token:
|
|
31891
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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 *ngIf=\"allowShowMore$ | async\">\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-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-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$2.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: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
32677
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_DATASET_URL_TOKEN, optional: true }, { token: RECORD_SERVICE_URL_TOKEN }, { token: RECORD_REUSE_URL_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32678
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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 *ngIf=\"allowShowMore$ | async\">\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 [style.--gn-ui-button-width]=\"!auto\"\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-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-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: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"], dependencies: [{ kind: "directive", type: i1$2.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: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
31892
32679
|
}
|
|
31893
32680
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
31894
32681
|
type: Component,
|
|
31895
|
-
args: [{ selector: 'gn-ui-results-list-container', 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 *ngIf=\"allowShowMore$ | async\">\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-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-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" }]
|
|
32682
|
+
args: [{ selector: 'gn-ui-results-list-container', 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 *ngIf=\"allowShowMore$ | async\">\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 [style.--gn-ui-button-width]=\"!auto\"\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-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-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: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"] }]
|
|
31896
32683
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: undefined, decorators: [{
|
|
31897
32684
|
type: Inject,
|
|
31898
32685
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
@@ -31900,7 +32687,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31900
32687
|
type: Optional
|
|
31901
32688
|
}, {
|
|
31902
32689
|
type: Inject,
|
|
31903
|
-
args: [
|
|
32690
|
+
args: [RECORD_DATASET_URL_TOKEN]
|
|
32691
|
+
}] }, { type: undefined, decorators: [{
|
|
32692
|
+
type: Inject,
|
|
32693
|
+
args: [RECORD_SERVICE_URL_TOKEN]
|
|
32694
|
+
}] }, { type: undefined, decorators: [{
|
|
32695
|
+
type: Inject,
|
|
32696
|
+
args: [RECORD_REUSE_URL_TOKEN]
|
|
31904
32697
|
}] }], propDecorators: { metadataQualityDisplay: [{
|
|
31905
32698
|
type: Input
|
|
31906
32699
|
}], layout: [{
|
|
@@ -32652,12 +33445,7 @@ class FeatureSearchModule {
|
|
|
32652
33445
|
FacetsModule,
|
|
32653
33446
|
SearchStateContainerDirective,
|
|
32654
33447
|
FilterDropdownComponent] }); }
|
|
32655
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule,
|
|
32656
|
-
{
|
|
32657
|
-
provide: RecordsRepositoryInterface,
|
|
32658
|
-
useClass: Gn4Repository,
|
|
32659
|
-
},
|
|
32660
|
-
], imports: [CommonModule,
|
|
33448
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, imports: [CommonModule,
|
|
32661
33449
|
TranslateModule.forChild(),
|
|
32662
33450
|
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
32663
33451
|
initialState,
|
|
@@ -32719,12 +33507,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32719
33507
|
SearchStateContainerDirective,
|
|
32720
33508
|
FilterDropdownComponent,
|
|
32721
33509
|
],
|
|
32722
|
-
providers: [
|
|
32723
|
-
{
|
|
32724
|
-
provide: RecordsRepositoryInterface,
|
|
32725
|
-
useClass: Gn4Repository,
|
|
32726
|
-
},
|
|
32727
|
-
],
|
|
32728
33510
|
}]
|
|
32729
33511
|
}] });
|
|
32730
33512
|
|
|
@@ -33212,247 +33994,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33212
33994
|
}]
|
|
33213
33995
|
}] });
|
|
33214
33996
|
|
|
33215
|
-
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
33216
|
-
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
33217
|
-
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
33218
|
-
factory: () => ({}),
|
|
33219
|
-
});
|
|
33220
|
-
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
33221
|
-
factory: () => ({
|
|
33222
|
-
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
33223
|
-
stroke: { color: '#ffcc33', width: 2 },
|
|
33224
|
-
}),
|
|
33225
|
-
});
|
|
33226
|
-
|
|
33227
|
-
const DEFAULT_BASEMAP_LAYER = {
|
|
33228
|
-
type: 'xyz',
|
|
33229
|
-
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
33230
|
-
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
33231
|
-
};
|
|
33232
|
-
const DEFAULT_VIEW = {
|
|
33233
|
-
center: [0, 15],
|
|
33234
|
-
zoom: 2,
|
|
33235
|
-
};
|
|
33236
|
-
class MapContainerComponent {
|
|
33237
|
-
get featuresClick() {
|
|
33238
|
-
if (!this._featuresClick) {
|
|
33239
|
-
this.openlayersMap.then((olMap) => {
|
|
33240
|
-
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
33241
|
-
});
|
|
33242
|
-
this._featuresClick = new EventEmitter();
|
|
33243
|
-
}
|
|
33244
|
-
return this._featuresClick;
|
|
33245
|
-
}
|
|
33246
|
-
get featuresHover() {
|
|
33247
|
-
if (!this._featuresHover) {
|
|
33248
|
-
this.openlayersMap.then((olMap) => {
|
|
33249
|
-
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
33250
|
-
});
|
|
33251
|
-
this._featuresHover = new EventEmitter();
|
|
33252
|
-
}
|
|
33253
|
-
return this._featuresHover;
|
|
33254
|
-
}
|
|
33255
|
-
get mapClick() {
|
|
33256
|
-
if (!this._mapClick) {
|
|
33257
|
-
this.openlayersMap.then((olMap) => {
|
|
33258
|
-
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
33259
|
-
});
|
|
33260
|
-
this._mapClick = new EventEmitter();
|
|
33261
|
-
}
|
|
33262
|
-
return this._mapClick;
|
|
33263
|
-
}
|
|
33264
|
-
get sourceLoadError() {
|
|
33265
|
-
if (!this._sourceLoadError) {
|
|
33266
|
-
this.openlayersMap.then((olMap) => {
|
|
33267
|
-
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
33268
|
-
});
|
|
33269
|
-
this._sourceLoadError = new EventEmitter();
|
|
33270
|
-
}
|
|
33271
|
-
return this._sourceLoadError;
|
|
33272
|
-
}
|
|
33273
|
-
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
33274
|
-
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
33275
|
-
this.basemapLayers = basemapLayers;
|
|
33276
|
-
this.mapViewConstraints = mapViewConstraints;
|
|
33277
|
-
this.openlayersMap = new Promise((resolve) => {
|
|
33278
|
-
this.olMapResolver = resolve;
|
|
33279
|
-
});
|
|
33280
|
-
}
|
|
33281
|
-
async ngAfterViewInit() {
|
|
33282
|
-
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
33283
|
-
this.displayMessage$ = merge(fromEvent(this.olMap, 'mapmuted').pipe(map$1(() => true)), fromEvent(this.olMap, 'movestart').pipe(map$1(() => false)), fromEvent(this.olMap, 'singleclick').pipe(map$1(() => false))).pipe(switchMap$1((muted) => muted
|
|
33284
|
-
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
33285
|
-
: of(false)));
|
|
33286
|
-
this.olMapResolver(this.olMap);
|
|
33287
|
-
}
|
|
33288
|
-
async ngOnChanges(changes) {
|
|
33289
|
-
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
33290
|
-
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
33291
|
-
await applyContextDiffToMap(this.olMap, diff);
|
|
33292
|
-
}
|
|
33293
|
-
}
|
|
33294
|
-
// This will apply basemap layers & view constraints
|
|
33295
|
-
processContext(context) {
|
|
33296
|
-
const processed = context
|
|
33297
|
-
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
33298
|
-
: { layers: [], view: DEFAULT_VIEW };
|
|
33299
|
-
if (this.basemapLayers.length) {
|
|
33300
|
-
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
33301
|
-
}
|
|
33302
|
-
if (!this.doNotUseDefaultBasemap) {
|
|
33303
|
-
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
33304
|
-
}
|
|
33305
|
-
if (this.mapViewConstraints.maxZoom) {
|
|
33306
|
-
processed.view = {
|
|
33307
|
-
maxZoom: this.mapViewConstraints.maxZoom,
|
|
33308
|
-
...processed.view,
|
|
33309
|
-
};
|
|
33310
|
-
}
|
|
33311
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33312
|
-
processed.view = {
|
|
33313
|
-
maxExtent: this.mapViewConstraints.maxExtent,
|
|
33314
|
-
...processed.view,
|
|
33315
|
-
};
|
|
33316
|
-
}
|
|
33317
|
-
if (processed.view &&
|
|
33318
|
-
!('zoom' in processed.view) &&
|
|
33319
|
-
!('center' in processed.view)) {
|
|
33320
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33321
|
-
processed.view = {
|
|
33322
|
-
extent: this.mapViewConstraints.maxExtent,
|
|
33323
|
-
...processed.view,
|
|
33324
|
-
};
|
|
33325
|
-
}
|
|
33326
|
-
else {
|
|
33327
|
-
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
33328
|
-
}
|
|
33329
|
-
}
|
|
33330
|
-
return processed;
|
|
33331
|
-
}
|
|
33332
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33333
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", sourceLoadError: "sourceLoadError" }, providers: [
|
|
33334
|
-
provideIcons({ matSwipeOutline }),
|
|
33335
|
-
provideNgIconsConfig({
|
|
33336
|
-
size: '1.5em',
|
|
33337
|
-
}),
|
|
33338
|
-
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33339
|
-
}
|
|
33340
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
33341
|
-
type: Component,
|
|
33342
|
-
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
33343
|
-
provideIcons({ matSwipeOutline }),
|
|
33344
|
-
provideNgIconsConfig({
|
|
33345
|
-
size: '1.5em',
|
|
33346
|
-
}),
|
|
33347
|
-
], template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n" }]
|
|
33348
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
33349
|
-
type: Inject,
|
|
33350
|
-
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
33351
|
-
}] }, { type: undefined, decorators: [{
|
|
33352
|
-
type: Inject,
|
|
33353
|
-
args: [BASEMAP_LAYERS]
|
|
33354
|
-
}] }, { type: undefined, decorators: [{
|
|
33355
|
-
type: Inject,
|
|
33356
|
-
args: [MAP_VIEW_CONSTRAINTS]
|
|
33357
|
-
}] }], propDecorators: { context: [{
|
|
33358
|
-
type: Input
|
|
33359
|
-
}], featuresClick: [{
|
|
33360
|
-
type: Output
|
|
33361
|
-
}], featuresHover: [{
|
|
33362
|
-
type: Output
|
|
33363
|
-
}], mapClick: [{
|
|
33364
|
-
type: Output
|
|
33365
|
-
}], sourceLoadError: [{
|
|
33366
|
-
type: Output
|
|
33367
|
-
}], container: [{
|
|
33368
|
-
type: ViewChild,
|
|
33369
|
-
args: ['map']
|
|
33370
|
-
}] } });
|
|
33371
|
-
|
|
33372
|
-
const geometryKeys = ['geometry', 'the_geom'];
|
|
33373
|
-
class FeatureDetailComponent {
|
|
33374
|
-
get properties() {
|
|
33375
|
-
if (!this.feature)
|
|
33376
|
-
return [];
|
|
33377
|
-
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
33378
|
-
}
|
|
33379
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33380
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33381
|
-
}
|
|
33382
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
33383
|
-
type: Component,
|
|
33384
|
-
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"] }]
|
|
33385
|
-
}], propDecorators: { feature: [{
|
|
33386
|
-
type: Input
|
|
33387
|
-
}] } });
|
|
33388
|
-
|
|
33389
|
-
class MapLegendComponent {
|
|
33390
|
-
constructor() {
|
|
33391
|
-
this.legendStatusChange = new EventEmitter();
|
|
33392
|
-
}
|
|
33393
|
-
async ngOnChanges(changes) {
|
|
33394
|
-
if ('context' in changes) {
|
|
33395
|
-
const mapContext = changes['context'].currentValue;
|
|
33396
|
-
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
33397
|
-
const mapContextLayer = mapContext.layers[0];
|
|
33398
|
-
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
33399
|
-
if (this.legendHTML) {
|
|
33400
|
-
this.legendStatusChange.emit(true);
|
|
33401
|
-
}
|
|
33402
|
-
}
|
|
33403
|
-
else {
|
|
33404
|
-
this.legendHTML = false;
|
|
33405
|
-
this.legendStatusChange.emit(false);
|
|
33406
|
-
}
|
|
33407
|
-
}
|
|
33408
|
-
}
|
|
33409
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33410
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapLegendComponent, isStandalone: true, selector: "gn-ui-map-legend", inputs: { context: "context" }, outputs: { legendStatusChange: "legendStatusChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
33411
|
-
}
|
|
33412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
33413
|
-
type: Component,
|
|
33414
|
-
args: [{ selector: 'gn-ui-map-legend', standalone: true, encapsulation: ViewEncapsulation.None, imports: [NgIf], template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"] }]
|
|
33415
|
-
}], propDecorators: { context: [{
|
|
33416
|
-
type: Input
|
|
33417
|
-
}], legendStatusChange: [{
|
|
33418
|
-
type: Output
|
|
33419
|
-
}] } });
|
|
33420
|
-
|
|
33421
|
-
function prioritizePageScroll(interactions) {
|
|
33422
|
-
interactions.clear();
|
|
33423
|
-
interactions.extend(defaults({
|
|
33424
|
-
// remove rotate interactions
|
|
33425
|
-
altShiftDragRotate: false,
|
|
33426
|
-
pinchRotate: false,
|
|
33427
|
-
// replace drag and zoom interactions
|
|
33428
|
-
dragPan: false,
|
|
33429
|
-
mouseWheelZoom: false,
|
|
33430
|
-
})
|
|
33431
|
-
.extend([
|
|
33432
|
-
new DragPan({
|
|
33433
|
-
condition: dragPanCondition,
|
|
33434
|
-
}),
|
|
33435
|
-
new MouseWheelZoom({
|
|
33436
|
-
condition: mouseWheelZoomCondition,
|
|
33437
|
-
}),
|
|
33438
|
-
])
|
|
33439
|
-
.getArray());
|
|
33440
|
-
}
|
|
33441
|
-
function dragPanCondition(event) {
|
|
33442
|
-
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
33443
|
-
if (!dragPanCondition) {
|
|
33444
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33445
|
-
}
|
|
33446
|
-
// combine the condition with the default DragPan conditions
|
|
33447
|
-
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
33448
|
-
}
|
|
33449
|
-
function mouseWheelZoomCondition(event) {
|
|
33450
|
-
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
33451
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33452
|
-
}
|
|
33453
|
-
return platformModifierKeyOnly(event);
|
|
33454
|
-
}
|
|
33455
|
-
|
|
33456
33997
|
class MapStateContainerComponent {
|
|
33457
33998
|
constructor(mapFacade) {
|
|
33458
33999
|
this.mapFacade = mapFacade;
|
|
@@ -34104,6 +34645,7 @@ function loadAppConfig() {
|
|
|
34104
34645
|
'metadata_language',
|
|
34105
34646
|
'login_url',
|
|
34106
34647
|
'logout_url',
|
|
34648
|
+
'settings_url',
|
|
34107
34649
|
'web_component_embedder_url',
|
|
34108
34650
|
'languages',
|
|
34109
34651
|
'contact_email',
|
|
@@ -34254,6 +34796,7 @@ proxy_path = "/proxy/?url="
|
|
|
34254
34796
|
metadata_language = "fre"
|
|
34255
34797
|
login_url = "/cas/login?service="
|
|
34256
34798
|
logout_url = "/geonetwork/signout"
|
|
34799
|
+
settings_url = "/geonetwork/settings"
|
|
34257
34800
|
web_component_embedder_url = "/datahub/wc-embedder.html"
|
|
34258
34801
|
|
|
34259
34802
|
[map]
|
|
@@ -36768,6 +37311,10 @@ class ChartViewComponent {
|
|
|
36768
37311
|
this.dataset$ = this.currentLink$.pipe(filter((link) => !!link), switchMap$1((link) => {
|
|
36769
37312
|
this.error = null;
|
|
36770
37313
|
this.loading = true;
|
|
37314
|
+
if (link.accessRestricted) {
|
|
37315
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
37316
|
+
return EMPTY;
|
|
37317
|
+
}
|
|
36771
37318
|
return this.dataService.getDataset(link, this.cacheActive).pipe(catchError((error) => {
|
|
36772
37319
|
this.handleError(error);
|
|
36773
37320
|
return EMPTY;
|
|
@@ -37032,6 +37579,10 @@ class TableViewComponent {
|
|
|
37032
37579
|
this.error = null;
|
|
37033
37580
|
if (!link)
|
|
37034
37581
|
return of(undefined);
|
|
37582
|
+
if (link.accessRestricted) {
|
|
37583
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
37584
|
+
return of([]);
|
|
37585
|
+
}
|
|
37035
37586
|
this.loading = true;
|
|
37036
37587
|
return this.getDatasetReader(link).pipe(catchError((error) => {
|
|
37037
37588
|
this.handleError(error);
|
|
@@ -37109,15 +37660,13 @@ class MdViewFacade {
|
|
|
37109
37660
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
37110
37661
|
this.related$ = this.store.pipe(select(getRelated));
|
|
37111
37662
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
37112
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) =>
|
|
37113
|
-
? record.onlineResources
|
|
37114
|
-
: []));
|
|
37663
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('onlineResources' in record ? record.onlineResources : [])));
|
|
37115
37664
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links
|
|
37116
37665
|
.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
|
|
37117
37666
|
// Put links to IGN Géoplateforme first
|
|
37118
37667
|
.sort((dd1, dd2) => {
|
|
37119
|
-
return dd2
|
|
37120
|
-
'GPFDL'
|
|
37668
|
+
return dd2
|
|
37669
|
+
.accessServiceProtocol === 'GPFDL'
|
|
37121
37670
|
? 1
|
|
37122
37671
|
: undefined; // do not change the sorting otherwise
|
|
37123
37672
|
})));
|
|
@@ -37188,15 +37737,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37188
37737
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }, { type: DataService }] });
|
|
37189
37738
|
|
|
37190
37739
|
class MdViewEffects {
|
|
37191
|
-
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
37740
|
+
constructor(actions$, recordsRepository, platformServiceInterface, router) {
|
|
37192
37741
|
this.actions$ = actions$;
|
|
37193
37742
|
this.recordsRepository = recordsRepository;
|
|
37194
37743
|
this.platformServiceInterface = platformServiceInterface;
|
|
37744
|
+
this.router = router;
|
|
37195
37745
|
/*
|
|
37196
37746
|
Metadata effects
|
|
37197
37747
|
*/
|
|
37198
37748
|
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
37199
|
-
if (record === null) {
|
|
37749
|
+
if (record === null || !this.router.url.includes(record.kind)) {
|
|
37200
37750
|
return loadFullMetadataFailure({ notFound: true });
|
|
37201
37751
|
}
|
|
37202
37752
|
return loadFullMetadataSuccess({ full: record });
|
|
@@ -37231,12 +37781,12 @@ class MdViewEffects {
|
|
|
37231
37781
|
}));
|
|
37232
37782
|
})))));
|
|
37233
37783
|
}
|
|
37234
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$c.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37784
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$c.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37235
37785
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects }); }
|
|
37236
37786
|
}
|
|
37237
37787
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
37238
37788
|
type: Injectable
|
|
37239
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }] });
|
|
37789
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }, { type: i1$d.Router }] });
|
|
37240
37790
|
|
|
37241
37791
|
class CatalogTitleComponent {
|
|
37242
37792
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CatalogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -37293,11 +37843,11 @@ class LanguageSwitcherComponent {
|
|
|
37293
37843
|
this.translate.use(value);
|
|
37294
37844
|
}
|
|
37295
37845
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37296
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LanguageSwitcherComponent, isStandalone: true, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !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", "disabled"], outputs: ["selectValue"] }] }); }
|
|
37846
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LanguageSwitcherComponent, isStandalone: true, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1 rounded-lg\"\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", "disabled"], outputs: ["selectValue"] }] }); }
|
|
37297
37847
|
}
|
|
37298
37848
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
37299
37849
|
type: Component,
|
|
37300
|
-
args: [{ selector: 'gn-ui-language-switcher', imports: [DropdownSelectorComponent], standalone: true, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
37850
|
+
args: [{ selector: 'gn-ui-language-switcher', imports: [DropdownSelectorComponent], standalone: true, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1 rounded-lg\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
37301
37851
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
37302
37852
|
type: Optional
|
|
37303
37853
|
}, {
|
|
@@ -37719,17 +38269,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37719
38269
|
}]
|
|
37720
38270
|
}] });
|
|
37721
38271
|
|
|
37722
|
-
const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
37723
|
-
|
|
37724
38272
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
37725
38273
|
class DataViewPermalinkComponent {
|
|
37726
38274
|
set viewType(value) {
|
|
37727
38275
|
this.viewType$.next(value);
|
|
37728
38276
|
}
|
|
37729
|
-
constructor(config, wcEmbedderBaseUrl,
|
|
38277
|
+
constructor(config, wcEmbedderBaseUrl, facade) {
|
|
37730
38278
|
this.config = config;
|
|
37731
38279
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
37732
|
-
this.version = version;
|
|
37733
38280
|
this.facade = facade;
|
|
37734
38281
|
this.viewType$ = new BehaviorSubject('map');
|
|
37735
38282
|
this.permalinkUrl$ = combineLatest([
|
|
@@ -37738,7 +38285,7 @@ class DataViewPermalinkComponent {
|
|
|
37738
38285
|
this.facade.metadata$,
|
|
37739
38286
|
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
37740
38287
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
37741
|
-
url.searchParams.set('v', `${
|
|
38288
|
+
url.searchParams.set('v', `${GEONETWORK_UI_TAG_NAME}`);
|
|
37742
38289
|
if (viewType === 'chart') {
|
|
37743
38290
|
if (config) {
|
|
37744
38291
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
@@ -37769,7 +38316,7 @@ class DataViewPermalinkComponent {
|
|
|
37769
38316
|
return url.toString();
|
|
37770
38317
|
}));
|
|
37771
38318
|
}
|
|
37772
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token:
|
|
38319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37773
38320
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewPermalinkComponent, isStandalone: true, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37774
38321
|
}
|
|
37775
38322
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
@@ -37783,9 +38330,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37783
38330
|
}, {
|
|
37784
38331
|
type: Inject,
|
|
37785
38332
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
37786
|
-
}] }, { type: undefined, decorators: [{
|
|
37787
|
-
type: Inject,
|
|
37788
|
-
args: [GN_UI_VERSION]
|
|
37789
38333
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37790
38334
|
type: Input
|
|
37791
38335
|
}] } });
|
|
@@ -37864,16 +38408,15 @@ class DataViewWebComponentComponent {
|
|
|
37864
38408
|
set viewType(value) {
|
|
37865
38409
|
this.viewType$.next(value);
|
|
37866
38410
|
}
|
|
37867
|
-
constructor(config,
|
|
38411
|
+
constructor(config, facade) {
|
|
37868
38412
|
this.config = config;
|
|
37869
|
-
this.version = version;
|
|
37870
38413
|
this.facade = facade;
|
|
37871
38414
|
this.viewType$ = new BehaviorSubject('map');
|
|
37872
38415
|
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
37873
38416
|
if (viewType === 'chart') {
|
|
37874
38417
|
if (config) {
|
|
37875
38418
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
37876
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38419
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37877
38420
|
<gn-dataset-view-chart
|
|
37878
38421
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37879
38422
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37892,7 +38435,7 @@ class DataViewWebComponentComponent {
|
|
|
37892
38435
|
return '';
|
|
37893
38436
|
}
|
|
37894
38437
|
else if (viewType === 'table') {
|
|
37895
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38438
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37896
38439
|
<gn-dataset-view-table
|
|
37897
38440
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37898
38441
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37905,7 +38448,7 @@ class DataViewWebComponentComponent {
|
|
|
37905
38448
|
></gn-dataset-view-table>`;
|
|
37906
38449
|
}
|
|
37907
38450
|
else {
|
|
37908
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38451
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37909
38452
|
<gn-dataset-view-map
|
|
37910
38453
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37911
38454
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37919,7 +38462,7 @@ class DataViewWebComponentComponent {
|
|
|
37919
38462
|
}
|
|
37920
38463
|
}));
|
|
37921
38464
|
}
|
|
37922
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token:
|
|
38465
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37923
38466
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewWebComponentComponent, isStandalone: true, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37924
38467
|
}
|
|
37925
38468
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
@@ -37928,9 +38471,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37928
38471
|
}], ctorParameters: () => [{ type: Configuration, decorators: [{
|
|
37929
38472
|
type: Inject,
|
|
37930
38473
|
args: [Configuration]
|
|
37931
|
-
}] }, { type: undefined, decorators: [{
|
|
37932
|
-
type: Inject,
|
|
37933
|
-
args: [GN_UI_VERSION]
|
|
37934
38474
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37935
38475
|
type: Input
|
|
37936
38476
|
}] } });
|
|
@@ -38026,6 +38566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38026
38566
|
|
|
38027
38567
|
marker('map.dropdown.placeholder');
|
|
38028
38568
|
marker('wfs.feature.limit');
|
|
38569
|
+
marker('dataset.error.restrictedAccess');
|
|
38029
38570
|
class MapViewComponent {
|
|
38030
38571
|
set exceedsLimit(value) {
|
|
38031
38572
|
this.excludeWfs$.next(value);
|
|
@@ -38077,6 +38618,10 @@ class MapViewComponent {
|
|
|
38077
38618
|
this.hidePreview = false;
|
|
38078
38619
|
this.loading = true;
|
|
38079
38620
|
this.error = null;
|
|
38621
|
+
if (link.accessRestricted) {
|
|
38622
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
38623
|
+
return of([]);
|
|
38624
|
+
}
|
|
38080
38625
|
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
38081
38626
|
this.handleError(e);
|
|
38082
38627
|
return of([]);
|
|
@@ -38426,7 +38971,7 @@ class RecordMetaComponent {
|
|
|
38426
38971
|
this.meta.removeTag('property="og:url"');
|
|
38427
38972
|
this.meta.removeTag('property="og:title"');
|
|
38428
38973
|
}
|
|
38429
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$
|
|
38974
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$e.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38430
38975
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordMetaComponent, isStandalone: true, selector: "gn-ui-record-meta", inputs: { metadata: "metadata" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38431
38976
|
}
|
|
38432
38977
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
|
|
@@ -38437,7 +38982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38437
38982
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38438
38983
|
standalone: true,
|
|
38439
38984
|
}]
|
|
38440
|
-
}], ctorParameters: () => [{ type: i1$
|
|
38985
|
+
}], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
|
|
38441
38986
|
type: Input
|
|
38442
38987
|
}] } });
|
|
38443
38988
|
|
|
@@ -39485,7 +40030,7 @@ class ImportRecordComponent {
|
|
|
39485
40030
|
},
|
|
39486
40031
|
});
|
|
39487
40032
|
}
|
|
39488
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$
|
|
40033
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$d.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39489
40034
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImportRecordComponent, isStandalone: true, selector: "gn-ui-import-record", outputs: { closeImportMenu: "closeImportMenu" }, providers: [
|
|
39490
40035
|
provideIcons({
|
|
39491
40036
|
iconoirImport,
|
|
@@ -39516,7 +40061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39516
40061
|
size: '1.5em',
|
|
39517
40062
|
}),
|
|
39518
40063
|
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
39519
|
-
}], ctorParameters: () => [{ type: i1$
|
|
40064
|
+
}], ctorParameters: () => [{ type: i1$d.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
|
|
39520
40065
|
type: Output
|
|
39521
40066
|
}] } });
|
|
39522
40067
|
|
|
@@ -39880,75 +40425,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39880
40425
|
args: [{ selector: 'gn-ui-form-field-array', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-array works!</p>\n" }]
|
|
39881
40426
|
}] });
|
|
39882
40427
|
|
|
39883
|
-
class FormFieldMapContainerComponent {
|
|
39884
|
-
constructor() {
|
|
39885
|
-
this.spatialExtents$ = new BehaviorSubject([]);
|
|
39886
|
-
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
39887
|
-
if (extents.length === 0) {
|
|
39888
|
-
return null; // null extent means default view
|
|
39889
|
-
}
|
|
39890
|
-
const featureCollection = {
|
|
39891
|
-
type: 'FeatureCollection',
|
|
39892
|
-
features: [],
|
|
39893
|
-
};
|
|
39894
|
-
extents.forEach((extent) => {
|
|
39895
|
-
if (extent.geometry) {
|
|
39896
|
-
featureCollection.features.push({
|
|
39897
|
-
type: 'Feature',
|
|
39898
|
-
properties: {},
|
|
39899
|
-
geometry: extent.geometry,
|
|
39900
|
-
});
|
|
39901
|
-
}
|
|
39902
|
-
else if (extent.bbox?.length >= 0) {
|
|
39903
|
-
featureCollection.features.push({
|
|
39904
|
-
type: 'Feature',
|
|
39905
|
-
properties: {},
|
|
39906
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
39907
|
-
});
|
|
39908
|
-
}
|
|
39909
|
-
});
|
|
39910
|
-
const layer = {
|
|
39911
|
-
type: 'geojson',
|
|
39912
|
-
data: featureCollection,
|
|
39913
|
-
label: 'Spatial extents',
|
|
39914
|
-
style: {
|
|
39915
|
-
'stroke-color': 'black',
|
|
39916
|
-
'stroke-width': 2,
|
|
39917
|
-
},
|
|
39918
|
-
};
|
|
39919
|
-
const view = await createViewFromLayer(layer);
|
|
39920
|
-
return {
|
|
39921
|
-
view,
|
|
39922
|
-
layers: [layer],
|
|
39923
|
-
};
|
|
39924
|
-
}));
|
|
39925
|
-
this.error = '';
|
|
39926
|
-
}
|
|
39927
|
-
set spatialExtents(value) {
|
|
39928
|
-
this.spatialExtents$.next(value);
|
|
39929
|
-
}
|
|
39930
|
-
bboxCoordsToGeometry(bbox) {
|
|
39931
|
-
const geometry = new Polygon([
|
|
39932
|
-
[
|
|
39933
|
-
[bbox[0], bbox[1]],
|
|
39934
|
-
[bbox[0], bbox[3]],
|
|
39935
|
-
[bbox[2], bbox[3]],
|
|
39936
|
-
[bbox[2], bbox[1]],
|
|
39937
|
-
[bbox[0], bbox[1]],
|
|
39938
|
-
],
|
|
39939
|
-
]);
|
|
39940
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
39941
|
-
}
|
|
39942
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39943
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldMapContainerComponent, isStandalone: true, selector: "gn-ui-form-field-map-container", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39944
|
-
}
|
|
39945
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
39946
|
-
type: Component,
|
|
39947
|
-
args: [{ selector: 'gn-ui-form-field-map-container', standalone: true, imports: [CommonModule, MapContainerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n" }]
|
|
39948
|
-
}], propDecorators: { spatialExtents: [{
|
|
39949
|
-
type: Input
|
|
39950
|
-
}] } });
|
|
39951
|
-
|
|
39952
40428
|
/**
|
|
39953
40429
|
* This form field is not like the others, as it will read directly from the state to handle both spatial extents
|
|
39954
40430
|
* and place keywords.
|
|
@@ -40045,16 +40521,16 @@ class FormFieldSpatialExtentComponent {
|
|
|
40045
40521
|
this.editorFacade.updateRecordField('spatialExtents', spatialExtents);
|
|
40046
40522
|
}
|
|
40047
40523
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, deps: [{ token: PlatformServiceInterface }, { token: EditorFacade }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40048
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSpatialExtentComponent, isStandalone: true, selector: "gn-ui-form-field-spatial-extent", ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-
|
|
40524
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSpatialExtentComponent, isStandalone: true, selector: "gn-ui-form-field-spatial-extent", ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-spatial-extent\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-spatial-extent>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40049
40525
|
}
|
|
40050
40526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, decorators: [{
|
|
40051
40527
|
type: Component,
|
|
40052
40528
|
args: [{ selector: 'gn-ui-form-field-spatial-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
40053
40529
|
CommonModule,
|
|
40054
40530
|
GenericKeywordsComponent,
|
|
40055
|
-
FormFieldMapContainerComponent,
|
|
40056
40531
|
TranslateModule,
|
|
40057
|
-
|
|
40532
|
+
SpatialExtentComponent,
|
|
40533
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-spatial-extent\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-spatial-extent>\n </div>\n</div>\n" }]
|
|
40058
40534
|
}], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: EditorFacade }, { type: i1$1.TranslateService }] });
|
|
40059
40535
|
|
|
40060
40536
|
class ContactCardComponent {
|
|
@@ -40312,9 +40788,8 @@ class OnlineResourceCardComponent {
|
|
|
40312
40788
|
get subtitle() {
|
|
40313
40789
|
switch (this.onlineResource.type) {
|
|
40314
40790
|
case 'service':
|
|
40315
|
-
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40316
40791
|
case 'endpoint':
|
|
40317
|
-
return `${this.onlineResource.
|
|
40792
|
+
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40318
40793
|
case 'link':
|
|
40319
40794
|
case 'download':
|
|
40320
40795
|
return this.getFormat(this.onlineResource);
|
|
@@ -41471,6 +41946,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41471
41946
|
const ROUTER_STATE_KEY = 'router';
|
|
41472
41947
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
41473
41948
|
const ROUTER_ROUTE_DATASET = 'dataset';
|
|
41949
|
+
const ROUTER_ROUTE_SERVICE = 'service';
|
|
41950
|
+
const ROUTER_ROUTE_REUSE = 'reuse';
|
|
41474
41951
|
const ROUTER_ROUTE_ORGANIZATION = 'organization';
|
|
41475
41952
|
var ROUTE_PARAMS;
|
|
41476
41953
|
(function (ROUTE_PARAMS) {
|
|
@@ -41503,6 +41980,14 @@ class RouterService {
|
|
|
41503
41980
|
path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
|
|
41504
41981
|
component: this.routerConfig.recordRouteComponent,
|
|
41505
41982
|
},
|
|
41983
|
+
{
|
|
41984
|
+
path: `${ROUTER_ROUTE_SERVICE}/:metadataUuid`,
|
|
41985
|
+
component: this.routerConfig.recordRouteComponent,
|
|
41986
|
+
},
|
|
41987
|
+
{
|
|
41988
|
+
path: `${ROUTER_ROUTE_REUSE}/:metadataUuid`,
|
|
41989
|
+
component: this.routerConfig.recordRouteComponent,
|
|
41990
|
+
},
|
|
41506
41991
|
{
|
|
41507
41992
|
path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
|
|
41508
41993
|
component: this.routerConfig.organizationRouteComponent,
|
|
@@ -41515,7 +42000,7 @@ class RouterService {
|
|
|
41515
42000
|
getOrganizationPageRoute() {
|
|
41516
42001
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
41517
42002
|
}
|
|
41518
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
42003
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41519
42004
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
41520
42005
|
}
|
|
41521
42006
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -41526,7 +42011,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41526
42011
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
41527
42012
|
type: Inject,
|
|
41528
42013
|
args: [ROUTER_CONFIG]
|
|
41529
|
-
}] }, { type: i1$
|
|
42014
|
+
}] }, { type: i1$d.Router }] });
|
|
41530
42015
|
|
|
41531
42016
|
const goAction = createAction('[Router] Go', props());
|
|
41532
42017
|
const backAction = createAction('[Router] Back');
|
|
@@ -41598,13 +42083,19 @@ class RouterFacade {
|
|
|
41598
42083
|
this.currentRoute$ = this.store.pipe(select(selectCurrentRoute));
|
|
41599
42084
|
this.pathParams$ = this.store.pipe(select(selectRouteParams));
|
|
41600
42085
|
this.searchParams$ = this.currentRoute$.pipe(filter((route) => !!route), filter((route) => route.url[0]?.path.startsWith(ROUTER_ROUTE_SEARCH)), map$1((route) => route.queryParams), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), map$1(expandQueryParams));
|
|
42086
|
+
this.routeMap = {
|
|
42087
|
+
dataset: ROUTER_ROUTE_DATASET,
|
|
42088
|
+
service: ROUTER_ROUTE_SERVICE,
|
|
42089
|
+
reuse: ROUTER_ROUTE_REUSE,
|
|
42090
|
+
};
|
|
41601
42091
|
}
|
|
41602
42092
|
goToMetadata(metadata) {
|
|
42093
|
+
const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET;
|
|
41603
42094
|
this.pathParams$
|
|
41604
42095
|
.pipe(take(1), filter((params) => params.metadataUuid !== metadata.uniqueIdentifier))
|
|
41605
42096
|
.subscribe(() => {
|
|
41606
42097
|
this.go({
|
|
41607
|
-
path: `${
|
|
42098
|
+
path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
|
|
41608
42099
|
});
|
|
41609
42100
|
this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
|
|
41610
42101
|
});
|
|
@@ -41831,12 +42322,12 @@ class RouterEffects {
|
|
|
41831
42322
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
41832
42323
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
41833
42324
|
}
|
|
41834
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$
|
|
42325
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41835
42326
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
41836
42327
|
}
|
|
41837
42328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
41838
42329
|
type: Injectable
|
|
41839
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$
|
|
42330
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
41840
42331
|
type: Inject,
|
|
41841
42332
|
args: [ROUTER_CONFIG]
|
|
41842
42333
|
}] }, { type: FieldsService }] });
|
|
@@ -41896,5 +42387,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41896
42387
|
* Generated bundle index. Do not edit.
|
|
41897
42388
|
*/
|
|
41898
42389
|
|
|
41899
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
42390
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
41900
42391
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|