geonetwork-ui 2.6.0-dev.0716b5712 → 2.6.0-dev.0739ca76d
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 +3 -1
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +163 -0
- 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/metadata-quality/metadata-quality.component.mjs +3 -3
- 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 +16 -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/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
- 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 +32 -4
- package/esm2022/translations/en.json +32 -4
- package/esm2022/translations/es.json +32 -4
- package/esm2022/translations/fr.json +34 -6
- package/esm2022/translations/it.json +32 -4
- package/esm2022/translations/nl.json +32 -4
- package/esm2022/translations/pt.json +32 -4
- package/fesm2022/geonetwork-ui.mjs +1160 -481
- 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 +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +43 -0
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -0
- 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 +3 -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 +1 -7
- 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 +2 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +156 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +190 -0
- 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/metadata-quality/metadata-quality.component.html +4 -2
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
- 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 +6 -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/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -2
- 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 +32 -4
- package/translations/en.json +32 -4
- package/translations/es.json +32 -4
- package/translations/fr.json +34 -6
- package/translations/it.json +32 -4
- package/translations/nl.json +32 -4
- package/translations/pt.json +32 -4
- package/translations/sk.json +32 -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/internal-link-card/internal-link-card.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, NgOptimizedImage, DatePipe
|
|
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';
|
|
@@ -26,8 +26,8 @@ import { createAction, props, createReducer, on, createFeatureSelector, createSe
|
|
|
26
26
|
import EmblaCarousel from 'embla-carousel';
|
|
27
27
|
import * as i2$2 from '@ng-icons/core';
|
|
28
28
|
import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
-
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirDatabase, iconoirMap, iconoirInternet, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
+
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matCode, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
31
31
|
import * as i1$4 from '@angular/material/tooltip';
|
|
32
32
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
33
33
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
@@ -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, 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
|
}
|
|
@@ -18602,6 +18602,7 @@ var records$6 = "Datensätze";
|
|
|
18602
18602
|
var de = {
|
|
18603
18603
|
"": "",
|
|
18604
18604
|
"Add Layer As": "",
|
|
18605
|
+
"Enter to search": "",
|
|
18605
18606
|
"button.login": "",
|
|
18606
18607
|
"catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
|
|
18607
18608
|
"catalog.figures.organizations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
|
|
@@ -18663,7 +18664,6 @@ var de = {
|
|
|
18663
18664
|
"datahub.news.contact.title": "Ein spezielles Bedürfnis?",
|
|
18664
18665
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
18665
18666
|
"datahub.news.figures": "Indikatoren",
|
|
18666
|
-
"datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
|
|
18667
18667
|
"datahub.search.back": "Zurück",
|
|
18668
18668
|
"datahub.search.filter.all": "Alle",
|
|
18669
18669
|
"datahub.search.filter.generatedByAPI": "Generiert durch eine API",
|
|
@@ -18673,6 +18673,7 @@ var de = {
|
|
|
18673
18673
|
"dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
|
|
18674
18674
|
"dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
|
|
18675
18675
|
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
18676
|
+
"dataset.error.restrictedAccess": "",
|
|
18676
18677
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
18677
18678
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
18678
18679
|
"domain.contact.role.author": "",
|
|
@@ -18833,6 +18834,7 @@ var de = {
|
|
|
18833
18834
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18834
18835
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18835
18836
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18837
|
+
"editor.record.lock.format": "",
|
|
18836
18838
|
"editor.record.lock.reason": "",
|
|
18837
18839
|
"editor.record.onlineResource.protocol.other": "",
|
|
18838
18840
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -18892,7 +18894,6 @@ var de = {
|
|
|
18892
18894
|
"input.image.dropFileLabel": "",
|
|
18893
18895
|
"input.image.selectFileLabel": "",
|
|
18894
18896
|
"input.image.uploadErrorLabel": "",
|
|
18895
|
-
"input.image.uploadErrorRetry": "",
|
|
18896
18897
|
"input.image.uploadProgressCancel": "",
|
|
18897
18898
|
"input.image.uploadProgressLabel": "",
|
|
18898
18899
|
"language.ca": "Katalanisch",
|
|
@@ -18932,6 +18933,7 @@ var de = {
|
|
|
18932
18933
|
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
18933
18934
|
"multiselect.filter.placeholder": "Suche",
|
|
18934
18935
|
"nav.back": "Zurück",
|
|
18936
|
+
"navbar.mobile.menuTitle": "Schnellzugriff",
|
|
18935
18937
|
next: next$6,
|
|
18936
18938
|
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
18937
18939
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
@@ -18955,8 +18957,13 @@ var de = {
|
|
|
18955
18957
|
"record.action.duplicating": "",
|
|
18956
18958
|
"record.action.rollback": "",
|
|
18957
18959
|
"record.action.view": "Anzeigen",
|
|
18960
|
+
"record.card.metadata.contact": "",
|
|
18958
18961
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
18959
18962
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
18963
|
+
"record.kind.data": "",
|
|
18964
|
+
"record.kind.dataset": "",
|
|
18965
|
+
"record.kind.reuse": "",
|
|
18966
|
+
"record.kind.service": "",
|
|
18960
18967
|
"record.metadata.about": "Beschreibung",
|
|
18961
18968
|
"record.metadata.api": "API",
|
|
18962
18969
|
"record.metadata.api.form.closeButton": "Schließen",
|
|
@@ -18990,6 +18997,7 @@ var de = {
|
|
|
18990
18997
|
"record.metadata.api.form.zoneTitle": "",
|
|
18991
18998
|
"record.metadata.api.form.zoneTooltip": "",
|
|
18992
18999
|
"record.metadata.api.gpfdl": "",
|
|
19000
|
+
"record.metadata.capabilities": "",
|
|
18993
19001
|
"record.metadata.catalog": "Katalog",
|
|
18994
19002
|
"record.metadata.contact": "Kontakt",
|
|
18995
19003
|
"record.metadata.creation": "Erstellungsdatum",
|
|
@@ -19026,13 +19034,12 @@ var de = {
|
|
|
19026
19034
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19027
19035
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19028
19036
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
19029
|
-
"record.metadata.related.contents": "
|
|
19037
|
+
"record.metadata.related.contents": "",
|
|
19030
19038
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19031
19039
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19032
19040
|
"record.metadata.status": "Status",
|
|
19033
19041
|
"record.metadata.status.notPublished": "",
|
|
19034
19042
|
"record.metadata.status.published": "",
|
|
19035
|
-
"record.metadata.technical": "Technische Informationen",
|
|
19036
19043
|
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
19037
19044
|
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
19038
19045
|
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
@@ -19069,6 +19076,7 @@ var de = {
|
|
|
19069
19076
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19070
19077
|
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
19071
19078
|
"results.sortBy.relevancy": "Relevanz",
|
|
19079
|
+
"reuse.metadata.access": "",
|
|
19072
19080
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
19073
19081
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
19074
19082
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -19118,6 +19126,26 @@ var de = {
|
|
|
19118
19126
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
19119
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.",
|
|
19120
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": "",
|
|
19121
19149
|
"share.tab.permalink": "Teilen",
|
|
19122
19150
|
"share.tab.webComponent": "Integrieren",
|
|
19123
19151
|
"table.loading.data": "Daten werden geladen...",
|
|
@@ -19150,6 +19178,7 @@ var records$5 = "datasets";
|
|
|
19150
19178
|
var en = {
|
|
19151
19179
|
"": "",
|
|
19152
19180
|
"Add Layer As": "",
|
|
19181
|
+
"Enter to search": "",
|
|
19153
19182
|
"button.login": "Log in",
|
|
19154
19183
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
19155
19184
|
"catalog.figures.organizations": "{count, plural, =0{organizations} one{organization} other{organizations}}",
|
|
@@ -19211,7 +19240,6 @@ var en = {
|
|
|
19211
19240
|
"datahub.news.contact.title": "A specific need?",
|
|
19212
19241
|
"datahub.news.feed": "News feed",
|
|
19213
19242
|
"datahub.news.figures": "Indicators",
|
|
19214
|
-
"datahub.record.addToFavorites": "Add to favorites",
|
|
19215
19243
|
"datahub.search.back": "Back",
|
|
19216
19244
|
"datahub.search.filter.all": "All",
|
|
19217
19245
|
"datahub.search.filter.generatedByAPI": "Generated by an API",
|
|
@@ -19221,6 +19249,7 @@ var en = {
|
|
|
19221
19249
|
"dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
|
|
19222
19250
|
"dataset.error.network": "The data could not be loaded because of a network error or CORS limitations: \"{ info }\"",
|
|
19223
19251
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
19252
|
+
"dataset.error.restrictedAccess": "Access to this resource is restricted",
|
|
19224
19253
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
19225
19254
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
19226
19255
|
"domain.contact.role.author": "Author",
|
|
@@ -19381,6 +19410,7 @@ var en = {
|
|
|
19381
19410
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19382
19411
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19383
19412
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19413
|
+
"editor.record.lock.format": "Record with the format 'service' or 'reuse' are not editable",
|
|
19384
19414
|
"editor.record.lock.reason": "You are not an editor of the allowed groups",
|
|
19385
19415
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19386
19416
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
@@ -19440,7 +19470,6 @@ var en = {
|
|
|
19440
19470
|
"input.image.dropFileLabel": "or drop it here",
|
|
19441
19471
|
"input.image.selectFileLabel": "Select an image",
|
|
19442
19472
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19443
|
-
"input.image.uploadErrorRetry": "Retry",
|
|
19444
19473
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19445
19474
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19446
19475
|
"language.ca": "Catalan",
|
|
@@ -19480,6 +19509,7 @@ var en = {
|
|
|
19480
19509
|
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
19481
19510
|
"multiselect.filter.placeholder": "Search",
|
|
19482
19511
|
"nav.back": "Back",
|
|
19512
|
+
"navbar.mobile.menuTitle": "Quick access",
|
|
19483
19513
|
next: next$5,
|
|
19484
19514
|
"ogc.unreachable.unknown": "The service could not be reached",
|
|
19485
19515
|
"organisation.filter.placeholder": "Filter results",
|
|
@@ -19503,8 +19533,13 @@ var en = {
|
|
|
19503
19533
|
"record.action.duplicating": "Duplicating...",
|
|
19504
19534
|
"record.action.rollback": "Rollback",
|
|
19505
19535
|
"record.action.view": "View",
|
|
19536
|
+
"record.card.metadata.contact": "Metadata Contact",
|
|
19506
19537
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19507
19538
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19539
|
+
"record.kind.data": "Data",
|
|
19540
|
+
"record.kind.dataset": "Dataset",
|
|
19541
|
+
"record.kind.reuse": "Reuse",
|
|
19542
|
+
"record.kind.service": "Service",
|
|
19508
19543
|
"record.metadata.about": "Description",
|
|
19509
19544
|
"record.metadata.api": "API",
|
|
19510
19545
|
"record.metadata.api.form.closeButton": "Close",
|
|
@@ -19538,6 +19573,7 @@ var en = {
|
|
|
19538
19573
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
19539
19574
|
"record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
|
|
19540
19575
|
"record.metadata.api.gpfdl": "Data download",
|
|
19576
|
+
"record.metadata.capabilities": "Service capabilities",
|
|
19541
19577
|
"record.metadata.catalog": "Catalog",
|
|
19542
19578
|
"record.metadata.contact": "Contact",
|
|
19543
19579
|
"record.metadata.creation": "Date of creation",
|
|
@@ -19574,13 +19610,12 @@ var en = {
|
|
|
19574
19610
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19575
19611
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19576
19612
|
"record.metadata.related": "Related datasets",
|
|
19577
|
-
"record.metadata.related.contents": "Related
|
|
19613
|
+
"record.metadata.related.contents": "Related content",
|
|
19578
19614
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19579
19615
|
"record.metadata.sheet": "Original metadata",
|
|
19580
19616
|
"record.metadata.status": "Status",
|
|
19581
19617
|
"record.metadata.status.notPublished": "Not published",
|
|
19582
19618
|
"record.metadata.status.published": "Published",
|
|
19583
|
-
"record.metadata.technical": "Technical information",
|
|
19584
19619
|
"record.metadata.temporalExtent": "Temporal extent",
|
|
19585
19620
|
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
19586
19621
|
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
@@ -19617,6 +19652,7 @@ var en = {
|
|
|
19617
19652
|
"results.sortBy.popularity": "Popularity",
|
|
19618
19653
|
"results.sortBy.qualityScore": "Quality score",
|
|
19619
19654
|
"results.sortBy.relevancy": "Relevancy",
|
|
19655
|
+
"reuse.metadata.access": "Access the reuse",
|
|
19620
19656
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
19621
19657
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
19622
19658
|
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
@@ -19666,6 +19702,26 @@ var en = {
|
|
|
19666
19702
|
"search.filters.useSpatialFilter": "Show datasets in the area of interest first",
|
|
19667
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.",
|
|
19668
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",
|
|
19669
19725
|
"share.tab.permalink": "Share",
|
|
19670
19726
|
"share.tab.webComponent": "Integrate",
|
|
19671
19727
|
"table.loading.data": "Loading data...",
|
|
@@ -19698,6 +19754,7 @@ var records$4 = "";
|
|
|
19698
19754
|
var es = {
|
|
19699
19755
|
"": "",
|
|
19700
19756
|
"Add Layer As": "",
|
|
19757
|
+
"Enter to search": "",
|
|
19701
19758
|
"button.login": "",
|
|
19702
19759
|
"catalog.figures.datasets": "conjuntos de datos",
|
|
19703
19760
|
"catalog.figures.organizations": "organizaciones",
|
|
@@ -19759,7 +19816,6 @@ var es = {
|
|
|
19759
19816
|
"datahub.news.contact.title": "",
|
|
19760
19817
|
"datahub.news.feed": "",
|
|
19761
19818
|
"datahub.news.figures": "",
|
|
19762
|
-
"datahub.record.addToFavorites": "",
|
|
19763
19819
|
"datahub.search.back": "",
|
|
19764
19820
|
"datahub.search.filter.all": "",
|
|
19765
19821
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -19769,6 +19825,7 @@ var es = {
|
|
|
19769
19825
|
"dataset.error.http": "",
|
|
19770
19826
|
"dataset.error.network": "",
|
|
19771
19827
|
"dataset.error.parse": "",
|
|
19828
|
+
"dataset.error.restrictedAccess": "",
|
|
19772
19829
|
"dataset.error.unknown": "",
|
|
19773
19830
|
"dataset.error.unsupportedType": "",
|
|
19774
19831
|
"domain.contact.role.author": "",
|
|
@@ -19929,6 +19986,7 @@ var es = {
|
|
|
19929
19986
|
"editor.record.loadError.body": "",
|
|
19930
19987
|
"editor.record.loadError.closeMessage": "",
|
|
19931
19988
|
"editor.record.loadError.title": "",
|
|
19989
|
+
"editor.record.lock.format": "",
|
|
19932
19990
|
"editor.record.lock.reason": "",
|
|
19933
19991
|
"editor.record.onlineResource.protocol.other": "",
|
|
19934
19992
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -19988,7 +20046,6 @@ var es = {
|
|
|
19988
20046
|
"input.image.dropFileLabel": "",
|
|
19989
20047
|
"input.image.selectFileLabel": "",
|
|
19990
20048
|
"input.image.uploadErrorLabel": "",
|
|
19991
|
-
"input.image.uploadErrorRetry": "",
|
|
19992
20049
|
"input.image.uploadProgressCancel": "",
|
|
19993
20050
|
"input.image.uploadProgressLabel": "",
|
|
19994
20051
|
"language.ca": "Catalán",
|
|
@@ -20028,6 +20085,7 @@ var es = {
|
|
|
20028
20085
|
"map.wms.urlInput.hint": "",
|
|
20029
20086
|
"multiselect.filter.placeholder": "",
|
|
20030
20087
|
"nav.back": "",
|
|
20088
|
+
"navbar.mobile.menuTitle": "Acceso rápido",
|
|
20031
20089
|
next: next$4,
|
|
20032
20090
|
"ogc.unreachable.unknown": "",
|
|
20033
20091
|
"organisation.filter.placeholder": "",
|
|
@@ -20051,8 +20109,13 @@ var es = {
|
|
|
20051
20109
|
"record.action.duplicating": "",
|
|
20052
20110
|
"record.action.rollback": "",
|
|
20053
20111
|
"record.action.view": "",
|
|
20112
|
+
"record.card.metadata.contact": "",
|
|
20054
20113
|
"record.externalViewer.open": "",
|
|
20055
20114
|
"record.feature.limit": "",
|
|
20115
|
+
"record.kind.data": "",
|
|
20116
|
+
"record.kind.dataset": "",
|
|
20117
|
+
"record.kind.reuse": "",
|
|
20118
|
+
"record.kind.service": "",
|
|
20056
20119
|
"record.metadata.about": "",
|
|
20057
20120
|
"record.metadata.api": "",
|
|
20058
20121
|
"record.metadata.api.form.closeButton": "",
|
|
@@ -20086,6 +20149,7 @@ var es = {
|
|
|
20086
20149
|
"record.metadata.api.form.zoneTitle": "",
|
|
20087
20150
|
"record.metadata.api.form.zoneTooltip": "",
|
|
20088
20151
|
"record.metadata.api.gpfdl": "",
|
|
20152
|
+
"record.metadata.capabilities": "",
|
|
20089
20153
|
"record.metadata.catalog": "",
|
|
20090
20154
|
"record.metadata.contact": "",
|
|
20091
20155
|
"record.metadata.creation": "",
|
|
@@ -20122,13 +20186,12 @@ var es = {
|
|
|
20122
20186
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20123
20187
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20124
20188
|
"record.metadata.related": "",
|
|
20125
|
-
"record.metadata.related.contents": "
|
|
20189
|
+
"record.metadata.related.contents": "",
|
|
20126
20190
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20127
20191
|
"record.metadata.sheet": "",
|
|
20128
20192
|
"record.metadata.status": "",
|
|
20129
20193
|
"record.metadata.status.notPublished": "",
|
|
20130
20194
|
"record.metadata.status.published": "",
|
|
20131
|
-
"record.metadata.technical": "",
|
|
20132
20195
|
"record.metadata.temporalExtent": "",
|
|
20133
20196
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
20134
20197
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -20165,6 +20228,7 @@ var es = {
|
|
|
20165
20228
|
"results.sortBy.popularity": "",
|
|
20166
20229
|
"results.sortBy.qualityScore": "",
|
|
20167
20230
|
"results.sortBy.relevancy": "",
|
|
20231
|
+
"reuse.metadata.access": "",
|
|
20168
20232
|
"search.autocomplete.error": "",
|
|
20169
20233
|
"search.error.couldNotReachApi": "",
|
|
20170
20234
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -20214,6 +20278,26 @@ var es = {
|
|
|
20214
20278
|
"search.filters.useSpatialFilter": "",
|
|
20215
20279
|
"search.filters.useSpatialFilterHelp": "",
|
|
20216
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": "",
|
|
20217
20301
|
"share.tab.permalink": "",
|
|
20218
20302
|
"share.tab.webComponent": "",
|
|
20219
20303
|
"table.loading.data": "",
|
|
@@ -20246,6 +20330,7 @@ var records$3 = "Enregistrements";
|
|
|
20246
20330
|
var fr = {
|
|
20247
20331
|
"": "",
|
|
20248
20332
|
"Add Layer As": "",
|
|
20333
|
+
"Enter to search": "",
|
|
20249
20334
|
"button.login": "Se connecter",
|
|
20250
20335
|
"catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
|
|
20251
20336
|
"catalog.figures.organizations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
@@ -20307,7 +20392,6 @@ var fr = {
|
|
|
20307
20392
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
20308
20393
|
"datahub.news.feed": "Fil d'activité",
|
|
20309
20394
|
"datahub.news.figures": "Quelques chiffres",
|
|
20310
|
-
"datahub.record.addToFavorites": "Ajouter aux favoris",
|
|
20311
20395
|
"datahub.search.back": "Retour",
|
|
20312
20396
|
"datahub.search.filter.all": "Tous",
|
|
20313
20397
|
"datahub.search.filter.generatedByAPI": "généré par une API",
|
|
@@ -20317,6 +20401,7 @@ var fr = {
|
|
|
20317
20401
|
"dataset.error.http": "Le chargement des données a échoué en raison d'une erreur HTTP: \"{ info }\"",
|
|
20318
20402
|
"dataset.error.network": "Le chargement des données a échoué en raison d'une erreur réseau ou de limitations CORS: \"{ info }\"",
|
|
20319
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",
|
|
20320
20405
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
20321
20406
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
20322
20407
|
"domain.contact.role.author": "Auteur",
|
|
@@ -20477,6 +20562,7 @@ var fr = {
|
|
|
20477
20562
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20478
20563
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20479
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",
|
|
20480
20566
|
"editor.record.lock.reason": "Vous n'êtes pas éditeur d'un des groupes autorisés.",
|
|
20481
20567
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20482
20568
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
@@ -20536,7 +20622,6 @@ var fr = {
|
|
|
20536
20622
|
"input.image.dropFileLabel": "ou glissez-la ici",
|
|
20537
20623
|
"input.image.selectFileLabel": "Sélectionnez une image",
|
|
20538
20624
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20539
|
-
"input.image.uploadErrorRetry": "Réessayer",
|
|
20540
20625
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20541
20626
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20542
20627
|
"language.ca": "Catalan",
|
|
@@ -20576,6 +20661,7 @@ var fr = {
|
|
|
20576
20661
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
20577
20662
|
"multiselect.filter.placeholder": "Rechercher",
|
|
20578
20663
|
"nav.back": "Retour",
|
|
20664
|
+
"navbar.mobile.menuTitle": "Navigation rapide",
|
|
20579
20665
|
next: next$3,
|
|
20580
20666
|
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
20581
20667
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
@@ -20599,9 +20685,14 @@ var fr = {
|
|
|
20599
20685
|
"record.action.duplicating": "Duplication...",
|
|
20600
20686
|
"record.action.rollback": "Restaurer",
|
|
20601
20687
|
"record.action.view": "Voir",
|
|
20688
|
+
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20602
20689
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20603
20690
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20604
|
-
"record.
|
|
20691
|
+
"record.kind.data": "Donnée",
|
|
20692
|
+
"record.kind.dataset": "Donnée",
|
|
20693
|
+
"record.kind.reuse": "Réutilisation",
|
|
20694
|
+
"record.kind.service": "Service",
|
|
20695
|
+
"record.metadata.about": "A propos",
|
|
20605
20696
|
"record.metadata.api": "API",
|
|
20606
20697
|
"record.metadata.api.form.closeButton": "Fermer",
|
|
20607
20698
|
"record.metadata.api.form.closeForm": "Fermer le panneau de personnalisation",
|
|
@@ -20634,6 +20725,7 @@ var fr = {
|
|
|
20634
20725
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
20635
20726
|
"record.metadata.api.form.zoneTooltip": "Menu déroulant pour sélectionner une zone géographique",
|
|
20636
20727
|
"record.metadata.api.gpfdl": "Téléchargement",
|
|
20728
|
+
"record.metadata.capabilities": "Capacités du service",
|
|
20637
20729
|
"record.metadata.catalog": "Catalogue",
|
|
20638
20730
|
"record.metadata.contact": "Contact",
|
|
20639
20731
|
"record.metadata.creation": "Date de création",
|
|
@@ -20643,7 +20735,7 @@ var fr = {
|
|
|
20643
20735
|
"record.metadata.keywords": "Mots-clés",
|
|
20644
20736
|
"record.metadata.languages": "Langues",
|
|
20645
20737
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20646
|
-
"record.metadata.links": "
|
|
20738
|
+
"record.metadata.links": "Ressources & liens",
|
|
20647
20739
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20648
20740
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
20649
20741
|
"record.metadata.owner": "Catalogue d'origine",
|
|
@@ -20670,13 +20762,12 @@ var fr = {
|
|
|
20670
20762
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20671
20763
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20672
20764
|
"record.metadata.related": "Voir aussi",
|
|
20673
|
-
"record.metadata.related.contents": "
|
|
20765
|
+
"record.metadata.related.contents": "Contenu associé",
|
|
20674
20766
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20675
20767
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20676
20768
|
"record.metadata.status": "Statut",
|
|
20677
20769
|
"record.metadata.status.notPublished": "Non publié",
|
|
20678
20770
|
"record.metadata.status.published": "Publié",
|
|
20679
|
-
"record.metadata.technical": "Informations techniques",
|
|
20680
20771
|
"record.metadata.temporalExtent": "Étendue temporelle",
|
|
20681
20772
|
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
20682
20773
|
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
@@ -20713,6 +20804,7 @@ var fr = {
|
|
|
20713
20804
|
"results.sortBy.popularity": "Popularité",
|
|
20714
20805
|
"results.sortBy.qualityScore": "Indicateur de qualité",
|
|
20715
20806
|
"results.sortBy.relevancy": "Pertinence",
|
|
20807
|
+
"reuse.metadata.access": "Accéder à la réutilisation",
|
|
20716
20808
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
20717
20809
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
20718
20810
|
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
@@ -20762,6 +20854,26 @@ var fr = {
|
|
|
20762
20854
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
20763
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.",
|
|
20764
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",
|
|
20765
20877
|
"share.tab.permalink": "Partager",
|
|
20766
20878
|
"share.tab.webComponent": "Intégrer",
|
|
20767
20879
|
"table.loading.data": "Chargement des données...",
|
|
@@ -20794,6 +20906,7 @@ var records$2 = "record";
|
|
|
20794
20906
|
var it = {
|
|
20795
20907
|
"": "",
|
|
20796
20908
|
"Add Layer As": "",
|
|
20909
|
+
"Enter to search": "",
|
|
20797
20910
|
"button.login": "Login",
|
|
20798
20911
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
20799
20912
|
"catalog.figures.organizations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
|
|
@@ -20855,7 +20968,6 @@ var it = {
|
|
|
20855
20968
|
"datahub.news.contact.title": "Ha un bisogno specifico?",
|
|
20856
20969
|
"datahub.news.feed": "Feed di attività",
|
|
20857
20970
|
"datahub.news.figures": "Alcune figure",
|
|
20858
|
-
"datahub.record.addToFavorites": "Aggiungere a miei preferiti",
|
|
20859
20971
|
"datahub.search.back": "Ritorna",
|
|
20860
20972
|
"datahub.search.filter.all": "Tutti",
|
|
20861
20973
|
"datahub.search.filter.generatedByAPI": "generato da un'API",
|
|
@@ -20865,6 +20977,7 @@ var it = {
|
|
|
20865
20977
|
"dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
|
|
20866
20978
|
"dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
|
|
20867
20979
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
20980
|
+
"dataset.error.restrictedAccess": "",
|
|
20868
20981
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
20869
20982
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
20870
20983
|
"domain.contact.role.author": "Autore",
|
|
@@ -21025,6 +21138,7 @@ var it = {
|
|
|
21025
21138
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21026
21139
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21027
21140
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21141
|
+
"editor.record.lock.format": "",
|
|
21028
21142
|
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21029
21143
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21030
21144
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
@@ -21084,7 +21198,6 @@ var it = {
|
|
|
21084
21198
|
"input.image.dropFileLabel": "oppure trascinalo qui",
|
|
21085
21199
|
"input.image.selectFileLabel": "Seleziona un'immagine",
|
|
21086
21200
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21087
|
-
"input.image.uploadErrorRetry": "Riprova",
|
|
21088
21201
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21089
21202
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21090
21203
|
"language.ca": "Catalano",
|
|
@@ -21124,6 +21237,7 @@ var it = {
|
|
|
21124
21237
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21125
21238
|
"multiselect.filter.placeholder": "Cerca",
|
|
21126
21239
|
"nav.back": "Indietro",
|
|
21240
|
+
"navbar.mobile.menuTitle": "",
|
|
21127
21241
|
next: next$2,
|
|
21128
21242
|
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
21129
21243
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
@@ -21147,8 +21261,13 @@ var it = {
|
|
|
21147
21261
|
"record.action.duplicating": "Duplicazione",
|
|
21148
21262
|
"record.action.rollback": "Annulla",
|
|
21149
21263
|
"record.action.view": "Visualizza",
|
|
21264
|
+
"record.card.metadata.contact": "",
|
|
21150
21265
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21151
21266
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21267
|
+
"record.kind.data": "",
|
|
21268
|
+
"record.kind.dataset": "",
|
|
21269
|
+
"record.kind.reuse": "",
|
|
21270
|
+
"record.kind.service": "",
|
|
21152
21271
|
"record.metadata.about": "Descrizione",
|
|
21153
21272
|
"record.metadata.api": "API",
|
|
21154
21273
|
"record.metadata.api.form.closeButton": "Chiude",
|
|
@@ -21182,6 +21301,7 @@ var it = {
|
|
|
21182
21301
|
"record.metadata.api.form.zoneTitle": "Zona",
|
|
21183
21302
|
"record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
|
|
21184
21303
|
"record.metadata.api.gpfdl": "Scarica",
|
|
21304
|
+
"record.metadata.capabilities": "",
|
|
21185
21305
|
"record.metadata.catalog": "Catalogo",
|
|
21186
21306
|
"record.metadata.contact": "Contatto",
|
|
21187
21307
|
"record.metadata.creation": "Data di creazione",
|
|
@@ -21218,13 +21338,12 @@ var it = {
|
|
|
21218
21338
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21219
21339
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21220
21340
|
"record.metadata.related": "Vedi anche",
|
|
21221
|
-
"record.metadata.related.contents": "
|
|
21341
|
+
"record.metadata.related.contents": "",
|
|
21222
21342
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21223
21343
|
"record.metadata.sheet": "Origine del metadata",
|
|
21224
21344
|
"record.metadata.status": "Stato",
|
|
21225
21345
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
21226
21346
|
"record.metadata.status.published": "Pubblicato",
|
|
21227
|
-
"record.metadata.technical": "Informazioni tecniche",
|
|
21228
21347
|
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
21229
21348
|
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
21230
21349
|
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
@@ -21261,6 +21380,7 @@ var it = {
|
|
|
21261
21380
|
"results.sortBy.popularity": "Popolarità",
|
|
21262
21381
|
"results.sortBy.qualityScore": "Indicatore di qualità",
|
|
21263
21382
|
"results.sortBy.relevancy": "Rilevanza",
|
|
21383
|
+
"reuse.metadata.access": "",
|
|
21264
21384
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
21265
21385
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
21266
21386
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
|
|
@@ -21310,6 +21430,26 @@ var it = {
|
|
|
21310
21430
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
21311
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.",
|
|
21312
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": "",
|
|
21313
21453
|
"share.tab.permalink": "Condividere",
|
|
21314
21454
|
"share.tab.webComponent": "Incorporare",
|
|
21315
21455
|
"table.loading.data": "Caricamento dei dati...",
|
|
@@ -21342,6 +21482,7 @@ var records$1 = "";
|
|
|
21342
21482
|
var nl = {
|
|
21343
21483
|
"": "",
|
|
21344
21484
|
"Add Layer As": "",
|
|
21485
|
+
"Enter to search": "",
|
|
21345
21486
|
"button.login": "",
|
|
21346
21487
|
"catalog.figures.datasets": "datasets",
|
|
21347
21488
|
"catalog.figures.organizations": "organisaties",
|
|
@@ -21403,7 +21544,6 @@ var nl = {
|
|
|
21403
21544
|
"datahub.news.contact.title": "",
|
|
21404
21545
|
"datahub.news.feed": "",
|
|
21405
21546
|
"datahub.news.figures": "",
|
|
21406
|
-
"datahub.record.addToFavorites": "",
|
|
21407
21547
|
"datahub.search.back": "",
|
|
21408
21548
|
"datahub.search.filter.all": "",
|
|
21409
21549
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -21413,6 +21553,7 @@ var nl = {
|
|
|
21413
21553
|
"dataset.error.http": "",
|
|
21414
21554
|
"dataset.error.network": "",
|
|
21415
21555
|
"dataset.error.parse": "",
|
|
21556
|
+
"dataset.error.restrictedAccess": "",
|
|
21416
21557
|
"dataset.error.unknown": "",
|
|
21417
21558
|
"dataset.error.unsupportedType": "",
|
|
21418
21559
|
"domain.contact.role.author": "",
|
|
@@ -21573,6 +21714,7 @@ var nl = {
|
|
|
21573
21714
|
"editor.record.loadError.body": "",
|
|
21574
21715
|
"editor.record.loadError.closeMessage": "",
|
|
21575
21716
|
"editor.record.loadError.title": "",
|
|
21717
|
+
"editor.record.lock.format": "",
|
|
21576
21718
|
"editor.record.lock.reason": "",
|
|
21577
21719
|
"editor.record.onlineResource.protocol.other": "",
|
|
21578
21720
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -21632,7 +21774,6 @@ var nl = {
|
|
|
21632
21774
|
"input.image.dropFileLabel": "",
|
|
21633
21775
|
"input.image.selectFileLabel": "",
|
|
21634
21776
|
"input.image.uploadErrorLabel": "",
|
|
21635
|
-
"input.image.uploadErrorRetry": "",
|
|
21636
21777
|
"input.image.uploadProgressCancel": "",
|
|
21637
21778
|
"input.image.uploadProgressLabel": "",
|
|
21638
21779
|
"language.ca": "Catalaans",
|
|
@@ -21672,6 +21813,7 @@ var nl = {
|
|
|
21672
21813
|
"map.wms.urlInput.hint": "",
|
|
21673
21814
|
"multiselect.filter.placeholder": "",
|
|
21674
21815
|
"nav.back": "",
|
|
21816
|
+
"navbar.mobile.menuTitle": "",
|
|
21675
21817
|
next: next$1,
|
|
21676
21818
|
"ogc.unreachable.unknown": "",
|
|
21677
21819
|
"organisation.filter.placeholder": "",
|
|
@@ -21695,8 +21837,13 @@ var nl = {
|
|
|
21695
21837
|
"record.action.duplicating": "",
|
|
21696
21838
|
"record.action.rollback": "",
|
|
21697
21839
|
"record.action.view": "",
|
|
21840
|
+
"record.card.metadata.contact": "",
|
|
21698
21841
|
"record.externalViewer.open": "",
|
|
21699
21842
|
"record.feature.limit": "",
|
|
21843
|
+
"record.kind.data": "",
|
|
21844
|
+
"record.kind.dataset": "",
|
|
21845
|
+
"record.kind.reuse": "",
|
|
21846
|
+
"record.kind.service": "",
|
|
21700
21847
|
"record.metadata.about": "",
|
|
21701
21848
|
"record.metadata.api": "",
|
|
21702
21849
|
"record.metadata.api.form.closeButton": "",
|
|
@@ -21730,6 +21877,7 @@ var nl = {
|
|
|
21730
21877
|
"record.metadata.api.form.zoneTitle": "",
|
|
21731
21878
|
"record.metadata.api.form.zoneTooltip": "",
|
|
21732
21879
|
"record.metadata.api.gpfdl": "",
|
|
21880
|
+
"record.metadata.capabilities": "",
|
|
21733
21881
|
"record.metadata.catalog": "",
|
|
21734
21882
|
"record.metadata.contact": "",
|
|
21735
21883
|
"record.metadata.creation": "",
|
|
@@ -21766,13 +21914,12 @@ var nl = {
|
|
|
21766
21914
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21767
21915
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21768
21916
|
"record.metadata.related": "",
|
|
21769
|
-
"record.metadata.related.contents": "
|
|
21917
|
+
"record.metadata.related.contents": "",
|
|
21770
21918
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21771
21919
|
"record.metadata.sheet": "",
|
|
21772
21920
|
"record.metadata.status": "",
|
|
21773
21921
|
"record.metadata.status.notPublished": "",
|
|
21774
21922
|
"record.metadata.status.published": "",
|
|
21775
|
-
"record.metadata.technical": "",
|
|
21776
21923
|
"record.metadata.temporalExtent": "",
|
|
21777
21924
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
21778
21925
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -21809,6 +21956,7 @@ var nl = {
|
|
|
21809
21956
|
"results.sortBy.popularity": "",
|
|
21810
21957
|
"results.sortBy.qualityScore": "",
|
|
21811
21958
|
"results.sortBy.relevancy": "",
|
|
21959
|
+
"reuse.metadata.access": "",
|
|
21812
21960
|
"search.autocomplete.error": "",
|
|
21813
21961
|
"search.error.couldNotReachApi": "",
|
|
21814
21962
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -21858,6 +22006,26 @@ var nl = {
|
|
|
21858
22006
|
"search.filters.useSpatialFilter": "",
|
|
21859
22007
|
"search.filters.useSpatialFilterHelp": "",
|
|
21860
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": "",
|
|
21861
22029
|
"share.tab.permalink": "",
|
|
21862
22030
|
"share.tab.webComponent": "",
|
|
21863
22031
|
"table.loading.data": "",
|
|
@@ -21890,6 +22058,7 @@ var records = "";
|
|
|
21890
22058
|
var pt = {
|
|
21891
22059
|
"": "",
|
|
21892
22060
|
"Add Layer As": "",
|
|
22061
|
+
"Enter to search": "",
|
|
21893
22062
|
"button.login": "",
|
|
21894
22063
|
"catalog.figures.datasets": "conjuntos de dados",
|
|
21895
22064
|
"catalog.figures.organizations": "organizações",
|
|
@@ -21951,7 +22120,6 @@ var pt = {
|
|
|
21951
22120
|
"datahub.news.contact.title": "",
|
|
21952
22121
|
"datahub.news.feed": "",
|
|
21953
22122
|
"datahub.news.figures": "",
|
|
21954
|
-
"datahub.record.addToFavorites": "",
|
|
21955
22123
|
"datahub.search.back": "",
|
|
21956
22124
|
"datahub.search.filter.all": "",
|
|
21957
22125
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -21961,6 +22129,7 @@ var pt = {
|
|
|
21961
22129
|
"dataset.error.http": "",
|
|
21962
22130
|
"dataset.error.network": "",
|
|
21963
22131
|
"dataset.error.parse": "",
|
|
22132
|
+
"dataset.error.restrictedAccess": "",
|
|
21964
22133
|
"dataset.error.unknown": "",
|
|
21965
22134
|
"dataset.error.unsupportedType": "",
|
|
21966
22135
|
"domain.contact.role.author": "",
|
|
@@ -22121,6 +22290,7 @@ var pt = {
|
|
|
22121
22290
|
"editor.record.loadError.body": "",
|
|
22122
22291
|
"editor.record.loadError.closeMessage": "",
|
|
22123
22292
|
"editor.record.loadError.title": "",
|
|
22293
|
+
"editor.record.lock.format": "",
|
|
22124
22294
|
"editor.record.lock.reason": "",
|
|
22125
22295
|
"editor.record.onlineResource.protocol.other": "",
|
|
22126
22296
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -22180,7 +22350,6 @@ var pt = {
|
|
|
22180
22350
|
"input.image.dropFileLabel": "",
|
|
22181
22351
|
"input.image.selectFileLabel": "",
|
|
22182
22352
|
"input.image.uploadErrorLabel": "",
|
|
22183
|
-
"input.image.uploadErrorRetry": "",
|
|
22184
22353
|
"input.image.uploadProgressCancel": "",
|
|
22185
22354
|
"input.image.uploadProgressLabel": "",
|
|
22186
22355
|
"language.ca": "Catalão",
|
|
@@ -22220,6 +22389,7 @@ var pt = {
|
|
|
22220
22389
|
"map.wms.urlInput.hint": "",
|
|
22221
22390
|
"multiselect.filter.placeholder": "",
|
|
22222
22391
|
"nav.back": "",
|
|
22392
|
+
"navbar.mobile.menuTitle": "",
|
|
22223
22393
|
next: next,
|
|
22224
22394
|
"ogc.unreachable.unknown": "",
|
|
22225
22395
|
"organisation.filter.placeholder": "",
|
|
@@ -22243,8 +22413,13 @@ var pt = {
|
|
|
22243
22413
|
"record.action.duplicating": "",
|
|
22244
22414
|
"record.action.rollback": "",
|
|
22245
22415
|
"record.action.view": "",
|
|
22416
|
+
"record.card.metadata.contact": "",
|
|
22246
22417
|
"record.externalViewer.open": "",
|
|
22247
22418
|
"record.feature.limit": "",
|
|
22419
|
+
"record.kind.data": "",
|
|
22420
|
+
"record.kind.dataset": "",
|
|
22421
|
+
"record.kind.reuse": "",
|
|
22422
|
+
"record.kind.service": "",
|
|
22248
22423
|
"record.metadata.about": "",
|
|
22249
22424
|
"record.metadata.api": "",
|
|
22250
22425
|
"record.metadata.api.form.closeButton": "",
|
|
@@ -22278,6 +22453,7 @@ var pt = {
|
|
|
22278
22453
|
"record.metadata.api.form.zoneTitle": "",
|
|
22279
22454
|
"record.metadata.api.form.zoneTooltip": "",
|
|
22280
22455
|
"record.metadata.api.gpfdl": "",
|
|
22456
|
+
"record.metadata.capabilities": "",
|
|
22281
22457
|
"record.metadata.catalog": "",
|
|
22282
22458
|
"record.metadata.contact": "",
|
|
22283
22459
|
"record.metadata.creation": "",
|
|
@@ -22314,13 +22490,12 @@ var pt = {
|
|
|
22314
22490
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22315
22491
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22316
22492
|
"record.metadata.related": "",
|
|
22317
|
-
"record.metadata.related.contents": "
|
|
22493
|
+
"record.metadata.related.contents": "",
|
|
22318
22494
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22319
22495
|
"record.metadata.sheet": "",
|
|
22320
22496
|
"record.metadata.status": "",
|
|
22321
22497
|
"record.metadata.status.notPublished": "",
|
|
22322
22498
|
"record.metadata.status.published": "",
|
|
22323
|
-
"record.metadata.technical": "",
|
|
22324
22499
|
"record.metadata.temporalExtent": "",
|
|
22325
22500
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
22326
22501
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -22357,6 +22532,7 @@ var pt = {
|
|
|
22357
22532
|
"results.sortBy.popularity": "",
|
|
22358
22533
|
"results.sortBy.qualityScore": "",
|
|
22359
22534
|
"results.sortBy.relevancy": "",
|
|
22535
|
+
"reuse.metadata.access": "",
|
|
22360
22536
|
"search.autocomplete.error": "",
|
|
22361
22537
|
"search.error.couldNotReachApi": "",
|
|
22362
22538
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -22406,6 +22582,26 @@ var pt = {
|
|
|
22406
22582
|
"search.filters.useSpatialFilter": "",
|
|
22407
22583
|
"search.filters.useSpatialFilterHelp": "",
|
|
22408
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": "",
|
|
22409
22605
|
"share.tab.permalink": "",
|
|
22410
22606
|
"share.tab.webComponent": "",
|
|
22411
22607
|
"table.loading.data": "",
|
|
@@ -22709,6 +22905,10 @@ class Gn4FieldMapper {
|
|
|
22709
22905
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
22710
22906
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
22711
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');
|
|
22712
22912
|
// no url: fail early
|
|
22713
22913
|
if (url === null) {
|
|
22714
22914
|
// TODO: collect errors at the record level?
|
|
@@ -22731,6 +22931,7 @@ class Gn4FieldMapper {
|
|
|
22731
22931
|
type,
|
|
22732
22932
|
url: url,
|
|
22733
22933
|
accessServiceProtocol,
|
|
22934
|
+
accessRestricted: accessRestricted,
|
|
22734
22935
|
};
|
|
22735
22936
|
case 'link':
|
|
22736
22937
|
return {
|
|
@@ -22749,8 +22950,8 @@ class Gn4FieldMapper {
|
|
|
22749
22950
|
return {
|
|
22750
22951
|
...distribution,
|
|
22751
22952
|
type,
|
|
22752
|
-
|
|
22753
|
-
|
|
22953
|
+
url: url,
|
|
22954
|
+
accessServiceProtocol: accessServiceProtocol,
|
|
22754
22955
|
};
|
|
22755
22956
|
}
|
|
22756
22957
|
};
|
|
@@ -23146,14 +23347,6 @@ class ElasticsearchService {
|
|
|
23146
23347
|
}
|
|
23147
23348
|
mustNotFilters() {
|
|
23148
23349
|
return [
|
|
23149
|
-
{
|
|
23150
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23151
|
-
'service',
|
|
23152
|
-
'map',
|
|
23153
|
-
'map/static',
|
|
23154
|
-
'mapDigital',
|
|
23155
|
-
]),
|
|
23156
|
-
},
|
|
23157
23350
|
{
|
|
23158
23351
|
query_string: {
|
|
23159
23352
|
query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
@@ -23252,7 +23445,7 @@ class ElasticsearchService {
|
|
|
23252
23445
|
must_not: this.mustNotFilters(),
|
|
23253
23446
|
},
|
|
23254
23447
|
},
|
|
23255
|
-
_source: ['resourceTitleObject', 'uuid'],
|
|
23448
|
+
_source: ['resourceTitleObject', 'uuid', 'resourceType'],
|
|
23256
23449
|
from: 0,
|
|
23257
23450
|
size: 20,
|
|
23258
23451
|
};
|
|
@@ -24990,7 +25183,7 @@ function getLinkLabel(link) {
|
|
|
24990
25183
|
default:
|
|
24991
25184
|
format = getFileFormat(link);
|
|
24992
25185
|
}
|
|
24993
|
-
const label = link.description || link.name;
|
|
25186
|
+
const label = link.description || ('name' in link ? link.name : '');
|
|
24994
25187
|
return format ? `${label} (${format})` : label;
|
|
24995
25188
|
}
|
|
24996
25189
|
async function getLayers(url, serviceProtocol) {
|
|
@@ -25001,14 +25194,21 @@ async function getLayers(url, serviceProtocol) {
|
|
|
25001
25194
|
}
|
|
25002
25195
|
case 'wfs': {
|
|
25003
25196
|
const endpointWfs = await new WfsEndpoint(url).isReady();
|
|
25004
|
-
|
|
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;
|
|
25005
25202
|
}
|
|
25006
25203
|
case 'wms': {
|
|
25007
25204
|
const endpointWms = await new WmsEndpoint(url).isReady();
|
|
25008
|
-
|
|
25205
|
+
const layers = (await endpointWms
|
|
25009
25206
|
.getLayers()
|
|
25010
25207
|
.flatMap(wmsLayerFlatten)
|
|
25011
|
-
.filter((l) => l.name)
|
|
25208
|
+
.filter((l) => l.name)).map((collection) => {
|
|
25209
|
+
return endpointWms.getLayerByName(collection.name);
|
|
25210
|
+
});
|
|
25211
|
+
return layers;
|
|
25012
25212
|
}
|
|
25013
25213
|
case 'wmts': {
|
|
25014
25214
|
const endpointWmts = await new WmtsEndpoint(url).isReady();
|
|
@@ -25045,6 +25245,7 @@ var LinkUsage;
|
|
|
25045
25245
|
class LinkClassifierService {
|
|
25046
25246
|
getUsagesForLink(link) {
|
|
25047
25247
|
switch (link.type) {
|
|
25248
|
+
case 'endpoint':
|
|
25048
25249
|
case 'service': {
|
|
25049
25250
|
switch (link.accessServiceProtocol) {
|
|
25050
25251
|
case 'esriRest':
|
|
@@ -25093,6 +25294,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25093
25294
|
}]
|
|
25094
25295
|
}] });
|
|
25095
25296
|
|
|
25297
|
+
var name = "geonetwork-ui";
|
|
25298
|
+
var version = "2.6.0-dev.0739ca76d";
|
|
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
|
+
|
|
25096
25397
|
const minApiVersion = '4.2.2';
|
|
25097
25398
|
class Gn4PlatformService {
|
|
25098
25399
|
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService, httpClient, recordsApiService) {
|
|
@@ -25286,12 +25587,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25286
25587
|
type: Injectable
|
|
25287
25588
|
}], ctorParameters: () => [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }] });
|
|
25288
25589
|
|
|
25590
|
+
class RecordsRepositoryInterface {
|
|
25591
|
+
}
|
|
25592
|
+
|
|
25289
25593
|
function provideGn4() {
|
|
25290
25594
|
return [
|
|
25291
25595
|
{
|
|
25292
25596
|
provide: PlatformServiceInterface,
|
|
25293
25597
|
useClass: Gn4PlatformService,
|
|
25294
25598
|
},
|
|
25599
|
+
{
|
|
25600
|
+
provide: RecordsRepositoryInterface,
|
|
25601
|
+
useClass: Gn4Repository,
|
|
25602
|
+
},
|
|
25295
25603
|
Gn4PlatformMapper,
|
|
25296
25604
|
];
|
|
25297
25605
|
}
|
|
@@ -25367,7 +25675,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25367
25675
|
|
|
25368
25676
|
class AnchorLinkDirective {
|
|
25369
25677
|
get elementClass() {
|
|
25370
|
-
|
|
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
|
+
}
|
|
25371
25687
|
}
|
|
25372
25688
|
constructor(changeDetector) {
|
|
25373
25689
|
this.changeDetector = changeDetector;
|
|
@@ -25375,6 +25691,8 @@ class AnchorLinkDirective {
|
|
|
25375
25691
|
this.observer = new MutationObserver(() => {
|
|
25376
25692
|
this.refreshDisabledState();
|
|
25377
25693
|
});
|
|
25694
|
+
this.inView = false;
|
|
25695
|
+
this.initialized = false;
|
|
25378
25696
|
}
|
|
25379
25697
|
ngOnInit() {
|
|
25380
25698
|
this.observer.observe(document.body, {
|
|
@@ -25383,8 +25701,32 @@ class AnchorLinkDirective {
|
|
|
25383
25701
|
});
|
|
25384
25702
|
this.refreshDisabledState();
|
|
25385
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
|
+
}
|
|
25386
25725
|
ngOnDestroy() {
|
|
25387
25726
|
this.observer.disconnect();
|
|
25727
|
+
if (this.intersectionObserver) {
|
|
25728
|
+
this.intersectionObserver.disconnect();
|
|
25729
|
+
}
|
|
25388
25730
|
}
|
|
25389
25731
|
refreshDisabledState() {
|
|
25390
25732
|
const targetNotPresent = !document.getElementById(this.targetId);
|
|
@@ -25403,7 +25745,7 @@ class AnchorLinkDirective {
|
|
|
25403
25745
|
});
|
|
25404
25746
|
}
|
|
25405
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 }); }
|
|
25406
|
-
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 }); }
|
|
25407
25749
|
}
|
|
25408
25750
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorLinkDirective, decorators: [{
|
|
25409
25751
|
type: Directive,
|
|
@@ -25419,6 +25761,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25419
25761
|
}], enabledClass: [{
|
|
25420
25762
|
type: Input,
|
|
25421
25763
|
args: ['gnUiAnchorLinkEnabledClass']
|
|
25764
|
+
}], inViewClass: [{
|
|
25765
|
+
type: Input,
|
|
25766
|
+
args: ['gnUiAnchorLinkInViewClass']
|
|
25767
|
+
}], outOfViewClass: [{
|
|
25768
|
+
type: Input,
|
|
25769
|
+
args: ['gnUiAnchorLinkOutOfViewClass']
|
|
25422
25770
|
}], elementClass: [{
|
|
25423
25771
|
type: HostBinding,
|
|
25424
25772
|
args: ['class']
|
|
@@ -25683,6 +26031,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25683
26031
|
type: Output
|
|
25684
26032
|
}] } });
|
|
25685
26033
|
|
|
26034
|
+
marker('editor.record.lock.reason');
|
|
26035
|
+
marker('editor.record.lock.format');
|
|
25686
26036
|
class InteractiveTableComponent {
|
|
25687
26037
|
constructor() {
|
|
25688
26038
|
this.items = [];
|
|
@@ -25700,15 +26050,24 @@ class InteractiveTableComponent {
|
|
|
25700
26050
|
.join(' '),
|
|
25701
26051
|
};
|
|
25702
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
|
+
}
|
|
25703
26062
|
handleRowClick(item) {
|
|
25704
26063
|
this.itemClick.emit(item);
|
|
25705
26064
|
}
|
|
25706
26065
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25707
|
-
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 }); }
|
|
25708
26067
|
}
|
|
25709
26068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
25710
26069
|
type: Component,
|
|
25711
|
-
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"] }]
|
|
25712
26071
|
}], propDecorators: { columns: [{
|
|
25713
26072
|
type: ContentChildren,
|
|
25714
26073
|
args: [InteractiveTableColumnComponent]
|
|
@@ -25952,11 +26311,11 @@ class ProgressBarComponent {
|
|
|
25952
26311
|
}
|
|
25953
26312
|
}
|
|
25954
26313
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25955
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[
|
|
26314
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[4px] w-[52px] {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm w-[52px] h-[4px]\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"], dependencies: [{ kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }] }); }
|
|
25956
26315
|
}
|
|
25957
26316
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
25958
26317
|
type: Component,
|
|
25959
|
-
args: [{ selector: 'gn-ui-progress-bar', standalone: true, imports: [NgSwitch, NgSwitchCase, NgSwitchDefault], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[
|
|
26318
|
+
args: [{ selector: 'gn-ui-progress-bar', standalone: true, imports: [NgSwitch, NgSwitchCase, NgSwitchDefault], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[4px] w-[52px] {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm w-[52px] h-[4px]\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }]
|
|
25960
26319
|
}], propDecorators: { value: [{
|
|
25961
26320
|
type: Input
|
|
25962
26321
|
}], type: [{
|
|
@@ -27350,19 +27709,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27350
27709
|
type: Input
|
|
27351
27710
|
}] } });
|
|
27352
27711
|
|
|
27353
|
-
class NavigationButtonComponent {
|
|
27354
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27355
|
-
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 }); }
|
|
27356
|
-
}
|
|
27357
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
27358
|
-
type: Component,
|
|
27359
|
-
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"] }]
|
|
27360
|
-
}], propDecorators: { label: [{
|
|
27361
|
-
type: Input
|
|
27362
|
-
}], icon: [{
|
|
27363
|
-
type: Input
|
|
27364
|
-
}] } });
|
|
27365
|
-
|
|
27366
27712
|
class SearchInputComponent {
|
|
27367
27713
|
constructor() {
|
|
27368
27714
|
this.value = '';
|
|
@@ -27421,11 +27767,11 @@ class StarToggleComponent {
|
|
|
27421
27767
|
event.preventDefault();
|
|
27422
27768
|
}
|
|
27423
27769
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27424
|
-
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 }); }
|
|
27425
27771
|
}
|
|
27426
27772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
27427
27773
|
type: Component,
|
|
27428
|
-
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"] }]
|
|
27429
27775
|
}], propDecorators: { toggled: [{
|
|
27430
27776
|
type: Input
|
|
27431
27777
|
}], disabled: [{
|
|
@@ -28472,7 +28818,7 @@ class MetadataQualityComponent {
|
|
|
28472
28818
|
size: '1.2em',
|
|
28473
28819
|
strokeWidth: '1.5px',
|
|
28474
28820
|
}),
|
|
28475
|
-
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"
|
|
28821
|
+
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"\n smaller ? 'leading-[8px] min-w-[120px] m-h-[120px]' : 'min-w-[200px]'\n \"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28476
28822
|
}
|
|
28477
28823
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
28478
28824
|
type: Component,
|
|
@@ -28491,7 +28837,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28491
28837
|
size: '1.2em',
|
|
28492
28838
|
strokeWidth: '1.5px',
|
|
28493
28839
|
}),
|
|
28494
|
-
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"
|
|
28840
|
+
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"\n smaller ? 'leading-[8px] min-w-[120px] m-h-[120px]' : 'min-w-[200px]'\n \"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
28495
28841
|
}], propDecorators: { metadata: [{
|
|
28496
28842
|
type: Input
|
|
28497
28843
|
}], smaller: [{
|
|
@@ -29337,7 +29683,7 @@ class MetadataContactComponent {
|
|
|
29337
29683
|
this.organizationClick.emit(this.shownOrganization);
|
|
29338
29684
|
}
|
|
29339
29685
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29340
|
-
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: [
|
|
29341
29687
|
provideIcons({
|
|
29342
29688
|
matOpenInNew,
|
|
29343
29689
|
matCallOutline,
|
|
@@ -29357,7 +29703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29357
29703
|
matPersonOutline,
|
|
29358
29704
|
matLocationOnOutline,
|
|
29359
29705
|
}),
|
|
29360
|
-
], 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" }]
|
|
29361
29707
|
}], propDecorators: { metadata: [{
|
|
29362
29708
|
type: Input
|
|
29363
29709
|
}], organizationClick: [{
|
|
@@ -29442,6 +29788,316 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29442
29788
|
}]
|
|
29443
29789
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
|
|
29444
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
|
+
|
|
29445
30101
|
class MetadataInfoComponent {
|
|
29446
30102
|
constructor(dateService) {
|
|
29447
30103
|
this.dateService = dateService;
|
|
@@ -29494,7 +30150,7 @@ class MetadataInfoComponent {
|
|
|
29494
30150
|
}
|
|
29495
30151
|
}
|
|
29496
30152
|
get temporalExtent() {
|
|
29497
|
-
const temporalExtents = this.metadata.temporalExtents;
|
|
30153
|
+
const temporalExtents = this.metadata.kind === 'dataset' ? this.metadata.temporalExtents : [];
|
|
29498
30154
|
return getTemporalRangeUnion(temporalExtents, this.dateService);
|
|
29499
30155
|
}
|
|
29500
30156
|
get shownOrganization() {
|
|
@@ -29516,7 +30172,7 @@ class MetadataInfoComponent {
|
|
|
29516
30172
|
return this.dateService.formatDateTime(date);
|
|
29517
30173
|
}
|
|
29518
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 }); }
|
|
29519
|
-
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: [
|
|
29520
30176
|
provideIcons({
|
|
29521
30177
|
matOpenInNew,
|
|
29522
30178
|
matMailOutline: matMailOutline$1,
|
|
@@ -29537,12 +30193,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29537
30193
|
CopyTextButtonComponent,
|
|
29538
30194
|
NgIcon,
|
|
29539
30195
|
GnUiLinkifyDirective,
|
|
30196
|
+
MapContainerComponent,
|
|
30197
|
+
SpatialExtentComponent,
|
|
29540
30198
|
], viewProviders: [
|
|
29541
30199
|
provideIcons({
|
|
29542
30200
|
matOpenInNew,
|
|
29543
30201
|
matMailOutline: matMailOutline$1,
|
|
29544
30202
|
}),
|
|
29545
|
-
], 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"] }]
|
|
29546
30204
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
29547
30205
|
type: Input
|
|
29548
30206
|
}], incomplete: [{
|
|
@@ -29914,6 +30572,302 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29914
30572
|
type: Input
|
|
29915
30573
|
}] } });
|
|
29916
30574
|
|
|
30575
|
+
marker('record.kind.data');
|
|
30576
|
+
marker('record.kind.reuse');
|
|
30577
|
+
marker('record.kind.service');
|
|
30578
|
+
class InternalLinkCardComponent {
|
|
30579
|
+
set size(value) {
|
|
30580
|
+
this._size = value;
|
|
30581
|
+
this.cardClass = this.sizeClassMap[value] || '';
|
|
30582
|
+
this.thumbnailContainerClass = this.thumbnailSizeClassMap[value] || 'hidden';
|
|
30583
|
+
}
|
|
30584
|
+
get size() {
|
|
30585
|
+
return this._size;
|
|
30586
|
+
}
|
|
30587
|
+
constructor(elementRef) {
|
|
30588
|
+
this.elementRef = elementRef;
|
|
30589
|
+
this.linkHref = null;
|
|
30590
|
+
this.mdSelect = new EventEmitter();
|
|
30591
|
+
this.subscription = new Subscription();
|
|
30592
|
+
this.cardClass = '';
|
|
30593
|
+
this.thumbnailContainerClass = '';
|
|
30594
|
+
this._size = 'M';
|
|
30595
|
+
this.sizeClassMap = {
|
|
30596
|
+
L: 'min-h-[190px] md:w-[992px] py-3 px-3 flex items-start gap-5',
|
|
30597
|
+
M: 'min-h-[140px] md:w-[570px] py-3 px-3 flex items-start gap-4',
|
|
30598
|
+
S: 'min-h-[220px] md:w-[370px] py-3 px-3 flex gap-4',
|
|
30599
|
+
XS: 'min-h-[108px] md:w-[570px] py-3 px-3 flex gap-4',
|
|
30600
|
+
};
|
|
30601
|
+
this.thumbnailSizeClassMap = {
|
|
30602
|
+
L: 'w-[190px] h-[180px] rounded-lg overflow-hidden shrink-0',
|
|
30603
|
+
M: 'w-[110px] h-[140px] rounded-lg overflow-hidden shrink-0',
|
|
30604
|
+
S: 'hidden',
|
|
30605
|
+
XS: 'hidden',
|
|
30606
|
+
};
|
|
30607
|
+
this.titleClassMap = {
|
|
30608
|
+
L: 'text-xl line-clamp-2',
|
|
30609
|
+
M: 'text-base line-clamp-2',
|
|
30610
|
+
S: 'text-base line-clamp-3',
|
|
30611
|
+
XS: 'text-base mt-3 line-clamp-2',
|
|
30612
|
+
};
|
|
30613
|
+
}
|
|
30614
|
+
ngOnInit() {
|
|
30615
|
+
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
30616
|
+
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe((event) => {
|
|
30617
|
+
event.preventDefault();
|
|
30618
|
+
propagateToDocumentOnly(event);
|
|
30619
|
+
this.mdSelect.emit(this.record);
|
|
30620
|
+
}));
|
|
30621
|
+
}
|
|
30622
|
+
get organization() {
|
|
30623
|
+
return this.record.ownerOrganization;
|
|
30624
|
+
}
|
|
30625
|
+
get contacts() {
|
|
30626
|
+
return ((this.record.kind === 'dataset'
|
|
30627
|
+
? this.record.contactsForResource
|
|
30628
|
+
: this.record.contacts) || []);
|
|
30629
|
+
}
|
|
30630
|
+
getTitleClass() {
|
|
30631
|
+
return (this.titleClassMap[this._size] +
|
|
30632
|
+
' ' +
|
|
30633
|
+
(this.record.ownerOrganization?.name ? '' : 'mt-3') || '');
|
|
30634
|
+
}
|
|
30635
|
+
openExternalUrl(event, url) {
|
|
30636
|
+
event.stopPropagation();
|
|
30637
|
+
window.open(url, '_blank');
|
|
30638
|
+
}
|
|
30639
|
+
openMailto(event, email) {
|
|
30640
|
+
event.stopPropagation();
|
|
30641
|
+
window.open(`mailto:${email}`, '_blank');
|
|
30642
|
+
}
|
|
30643
|
+
copyToClipboard(event, text) {
|
|
30644
|
+
event.stopPropagation();
|
|
30645
|
+
navigator.clipboard.writeText(text);
|
|
30646
|
+
}
|
|
30647
|
+
get shouldShowThumbnail() {
|
|
30648
|
+
return this.size === 'L' || this.size === 'M';
|
|
30649
|
+
}
|
|
30650
|
+
getKindInfo() {
|
|
30651
|
+
if (!this.record?.kind)
|
|
30652
|
+
return { text: '', icon: '' };
|
|
30653
|
+
switch (this.record.kind.toLowerCase()) {
|
|
30654
|
+
case 'dataset':
|
|
30655
|
+
return { text: 'record.kind.data', icon: 'iconoirDatabase' };
|
|
30656
|
+
case 'reuse':
|
|
30657
|
+
return { text: 'record.kind.reuse', icon: 'iconoirMap' };
|
|
30658
|
+
case 'service':
|
|
30659
|
+
return { text: 'record.kind.service', icon: 'matCode' };
|
|
30660
|
+
default:
|
|
30661
|
+
return { text: '', icon: '' };
|
|
30662
|
+
}
|
|
30663
|
+
}
|
|
30664
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30665
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InternalLinkCardComponent, isStandalone: true, selector: "gn-ui-internal-link-card", inputs: { record: "record", metadataQualityDisplay: "metadataQualityDisplay", favoriteTemplate: "favoriteTemplate", linkHref: "linkHref", isGeodata: "isGeodata", size: "size" }, outputs: { mdSelect: "mdSelect" }, providers: [
|
|
30666
|
+
provideIcons({
|
|
30667
|
+
matLocationSearchingOutline,
|
|
30668
|
+
matCode,
|
|
30669
|
+
iconoirDatabase,
|
|
30670
|
+
iconoirMap,
|
|
30671
|
+
iconoirInternet,
|
|
30672
|
+
matEmailOutline,
|
|
30673
|
+
matPhoneOutline,
|
|
30674
|
+
matLocationOnOutline,
|
|
30675
|
+
}),
|
|
30676
|
+
provideNgIconsConfig({
|
|
30677
|
+
size: '1.2em',
|
|
30678
|
+
}),
|
|
30679
|
+
], ngImport: i0, template: "<div\n class=\"rounded-lg group card-shadow cursor-pointer overflow-hidden hover:bg-gray-50\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-row justify-between w-full\">\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div\n class=\"flex flex-col flex-1 relative\"\n [ngClass]=\"{\n 'justify-between': record.ownerOrganization?.name && size !== 'XS',\n }\"\n >\n <div class=\"flex items-center space-x-2\">\n <span\n *ngIf=\"getKindInfo().text\"\n class=\"badge-btn text-white text-xs px-2 py-0.5 font-bold shrink-0 bg-primary leading-tight flex items-center justify-evenly h-6 min-h-6\"\n >\n <ng-icon\n class=\"text-[0.9em] text-white mr-1\"\n [name]=\"getKindInfo().icon\"\n ></ng-icon>\n <span class=\"font-medium text-white text-xs\" translate>\n {{ getKindInfo().text }}\n </span>\n </span>\n <span\n *ngIf=\"isGeodata\"\n class=\"badge-btn text-black text-xs px-2 py-0.5 font-bold shrink-0 bg-primary-white leading-tight flex items-center justify-evenly h-6 min-h-6\"\n [ngClass]=\"size === 'L' ? 'w-[164px]' : 'w-8'\"\n >\n <ng-icon\n class=\"text-[0.9em] text-primary-darkest\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <ng-container *ngIf=\"size === 'L'\">\n <span\n class=\"font-medium text-primary-darkest text-xs ml-1\"\n translate\n >\n record.metadata.type\n </span>\n </ng-container>\n </span>\n <div class=\"flex items-center\">\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div class=\"absolute top-0 right-0 items-center\">\n <ng-container\n *ngIf=\"size !== 'XS'\"\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n <div\n class=\"font-medium text-title group-hover:text-primary overflow-hidden break-words\"\n [ngClass]=\"getTitleClass()\"\n >\n {{ record.title }}\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mt-1 mb-2 font-normal text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div class=\"text-xl text-primary-black font-medium truncate\">\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIconComponent, 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"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }] }); }
|
|
30680
|
+
}
|
|
30681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
30682
|
+
type: Component,
|
|
30683
|
+
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
30684
|
+
NgClass,
|
|
30685
|
+
NgIf,
|
|
30686
|
+
ThumbnailComponent,
|
|
30687
|
+
MetadataQualityComponent,
|
|
30688
|
+
NgTemplateOutlet,
|
|
30689
|
+
NgIconComponent,
|
|
30690
|
+
TranslateModule,
|
|
30691
|
+
MarkdownParserComponent,
|
|
30692
|
+
], providers: [
|
|
30693
|
+
provideIcons({
|
|
30694
|
+
matLocationSearchingOutline,
|
|
30695
|
+
matCode,
|
|
30696
|
+
iconoirDatabase,
|
|
30697
|
+
iconoirMap,
|
|
30698
|
+
iconoirInternet,
|
|
30699
|
+
matEmailOutline,
|
|
30700
|
+
matPhoneOutline,
|
|
30701
|
+
matLocationOnOutline,
|
|
30702
|
+
}),
|
|
30703
|
+
provideNgIconsConfig({
|
|
30704
|
+
size: '1.2em',
|
|
30705
|
+
}),
|
|
30706
|
+
], template: "<div\n class=\"rounded-lg group card-shadow cursor-pointer overflow-hidden hover:bg-gray-50\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-row justify-between w-full\">\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div\n class=\"flex flex-col flex-1 relative\"\n [ngClass]=\"{\n 'justify-between': record.ownerOrganization?.name && size !== 'XS',\n }\"\n >\n <div class=\"flex items-center space-x-2\">\n <span\n *ngIf=\"getKindInfo().text\"\n class=\"badge-btn text-white text-xs px-2 py-0.5 font-bold shrink-0 bg-primary leading-tight flex items-center justify-evenly h-6 min-h-6\"\n >\n <ng-icon\n class=\"text-[0.9em] text-white mr-1\"\n [name]=\"getKindInfo().icon\"\n ></ng-icon>\n <span class=\"font-medium text-white text-xs\" translate>\n {{ getKindInfo().text }}\n </span>\n </span>\n <span\n *ngIf=\"isGeodata\"\n class=\"badge-btn text-black text-xs px-2 py-0.5 font-bold shrink-0 bg-primary-white leading-tight flex items-center justify-evenly h-6 min-h-6\"\n [ngClass]=\"size === 'L' ? 'w-[164px]' : 'w-8'\"\n >\n <ng-icon\n class=\"text-[0.9em] text-primary-darkest\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <ng-container *ngIf=\"size === 'L'\">\n <span\n class=\"font-medium text-primary-darkest text-xs ml-1\"\n translate\n >\n record.metadata.type\n </span>\n </ng-container>\n </span>\n <div class=\"flex items-center\">\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div class=\"absolute top-0 right-0 items-center\">\n <ng-container\n *ngIf=\"size !== 'XS'\"\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n <div\n class=\"font-medium text-title group-hover:text-primary overflow-hidden break-words\"\n [ngClass]=\"getTitleClass()\"\n >\n {{ record.title }}\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mt-1 mb-2 font-normal text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div class=\"text-xl text-primary-black font-medium truncate\">\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
30707
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
30708
|
+
type: Input
|
|
30709
|
+
}], metadataQualityDisplay: [{
|
|
30710
|
+
type: Input
|
|
30711
|
+
}], favoriteTemplate: [{
|
|
30712
|
+
type: Input
|
|
30713
|
+
}], linkHref: [{
|
|
30714
|
+
type: Input
|
|
30715
|
+
}], isGeodata: [{
|
|
30716
|
+
type: Input
|
|
30717
|
+
}], size: [{
|
|
30718
|
+
type: Input
|
|
30719
|
+
}], mdSelect: [{
|
|
30720
|
+
type: Output
|
|
30721
|
+
}] } });
|
|
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
|
+
|
|
29917
30871
|
class UiElementsModule {
|
|
29918
30872
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
29919
30873
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, declarations: [AvatarComponent, UserPreviewComponent], imports: [CommonModule,
|
|
@@ -29932,12 +30886,16 @@ class UiElementsModule {
|
|
|
29932
30886
|
MaxLinesComponent,
|
|
29933
30887
|
TextInputComponent,
|
|
29934
30888
|
ImageInputComponent,
|
|
29935
|
-
ApplicationBannerComponent
|
|
30889
|
+
ApplicationBannerComponent,
|
|
30890
|
+
InternalLinkCardComponent,
|
|
30891
|
+
ServiceCapabilitiesComponent], exports: [ThumbnailComponent,
|
|
29936
30892
|
AvatarComponent,
|
|
29937
30893
|
UserPreviewComponent,
|
|
29938
30894
|
MarkdownParserComponent,
|
|
29939
30895
|
ImageInputComponent,
|
|
29940
|
-
ApplicationBannerComponent
|
|
30896
|
+
ApplicationBannerComponent,
|
|
30897
|
+
InternalLinkCardComponent,
|
|
30898
|
+
ServiceCapabilitiesComponent] }); }
|
|
29941
30899
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
29942
30900
|
provideNgIconsConfig({
|
|
29943
30901
|
size: '1.5em',
|
|
@@ -29957,7 +30915,9 @@ class UiElementsModule {
|
|
|
29957
30915
|
MaxLinesComponent,
|
|
29958
30916
|
TextInputComponent,
|
|
29959
30917
|
ImageInputComponent,
|
|
29960
|
-
ApplicationBannerComponent
|
|
30918
|
+
ApplicationBannerComponent,
|
|
30919
|
+
InternalLinkCardComponent,
|
|
30920
|
+
ServiceCapabilitiesComponent] }); }
|
|
29961
30921
|
}
|
|
29962
30922
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
29963
30923
|
type: NgModule,
|
|
@@ -29982,6 +30942,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29982
30942
|
TextInputComponent,
|
|
29983
30943
|
ImageInputComponent,
|
|
29984
30944
|
ApplicationBannerComponent,
|
|
30945
|
+
InternalLinkCardComponent,
|
|
30946
|
+
ServiceCapabilitiesComponent,
|
|
29985
30947
|
],
|
|
29986
30948
|
providers: [
|
|
29987
30949
|
provideNgIconsConfig({
|
|
@@ -29996,6 +30958,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29996
30958
|
MarkdownParserComponent,
|
|
29997
30959
|
ImageInputComponent,
|
|
29998
30960
|
ApplicationBannerComponent,
|
|
30961
|
+
InternalLinkCardComponent,
|
|
30962
|
+
ServiceCapabilitiesComponent,
|
|
29999
30963
|
],
|
|
30000
30964
|
}]
|
|
30001
30965
|
}] });
|
|
@@ -30336,8 +31300,9 @@ class ResultsTableComponent {
|
|
|
30336
31300
|
return getBadgeColor(format);
|
|
30337
31301
|
}
|
|
30338
31302
|
handleRecordClick(item) {
|
|
30339
|
-
if (item?.extras?.edit || this.isDraftPage)
|
|
31303
|
+
if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
|
|
30340
31304
|
this.recordClick.emit(item);
|
|
31305
|
+
}
|
|
30341
31306
|
}
|
|
30342
31307
|
handleDuplicate(item) {
|
|
30343
31308
|
this.duplicateRecord.emit(item);
|
|
@@ -30374,7 +31339,7 @@ class ResultsTableComponent {
|
|
|
30374
31339
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30375
31340
|
}
|
|
30376
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 }); }
|
|
30377
|
-
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"] }] }); }
|
|
30378
31343
|
}
|
|
30379
31344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30380
31345
|
type: Component,
|
|
@@ -30388,7 +31353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30388
31353
|
ActionMenuComponent,
|
|
30389
31354
|
NgIconComponent,
|
|
30390
31355
|
CdkOverlayOrigin,
|
|
30391
|
-
], 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" }]
|
|
30392
31357
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30393
31358
|
type: Input
|
|
30394
31359
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -31419,9 +32384,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31419
32384
|
type: Injectable
|
|
31420
32385
|
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
31421
32386
|
|
|
31422
|
-
class RecordsRepositoryInterface {
|
|
31423
|
-
}
|
|
31424
|
-
|
|
31425
32387
|
class FuzzySearchComponent {
|
|
31426
32388
|
constructor(searchFacade, searchService, recordsRepository) {
|
|
31427
32389
|
this.searchFacade = searchFacade;
|
|
@@ -31560,7 +32522,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31560
32522
|
}] }] });
|
|
31561
32523
|
|
|
31562
32524
|
// expects the replacement key ${uuid}
|
|
31563
|
-
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');
|
|
31564
32528
|
|
|
31565
32529
|
class FavoriteStarComponent {
|
|
31566
32530
|
set record(value) {
|
|
@@ -31587,9 +32551,10 @@ class FavoriteStarComponent {
|
|
|
31587
32551
|
this.isAnonymous$ = this.platformService.isAnonymous();
|
|
31588
32552
|
this.loading = false;
|
|
31589
32553
|
this.loginUrl = this.authService.loginUrl;
|
|
31590
|
-
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', {
|
|
31591
32556
|
link: this.loginUrl,
|
|
31592
|
-
});
|
|
32557
|
+
})));
|
|
31593
32558
|
}
|
|
31594
32559
|
ngAfterViewInit() {
|
|
31595
32560
|
this.subscription = this.isAnonymous$
|
|
@@ -31645,11 +32610,11 @@ class FavoriteStarComponent {
|
|
|
31645
32610
|
});
|
|
31646
32611
|
}
|
|
31647
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 }); }
|
|
31648
|
-
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\"\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 }); }
|
|
31649
32614
|
}
|
|
31650
32615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
31651
32616
|
type: Component,
|
|
31652
|
-
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\"\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" }]
|
|
31653
32618
|
}], ctorParameters: () => [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }], propDecorators: { displayCount: [{
|
|
31654
32619
|
type: Input
|
|
31655
32620
|
}], record: [{
|
|
@@ -31660,10 +32625,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31660
32625
|
}] } });
|
|
31661
32626
|
|
|
31662
32627
|
class ResultsListContainerComponent {
|
|
31663
|
-
constructor(facade, resultsLayoutConfig,
|
|
32628
|
+
constructor(facade, resultsLayoutConfig, recordDatasetUrlTemplate, recordServiceUrlTemplate, recordReuseUrlTemplate) {
|
|
31664
32629
|
this.facade = facade;
|
|
31665
32630
|
this.resultsLayoutConfig = resultsLayoutConfig;
|
|
31666
|
-
this.
|
|
32631
|
+
this.recordDatasetUrlTemplate = recordDatasetUrlTemplate;
|
|
32632
|
+
this.recordServiceUrlTemplate = recordServiceUrlTemplate;
|
|
32633
|
+
this.recordReuseUrlTemplate = recordReuseUrlTemplate;
|
|
31667
32634
|
this.showMore = 'auto';
|
|
31668
32635
|
this.mdSelect = new EventEmitter();
|
|
31669
32636
|
this.errorTypes = ErrorType;
|
|
@@ -31695,16 +32662,24 @@ class ResultsListContainerComponent {
|
|
|
31695
32662
|
this.facade.scroll();
|
|
31696
32663
|
}
|
|
31697
32664
|
getRecordUrl(metadata) {
|
|
31698
|
-
|
|
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)
|
|
31699
32673
|
return null;
|
|
31700
|
-
|
|
32674
|
+
const urlKind = tokenMap[metadata.kind];
|
|
32675
|
+
return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
|
|
31701
32676
|
}
|
|
31702
|
-
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:
|
|
31703
|
-
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" }] }); }
|
|
31704
32679
|
}
|
|
31705
32680
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
31706
32681
|
type: Component,
|
|
31707
|
-
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"] }]
|
|
31708
32683
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: undefined, decorators: [{
|
|
31709
32684
|
type: Inject,
|
|
31710
32685
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
@@ -31712,7 +32687,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31712
32687
|
type: Optional
|
|
31713
32688
|
}, {
|
|
31714
32689
|
type: Inject,
|
|
31715
|
-
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]
|
|
31716
32697
|
}] }], propDecorators: { metadataQualityDisplay: [{
|
|
31717
32698
|
type: Input
|
|
31718
32699
|
}], layout: [{
|
|
@@ -32464,12 +33445,7 @@ class FeatureSearchModule {
|
|
|
32464
33445
|
FacetsModule,
|
|
32465
33446
|
SearchStateContainerDirective,
|
|
32466
33447
|
FilterDropdownComponent] }); }
|
|
32467
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule,
|
|
32468
|
-
{
|
|
32469
|
-
provide: RecordsRepositoryInterface,
|
|
32470
|
-
useClass: Gn4Repository,
|
|
32471
|
-
},
|
|
32472
|
-
], imports: [CommonModule,
|
|
33448
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, imports: [CommonModule,
|
|
32473
33449
|
TranslateModule.forChild(),
|
|
32474
33450
|
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
32475
33451
|
initialState,
|
|
@@ -32531,12 +33507,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32531
33507
|
SearchStateContainerDirective,
|
|
32532
33508
|
FilterDropdownComponent,
|
|
32533
33509
|
],
|
|
32534
|
-
providers: [
|
|
32535
|
-
{
|
|
32536
|
-
provide: RecordsRepositoryInterface,
|
|
32537
|
-
useClass: Gn4Repository,
|
|
32538
|
-
},
|
|
32539
|
-
],
|
|
32540
33510
|
}]
|
|
32541
33511
|
}] });
|
|
32542
33512
|
|
|
@@ -33024,247 +33994,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33024
33994
|
}]
|
|
33025
33995
|
}] });
|
|
33026
33996
|
|
|
33027
|
-
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
33028
|
-
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
33029
|
-
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
33030
|
-
factory: () => ({}),
|
|
33031
|
-
});
|
|
33032
|
-
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
33033
|
-
factory: () => ({
|
|
33034
|
-
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
33035
|
-
stroke: { color: '#ffcc33', width: 2 },
|
|
33036
|
-
}),
|
|
33037
|
-
});
|
|
33038
|
-
|
|
33039
|
-
const DEFAULT_BASEMAP_LAYER = {
|
|
33040
|
-
type: 'xyz',
|
|
33041
|
-
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
33042
|
-
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
33043
|
-
};
|
|
33044
|
-
const DEFAULT_VIEW = {
|
|
33045
|
-
center: [0, 15],
|
|
33046
|
-
zoom: 2,
|
|
33047
|
-
};
|
|
33048
|
-
class MapContainerComponent {
|
|
33049
|
-
get featuresClick() {
|
|
33050
|
-
if (!this._featuresClick) {
|
|
33051
|
-
this.openlayersMap.then((olMap) => {
|
|
33052
|
-
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
33053
|
-
});
|
|
33054
|
-
this._featuresClick = new EventEmitter();
|
|
33055
|
-
}
|
|
33056
|
-
return this._featuresClick;
|
|
33057
|
-
}
|
|
33058
|
-
get featuresHover() {
|
|
33059
|
-
if (!this._featuresHover) {
|
|
33060
|
-
this.openlayersMap.then((olMap) => {
|
|
33061
|
-
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
33062
|
-
});
|
|
33063
|
-
this._featuresHover = new EventEmitter();
|
|
33064
|
-
}
|
|
33065
|
-
return this._featuresHover;
|
|
33066
|
-
}
|
|
33067
|
-
get mapClick() {
|
|
33068
|
-
if (!this._mapClick) {
|
|
33069
|
-
this.openlayersMap.then((olMap) => {
|
|
33070
|
-
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
33071
|
-
});
|
|
33072
|
-
this._mapClick = new EventEmitter();
|
|
33073
|
-
}
|
|
33074
|
-
return this._mapClick;
|
|
33075
|
-
}
|
|
33076
|
-
get sourceLoadError() {
|
|
33077
|
-
if (!this._sourceLoadError) {
|
|
33078
|
-
this.openlayersMap.then((olMap) => {
|
|
33079
|
-
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
33080
|
-
});
|
|
33081
|
-
this._sourceLoadError = new EventEmitter();
|
|
33082
|
-
}
|
|
33083
|
-
return this._sourceLoadError;
|
|
33084
|
-
}
|
|
33085
|
-
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
33086
|
-
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
33087
|
-
this.basemapLayers = basemapLayers;
|
|
33088
|
-
this.mapViewConstraints = mapViewConstraints;
|
|
33089
|
-
this.openlayersMap = new Promise((resolve) => {
|
|
33090
|
-
this.olMapResolver = resolve;
|
|
33091
|
-
});
|
|
33092
|
-
}
|
|
33093
|
-
async ngAfterViewInit() {
|
|
33094
|
-
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
33095
|
-
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
|
|
33096
|
-
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
33097
|
-
: of(false)));
|
|
33098
|
-
this.olMapResolver(this.olMap);
|
|
33099
|
-
}
|
|
33100
|
-
async ngOnChanges(changes) {
|
|
33101
|
-
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
33102
|
-
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
33103
|
-
await applyContextDiffToMap(this.olMap, diff);
|
|
33104
|
-
}
|
|
33105
|
-
}
|
|
33106
|
-
// This will apply basemap layers & view constraints
|
|
33107
|
-
processContext(context) {
|
|
33108
|
-
const processed = context
|
|
33109
|
-
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
33110
|
-
: { layers: [], view: DEFAULT_VIEW };
|
|
33111
|
-
if (this.basemapLayers.length) {
|
|
33112
|
-
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
33113
|
-
}
|
|
33114
|
-
if (!this.doNotUseDefaultBasemap) {
|
|
33115
|
-
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
33116
|
-
}
|
|
33117
|
-
if (this.mapViewConstraints.maxZoom) {
|
|
33118
|
-
processed.view = {
|
|
33119
|
-
maxZoom: this.mapViewConstraints.maxZoom,
|
|
33120
|
-
...processed.view,
|
|
33121
|
-
};
|
|
33122
|
-
}
|
|
33123
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33124
|
-
processed.view = {
|
|
33125
|
-
maxExtent: this.mapViewConstraints.maxExtent,
|
|
33126
|
-
...processed.view,
|
|
33127
|
-
};
|
|
33128
|
-
}
|
|
33129
|
-
if (processed.view &&
|
|
33130
|
-
!('zoom' in processed.view) &&
|
|
33131
|
-
!('center' in processed.view)) {
|
|
33132
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33133
|
-
processed.view = {
|
|
33134
|
-
extent: this.mapViewConstraints.maxExtent,
|
|
33135
|
-
...processed.view,
|
|
33136
|
-
};
|
|
33137
|
-
}
|
|
33138
|
-
else {
|
|
33139
|
-
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
33140
|
-
}
|
|
33141
|
-
}
|
|
33142
|
-
return processed;
|
|
33143
|
-
}
|
|
33144
|
-
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 }); }
|
|
33145
|
-
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: [
|
|
33146
|
-
provideIcons({ matSwipeOutline }),
|
|
33147
|
-
provideNgIconsConfig({
|
|
33148
|
-
size: '1.5em',
|
|
33149
|
-
}),
|
|
33150
|
-
], 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 }); }
|
|
33151
|
-
}
|
|
33152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
33153
|
-
type: Component,
|
|
33154
|
-
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
33155
|
-
provideIcons({ matSwipeOutline }),
|
|
33156
|
-
provideNgIconsConfig({
|
|
33157
|
-
size: '1.5em',
|
|
33158
|
-
}),
|
|
33159
|
-
], 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" }]
|
|
33160
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
33161
|
-
type: Inject,
|
|
33162
|
-
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
33163
|
-
}] }, { type: undefined, decorators: [{
|
|
33164
|
-
type: Inject,
|
|
33165
|
-
args: [BASEMAP_LAYERS]
|
|
33166
|
-
}] }, { type: undefined, decorators: [{
|
|
33167
|
-
type: Inject,
|
|
33168
|
-
args: [MAP_VIEW_CONSTRAINTS]
|
|
33169
|
-
}] }], propDecorators: { context: [{
|
|
33170
|
-
type: Input
|
|
33171
|
-
}], featuresClick: [{
|
|
33172
|
-
type: Output
|
|
33173
|
-
}], featuresHover: [{
|
|
33174
|
-
type: Output
|
|
33175
|
-
}], mapClick: [{
|
|
33176
|
-
type: Output
|
|
33177
|
-
}], sourceLoadError: [{
|
|
33178
|
-
type: Output
|
|
33179
|
-
}], container: [{
|
|
33180
|
-
type: ViewChild,
|
|
33181
|
-
args: ['map']
|
|
33182
|
-
}] } });
|
|
33183
|
-
|
|
33184
|
-
const geometryKeys = ['geometry', 'the_geom'];
|
|
33185
|
-
class FeatureDetailComponent {
|
|
33186
|
-
get properties() {
|
|
33187
|
-
if (!this.feature)
|
|
33188
|
-
return [];
|
|
33189
|
-
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
33190
|
-
}
|
|
33191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33192
|
-
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 }); }
|
|
33193
|
-
}
|
|
33194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
33195
|
-
type: Component,
|
|
33196
|
-
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"] }]
|
|
33197
|
-
}], propDecorators: { feature: [{
|
|
33198
|
-
type: Input
|
|
33199
|
-
}] } });
|
|
33200
|
-
|
|
33201
|
-
class MapLegendComponent {
|
|
33202
|
-
constructor() {
|
|
33203
|
-
this.legendStatusChange = new EventEmitter();
|
|
33204
|
-
}
|
|
33205
|
-
async ngOnChanges(changes) {
|
|
33206
|
-
if ('context' in changes) {
|
|
33207
|
-
const mapContext = changes['context'].currentValue;
|
|
33208
|
-
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
33209
|
-
const mapContextLayer = mapContext.layers[0];
|
|
33210
|
-
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
33211
|
-
if (this.legendHTML) {
|
|
33212
|
-
this.legendStatusChange.emit(true);
|
|
33213
|
-
}
|
|
33214
|
-
}
|
|
33215
|
-
else {
|
|
33216
|
-
this.legendHTML = false;
|
|
33217
|
-
this.legendStatusChange.emit(false);
|
|
33218
|
-
}
|
|
33219
|
-
}
|
|
33220
|
-
}
|
|
33221
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33222
|
-
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 }); }
|
|
33223
|
-
}
|
|
33224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
33225
|
-
type: Component,
|
|
33226
|
-
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"] }]
|
|
33227
|
-
}], propDecorators: { context: [{
|
|
33228
|
-
type: Input
|
|
33229
|
-
}], legendStatusChange: [{
|
|
33230
|
-
type: Output
|
|
33231
|
-
}] } });
|
|
33232
|
-
|
|
33233
|
-
function prioritizePageScroll(interactions) {
|
|
33234
|
-
interactions.clear();
|
|
33235
|
-
interactions.extend(defaults({
|
|
33236
|
-
// remove rotate interactions
|
|
33237
|
-
altShiftDragRotate: false,
|
|
33238
|
-
pinchRotate: false,
|
|
33239
|
-
// replace drag and zoom interactions
|
|
33240
|
-
dragPan: false,
|
|
33241
|
-
mouseWheelZoom: false,
|
|
33242
|
-
})
|
|
33243
|
-
.extend([
|
|
33244
|
-
new DragPan({
|
|
33245
|
-
condition: dragPanCondition,
|
|
33246
|
-
}),
|
|
33247
|
-
new MouseWheelZoom({
|
|
33248
|
-
condition: mouseWheelZoomCondition,
|
|
33249
|
-
}),
|
|
33250
|
-
])
|
|
33251
|
-
.getArray());
|
|
33252
|
-
}
|
|
33253
|
-
function dragPanCondition(event) {
|
|
33254
|
-
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
33255
|
-
if (!dragPanCondition) {
|
|
33256
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33257
|
-
}
|
|
33258
|
-
// combine the condition with the default DragPan conditions
|
|
33259
|
-
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
33260
|
-
}
|
|
33261
|
-
function mouseWheelZoomCondition(event) {
|
|
33262
|
-
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
33263
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33264
|
-
}
|
|
33265
|
-
return platformModifierKeyOnly(event);
|
|
33266
|
-
}
|
|
33267
|
-
|
|
33268
33997
|
class MapStateContainerComponent {
|
|
33269
33998
|
constructor(mapFacade) {
|
|
33270
33999
|
this.mapFacade = mapFacade;
|
|
@@ -33916,6 +34645,7 @@ function loadAppConfig() {
|
|
|
33916
34645
|
'metadata_language',
|
|
33917
34646
|
'login_url',
|
|
33918
34647
|
'logout_url',
|
|
34648
|
+
'settings_url',
|
|
33919
34649
|
'web_component_embedder_url',
|
|
33920
34650
|
'languages',
|
|
33921
34651
|
'contact_email',
|
|
@@ -34066,6 +34796,7 @@ proxy_path = "/proxy/?url="
|
|
|
34066
34796
|
metadata_language = "fre"
|
|
34067
34797
|
login_url = "/cas/login?service="
|
|
34068
34798
|
logout_url = "/geonetwork/signout"
|
|
34799
|
+
settings_url = "/geonetwork/settings"
|
|
34069
34800
|
web_component_embedder_url = "/datahub/wc-embedder.html"
|
|
34070
34801
|
|
|
34071
34802
|
[map]
|
|
@@ -36580,6 +37311,10 @@ class ChartViewComponent {
|
|
|
36580
37311
|
this.dataset$ = this.currentLink$.pipe(filter((link) => !!link), switchMap$1((link) => {
|
|
36581
37312
|
this.error = null;
|
|
36582
37313
|
this.loading = true;
|
|
37314
|
+
if (link.accessRestricted) {
|
|
37315
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
37316
|
+
return EMPTY;
|
|
37317
|
+
}
|
|
36583
37318
|
return this.dataService.getDataset(link, this.cacheActive).pipe(catchError((error) => {
|
|
36584
37319
|
this.handleError(error);
|
|
36585
37320
|
return EMPTY;
|
|
@@ -36844,6 +37579,10 @@ class TableViewComponent {
|
|
|
36844
37579
|
this.error = null;
|
|
36845
37580
|
if (!link)
|
|
36846
37581
|
return of(undefined);
|
|
37582
|
+
if (link.accessRestricted) {
|
|
37583
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
37584
|
+
return of([]);
|
|
37585
|
+
}
|
|
36847
37586
|
this.loading = true;
|
|
36848
37587
|
return this.getDatasetReader(link).pipe(catchError((error) => {
|
|
36849
37588
|
this.handleError(error);
|
|
@@ -36921,15 +37660,13 @@ class MdViewFacade {
|
|
|
36921
37660
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
36922
37661
|
this.related$ = this.store.pipe(select(getRelated));
|
|
36923
37662
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
36924
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) =>
|
|
36925
|
-
? record.onlineResources
|
|
36926
|
-
: []));
|
|
37663
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('onlineResources' in record ? record.onlineResources : [])));
|
|
36927
37664
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links
|
|
36928
37665
|
.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
|
|
36929
37666
|
// Put links to IGN Géoplateforme first
|
|
36930
37667
|
.sort((dd1, dd2) => {
|
|
36931
|
-
return dd2
|
|
36932
|
-
'GPFDL'
|
|
37668
|
+
return dd2
|
|
37669
|
+
.accessServiceProtocol === 'GPFDL'
|
|
36933
37670
|
? 1
|
|
36934
37671
|
: undefined; // do not change the sorting otherwise
|
|
36935
37672
|
})));
|
|
@@ -37000,15 +37737,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37000
37737
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }, { type: DataService }] });
|
|
37001
37738
|
|
|
37002
37739
|
class MdViewEffects {
|
|
37003
|
-
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
37740
|
+
constructor(actions$, recordsRepository, platformServiceInterface, router) {
|
|
37004
37741
|
this.actions$ = actions$;
|
|
37005
37742
|
this.recordsRepository = recordsRepository;
|
|
37006
37743
|
this.platformServiceInterface = platformServiceInterface;
|
|
37744
|
+
this.router = router;
|
|
37007
37745
|
/*
|
|
37008
37746
|
Metadata effects
|
|
37009
37747
|
*/
|
|
37010
37748
|
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
37011
|
-
if (record === null) {
|
|
37749
|
+
if (record === null || !this.router.url.includes(record.kind)) {
|
|
37012
37750
|
return loadFullMetadataFailure({ notFound: true });
|
|
37013
37751
|
}
|
|
37014
37752
|
return loadFullMetadataSuccess({ full: record });
|
|
@@ -37043,12 +37781,12 @@ class MdViewEffects {
|
|
|
37043
37781
|
}));
|
|
37044
37782
|
})))));
|
|
37045
37783
|
}
|
|
37046
|
-
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 }); }
|
|
37047
37785
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects }); }
|
|
37048
37786
|
}
|
|
37049
37787
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
37050
37788
|
type: Injectable
|
|
37051
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }] });
|
|
37789
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }, { type: i1$d.Router }] });
|
|
37052
37790
|
|
|
37053
37791
|
class CatalogTitleComponent {
|
|
37054
37792
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CatalogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -37105,11 +37843,11 @@ class LanguageSwitcherComponent {
|
|
|
37105
37843
|
this.translate.use(value);
|
|
37106
37844
|
}
|
|
37107
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 }); }
|
|
37108
|
-
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"] }] }); }
|
|
37109
37847
|
}
|
|
37110
37848
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
37111
37849
|
type: Component,
|
|
37112
|
-
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" }]
|
|
37113
37851
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
37114
37852
|
type: Optional
|
|
37115
37853
|
}, {
|
|
@@ -37531,17 +38269,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37531
38269
|
}]
|
|
37532
38270
|
}] });
|
|
37533
38271
|
|
|
37534
|
-
const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
37535
|
-
|
|
37536
38272
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
37537
38273
|
class DataViewPermalinkComponent {
|
|
37538
38274
|
set viewType(value) {
|
|
37539
38275
|
this.viewType$.next(value);
|
|
37540
38276
|
}
|
|
37541
|
-
constructor(config, wcEmbedderBaseUrl,
|
|
38277
|
+
constructor(config, wcEmbedderBaseUrl, facade) {
|
|
37542
38278
|
this.config = config;
|
|
37543
38279
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
37544
|
-
this.version = version;
|
|
37545
38280
|
this.facade = facade;
|
|
37546
38281
|
this.viewType$ = new BehaviorSubject('map');
|
|
37547
38282
|
this.permalinkUrl$ = combineLatest([
|
|
@@ -37550,7 +38285,7 @@ class DataViewPermalinkComponent {
|
|
|
37550
38285
|
this.facade.metadata$,
|
|
37551
38286
|
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
37552
38287
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
37553
|
-
url.searchParams.set('v', `${
|
|
38288
|
+
url.searchParams.set('v', `${GEONETWORK_UI_TAG_NAME}`);
|
|
37554
38289
|
if (viewType === 'chart') {
|
|
37555
38290
|
if (config) {
|
|
37556
38291
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
@@ -37581,7 +38316,7 @@ class DataViewPermalinkComponent {
|
|
|
37581
38316
|
return url.toString();
|
|
37582
38317
|
}));
|
|
37583
38318
|
}
|
|
37584
|
-
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 }); }
|
|
37585
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 }); }
|
|
37586
38321
|
}
|
|
37587
38322
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
@@ -37595,9 +38330,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37595
38330
|
}, {
|
|
37596
38331
|
type: Inject,
|
|
37597
38332
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
37598
|
-
}] }, { type: undefined, decorators: [{
|
|
37599
|
-
type: Inject,
|
|
37600
|
-
args: [GN_UI_VERSION]
|
|
37601
38333
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37602
38334
|
type: Input
|
|
37603
38335
|
}] } });
|
|
@@ -37676,16 +38408,15 @@ class DataViewWebComponentComponent {
|
|
|
37676
38408
|
set viewType(value) {
|
|
37677
38409
|
this.viewType$.next(value);
|
|
37678
38410
|
}
|
|
37679
|
-
constructor(config,
|
|
38411
|
+
constructor(config, facade) {
|
|
37680
38412
|
this.config = config;
|
|
37681
|
-
this.version = version;
|
|
37682
38413
|
this.facade = facade;
|
|
37683
38414
|
this.viewType$ = new BehaviorSubject('map');
|
|
37684
38415
|
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
37685
38416
|
if (viewType === 'chart') {
|
|
37686
38417
|
if (config) {
|
|
37687
38418
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
37688
|
-
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>
|
|
37689
38420
|
<gn-dataset-view-chart
|
|
37690
38421
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37691
38422
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37704,7 +38435,7 @@ class DataViewWebComponentComponent {
|
|
|
37704
38435
|
return '';
|
|
37705
38436
|
}
|
|
37706
38437
|
else if (viewType === 'table') {
|
|
37707
|
-
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>
|
|
37708
38439
|
<gn-dataset-view-table
|
|
37709
38440
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37710
38441
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37717,7 +38448,7 @@ class DataViewWebComponentComponent {
|
|
|
37717
38448
|
></gn-dataset-view-table>`;
|
|
37718
38449
|
}
|
|
37719
38450
|
else {
|
|
37720
|
-
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>
|
|
37721
38452
|
<gn-dataset-view-map
|
|
37722
38453
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37723
38454
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37731,7 +38462,7 @@ class DataViewWebComponentComponent {
|
|
|
37731
38462
|
}
|
|
37732
38463
|
}));
|
|
37733
38464
|
}
|
|
37734
|
-
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 }); }
|
|
37735
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 }); }
|
|
37736
38467
|
}
|
|
37737
38468
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
@@ -37740,9 +38471,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37740
38471
|
}], ctorParameters: () => [{ type: Configuration, decorators: [{
|
|
37741
38472
|
type: Inject,
|
|
37742
38473
|
args: [Configuration]
|
|
37743
|
-
}] }, { type: undefined, decorators: [{
|
|
37744
|
-
type: Inject,
|
|
37745
|
-
args: [GN_UI_VERSION]
|
|
37746
38474
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37747
38475
|
type: Input
|
|
37748
38476
|
}] } });
|
|
@@ -37838,6 +38566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37838
38566
|
|
|
37839
38567
|
marker('map.dropdown.placeholder');
|
|
37840
38568
|
marker('wfs.feature.limit');
|
|
38569
|
+
marker('dataset.error.restrictedAccess');
|
|
37841
38570
|
class MapViewComponent {
|
|
37842
38571
|
set exceedsLimit(value) {
|
|
37843
38572
|
this.excludeWfs$.next(value);
|
|
@@ -37889,6 +38618,10 @@ class MapViewComponent {
|
|
|
37889
38618
|
this.hidePreview = false;
|
|
37890
38619
|
this.loading = true;
|
|
37891
38620
|
this.error = null;
|
|
38621
|
+
if (link.accessRestricted) {
|
|
38622
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
38623
|
+
return of([]);
|
|
38624
|
+
}
|
|
37892
38625
|
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
37893
38626
|
this.handleError(e);
|
|
37894
38627
|
return of([]);
|
|
@@ -38238,7 +38971,7 @@ class RecordMetaComponent {
|
|
|
38238
38971
|
this.meta.removeTag('property="og:url"');
|
|
38239
38972
|
this.meta.removeTag('property="og:title"');
|
|
38240
38973
|
}
|
|
38241
|
-
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 }); }
|
|
38242
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 }); }
|
|
38243
38976
|
}
|
|
38244
38977
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
|
|
@@ -38249,7 +38982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38249
38982
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38250
38983
|
standalone: true,
|
|
38251
38984
|
}]
|
|
38252
|
-
}], ctorParameters: () => [{ type: i1$
|
|
38985
|
+
}], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
|
|
38253
38986
|
type: Input
|
|
38254
38987
|
}] } });
|
|
38255
38988
|
|
|
@@ -39297,7 +40030,7 @@ class ImportRecordComponent {
|
|
|
39297
40030
|
},
|
|
39298
40031
|
});
|
|
39299
40032
|
}
|
|
39300
|
-
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 }); }
|
|
39301
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: [
|
|
39302
40035
|
provideIcons({
|
|
39303
40036
|
iconoirImport,
|
|
@@ -39328,7 +40061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39328
40061
|
size: '1.5em',
|
|
39329
40062
|
}),
|
|
39330
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" }]
|
|
39331
|
-
}], ctorParameters: () => [{ type: i1$
|
|
40064
|
+
}], ctorParameters: () => [{ type: i1$d.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
|
|
39332
40065
|
type: Output
|
|
39333
40066
|
}] } });
|
|
39334
40067
|
|
|
@@ -39692,75 +40425,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39692
40425
|
args: [{ selector: 'gn-ui-form-field-array', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-array works!</p>\n" }]
|
|
39693
40426
|
}] });
|
|
39694
40427
|
|
|
39695
|
-
class FormFieldMapContainerComponent {
|
|
39696
|
-
constructor() {
|
|
39697
|
-
this.spatialExtents$ = new BehaviorSubject([]);
|
|
39698
|
-
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
39699
|
-
if (extents.length === 0) {
|
|
39700
|
-
return null; // null extent means default view
|
|
39701
|
-
}
|
|
39702
|
-
const featureCollection = {
|
|
39703
|
-
type: 'FeatureCollection',
|
|
39704
|
-
features: [],
|
|
39705
|
-
};
|
|
39706
|
-
extents.forEach((extent) => {
|
|
39707
|
-
if (extent.geometry) {
|
|
39708
|
-
featureCollection.features.push({
|
|
39709
|
-
type: 'Feature',
|
|
39710
|
-
properties: {},
|
|
39711
|
-
geometry: extent.geometry,
|
|
39712
|
-
});
|
|
39713
|
-
}
|
|
39714
|
-
else if (extent.bbox?.length >= 0) {
|
|
39715
|
-
featureCollection.features.push({
|
|
39716
|
-
type: 'Feature',
|
|
39717
|
-
properties: {},
|
|
39718
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
39719
|
-
});
|
|
39720
|
-
}
|
|
39721
|
-
});
|
|
39722
|
-
const layer = {
|
|
39723
|
-
type: 'geojson',
|
|
39724
|
-
data: featureCollection,
|
|
39725
|
-
label: 'Spatial extents',
|
|
39726
|
-
style: {
|
|
39727
|
-
'stroke-color': 'black',
|
|
39728
|
-
'stroke-width': 2,
|
|
39729
|
-
},
|
|
39730
|
-
};
|
|
39731
|
-
const view = await createViewFromLayer(layer);
|
|
39732
|
-
return {
|
|
39733
|
-
view,
|
|
39734
|
-
layers: [layer],
|
|
39735
|
-
};
|
|
39736
|
-
}));
|
|
39737
|
-
this.error = '';
|
|
39738
|
-
}
|
|
39739
|
-
set spatialExtents(value) {
|
|
39740
|
-
this.spatialExtents$.next(value);
|
|
39741
|
-
}
|
|
39742
|
-
bboxCoordsToGeometry(bbox) {
|
|
39743
|
-
const geometry = new Polygon([
|
|
39744
|
-
[
|
|
39745
|
-
[bbox[0], bbox[1]],
|
|
39746
|
-
[bbox[0], bbox[3]],
|
|
39747
|
-
[bbox[2], bbox[3]],
|
|
39748
|
-
[bbox[2], bbox[1]],
|
|
39749
|
-
[bbox[0], bbox[1]],
|
|
39750
|
-
],
|
|
39751
|
-
]);
|
|
39752
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
39753
|
-
}
|
|
39754
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39755
|
-
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 }); }
|
|
39756
|
-
}
|
|
39757
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
39758
|
-
type: Component,
|
|
39759
|
-
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" }]
|
|
39760
|
-
}], propDecorators: { spatialExtents: [{
|
|
39761
|
-
type: Input
|
|
39762
|
-
}] } });
|
|
39763
|
-
|
|
39764
40428
|
/**
|
|
39765
40429
|
* This form field is not like the others, as it will read directly from the state to handle both spatial extents
|
|
39766
40430
|
* and place keywords.
|
|
@@ -39857,16 +40521,16 @@ class FormFieldSpatialExtentComponent {
|
|
|
39857
40521
|
this.editorFacade.updateRecordField('spatialExtents', spatialExtents);
|
|
39858
40522
|
}
|
|
39859
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 }); }
|
|
39860
|
-
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 }); }
|
|
39861
40525
|
}
|
|
39862
40526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, decorators: [{
|
|
39863
40527
|
type: Component,
|
|
39864
40528
|
args: [{ selector: 'gn-ui-form-field-spatial-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
39865
40529
|
CommonModule,
|
|
39866
40530
|
GenericKeywordsComponent,
|
|
39867
|
-
FormFieldMapContainerComponent,
|
|
39868
40531
|
TranslateModule,
|
|
39869
|
-
|
|
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" }]
|
|
39870
40534
|
}], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: EditorFacade }, { type: i1$1.TranslateService }] });
|
|
39871
40535
|
|
|
39872
40536
|
class ContactCardComponent {
|
|
@@ -40124,9 +40788,8 @@ class OnlineResourceCardComponent {
|
|
|
40124
40788
|
get subtitle() {
|
|
40125
40789
|
switch (this.onlineResource.type) {
|
|
40126
40790
|
case 'service':
|
|
40127
|
-
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40128
40791
|
case 'endpoint':
|
|
40129
|
-
return `${this.onlineResource.
|
|
40792
|
+
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40130
40793
|
case 'link':
|
|
40131
40794
|
case 'download':
|
|
40132
40795
|
return this.getFormat(this.onlineResource);
|
|
@@ -41283,6 +41946,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41283
41946
|
const ROUTER_STATE_KEY = 'router';
|
|
41284
41947
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
41285
41948
|
const ROUTER_ROUTE_DATASET = 'dataset';
|
|
41949
|
+
const ROUTER_ROUTE_SERVICE = 'service';
|
|
41950
|
+
const ROUTER_ROUTE_REUSE = 'reuse';
|
|
41286
41951
|
const ROUTER_ROUTE_ORGANIZATION = 'organization';
|
|
41287
41952
|
var ROUTE_PARAMS;
|
|
41288
41953
|
(function (ROUTE_PARAMS) {
|
|
@@ -41315,6 +41980,14 @@ class RouterService {
|
|
|
41315
41980
|
path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
|
|
41316
41981
|
component: this.routerConfig.recordRouteComponent,
|
|
41317
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
|
+
},
|
|
41318
41991
|
{
|
|
41319
41992
|
path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
|
|
41320
41993
|
component: this.routerConfig.organizationRouteComponent,
|
|
@@ -41327,7 +42000,7 @@ class RouterService {
|
|
|
41327
42000
|
getOrganizationPageRoute() {
|
|
41328
42001
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
41329
42002
|
}
|
|
41330
|
-
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 }); }
|
|
41331
42004
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
41332
42005
|
}
|
|
41333
42006
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -41338,7 +42011,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41338
42011
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
41339
42012
|
type: Inject,
|
|
41340
42013
|
args: [ROUTER_CONFIG]
|
|
41341
|
-
}] }, { type: i1$
|
|
42014
|
+
}] }, { type: i1$d.Router }] });
|
|
41342
42015
|
|
|
41343
42016
|
const goAction = createAction('[Router] Go', props());
|
|
41344
42017
|
const backAction = createAction('[Router] Back');
|
|
@@ -41410,13 +42083,19 @@ class RouterFacade {
|
|
|
41410
42083
|
this.currentRoute$ = this.store.pipe(select(selectCurrentRoute));
|
|
41411
42084
|
this.pathParams$ = this.store.pipe(select(selectRouteParams));
|
|
41412
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
|
+
};
|
|
41413
42091
|
}
|
|
41414
42092
|
goToMetadata(metadata) {
|
|
42093
|
+
const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET;
|
|
41415
42094
|
this.pathParams$
|
|
41416
42095
|
.pipe(take(1), filter((params) => params.metadataUuid !== metadata.uniqueIdentifier))
|
|
41417
42096
|
.subscribe(() => {
|
|
41418
42097
|
this.go({
|
|
41419
|
-
path: `${
|
|
42098
|
+
path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
|
|
41420
42099
|
});
|
|
41421
42100
|
this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
|
|
41422
42101
|
});
|
|
@@ -41643,12 +42322,12 @@ class RouterEffects {
|
|
|
41643
42322
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
41644
42323
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
41645
42324
|
}
|
|
41646
|
-
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 }); }
|
|
41647
42326
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
41648
42327
|
}
|
|
41649
42328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
41650
42329
|
type: Injectable
|
|
41651
|
-
}], 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: [{
|
|
41652
42331
|
type: Inject,
|
|
41653
42332
|
args: [ROUTER_CONFIG]
|
|
41654
42333
|
}] }, { type: FieldsService }] });
|
|
@@ -41708,5 +42387,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41708
42387
|
* Generated bundle index. Do not edit.
|
|
41709
42388
|
*/
|
|
41710
42389
|
|
|
41711
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
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 };
|
|
41712
42391
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|