geonetwork-ui 2.6.0-dev.582b4530a → 2.6.0-dev.76a84fb05
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 +3 -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/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/record-meta/record-meta.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
- package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
- package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
- package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -15
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
- package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
- package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
- package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
- package/esm2022/libs/ui/map/src/index.mjs +2 -1
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
- package/esm2022/libs/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 +26 -4
- package/esm2022/translations/en.json +27 -5
- package/esm2022/translations/es.json +26 -4
- package/esm2022/translations/fr.json +28 -6
- package/esm2022/translations/it.json +26 -4
- package/esm2022/translations/nl.json +26 -4
- package/esm2022/translations/pt.json +26 -4
- package/fesm2022/geonetwork-ui.mjs +946 -480
- 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/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 +2 -2
- package/libs/common/domain/src/lib/model/record/metadata.model.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/record-meta/record-meta.component.d.ts +2 -2
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
- package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
- package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +0 -1
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
- package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/map/src/index.d.ts +1 -0
- package/libs/ui/map/src/index.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
- package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -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 +2 -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/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/record-meta/record-meta.component.ts +2 -2
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
- package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
- package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
- package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -8
- package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
- package/src/libs/ui/inputs/src/index.ts +0 -1
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -5
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
- package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
- package/src/libs/ui/map/src/index.ts +1 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
- package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +7 -8
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
- package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +1 -0
- 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 +26 -4
- package/translations/en.json +27 -5
- package/translations/es.json +26 -4
- package/translations/fr.json +28 -6
- package/translations/it.json +26 -4
- package/translations/nl.json +26 -4
- package/translations/pt.json +26 -4
- package/translations/sk.json +26 -4
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
- package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
- package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
- package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
- package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
- /package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css → ui/elements/src/lib/service-capabilities/service-capabilities.component.css} +0 -0
|
@@ -7,17 +7,17 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef,
|
|
10
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef, ViewEncapsulation, Pipe, inject } from '@angular/core';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpEventType, HttpClientXsrfModule } from '@angular/common/http';
|
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
|
14
14
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
15
15
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
|
-
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, first as first$1, share, pairwise,
|
|
17
|
+
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, delay, first as first$1, share, pairwise, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
18
|
import * as i1$2 from '@angular/common';
|
|
19
|
-
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault,
|
|
20
|
-
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1,
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf, NgClass, NgTemplateOutlet, NgOptimizedImage, DatePipe } from '@angular/common';
|
|
20
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, timer, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, startWith as startWith$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
|
|
21
21
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
22
22
|
import chroma from 'chroma-js';
|
|
23
23
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
@@ -41,7 +41,7 @@ import { TagInputModule } from 'ngx-chips';
|
|
|
41
41
|
import * as i1$5 from '@angular/material/progress-spinner';
|
|
42
42
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
43
43
|
import tippy from 'tippy.js';
|
|
44
|
-
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline,
|
|
44
|
+
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matSwipeOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline } from '@ng-icons/material-icons/outline';
|
|
45
45
|
import * as i2 from '@angular/material/core';
|
|
46
46
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
47
47
|
import * as i1$7 from '@angular/material/checkbox';
|
|
@@ -58,11 +58,17 @@ import * as i1$b from '@angular/material/dialog';
|
|
|
58
58
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
59
59
|
import * as i2$3 from '@angular/material/tabs';
|
|
60
60
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
61
|
-
import * as i1$
|
|
61
|
+
import * as i1$d from '@angular/router';
|
|
62
62
|
import { RouterLink, RouterModule, RouteReuseStrategy } from '@angular/router';
|
|
63
63
|
import { marked } from 'marked';
|
|
64
64
|
import Duration from 'duration-relativetimeformat';
|
|
65
65
|
import * as basicLightbox from 'basiclightbox';
|
|
66
|
+
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
67
|
+
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
68
|
+
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
69
|
+
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
70
|
+
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
71
|
+
import { Polygon } from 'ol/geom';
|
|
66
72
|
import { formatDistance } from 'date-fns/formatDistance';
|
|
67
73
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
68
74
|
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
@@ -72,11 +78,6 @@ import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
|
72
78
|
import { valid as valid$1 } from 'geojson-validation';
|
|
73
79
|
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
74
80
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
75
|
-
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
76
|
-
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
77
|
-
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
78
|
-
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
79
|
-
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
80
81
|
import { extend } from 'ol/extent';
|
|
81
82
|
import * as TOML from '@ltd/j-toml';
|
|
82
83
|
import { Style, Fill, Stroke, Circle } from 'ol/style';
|
|
@@ -96,9 +97,8 @@ import * as i4 from '@angular/material/paginator';
|
|
|
96
97
|
import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
97
98
|
import { LetDirective } from '@ngrx/component';
|
|
98
99
|
import axios from 'axios';
|
|
99
|
-
import * as i1$
|
|
100
|
+
import * as i1$e from '@angular/platform-browser';
|
|
100
101
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
101
|
-
import { Polygon } from 'ol/geom';
|
|
102
102
|
import * as i4$1 from '@angular/material/radio';
|
|
103
103
|
import { MatRadioModule } from '@angular/material/radio';
|
|
104
104
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -1351,8 +1351,8 @@ function extractServiceOnlineResources() {
|
|
|
1351
1351
|
else {
|
|
1352
1352
|
return {
|
|
1353
1353
|
type: 'endpoint',
|
|
1354
|
-
|
|
1355
|
-
protocol,
|
|
1354
|
+
url: url,
|
|
1355
|
+
accessServiceProtocol: protocol,
|
|
1356
1356
|
...(description && { description }),
|
|
1357
1357
|
translations,
|
|
1358
1358
|
};
|
|
@@ -1851,7 +1851,7 @@ function writeLineage$1(record, rootEl) {
|
|
|
1851
1851
|
pipe(findNestedChildOrCreate('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage', 'gmd:statement'), writeLocalizedCharacterString(record.lineage, record.translations?.lineage, record.defaultLanguage))(rootEl);
|
|
1852
1852
|
}
|
|
1853
1853
|
function getServiceEndpointProtocol(endpoint) {
|
|
1854
|
-
switch (endpoint.
|
|
1854
|
+
switch (endpoint.accessServiceProtocol.toLowerCase()) {
|
|
1855
1855
|
case 'wfs':
|
|
1856
1856
|
return 'OGC:WFS';
|
|
1857
1857
|
case 'wms':
|
|
@@ -1859,13 +1859,13 @@ function getServiceEndpointProtocol(endpoint) {
|
|
|
1859
1859
|
case 'wps':
|
|
1860
1860
|
return 'OGC:WPS';
|
|
1861
1861
|
default:
|
|
1862
|
-
return endpoint.
|
|
1862
|
+
return endpoint.accessServiceProtocol;
|
|
1863
1863
|
}
|
|
1864
1864
|
}
|
|
1865
1865
|
function createOnlineResource(onlineResource) {
|
|
1866
1866
|
let linkageUrl, functionCode, protocol;
|
|
1867
1867
|
if (onlineResource.type === 'endpoint') {
|
|
1868
|
-
linkageUrl = onlineResource.
|
|
1868
|
+
linkageUrl = onlineResource.url.toString();
|
|
1869
1869
|
protocol = getServiceEndpointProtocol(onlineResource);
|
|
1870
1870
|
functionCode = 'download';
|
|
1871
1871
|
}
|
|
@@ -18664,7 +18664,6 @@ var de = {
|
|
|
18664
18664
|
"datahub.news.contact.title": "Ein spezielles Bedürfnis?",
|
|
18665
18665
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
18666
18666
|
"datahub.news.figures": "Indikatoren",
|
|
18667
|
-
"datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
|
|
18668
18667
|
"datahub.search.back": "Zurück",
|
|
18669
18668
|
"datahub.search.filter.all": "Alle",
|
|
18670
18669
|
"datahub.search.filter.generatedByAPI": "Generiert durch eine API",
|
|
@@ -18835,6 +18834,7 @@ var de = {
|
|
|
18835
18834
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18836
18835
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18837
18836
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18837
|
+
"editor.record.lock.format": "",
|
|
18838
18838
|
"editor.record.lock.reason": "",
|
|
18839
18839
|
"editor.record.onlineResource.protocol.other": "",
|
|
18840
18840
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -18894,7 +18894,6 @@ var de = {
|
|
|
18894
18894
|
"input.image.dropFileLabel": "",
|
|
18895
18895
|
"input.image.selectFileLabel": "",
|
|
18896
18896
|
"input.image.uploadErrorLabel": "",
|
|
18897
|
-
"input.image.uploadErrorRetry": "",
|
|
18898
18897
|
"input.image.uploadProgressCancel": "",
|
|
18899
18898
|
"input.image.uploadProgressLabel": "",
|
|
18900
18899
|
"language.ca": "Katalanisch",
|
|
@@ -18934,6 +18933,7 @@ var de = {
|
|
|
18934
18933
|
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
18935
18934
|
"multiselect.filter.placeholder": "Suche",
|
|
18936
18935
|
"nav.back": "Zurück",
|
|
18936
|
+
"navbar.mobile.menuTitle": "Schnellzugriff",
|
|
18937
18937
|
next: next$6,
|
|
18938
18938
|
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
18939
18939
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
@@ -18960,6 +18960,7 @@ var de = {
|
|
|
18960
18960
|
"record.card.metadata.contact": "",
|
|
18961
18961
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
18962
18962
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
18963
|
+
"record.kind.data": "",
|
|
18963
18964
|
"record.kind.dataset": "",
|
|
18964
18965
|
"record.kind.reuse": "",
|
|
18965
18966
|
"record.kind.service": "",
|
|
@@ -18996,6 +18997,7 @@ var de = {
|
|
|
18996
18997
|
"record.metadata.api.form.zoneTitle": "",
|
|
18997
18998
|
"record.metadata.api.form.zoneTooltip": "",
|
|
18998
18999
|
"record.metadata.api.gpfdl": "",
|
|
19000
|
+
"record.metadata.capabilities": "",
|
|
18999
19001
|
"record.metadata.catalog": "Katalog",
|
|
19000
19002
|
"record.metadata.contact": "Kontakt",
|
|
19001
19003
|
"record.metadata.creation": "Erstellungsdatum",
|
|
@@ -19032,13 +19034,12 @@ var de = {
|
|
|
19032
19034
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19033
19035
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19034
19036
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
19035
|
-
"record.metadata.related.contents": "
|
|
19037
|
+
"record.metadata.related.contents": "",
|
|
19036
19038
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19037
19039
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19038
19040
|
"record.metadata.status": "Status",
|
|
19039
19041
|
"record.metadata.status.notPublished": "",
|
|
19040
19042
|
"record.metadata.status.published": "",
|
|
19041
|
-
"record.metadata.technical": "Technische Informationen",
|
|
19042
19043
|
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
19043
19044
|
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
19044
19045
|
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
@@ -19075,6 +19076,7 @@ var de = {
|
|
|
19075
19076
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19076
19077
|
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
19077
19078
|
"results.sortBy.relevancy": "Relevanz",
|
|
19079
|
+
"reuse.metadata.access": "",
|
|
19078
19080
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
19079
19081
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
19080
19082
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -19124,6 +19126,26 @@ var de = {
|
|
|
19124
19126
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
19125
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.",
|
|
19126
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": "",
|
|
19127
19149
|
"share.tab.permalink": "Teilen",
|
|
19128
19150
|
"share.tab.webComponent": "Integrieren",
|
|
19129
19151
|
"table.loading.data": "Daten werden geladen...",
|
|
@@ -19218,7 +19240,6 @@ var en = {
|
|
|
19218
19240
|
"datahub.news.contact.title": "A specific need?",
|
|
19219
19241
|
"datahub.news.feed": "News feed",
|
|
19220
19242
|
"datahub.news.figures": "Indicators",
|
|
19221
|
-
"datahub.record.addToFavorites": "Add to favorites",
|
|
19222
19243
|
"datahub.search.back": "Back",
|
|
19223
19244
|
"datahub.search.filter.all": "All",
|
|
19224
19245
|
"datahub.search.filter.generatedByAPI": "Generated by an API",
|
|
@@ -19389,6 +19410,7 @@ var en = {
|
|
|
19389
19410
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19390
19411
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19391
19412
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19413
|
+
"editor.record.lock.format": "Record with the format 'service' or 'reuse' are not editable",
|
|
19392
19414
|
"editor.record.lock.reason": "You are not an editor of the allowed groups",
|
|
19393
19415
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19394
19416
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
@@ -19448,7 +19470,6 @@ var en = {
|
|
|
19448
19470
|
"input.image.dropFileLabel": "or drop it here",
|
|
19449
19471
|
"input.image.selectFileLabel": "Select an image",
|
|
19450
19472
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19451
|
-
"input.image.uploadErrorRetry": "Retry",
|
|
19452
19473
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19453
19474
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19454
19475
|
"language.ca": "Catalan",
|
|
@@ -19488,6 +19509,7 @@ var en = {
|
|
|
19488
19509
|
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
19489
19510
|
"multiselect.filter.placeholder": "Search",
|
|
19490
19511
|
"nav.back": "Back",
|
|
19512
|
+
"navbar.mobile.menuTitle": "Quick access",
|
|
19491
19513
|
next: next$5,
|
|
19492
19514
|
"ogc.unreachable.unknown": "The service could not be reached",
|
|
19493
19515
|
"organisation.filter.placeholder": "Filter results",
|
|
@@ -19514,7 +19536,8 @@ var en = {
|
|
|
19514
19536
|
"record.card.metadata.contact": "Metadata Contact",
|
|
19515
19537
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19516
19538
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19517
|
-
"record.kind.
|
|
19539
|
+
"record.kind.data": "Data",
|
|
19540
|
+
"record.kind.dataset": "Dataset",
|
|
19518
19541
|
"record.kind.reuse": "Reuse",
|
|
19519
19542
|
"record.kind.service": "Service",
|
|
19520
19543
|
"record.metadata.about": "Description",
|
|
@@ -19550,6 +19573,7 @@ var en = {
|
|
|
19550
19573
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
19551
19574
|
"record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
|
|
19552
19575
|
"record.metadata.api.gpfdl": "Data download",
|
|
19576
|
+
"record.metadata.capabilities": "Service capabilities",
|
|
19553
19577
|
"record.metadata.catalog": "Catalog",
|
|
19554
19578
|
"record.metadata.contact": "Contact",
|
|
19555
19579
|
"record.metadata.creation": "Date of creation",
|
|
@@ -19586,13 +19610,12 @@ var en = {
|
|
|
19586
19610
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19587
19611
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19588
19612
|
"record.metadata.related": "Related datasets",
|
|
19589
|
-
"record.metadata.related.contents": "Related
|
|
19613
|
+
"record.metadata.related.contents": "Related content",
|
|
19590
19614
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19591
19615
|
"record.metadata.sheet": "Original metadata",
|
|
19592
19616
|
"record.metadata.status": "Status",
|
|
19593
19617
|
"record.metadata.status.notPublished": "Not published",
|
|
19594
19618
|
"record.metadata.status.published": "Published",
|
|
19595
|
-
"record.metadata.technical": "Technical information",
|
|
19596
19619
|
"record.metadata.temporalExtent": "Temporal extent",
|
|
19597
19620
|
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
19598
19621
|
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
@@ -19629,6 +19652,7 @@ var en = {
|
|
|
19629
19652
|
"results.sortBy.popularity": "Popularity",
|
|
19630
19653
|
"results.sortBy.qualityScore": "Quality score",
|
|
19631
19654
|
"results.sortBy.relevancy": "Relevancy",
|
|
19655
|
+
"reuse.metadata.access": "Access the reuse",
|
|
19632
19656
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
19633
19657
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
19634
19658
|
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
@@ -19678,6 +19702,26 @@ var en = {
|
|
|
19678
19702
|
"search.filters.useSpatialFilter": "Show datasets in the area of interest first",
|
|
19679
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.",
|
|
19680
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",
|
|
19681
19725
|
"share.tab.permalink": "Share",
|
|
19682
19726
|
"share.tab.webComponent": "Integrate",
|
|
19683
19727
|
"table.loading.data": "Loading data...",
|
|
@@ -19772,7 +19816,6 @@ var es = {
|
|
|
19772
19816
|
"datahub.news.contact.title": "",
|
|
19773
19817
|
"datahub.news.feed": "",
|
|
19774
19818
|
"datahub.news.figures": "",
|
|
19775
|
-
"datahub.record.addToFavorites": "",
|
|
19776
19819
|
"datahub.search.back": "",
|
|
19777
19820
|
"datahub.search.filter.all": "",
|
|
19778
19821
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -19943,6 +19986,7 @@ var es = {
|
|
|
19943
19986
|
"editor.record.loadError.body": "",
|
|
19944
19987
|
"editor.record.loadError.closeMessage": "",
|
|
19945
19988
|
"editor.record.loadError.title": "",
|
|
19989
|
+
"editor.record.lock.format": "",
|
|
19946
19990
|
"editor.record.lock.reason": "",
|
|
19947
19991
|
"editor.record.onlineResource.protocol.other": "",
|
|
19948
19992
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -20002,7 +20046,6 @@ var es = {
|
|
|
20002
20046
|
"input.image.dropFileLabel": "",
|
|
20003
20047
|
"input.image.selectFileLabel": "",
|
|
20004
20048
|
"input.image.uploadErrorLabel": "",
|
|
20005
|
-
"input.image.uploadErrorRetry": "",
|
|
20006
20049
|
"input.image.uploadProgressCancel": "",
|
|
20007
20050
|
"input.image.uploadProgressLabel": "",
|
|
20008
20051
|
"language.ca": "Catalán",
|
|
@@ -20042,6 +20085,7 @@ var es = {
|
|
|
20042
20085
|
"map.wms.urlInput.hint": "",
|
|
20043
20086
|
"multiselect.filter.placeholder": "",
|
|
20044
20087
|
"nav.back": "",
|
|
20088
|
+
"navbar.mobile.menuTitle": "Acceso rápido",
|
|
20045
20089
|
next: next$4,
|
|
20046
20090
|
"ogc.unreachable.unknown": "",
|
|
20047
20091
|
"organisation.filter.placeholder": "",
|
|
@@ -20068,6 +20112,7 @@ var es = {
|
|
|
20068
20112
|
"record.card.metadata.contact": "",
|
|
20069
20113
|
"record.externalViewer.open": "",
|
|
20070
20114
|
"record.feature.limit": "",
|
|
20115
|
+
"record.kind.data": "",
|
|
20071
20116
|
"record.kind.dataset": "",
|
|
20072
20117
|
"record.kind.reuse": "",
|
|
20073
20118
|
"record.kind.service": "",
|
|
@@ -20104,6 +20149,7 @@ var es = {
|
|
|
20104
20149
|
"record.metadata.api.form.zoneTitle": "",
|
|
20105
20150
|
"record.metadata.api.form.zoneTooltip": "",
|
|
20106
20151
|
"record.metadata.api.gpfdl": "",
|
|
20152
|
+
"record.metadata.capabilities": "",
|
|
20107
20153
|
"record.metadata.catalog": "",
|
|
20108
20154
|
"record.metadata.contact": "",
|
|
20109
20155
|
"record.metadata.creation": "",
|
|
@@ -20140,13 +20186,12 @@ var es = {
|
|
|
20140
20186
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20141
20187
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20142
20188
|
"record.metadata.related": "",
|
|
20143
|
-
"record.metadata.related.contents": "
|
|
20189
|
+
"record.metadata.related.contents": "",
|
|
20144
20190
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20145
20191
|
"record.metadata.sheet": "",
|
|
20146
20192
|
"record.metadata.status": "",
|
|
20147
20193
|
"record.metadata.status.notPublished": "",
|
|
20148
20194
|
"record.metadata.status.published": "",
|
|
20149
|
-
"record.metadata.technical": "",
|
|
20150
20195
|
"record.metadata.temporalExtent": "",
|
|
20151
20196
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
20152
20197
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -20183,6 +20228,7 @@ var es = {
|
|
|
20183
20228
|
"results.sortBy.popularity": "",
|
|
20184
20229
|
"results.sortBy.qualityScore": "",
|
|
20185
20230
|
"results.sortBy.relevancy": "",
|
|
20231
|
+
"reuse.metadata.access": "",
|
|
20186
20232
|
"search.autocomplete.error": "",
|
|
20187
20233
|
"search.error.couldNotReachApi": "",
|
|
20188
20234
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -20232,6 +20278,26 @@ var es = {
|
|
|
20232
20278
|
"search.filters.useSpatialFilter": "",
|
|
20233
20279
|
"search.filters.useSpatialFilterHelp": "",
|
|
20234
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": "",
|
|
20235
20301
|
"share.tab.permalink": "",
|
|
20236
20302
|
"share.tab.webComponent": "",
|
|
20237
20303
|
"table.loading.data": "",
|
|
@@ -20326,7 +20392,6 @@ var fr = {
|
|
|
20326
20392
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
20327
20393
|
"datahub.news.feed": "Fil d'activité",
|
|
20328
20394
|
"datahub.news.figures": "Quelques chiffres",
|
|
20329
|
-
"datahub.record.addToFavorites": "Ajouter aux favoris",
|
|
20330
20395
|
"datahub.search.back": "Retour",
|
|
20331
20396
|
"datahub.search.filter.all": "Tous",
|
|
20332
20397
|
"datahub.search.filter.generatedByAPI": "généré par une API",
|
|
@@ -20497,6 +20562,7 @@ var fr = {
|
|
|
20497
20562
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20498
20563
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20499
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",
|
|
20500
20566
|
"editor.record.lock.reason": "Vous n'êtes pas éditeur d'un des groupes autorisés.",
|
|
20501
20567
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20502
20568
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
@@ -20556,7 +20622,6 @@ var fr = {
|
|
|
20556
20622
|
"input.image.dropFileLabel": "ou glissez-la ici",
|
|
20557
20623
|
"input.image.selectFileLabel": "Sélectionnez une image",
|
|
20558
20624
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20559
|
-
"input.image.uploadErrorRetry": "Réessayer",
|
|
20560
20625
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20561
20626
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20562
20627
|
"language.ca": "Catalan",
|
|
@@ -20596,6 +20661,7 @@ var fr = {
|
|
|
20596
20661
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
20597
20662
|
"multiselect.filter.placeholder": "Rechercher",
|
|
20598
20663
|
"nav.back": "Retour",
|
|
20664
|
+
"navbar.mobile.menuTitle": "Navigation rapide",
|
|
20599
20665
|
next: next$3,
|
|
20600
20666
|
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
20601
20667
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
@@ -20622,10 +20688,11 @@ var fr = {
|
|
|
20622
20688
|
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20623
20689
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20624
20690
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20691
|
+
"record.kind.data": "Donnée",
|
|
20625
20692
|
"record.kind.dataset": "Donnée",
|
|
20626
20693
|
"record.kind.reuse": "Réutilisation",
|
|
20627
20694
|
"record.kind.service": "Service",
|
|
20628
|
-
"record.metadata.about": "
|
|
20695
|
+
"record.metadata.about": "A propos",
|
|
20629
20696
|
"record.metadata.api": "API",
|
|
20630
20697
|
"record.metadata.api.form.closeButton": "Fermer",
|
|
20631
20698
|
"record.metadata.api.form.closeForm": "Fermer le panneau de personnalisation",
|
|
@@ -20658,6 +20725,7 @@ var fr = {
|
|
|
20658
20725
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
20659
20726
|
"record.metadata.api.form.zoneTooltip": "Menu déroulant pour sélectionner une zone géographique",
|
|
20660
20727
|
"record.metadata.api.gpfdl": "Téléchargement",
|
|
20728
|
+
"record.metadata.capabilities": "Capacités du service",
|
|
20661
20729
|
"record.metadata.catalog": "Catalogue",
|
|
20662
20730
|
"record.metadata.contact": "Contact",
|
|
20663
20731
|
"record.metadata.creation": "Date de création",
|
|
@@ -20667,7 +20735,7 @@ var fr = {
|
|
|
20667
20735
|
"record.metadata.keywords": "Mots-clés",
|
|
20668
20736
|
"record.metadata.languages": "Langues",
|
|
20669
20737
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20670
|
-
"record.metadata.links": "
|
|
20738
|
+
"record.metadata.links": "Ressources & liens",
|
|
20671
20739
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20672
20740
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
20673
20741
|
"record.metadata.owner": "Catalogue d'origine",
|
|
@@ -20694,13 +20762,12 @@ var fr = {
|
|
|
20694
20762
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20695
20763
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20696
20764
|
"record.metadata.related": "Voir aussi",
|
|
20697
|
-
"record.metadata.related.contents": "
|
|
20765
|
+
"record.metadata.related.contents": "Contenu associé",
|
|
20698
20766
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20699
20767
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20700
20768
|
"record.metadata.status": "Statut",
|
|
20701
20769
|
"record.metadata.status.notPublished": "Non publié",
|
|
20702
20770
|
"record.metadata.status.published": "Publié",
|
|
20703
|
-
"record.metadata.technical": "Informations techniques",
|
|
20704
20771
|
"record.metadata.temporalExtent": "Étendue temporelle",
|
|
20705
20772
|
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
20706
20773
|
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
@@ -20737,6 +20804,7 @@ var fr = {
|
|
|
20737
20804
|
"results.sortBy.popularity": "Popularité",
|
|
20738
20805
|
"results.sortBy.qualityScore": "Indicateur de qualité",
|
|
20739
20806
|
"results.sortBy.relevancy": "Pertinence",
|
|
20807
|
+
"reuse.metadata.access": "Accéder à la réutilisation",
|
|
20740
20808
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
20741
20809
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
20742
20810
|
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
@@ -20786,6 +20854,26 @@ var fr = {
|
|
|
20786
20854
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
20787
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.",
|
|
20788
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",
|
|
20789
20877
|
"share.tab.permalink": "Partager",
|
|
20790
20878
|
"share.tab.webComponent": "Intégrer",
|
|
20791
20879
|
"table.loading.data": "Chargement des données...",
|
|
@@ -20880,7 +20968,6 @@ var it = {
|
|
|
20880
20968
|
"datahub.news.contact.title": "Ha un bisogno specifico?",
|
|
20881
20969
|
"datahub.news.feed": "Feed di attività",
|
|
20882
20970
|
"datahub.news.figures": "Alcune figure",
|
|
20883
|
-
"datahub.record.addToFavorites": "Aggiungere a miei preferiti",
|
|
20884
20971
|
"datahub.search.back": "Ritorna",
|
|
20885
20972
|
"datahub.search.filter.all": "Tutti",
|
|
20886
20973
|
"datahub.search.filter.generatedByAPI": "generato da un'API",
|
|
@@ -21051,6 +21138,7 @@ var it = {
|
|
|
21051
21138
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21052
21139
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21053
21140
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21141
|
+
"editor.record.lock.format": "",
|
|
21054
21142
|
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21055
21143
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21056
21144
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
@@ -21110,7 +21198,6 @@ var it = {
|
|
|
21110
21198
|
"input.image.dropFileLabel": "oppure trascinalo qui",
|
|
21111
21199
|
"input.image.selectFileLabel": "Seleziona un'immagine",
|
|
21112
21200
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21113
|
-
"input.image.uploadErrorRetry": "Riprova",
|
|
21114
21201
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21115
21202
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21116
21203
|
"language.ca": "Catalano",
|
|
@@ -21150,6 +21237,7 @@ var it = {
|
|
|
21150
21237
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21151
21238
|
"multiselect.filter.placeholder": "Cerca",
|
|
21152
21239
|
"nav.back": "Indietro",
|
|
21240
|
+
"navbar.mobile.menuTitle": "",
|
|
21153
21241
|
next: next$2,
|
|
21154
21242
|
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
21155
21243
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
@@ -21176,6 +21264,7 @@ var it = {
|
|
|
21176
21264
|
"record.card.metadata.contact": "",
|
|
21177
21265
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21178
21266
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21267
|
+
"record.kind.data": "",
|
|
21179
21268
|
"record.kind.dataset": "",
|
|
21180
21269
|
"record.kind.reuse": "",
|
|
21181
21270
|
"record.kind.service": "",
|
|
@@ -21212,6 +21301,7 @@ var it = {
|
|
|
21212
21301
|
"record.metadata.api.form.zoneTitle": "Zona",
|
|
21213
21302
|
"record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
|
|
21214
21303
|
"record.metadata.api.gpfdl": "Scarica",
|
|
21304
|
+
"record.metadata.capabilities": "",
|
|
21215
21305
|
"record.metadata.catalog": "Catalogo",
|
|
21216
21306
|
"record.metadata.contact": "Contatto",
|
|
21217
21307
|
"record.metadata.creation": "Data di creazione",
|
|
@@ -21248,13 +21338,12 @@ var it = {
|
|
|
21248
21338
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21249
21339
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21250
21340
|
"record.metadata.related": "Vedi anche",
|
|
21251
|
-
"record.metadata.related.contents": "
|
|
21341
|
+
"record.metadata.related.contents": "",
|
|
21252
21342
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21253
21343
|
"record.metadata.sheet": "Origine del metadata",
|
|
21254
21344
|
"record.metadata.status": "Stato",
|
|
21255
21345
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
21256
21346
|
"record.metadata.status.published": "Pubblicato",
|
|
21257
|
-
"record.metadata.technical": "Informazioni tecniche",
|
|
21258
21347
|
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
21259
21348
|
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
21260
21349
|
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
@@ -21291,6 +21380,7 @@ var it = {
|
|
|
21291
21380
|
"results.sortBy.popularity": "Popolarità",
|
|
21292
21381
|
"results.sortBy.qualityScore": "Indicatore di qualità",
|
|
21293
21382
|
"results.sortBy.relevancy": "Rilevanza",
|
|
21383
|
+
"reuse.metadata.access": "",
|
|
21294
21384
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
21295
21385
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
21296
21386
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
|
|
@@ -21340,6 +21430,26 @@ var it = {
|
|
|
21340
21430
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
21341
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.",
|
|
21342
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": "",
|
|
21343
21453
|
"share.tab.permalink": "Condividere",
|
|
21344
21454
|
"share.tab.webComponent": "Incorporare",
|
|
21345
21455
|
"table.loading.data": "Caricamento dei dati...",
|
|
@@ -21434,7 +21544,6 @@ var nl = {
|
|
|
21434
21544
|
"datahub.news.contact.title": "",
|
|
21435
21545
|
"datahub.news.feed": "",
|
|
21436
21546
|
"datahub.news.figures": "",
|
|
21437
|
-
"datahub.record.addToFavorites": "",
|
|
21438
21547
|
"datahub.search.back": "",
|
|
21439
21548
|
"datahub.search.filter.all": "",
|
|
21440
21549
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -21605,6 +21714,7 @@ var nl = {
|
|
|
21605
21714
|
"editor.record.loadError.body": "",
|
|
21606
21715
|
"editor.record.loadError.closeMessage": "",
|
|
21607
21716
|
"editor.record.loadError.title": "",
|
|
21717
|
+
"editor.record.lock.format": "",
|
|
21608
21718
|
"editor.record.lock.reason": "",
|
|
21609
21719
|
"editor.record.onlineResource.protocol.other": "",
|
|
21610
21720
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -21664,7 +21774,6 @@ var nl = {
|
|
|
21664
21774
|
"input.image.dropFileLabel": "",
|
|
21665
21775
|
"input.image.selectFileLabel": "",
|
|
21666
21776
|
"input.image.uploadErrorLabel": "",
|
|
21667
|
-
"input.image.uploadErrorRetry": "",
|
|
21668
21777
|
"input.image.uploadProgressCancel": "",
|
|
21669
21778
|
"input.image.uploadProgressLabel": "",
|
|
21670
21779
|
"language.ca": "Catalaans",
|
|
@@ -21704,6 +21813,7 @@ var nl = {
|
|
|
21704
21813
|
"map.wms.urlInput.hint": "",
|
|
21705
21814
|
"multiselect.filter.placeholder": "",
|
|
21706
21815
|
"nav.back": "",
|
|
21816
|
+
"navbar.mobile.menuTitle": "",
|
|
21707
21817
|
next: next$1,
|
|
21708
21818
|
"ogc.unreachable.unknown": "",
|
|
21709
21819
|
"organisation.filter.placeholder": "",
|
|
@@ -21730,6 +21840,7 @@ var nl = {
|
|
|
21730
21840
|
"record.card.metadata.contact": "",
|
|
21731
21841
|
"record.externalViewer.open": "",
|
|
21732
21842
|
"record.feature.limit": "",
|
|
21843
|
+
"record.kind.data": "",
|
|
21733
21844
|
"record.kind.dataset": "",
|
|
21734
21845
|
"record.kind.reuse": "",
|
|
21735
21846
|
"record.kind.service": "",
|
|
@@ -21766,6 +21877,7 @@ var nl = {
|
|
|
21766
21877
|
"record.metadata.api.form.zoneTitle": "",
|
|
21767
21878
|
"record.metadata.api.form.zoneTooltip": "",
|
|
21768
21879
|
"record.metadata.api.gpfdl": "",
|
|
21880
|
+
"record.metadata.capabilities": "",
|
|
21769
21881
|
"record.metadata.catalog": "",
|
|
21770
21882
|
"record.metadata.contact": "",
|
|
21771
21883
|
"record.metadata.creation": "",
|
|
@@ -21802,13 +21914,12 @@ var nl = {
|
|
|
21802
21914
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21803
21915
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21804
21916
|
"record.metadata.related": "",
|
|
21805
|
-
"record.metadata.related.contents": "
|
|
21917
|
+
"record.metadata.related.contents": "",
|
|
21806
21918
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21807
21919
|
"record.metadata.sheet": "",
|
|
21808
21920
|
"record.metadata.status": "",
|
|
21809
21921
|
"record.metadata.status.notPublished": "",
|
|
21810
21922
|
"record.metadata.status.published": "",
|
|
21811
|
-
"record.metadata.technical": "",
|
|
21812
21923
|
"record.metadata.temporalExtent": "",
|
|
21813
21924
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
21814
21925
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -21845,6 +21956,7 @@ var nl = {
|
|
|
21845
21956
|
"results.sortBy.popularity": "",
|
|
21846
21957
|
"results.sortBy.qualityScore": "",
|
|
21847
21958
|
"results.sortBy.relevancy": "",
|
|
21959
|
+
"reuse.metadata.access": "",
|
|
21848
21960
|
"search.autocomplete.error": "",
|
|
21849
21961
|
"search.error.couldNotReachApi": "",
|
|
21850
21962
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -21894,6 +22006,26 @@ var nl = {
|
|
|
21894
22006
|
"search.filters.useSpatialFilter": "",
|
|
21895
22007
|
"search.filters.useSpatialFilterHelp": "",
|
|
21896
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": "",
|
|
21897
22029
|
"share.tab.permalink": "",
|
|
21898
22030
|
"share.tab.webComponent": "",
|
|
21899
22031
|
"table.loading.data": "",
|
|
@@ -21988,7 +22120,6 @@ var pt = {
|
|
|
21988
22120
|
"datahub.news.contact.title": "",
|
|
21989
22121
|
"datahub.news.feed": "",
|
|
21990
22122
|
"datahub.news.figures": "",
|
|
21991
|
-
"datahub.record.addToFavorites": "",
|
|
21992
22123
|
"datahub.search.back": "",
|
|
21993
22124
|
"datahub.search.filter.all": "",
|
|
21994
22125
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -22159,6 +22290,7 @@ var pt = {
|
|
|
22159
22290
|
"editor.record.loadError.body": "",
|
|
22160
22291
|
"editor.record.loadError.closeMessage": "",
|
|
22161
22292
|
"editor.record.loadError.title": "",
|
|
22293
|
+
"editor.record.lock.format": "",
|
|
22162
22294
|
"editor.record.lock.reason": "",
|
|
22163
22295
|
"editor.record.onlineResource.protocol.other": "",
|
|
22164
22296
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -22218,7 +22350,6 @@ var pt = {
|
|
|
22218
22350
|
"input.image.dropFileLabel": "",
|
|
22219
22351
|
"input.image.selectFileLabel": "",
|
|
22220
22352
|
"input.image.uploadErrorLabel": "",
|
|
22221
|
-
"input.image.uploadErrorRetry": "",
|
|
22222
22353
|
"input.image.uploadProgressCancel": "",
|
|
22223
22354
|
"input.image.uploadProgressLabel": "",
|
|
22224
22355
|
"language.ca": "Catalão",
|
|
@@ -22258,6 +22389,7 @@ var pt = {
|
|
|
22258
22389
|
"map.wms.urlInput.hint": "",
|
|
22259
22390
|
"multiselect.filter.placeholder": "",
|
|
22260
22391
|
"nav.back": "",
|
|
22392
|
+
"navbar.mobile.menuTitle": "",
|
|
22261
22393
|
next: next,
|
|
22262
22394
|
"ogc.unreachable.unknown": "",
|
|
22263
22395
|
"organisation.filter.placeholder": "",
|
|
@@ -22284,6 +22416,7 @@ var pt = {
|
|
|
22284
22416
|
"record.card.metadata.contact": "",
|
|
22285
22417
|
"record.externalViewer.open": "",
|
|
22286
22418
|
"record.feature.limit": "",
|
|
22419
|
+
"record.kind.data": "",
|
|
22287
22420
|
"record.kind.dataset": "",
|
|
22288
22421
|
"record.kind.reuse": "",
|
|
22289
22422
|
"record.kind.service": "",
|
|
@@ -22320,6 +22453,7 @@ var pt = {
|
|
|
22320
22453
|
"record.metadata.api.form.zoneTitle": "",
|
|
22321
22454
|
"record.metadata.api.form.zoneTooltip": "",
|
|
22322
22455
|
"record.metadata.api.gpfdl": "",
|
|
22456
|
+
"record.metadata.capabilities": "",
|
|
22323
22457
|
"record.metadata.catalog": "",
|
|
22324
22458
|
"record.metadata.contact": "",
|
|
22325
22459
|
"record.metadata.creation": "",
|
|
@@ -22356,13 +22490,12 @@ var pt = {
|
|
|
22356
22490
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22357
22491
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22358
22492
|
"record.metadata.related": "",
|
|
22359
|
-
"record.metadata.related.contents": "
|
|
22493
|
+
"record.metadata.related.contents": "",
|
|
22360
22494
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22361
22495
|
"record.metadata.sheet": "",
|
|
22362
22496
|
"record.metadata.status": "",
|
|
22363
22497
|
"record.metadata.status.notPublished": "",
|
|
22364
22498
|
"record.metadata.status.published": "",
|
|
22365
|
-
"record.metadata.technical": "",
|
|
22366
22499
|
"record.metadata.temporalExtent": "",
|
|
22367
22500
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
22368
22501
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -22399,6 +22532,7 @@ var pt = {
|
|
|
22399
22532
|
"results.sortBy.popularity": "",
|
|
22400
22533
|
"results.sortBy.qualityScore": "",
|
|
22401
22534
|
"results.sortBy.relevancy": "",
|
|
22535
|
+
"reuse.metadata.access": "",
|
|
22402
22536
|
"search.autocomplete.error": "",
|
|
22403
22537
|
"search.error.couldNotReachApi": "",
|
|
22404
22538
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -22448,6 +22582,26 @@ var pt = {
|
|
|
22448
22582
|
"search.filters.useSpatialFilter": "",
|
|
22449
22583
|
"search.filters.useSpatialFilterHelp": "",
|
|
22450
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": "",
|
|
22451
22605
|
"share.tab.permalink": "",
|
|
22452
22606
|
"share.tab.webComponent": "",
|
|
22453
22607
|
"table.loading.data": "",
|
|
@@ -22796,8 +22950,8 @@ class Gn4FieldMapper {
|
|
|
22796
22950
|
return {
|
|
22797
22951
|
...distribution,
|
|
22798
22952
|
type,
|
|
22799
|
-
|
|
22800
|
-
|
|
22953
|
+
url: url,
|
|
22954
|
+
accessServiceProtocol: accessServiceProtocol,
|
|
22801
22955
|
};
|
|
22802
22956
|
}
|
|
22803
22957
|
};
|
|
@@ -23193,14 +23347,6 @@ class ElasticsearchService {
|
|
|
23193
23347
|
}
|
|
23194
23348
|
mustNotFilters() {
|
|
23195
23349
|
return [
|
|
23196
|
-
{
|
|
23197
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23198
|
-
'service',
|
|
23199
|
-
'map',
|
|
23200
|
-
'map/static',
|
|
23201
|
-
'mapDigital',
|
|
23202
|
-
]),
|
|
23203
|
-
},
|
|
23204
23350
|
{
|
|
23205
23351
|
query_string: {
|
|
23206
23352
|
query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
@@ -23299,7 +23445,7 @@ class ElasticsearchService {
|
|
|
23299
23445
|
must_not: this.mustNotFilters(),
|
|
23300
23446
|
},
|
|
23301
23447
|
},
|
|
23302
|
-
_source: ['resourceTitleObject', 'uuid'],
|
|
23448
|
+
_source: ['resourceTitleObject', 'uuid', 'resourceType'],
|
|
23303
23449
|
from: 0,
|
|
23304
23450
|
size: 20,
|
|
23305
23451
|
};
|
|
@@ -25037,7 +25183,7 @@ function getLinkLabel(link) {
|
|
|
25037
25183
|
default:
|
|
25038
25184
|
format = getFileFormat(link);
|
|
25039
25185
|
}
|
|
25040
|
-
const label = link.description || link.name;
|
|
25186
|
+
const label = link.description || ('name' in link ? link.name : '');
|
|
25041
25187
|
return format ? `${label} (${format})` : label;
|
|
25042
25188
|
}
|
|
25043
25189
|
async function getLayers(url, serviceProtocol) {
|
|
@@ -25048,14 +25194,21 @@ async function getLayers(url, serviceProtocol) {
|
|
|
25048
25194
|
}
|
|
25049
25195
|
case 'wfs': {
|
|
25050
25196
|
const endpointWfs = await new WfsEndpoint(url).isReady();
|
|
25051
|
-
|
|
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;
|
|
25052
25202
|
}
|
|
25053
25203
|
case 'wms': {
|
|
25054
25204
|
const endpointWms = await new WmsEndpoint(url).isReady();
|
|
25055
|
-
|
|
25205
|
+
const layers = (await endpointWms
|
|
25056
25206
|
.getLayers()
|
|
25057
25207
|
.flatMap(wmsLayerFlatten)
|
|
25058
|
-
.filter((l) => l.name)
|
|
25208
|
+
.filter((l) => l.name)).map((collection) => {
|
|
25209
|
+
return endpointWms.getLayerByName(collection.name);
|
|
25210
|
+
});
|
|
25211
|
+
return layers;
|
|
25059
25212
|
}
|
|
25060
25213
|
case 'wmts': {
|
|
25061
25214
|
const endpointWmts = await new WmtsEndpoint(url).isReady();
|
|
@@ -25092,6 +25245,7 @@ var LinkUsage;
|
|
|
25092
25245
|
class LinkClassifierService {
|
|
25093
25246
|
getUsagesForLink(link) {
|
|
25094
25247
|
switch (link.type) {
|
|
25248
|
+
case 'endpoint':
|
|
25095
25249
|
case 'service': {
|
|
25096
25250
|
switch (link.accessServiceProtocol) {
|
|
25097
25251
|
case 'esriRest':
|
|
@@ -25140,6 +25294,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25140
25294
|
}]
|
|
25141
25295
|
}] });
|
|
25142
25296
|
|
|
25297
|
+
var name = "geonetwork-ui";
|
|
25298
|
+
var version = "2.6.0-dev.76a84fb05";
|
|
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
|
+
|
|
25143
25397
|
const minApiVersion = '4.2.2';
|
|
25144
25398
|
class Gn4PlatformService {
|
|
25145
25399
|
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService, httpClient, recordsApiService) {
|
|
@@ -25333,12 +25587,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25333
25587
|
type: Injectable
|
|
25334
25588
|
}], ctorParameters: () => [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }] });
|
|
25335
25589
|
|
|
25590
|
+
class RecordsRepositoryInterface {
|
|
25591
|
+
}
|
|
25592
|
+
|
|
25336
25593
|
function provideGn4() {
|
|
25337
25594
|
return [
|
|
25338
25595
|
{
|
|
25339
25596
|
provide: PlatformServiceInterface,
|
|
25340
25597
|
useClass: Gn4PlatformService,
|
|
25341
25598
|
},
|
|
25599
|
+
{
|
|
25600
|
+
provide: RecordsRepositoryInterface,
|
|
25601
|
+
useClass: Gn4Repository,
|
|
25602
|
+
},
|
|
25342
25603
|
Gn4PlatformMapper,
|
|
25343
25604
|
];
|
|
25344
25605
|
}
|
|
@@ -25414,7 +25675,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25414
25675
|
|
|
25415
25676
|
class AnchorLinkDirective {
|
|
25416
25677
|
get elementClass() {
|
|
25417
|
-
|
|
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
|
+
}
|
|
25418
25687
|
}
|
|
25419
25688
|
constructor(changeDetector) {
|
|
25420
25689
|
this.changeDetector = changeDetector;
|
|
@@ -25422,6 +25691,8 @@ class AnchorLinkDirective {
|
|
|
25422
25691
|
this.observer = new MutationObserver(() => {
|
|
25423
25692
|
this.refreshDisabledState();
|
|
25424
25693
|
});
|
|
25694
|
+
this.inView = false;
|
|
25695
|
+
this.initialized = false;
|
|
25425
25696
|
}
|
|
25426
25697
|
ngOnInit() {
|
|
25427
25698
|
this.observer.observe(document.body, {
|
|
@@ -25430,8 +25701,32 @@ class AnchorLinkDirective {
|
|
|
25430
25701
|
});
|
|
25431
25702
|
this.refreshDisabledState();
|
|
25432
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
|
+
}
|
|
25433
25725
|
ngOnDestroy() {
|
|
25434
25726
|
this.observer.disconnect();
|
|
25727
|
+
if (this.intersectionObserver) {
|
|
25728
|
+
this.intersectionObserver.disconnect();
|
|
25729
|
+
}
|
|
25435
25730
|
}
|
|
25436
25731
|
refreshDisabledState() {
|
|
25437
25732
|
const targetNotPresent = !document.getElementById(this.targetId);
|
|
@@ -25450,7 +25745,7 @@ class AnchorLinkDirective {
|
|
|
25450
25745
|
});
|
|
25451
25746
|
}
|
|
25452
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 }); }
|
|
25453
|
-
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 }); }
|
|
25454
25749
|
}
|
|
25455
25750
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorLinkDirective, decorators: [{
|
|
25456
25751
|
type: Directive,
|
|
@@ -25466,6 +25761,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25466
25761
|
}], enabledClass: [{
|
|
25467
25762
|
type: Input,
|
|
25468
25763
|
args: ['gnUiAnchorLinkEnabledClass']
|
|
25764
|
+
}], inViewClass: [{
|
|
25765
|
+
type: Input,
|
|
25766
|
+
args: ['gnUiAnchorLinkInViewClass']
|
|
25767
|
+
}], outOfViewClass: [{
|
|
25768
|
+
type: Input,
|
|
25769
|
+
args: ['gnUiAnchorLinkOutOfViewClass']
|
|
25469
25770
|
}], elementClass: [{
|
|
25470
25771
|
type: HostBinding,
|
|
25471
25772
|
args: ['class']
|
|
@@ -25730,6 +26031,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25730
26031
|
type: Output
|
|
25731
26032
|
}] } });
|
|
25732
26033
|
|
|
26034
|
+
marker('editor.record.lock.reason');
|
|
26035
|
+
marker('editor.record.lock.format');
|
|
25733
26036
|
class InteractiveTableComponent {
|
|
25734
26037
|
constructor() {
|
|
25735
26038
|
this.items = [];
|
|
@@ -25747,15 +26050,24 @@ class InteractiveTableComponent {
|
|
|
25747
26050
|
.join(' '),
|
|
25748
26051
|
};
|
|
25749
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
|
+
}
|
|
25750
26062
|
handleRowClick(item) {
|
|
25751
26063
|
this.itemClick.emit(item);
|
|
25752
26064
|
}
|
|
25753
26065
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25754
|
-
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 }); }
|
|
25755
26067
|
}
|
|
25756
26068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
25757
26069
|
type: Component,
|
|
25758
|
-
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"] }]
|
|
25759
26071
|
}], propDecorators: { columns: [{
|
|
25760
26072
|
type: ContentChildren,
|
|
25761
26073
|
args: [InteractiveTableColumnComponent]
|
|
@@ -25999,11 +26311,11 @@ class ProgressBarComponent {
|
|
|
25999
26311
|
}
|
|
26000
26312
|
}
|
|
26001
26313
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26002
|
-
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]" }] }); }
|
|
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 data-cy=\"progressPercentage\"\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]" }] }); }
|
|
26003
26315
|
}
|
|
26004
26316
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
26005
26317
|
type: Component,
|
|
26006
|
-
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"] }]
|
|
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 data-cy=\"progressPercentage\"\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"] }]
|
|
26007
26319
|
}], propDecorators: { value: [{
|
|
26008
26320
|
type: Input
|
|
26009
26321
|
}], type: [{
|
|
@@ -27397,19 +27709,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27397
27709
|
type: Input
|
|
27398
27710
|
}] } });
|
|
27399
27711
|
|
|
27400
|
-
class NavigationButtonComponent {
|
|
27401
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27402
|
-
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 }); }
|
|
27403
|
-
}
|
|
27404
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
27405
|
-
type: Component,
|
|
27406
|
-
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"] }]
|
|
27407
|
-
}], propDecorators: { label: [{
|
|
27408
|
-
type: Input
|
|
27409
|
-
}], icon: [{
|
|
27410
|
-
type: Input
|
|
27411
|
-
}] } });
|
|
27412
|
-
|
|
27413
27712
|
class SearchInputComponent {
|
|
27414
27713
|
constructor() {
|
|
27415
27714
|
this.value = '';
|
|
@@ -27468,11 +27767,11 @@ class StarToggleComponent {
|
|
|
27468
27767
|
event.preventDefault();
|
|
27469
27768
|
}
|
|
27470
27769
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27471
|
-
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 }); }
|
|
27472
27771
|
}
|
|
27473
27772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
27474
27773
|
type: Component,
|
|
27475
|
-
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"] }]
|
|
27476
27775
|
}], propDecorators: { toggled: [{
|
|
27477
27776
|
type: Input
|
|
27478
27777
|
}], disabled: [{
|
|
@@ -29384,7 +29683,7 @@ class MetadataContactComponent {
|
|
|
29384
29683
|
this.organizationClick.emit(this.shownOrganization);
|
|
29385
29684
|
}
|
|
29386
29685
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29387
|
-
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: [
|
|
29388
29687
|
provideIcons({
|
|
29389
29688
|
matOpenInNew,
|
|
29390
29689
|
matCallOutline,
|
|
@@ -29404,7 +29703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29404
29703
|
matPersonOutline,
|
|
29405
29704
|
matLocationOnOutline,
|
|
29406
29705
|
}),
|
|
29407
|
-
], 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" }]
|
|
29408
29707
|
}], propDecorators: { metadata: [{
|
|
29409
29708
|
type: Input
|
|
29410
29709
|
}], organizationClick: [{
|
|
@@ -29489,6 +29788,316 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29489
29788
|
}]
|
|
29490
29789
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
|
|
29491
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
|
+
|
|
29492
30101
|
class MetadataInfoComponent {
|
|
29493
30102
|
constructor(dateService) {
|
|
29494
30103
|
this.dateService = dateService;
|
|
@@ -29541,7 +30150,7 @@ class MetadataInfoComponent {
|
|
|
29541
30150
|
}
|
|
29542
30151
|
}
|
|
29543
30152
|
get temporalExtent() {
|
|
29544
|
-
const temporalExtents = this.metadata.temporalExtents;
|
|
30153
|
+
const temporalExtents = this.metadata.kind === 'dataset' ? this.metadata.temporalExtents : [];
|
|
29545
30154
|
return getTemporalRangeUnion(temporalExtents, this.dateService);
|
|
29546
30155
|
}
|
|
29547
30156
|
get shownOrganization() {
|
|
@@ -29563,7 +30172,7 @@ class MetadataInfoComponent {
|
|
|
29563
30172
|
return this.dateService.formatDateTime(date);
|
|
29564
30173
|
}
|
|
29565
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 }); }
|
|
29566
|
-
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: [
|
|
29567
30176
|
provideIcons({
|
|
29568
30177
|
matOpenInNew,
|
|
29569
30178
|
matMailOutline: matMailOutline$1,
|
|
@@ -29584,12 +30193,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29584
30193
|
CopyTextButtonComponent,
|
|
29585
30194
|
NgIcon,
|
|
29586
30195
|
GnUiLinkifyDirective,
|
|
30196
|
+
MapContainerComponent,
|
|
30197
|
+
SpatialExtentComponent,
|
|
29587
30198
|
], viewProviders: [
|
|
29588
30199
|
provideIcons({
|
|
29589
30200
|
matOpenInNew,
|
|
29590
30201
|
matMailOutline: matMailOutline$1,
|
|
29591
30202
|
}),
|
|
29592
|
-
], 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"] }]
|
|
29593
30204
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
29594
30205
|
type: Input
|
|
29595
30206
|
}], incomplete: [{
|
|
@@ -29961,7 +30572,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29961
30572
|
type: Input
|
|
29962
30573
|
}] } });
|
|
29963
30574
|
|
|
29964
|
-
marker('record.kind.
|
|
30575
|
+
marker('record.kind.data');
|
|
29965
30576
|
marker('record.kind.reuse');
|
|
29966
30577
|
marker('record.kind.service');
|
|
29967
30578
|
class InternalLinkCardComponent {
|
|
@@ -30041,7 +30652,7 @@ class InternalLinkCardComponent {
|
|
|
30041
30652
|
return { text: '', icon: '' };
|
|
30042
30653
|
switch (this.record.kind.toLowerCase()) {
|
|
30043
30654
|
case 'dataset':
|
|
30044
|
-
return { text: 'record.kind.
|
|
30655
|
+
return { text: 'record.kind.data', icon: 'iconoirDatabase' };
|
|
30045
30656
|
case 'reuse':
|
|
30046
30657
|
return { text: 'record.kind.reuse', icon: 'iconoirMap' };
|
|
30047
30658
|
case 'service':
|
|
@@ -30109,6 +30720,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30109
30720
|
type: Output
|
|
30110
30721
|
}] } });
|
|
30111
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
|
+
|
|
30112
30871
|
class UiElementsModule {
|
|
30113
30872
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
30114
30873
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, declarations: [AvatarComponent, UserPreviewComponent], imports: [CommonModule,
|
|
@@ -30128,13 +30887,15 @@ class UiElementsModule {
|
|
|
30128
30887
|
TextInputComponent,
|
|
30129
30888
|
ImageInputComponent,
|
|
30130
30889
|
ApplicationBannerComponent,
|
|
30131
|
-
InternalLinkCardComponent
|
|
30890
|
+
InternalLinkCardComponent,
|
|
30891
|
+
ServiceCapabilitiesComponent], exports: [ThumbnailComponent,
|
|
30132
30892
|
AvatarComponent,
|
|
30133
30893
|
UserPreviewComponent,
|
|
30134
30894
|
MarkdownParserComponent,
|
|
30135
30895
|
ImageInputComponent,
|
|
30136
30896
|
ApplicationBannerComponent,
|
|
30137
|
-
InternalLinkCardComponent
|
|
30897
|
+
InternalLinkCardComponent,
|
|
30898
|
+
ServiceCapabilitiesComponent] }); }
|
|
30138
30899
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
30139
30900
|
provideNgIconsConfig({
|
|
30140
30901
|
size: '1.5em',
|
|
@@ -30155,7 +30916,8 @@ class UiElementsModule {
|
|
|
30155
30916
|
TextInputComponent,
|
|
30156
30917
|
ImageInputComponent,
|
|
30157
30918
|
ApplicationBannerComponent,
|
|
30158
|
-
InternalLinkCardComponent
|
|
30919
|
+
InternalLinkCardComponent,
|
|
30920
|
+
ServiceCapabilitiesComponent] }); }
|
|
30159
30921
|
}
|
|
30160
30922
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
30161
30923
|
type: NgModule,
|
|
@@ -30181,6 +30943,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30181
30943
|
ImageInputComponent,
|
|
30182
30944
|
ApplicationBannerComponent,
|
|
30183
30945
|
InternalLinkCardComponent,
|
|
30946
|
+
ServiceCapabilitiesComponent,
|
|
30184
30947
|
],
|
|
30185
30948
|
providers: [
|
|
30186
30949
|
provideNgIconsConfig({
|
|
@@ -30196,6 +30959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30196
30959
|
ImageInputComponent,
|
|
30197
30960
|
ApplicationBannerComponent,
|
|
30198
30961
|
InternalLinkCardComponent,
|
|
30962
|
+
ServiceCapabilitiesComponent,
|
|
30199
30963
|
],
|
|
30200
30964
|
}]
|
|
30201
30965
|
}] });
|
|
@@ -30536,8 +31300,9 @@ class ResultsTableComponent {
|
|
|
30536
31300
|
return getBadgeColor(format);
|
|
30537
31301
|
}
|
|
30538
31302
|
handleRecordClick(item) {
|
|
30539
|
-
if (item?.extras?.edit || this.isDraftPage)
|
|
31303
|
+
if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
|
|
30540
31304
|
this.recordClick.emit(item);
|
|
31305
|
+
}
|
|
30541
31306
|
}
|
|
30542
31307
|
handleDuplicate(item) {
|
|
30543
31308
|
this.duplicateRecord.emit(item);
|
|
@@ -30574,7 +31339,7 @@ class ResultsTableComponent {
|
|
|
30574
31339
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30575
31340
|
}
|
|
30576
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 }); }
|
|
30577
|
-
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"] }] }); }
|
|
30578
31343
|
}
|
|
30579
31344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30580
31345
|
type: Component,
|
|
@@ -30588,7 +31353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30588
31353
|
ActionMenuComponent,
|
|
30589
31354
|
NgIconComponent,
|
|
30590
31355
|
CdkOverlayOrigin,
|
|
30591
|
-
], 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" }]
|
|
30592
31357
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30593
31358
|
type: Input
|
|
30594
31359
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -31619,9 +32384,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31619
32384
|
type: Injectable
|
|
31620
32385
|
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
31621
32386
|
|
|
31622
|
-
class RecordsRepositoryInterface {
|
|
31623
|
-
}
|
|
31624
|
-
|
|
31625
32387
|
class FuzzySearchComponent {
|
|
31626
32388
|
constructor(searchFacade, searchService, recordsRepository) {
|
|
31627
32389
|
this.searchFacade = searchFacade;
|
|
@@ -31760,7 +32522,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31760
32522
|
}] }] });
|
|
31761
32523
|
|
|
31762
32524
|
// expects the replacement key ${uuid}
|
|
31763
|
-
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');
|
|
31764
32528
|
|
|
31765
32529
|
class FavoriteStarComponent {
|
|
31766
32530
|
set record(value) {
|
|
@@ -31787,9 +32551,10 @@ class FavoriteStarComponent {
|
|
|
31787
32551
|
this.isAnonymous$ = this.platformService.isAnonymous();
|
|
31788
32552
|
this.loading = false;
|
|
31789
32553
|
this.loginUrl = this.authService.loginUrl;
|
|
31790
|
-
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', {
|
|
31791
32556
|
link: this.loginUrl,
|
|
31792
|
-
});
|
|
32557
|
+
})));
|
|
31793
32558
|
}
|
|
31794
32559
|
ngAfterViewInit() {
|
|
31795
32560
|
this.subscription = this.isAnonymous$
|
|
@@ -31845,11 +32610,11 @@ class FavoriteStarComponent {
|
|
|
31845
32610
|
});
|
|
31846
32611
|
}
|
|
31847
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 }); }
|
|
31848
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n
|
|
32613
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31849
32614
|
}
|
|
31850
32615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
31851
32616
|
type: Component,
|
|
31852
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n
|
|
32617
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent, TranslateModule], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n</div>\n" }]
|
|
31853
32618
|
}], ctorParameters: () => [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }], propDecorators: { displayCount: [{
|
|
31854
32619
|
type: Input
|
|
31855
32620
|
}], record: [{
|
|
@@ -31860,10 +32625,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31860
32625
|
}] } });
|
|
31861
32626
|
|
|
31862
32627
|
class ResultsListContainerComponent {
|
|
31863
|
-
constructor(facade, resultsLayoutConfig,
|
|
32628
|
+
constructor(facade, resultsLayoutConfig, recordDatasetUrlTemplate, recordServiceUrlTemplate, recordReuseUrlTemplate) {
|
|
31864
32629
|
this.facade = facade;
|
|
31865
32630
|
this.resultsLayoutConfig = resultsLayoutConfig;
|
|
31866
|
-
this.
|
|
32631
|
+
this.recordDatasetUrlTemplate = recordDatasetUrlTemplate;
|
|
32632
|
+
this.recordServiceUrlTemplate = recordServiceUrlTemplate;
|
|
32633
|
+
this.recordReuseUrlTemplate = recordReuseUrlTemplate;
|
|
31867
32634
|
this.showMore = 'auto';
|
|
31868
32635
|
this.mdSelect = new EventEmitter();
|
|
31869
32636
|
this.errorTypes = ErrorType;
|
|
@@ -31895,16 +32662,24 @@ class ResultsListContainerComponent {
|
|
|
31895
32662
|
this.facade.scroll();
|
|
31896
32663
|
}
|
|
31897
32664
|
getRecordUrl(metadata) {
|
|
31898
|
-
|
|
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)
|
|
31899
32673
|
return null;
|
|
31900
|
-
|
|
32674
|
+
const urlKind = tokenMap[metadata.kind];
|
|
32675
|
+
return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
|
|
31901
32676
|
}
|
|
31902
|
-
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:
|
|
31903
|
-
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" }] }); }
|
|
31904
32679
|
}
|
|
31905
32680
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
31906
32681
|
type: Component,
|
|
31907
|
-
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"] }]
|
|
31908
32683
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: undefined, decorators: [{
|
|
31909
32684
|
type: Inject,
|
|
31910
32685
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
@@ -31912,7 +32687,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31912
32687
|
type: Optional
|
|
31913
32688
|
}, {
|
|
31914
32689
|
type: Inject,
|
|
31915
|
-
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]
|
|
31916
32697
|
}] }], propDecorators: { metadataQualityDisplay: [{
|
|
31917
32698
|
type: Input
|
|
31918
32699
|
}], layout: [{
|
|
@@ -32664,12 +33445,7 @@ class FeatureSearchModule {
|
|
|
32664
33445
|
FacetsModule,
|
|
32665
33446
|
SearchStateContainerDirective,
|
|
32666
33447
|
FilterDropdownComponent] }); }
|
|
32667
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule,
|
|
32668
|
-
{
|
|
32669
|
-
provide: RecordsRepositoryInterface,
|
|
32670
|
-
useClass: Gn4Repository,
|
|
32671
|
-
},
|
|
32672
|
-
], imports: [CommonModule,
|
|
33448
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, imports: [CommonModule,
|
|
32673
33449
|
TranslateModule.forChild(),
|
|
32674
33450
|
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
32675
33451
|
initialState,
|
|
@@ -32731,12 +33507,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32731
33507
|
SearchStateContainerDirective,
|
|
32732
33508
|
FilterDropdownComponent,
|
|
32733
33509
|
],
|
|
32734
|
-
providers: [
|
|
32735
|
-
{
|
|
32736
|
-
provide: RecordsRepositoryInterface,
|
|
32737
|
-
useClass: Gn4Repository,
|
|
32738
|
-
},
|
|
32739
|
-
],
|
|
32740
33510
|
}]
|
|
32741
33511
|
}] });
|
|
32742
33512
|
|
|
@@ -33224,247 +33994,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33224
33994
|
}]
|
|
33225
33995
|
}] });
|
|
33226
33996
|
|
|
33227
|
-
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
33228
|
-
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
33229
|
-
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
33230
|
-
factory: () => ({}),
|
|
33231
|
-
});
|
|
33232
|
-
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
33233
|
-
factory: () => ({
|
|
33234
|
-
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
33235
|
-
stroke: { color: '#ffcc33', width: 2 },
|
|
33236
|
-
}),
|
|
33237
|
-
});
|
|
33238
|
-
|
|
33239
|
-
const DEFAULT_BASEMAP_LAYER = {
|
|
33240
|
-
type: 'xyz',
|
|
33241
|
-
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
33242
|
-
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
33243
|
-
};
|
|
33244
|
-
const DEFAULT_VIEW = {
|
|
33245
|
-
center: [0, 15],
|
|
33246
|
-
zoom: 2,
|
|
33247
|
-
};
|
|
33248
|
-
class MapContainerComponent {
|
|
33249
|
-
get featuresClick() {
|
|
33250
|
-
if (!this._featuresClick) {
|
|
33251
|
-
this.openlayersMap.then((olMap) => {
|
|
33252
|
-
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
33253
|
-
});
|
|
33254
|
-
this._featuresClick = new EventEmitter();
|
|
33255
|
-
}
|
|
33256
|
-
return this._featuresClick;
|
|
33257
|
-
}
|
|
33258
|
-
get featuresHover() {
|
|
33259
|
-
if (!this._featuresHover) {
|
|
33260
|
-
this.openlayersMap.then((olMap) => {
|
|
33261
|
-
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
33262
|
-
});
|
|
33263
|
-
this._featuresHover = new EventEmitter();
|
|
33264
|
-
}
|
|
33265
|
-
return this._featuresHover;
|
|
33266
|
-
}
|
|
33267
|
-
get mapClick() {
|
|
33268
|
-
if (!this._mapClick) {
|
|
33269
|
-
this.openlayersMap.then((olMap) => {
|
|
33270
|
-
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
33271
|
-
});
|
|
33272
|
-
this._mapClick = new EventEmitter();
|
|
33273
|
-
}
|
|
33274
|
-
return this._mapClick;
|
|
33275
|
-
}
|
|
33276
|
-
get sourceLoadError() {
|
|
33277
|
-
if (!this._sourceLoadError) {
|
|
33278
|
-
this.openlayersMap.then((olMap) => {
|
|
33279
|
-
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
33280
|
-
});
|
|
33281
|
-
this._sourceLoadError = new EventEmitter();
|
|
33282
|
-
}
|
|
33283
|
-
return this._sourceLoadError;
|
|
33284
|
-
}
|
|
33285
|
-
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
33286
|
-
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
33287
|
-
this.basemapLayers = basemapLayers;
|
|
33288
|
-
this.mapViewConstraints = mapViewConstraints;
|
|
33289
|
-
this.openlayersMap = new Promise((resolve) => {
|
|
33290
|
-
this.olMapResolver = resolve;
|
|
33291
|
-
});
|
|
33292
|
-
}
|
|
33293
|
-
async ngAfterViewInit() {
|
|
33294
|
-
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
33295
|
-
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
|
|
33296
|
-
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
33297
|
-
: of(false)));
|
|
33298
|
-
this.olMapResolver(this.olMap);
|
|
33299
|
-
}
|
|
33300
|
-
async ngOnChanges(changes) {
|
|
33301
|
-
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
33302
|
-
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
33303
|
-
await applyContextDiffToMap(this.olMap, diff);
|
|
33304
|
-
}
|
|
33305
|
-
}
|
|
33306
|
-
// This will apply basemap layers & view constraints
|
|
33307
|
-
processContext(context) {
|
|
33308
|
-
const processed = context
|
|
33309
|
-
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
33310
|
-
: { layers: [], view: DEFAULT_VIEW };
|
|
33311
|
-
if (this.basemapLayers.length) {
|
|
33312
|
-
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
33313
|
-
}
|
|
33314
|
-
if (!this.doNotUseDefaultBasemap) {
|
|
33315
|
-
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
33316
|
-
}
|
|
33317
|
-
if (this.mapViewConstraints.maxZoom) {
|
|
33318
|
-
processed.view = {
|
|
33319
|
-
maxZoom: this.mapViewConstraints.maxZoom,
|
|
33320
|
-
...processed.view,
|
|
33321
|
-
};
|
|
33322
|
-
}
|
|
33323
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33324
|
-
processed.view = {
|
|
33325
|
-
maxExtent: this.mapViewConstraints.maxExtent,
|
|
33326
|
-
...processed.view,
|
|
33327
|
-
};
|
|
33328
|
-
}
|
|
33329
|
-
if (processed.view &&
|
|
33330
|
-
!('zoom' in processed.view) &&
|
|
33331
|
-
!('center' in processed.view)) {
|
|
33332
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33333
|
-
processed.view = {
|
|
33334
|
-
extent: this.mapViewConstraints.maxExtent,
|
|
33335
|
-
...processed.view,
|
|
33336
|
-
};
|
|
33337
|
-
}
|
|
33338
|
-
else {
|
|
33339
|
-
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
33340
|
-
}
|
|
33341
|
-
}
|
|
33342
|
-
return processed;
|
|
33343
|
-
}
|
|
33344
|
-
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 }); }
|
|
33345
|
-
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: [
|
|
33346
|
-
provideIcons({ matSwipeOutline }),
|
|
33347
|
-
provideNgIconsConfig({
|
|
33348
|
-
size: '1.5em',
|
|
33349
|
-
}),
|
|
33350
|
-
], 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 }); }
|
|
33351
|
-
}
|
|
33352
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
33353
|
-
type: Component,
|
|
33354
|
-
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
33355
|
-
provideIcons({ matSwipeOutline }),
|
|
33356
|
-
provideNgIconsConfig({
|
|
33357
|
-
size: '1.5em',
|
|
33358
|
-
}),
|
|
33359
|
-
], 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" }]
|
|
33360
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
33361
|
-
type: Inject,
|
|
33362
|
-
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
33363
|
-
}] }, { type: undefined, decorators: [{
|
|
33364
|
-
type: Inject,
|
|
33365
|
-
args: [BASEMAP_LAYERS]
|
|
33366
|
-
}] }, { type: undefined, decorators: [{
|
|
33367
|
-
type: Inject,
|
|
33368
|
-
args: [MAP_VIEW_CONSTRAINTS]
|
|
33369
|
-
}] }], propDecorators: { context: [{
|
|
33370
|
-
type: Input
|
|
33371
|
-
}], featuresClick: [{
|
|
33372
|
-
type: Output
|
|
33373
|
-
}], featuresHover: [{
|
|
33374
|
-
type: Output
|
|
33375
|
-
}], mapClick: [{
|
|
33376
|
-
type: Output
|
|
33377
|
-
}], sourceLoadError: [{
|
|
33378
|
-
type: Output
|
|
33379
|
-
}], container: [{
|
|
33380
|
-
type: ViewChild,
|
|
33381
|
-
args: ['map']
|
|
33382
|
-
}] } });
|
|
33383
|
-
|
|
33384
|
-
const geometryKeys = ['geometry', 'the_geom'];
|
|
33385
|
-
class FeatureDetailComponent {
|
|
33386
|
-
get properties() {
|
|
33387
|
-
if (!this.feature)
|
|
33388
|
-
return [];
|
|
33389
|
-
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
33390
|
-
}
|
|
33391
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33392
|
-
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 }); }
|
|
33393
|
-
}
|
|
33394
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
33395
|
-
type: Component,
|
|
33396
|
-
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"] }]
|
|
33397
|
-
}], propDecorators: { feature: [{
|
|
33398
|
-
type: Input
|
|
33399
|
-
}] } });
|
|
33400
|
-
|
|
33401
|
-
class MapLegendComponent {
|
|
33402
|
-
constructor() {
|
|
33403
|
-
this.legendStatusChange = new EventEmitter();
|
|
33404
|
-
}
|
|
33405
|
-
async ngOnChanges(changes) {
|
|
33406
|
-
if ('context' in changes) {
|
|
33407
|
-
const mapContext = changes['context'].currentValue;
|
|
33408
|
-
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
33409
|
-
const mapContextLayer = mapContext.layers[0];
|
|
33410
|
-
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
33411
|
-
if (this.legendHTML) {
|
|
33412
|
-
this.legendStatusChange.emit(true);
|
|
33413
|
-
}
|
|
33414
|
-
}
|
|
33415
|
-
else {
|
|
33416
|
-
this.legendHTML = false;
|
|
33417
|
-
this.legendStatusChange.emit(false);
|
|
33418
|
-
}
|
|
33419
|
-
}
|
|
33420
|
-
}
|
|
33421
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33422
|
-
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 }); }
|
|
33423
|
-
}
|
|
33424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
33425
|
-
type: Component,
|
|
33426
|
-
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"] }]
|
|
33427
|
-
}], propDecorators: { context: [{
|
|
33428
|
-
type: Input
|
|
33429
|
-
}], legendStatusChange: [{
|
|
33430
|
-
type: Output
|
|
33431
|
-
}] } });
|
|
33432
|
-
|
|
33433
|
-
function prioritizePageScroll(interactions) {
|
|
33434
|
-
interactions.clear();
|
|
33435
|
-
interactions.extend(defaults({
|
|
33436
|
-
// remove rotate interactions
|
|
33437
|
-
altShiftDragRotate: false,
|
|
33438
|
-
pinchRotate: false,
|
|
33439
|
-
// replace drag and zoom interactions
|
|
33440
|
-
dragPan: false,
|
|
33441
|
-
mouseWheelZoom: false,
|
|
33442
|
-
})
|
|
33443
|
-
.extend([
|
|
33444
|
-
new DragPan({
|
|
33445
|
-
condition: dragPanCondition,
|
|
33446
|
-
}),
|
|
33447
|
-
new MouseWheelZoom({
|
|
33448
|
-
condition: mouseWheelZoomCondition,
|
|
33449
|
-
}),
|
|
33450
|
-
])
|
|
33451
|
-
.getArray());
|
|
33452
|
-
}
|
|
33453
|
-
function dragPanCondition(event) {
|
|
33454
|
-
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
33455
|
-
if (!dragPanCondition) {
|
|
33456
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33457
|
-
}
|
|
33458
|
-
// combine the condition with the default DragPan conditions
|
|
33459
|
-
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
33460
|
-
}
|
|
33461
|
-
function mouseWheelZoomCondition(event) {
|
|
33462
|
-
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
33463
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33464
|
-
}
|
|
33465
|
-
return platformModifierKeyOnly(event);
|
|
33466
|
-
}
|
|
33467
|
-
|
|
33468
33997
|
class MapStateContainerComponent {
|
|
33469
33998
|
constructor(mapFacade) {
|
|
33470
33999
|
this.mapFacade = mapFacade;
|
|
@@ -34116,6 +34645,7 @@ function loadAppConfig() {
|
|
|
34116
34645
|
'metadata_language',
|
|
34117
34646
|
'login_url',
|
|
34118
34647
|
'logout_url',
|
|
34648
|
+
'settings_url',
|
|
34119
34649
|
'web_component_embedder_url',
|
|
34120
34650
|
'languages',
|
|
34121
34651
|
'contact_email',
|
|
@@ -34266,6 +34796,7 @@ proxy_path = "/proxy/?url="
|
|
|
34266
34796
|
metadata_language = "fre"
|
|
34267
34797
|
login_url = "/cas/login?service="
|
|
34268
34798
|
logout_url = "/geonetwork/signout"
|
|
34799
|
+
settings_url = "/geonetwork/settings"
|
|
34269
34800
|
web_component_embedder_url = "/datahub/wc-embedder.html"
|
|
34270
34801
|
|
|
34271
34802
|
[map]
|
|
@@ -37129,15 +37660,13 @@ class MdViewFacade {
|
|
|
37129
37660
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
37130
37661
|
this.related$ = this.store.pipe(select(getRelated));
|
|
37131
37662
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
37132
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) =>
|
|
37133
|
-
? record.onlineResources
|
|
37134
|
-
: []));
|
|
37663
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('onlineResources' in record ? record.onlineResources : [])));
|
|
37135
37664
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links
|
|
37136
37665
|
.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
|
|
37137
37666
|
// Put links to IGN Géoplateforme first
|
|
37138
37667
|
.sort((dd1, dd2) => {
|
|
37139
|
-
return dd2
|
|
37140
|
-
'GPFDL'
|
|
37668
|
+
return dd2
|
|
37669
|
+
.accessServiceProtocol === 'GPFDL'
|
|
37141
37670
|
? 1
|
|
37142
37671
|
: undefined; // do not change the sorting otherwise
|
|
37143
37672
|
})));
|
|
@@ -37208,15 +37737,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37208
37737
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }, { type: DataService }] });
|
|
37209
37738
|
|
|
37210
37739
|
class MdViewEffects {
|
|
37211
|
-
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
37740
|
+
constructor(actions$, recordsRepository, platformServiceInterface, router) {
|
|
37212
37741
|
this.actions$ = actions$;
|
|
37213
37742
|
this.recordsRepository = recordsRepository;
|
|
37214
37743
|
this.platformServiceInterface = platformServiceInterface;
|
|
37744
|
+
this.router = router;
|
|
37215
37745
|
/*
|
|
37216
37746
|
Metadata effects
|
|
37217
37747
|
*/
|
|
37218
37748
|
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
37219
|
-
if (record === null) {
|
|
37749
|
+
if (record === null || !this.router.url.includes(record.kind)) {
|
|
37220
37750
|
return loadFullMetadataFailure({ notFound: true });
|
|
37221
37751
|
}
|
|
37222
37752
|
return loadFullMetadataSuccess({ full: record });
|
|
@@ -37251,12 +37781,12 @@ class MdViewEffects {
|
|
|
37251
37781
|
}));
|
|
37252
37782
|
})))));
|
|
37253
37783
|
}
|
|
37254
|
-
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 }); }
|
|
37255
37785
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects }); }
|
|
37256
37786
|
}
|
|
37257
37787
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
37258
37788
|
type: Injectable
|
|
37259
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }] });
|
|
37789
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }, { type: i1$d.Router }] });
|
|
37260
37790
|
|
|
37261
37791
|
class CatalogTitleComponent {
|
|
37262
37792
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CatalogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -37313,11 +37843,11 @@ class LanguageSwitcherComponent {
|
|
|
37313
37843
|
this.translate.use(value);
|
|
37314
37844
|
}
|
|
37315
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 }); }
|
|
37316
|
-
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"] }] }); }
|
|
37317
37847
|
}
|
|
37318
37848
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
37319
37849
|
type: Component,
|
|
37320
|
-
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" }]
|
|
37321
37851
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
37322
37852
|
type: Optional
|
|
37323
37853
|
}, {
|
|
@@ -37739,17 +38269,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37739
38269
|
}]
|
|
37740
38270
|
}] });
|
|
37741
38271
|
|
|
37742
|
-
const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
37743
|
-
|
|
37744
38272
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
37745
38273
|
class DataViewPermalinkComponent {
|
|
37746
38274
|
set viewType(value) {
|
|
37747
38275
|
this.viewType$.next(value);
|
|
37748
38276
|
}
|
|
37749
|
-
constructor(config, wcEmbedderBaseUrl,
|
|
38277
|
+
constructor(config, wcEmbedderBaseUrl, facade) {
|
|
37750
38278
|
this.config = config;
|
|
37751
38279
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
37752
|
-
this.version = version;
|
|
37753
38280
|
this.facade = facade;
|
|
37754
38281
|
this.viewType$ = new BehaviorSubject('map');
|
|
37755
38282
|
this.permalinkUrl$ = combineLatest([
|
|
@@ -37758,7 +38285,7 @@ class DataViewPermalinkComponent {
|
|
|
37758
38285
|
this.facade.metadata$,
|
|
37759
38286
|
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
37760
38287
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
37761
|
-
url.searchParams.set('v', `${
|
|
38288
|
+
url.searchParams.set('v', `${GEONETWORK_UI_TAG_NAME}`);
|
|
37762
38289
|
if (viewType === 'chart') {
|
|
37763
38290
|
if (config) {
|
|
37764
38291
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
@@ -37789,7 +38316,7 @@ class DataViewPermalinkComponent {
|
|
|
37789
38316
|
return url.toString();
|
|
37790
38317
|
}));
|
|
37791
38318
|
}
|
|
37792
|
-
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 }); }
|
|
37793
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 }); }
|
|
37794
38321
|
}
|
|
37795
38322
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
@@ -37803,9 +38330,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37803
38330
|
}, {
|
|
37804
38331
|
type: Inject,
|
|
37805
38332
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
37806
|
-
}] }, { type: undefined, decorators: [{
|
|
37807
|
-
type: Inject,
|
|
37808
|
-
args: [GN_UI_VERSION]
|
|
37809
38333
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37810
38334
|
type: Input
|
|
37811
38335
|
}] } });
|
|
@@ -37884,16 +38408,15 @@ class DataViewWebComponentComponent {
|
|
|
37884
38408
|
set viewType(value) {
|
|
37885
38409
|
this.viewType$.next(value);
|
|
37886
38410
|
}
|
|
37887
|
-
constructor(config,
|
|
38411
|
+
constructor(config, facade) {
|
|
37888
38412
|
this.config = config;
|
|
37889
|
-
this.version = version;
|
|
37890
38413
|
this.facade = facade;
|
|
37891
38414
|
this.viewType$ = new BehaviorSubject('map');
|
|
37892
38415
|
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
37893
38416
|
if (viewType === 'chart') {
|
|
37894
38417
|
if (config) {
|
|
37895
38418
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
37896
|
-
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>
|
|
37897
38420
|
<gn-dataset-view-chart
|
|
37898
38421
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37899
38422
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37912,7 +38435,7 @@ class DataViewWebComponentComponent {
|
|
|
37912
38435
|
return '';
|
|
37913
38436
|
}
|
|
37914
38437
|
else if (viewType === 'table') {
|
|
37915
|
-
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>
|
|
37916
38439
|
<gn-dataset-view-table
|
|
37917
38440
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37918
38441
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37925,7 +38448,7 @@ class DataViewWebComponentComponent {
|
|
|
37925
38448
|
></gn-dataset-view-table>`;
|
|
37926
38449
|
}
|
|
37927
38450
|
else {
|
|
37928
|
-
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>
|
|
37929
38452
|
<gn-dataset-view-map
|
|
37930
38453
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37931
38454
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37939,7 +38462,7 @@ class DataViewWebComponentComponent {
|
|
|
37939
38462
|
}
|
|
37940
38463
|
}));
|
|
37941
38464
|
}
|
|
37942
|
-
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 }); }
|
|
37943
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 }); }
|
|
37944
38467
|
}
|
|
37945
38468
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
@@ -37948,9 +38471,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37948
38471
|
}], ctorParameters: () => [{ type: Configuration, decorators: [{
|
|
37949
38472
|
type: Inject,
|
|
37950
38473
|
args: [Configuration]
|
|
37951
|
-
}] }, { type: undefined, decorators: [{
|
|
37952
|
-
type: Inject,
|
|
37953
|
-
args: [GN_UI_VERSION]
|
|
37954
38474
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37955
38475
|
type: Input
|
|
37956
38476
|
}] } });
|
|
@@ -38451,7 +38971,7 @@ class RecordMetaComponent {
|
|
|
38451
38971
|
this.meta.removeTag('property="og:url"');
|
|
38452
38972
|
this.meta.removeTag('property="og:title"');
|
|
38453
38973
|
}
|
|
38454
|
-
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 }); }
|
|
38455
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 }); }
|
|
38456
38976
|
}
|
|
38457
38977
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
|
|
@@ -38462,7 +38982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38462
38982
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38463
38983
|
standalone: true,
|
|
38464
38984
|
}]
|
|
38465
|
-
}], ctorParameters: () => [{ type: i1$
|
|
38985
|
+
}], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
|
|
38466
38986
|
type: Input
|
|
38467
38987
|
}] } });
|
|
38468
38988
|
|
|
@@ -39510,7 +40030,7 @@ class ImportRecordComponent {
|
|
|
39510
40030
|
},
|
|
39511
40031
|
});
|
|
39512
40032
|
}
|
|
39513
|
-
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 }); }
|
|
39514
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: [
|
|
39515
40035
|
provideIcons({
|
|
39516
40036
|
iconoirImport,
|
|
@@ -39541,7 +40061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39541
40061
|
size: '1.5em',
|
|
39542
40062
|
}),
|
|
39543
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" }]
|
|
39544
|
-
}], ctorParameters: () => [{ type: i1$
|
|
40064
|
+
}], ctorParameters: () => [{ type: i1$d.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
|
|
39545
40065
|
type: Output
|
|
39546
40066
|
}] } });
|
|
39547
40067
|
|
|
@@ -39905,75 +40425,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39905
40425
|
args: [{ selector: 'gn-ui-form-field-array', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-array works!</p>\n" }]
|
|
39906
40426
|
}] });
|
|
39907
40427
|
|
|
39908
|
-
class FormFieldMapContainerComponent {
|
|
39909
|
-
constructor() {
|
|
39910
|
-
this.spatialExtents$ = new BehaviorSubject([]);
|
|
39911
|
-
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
39912
|
-
if (extents.length === 0) {
|
|
39913
|
-
return null; // null extent means default view
|
|
39914
|
-
}
|
|
39915
|
-
const featureCollection = {
|
|
39916
|
-
type: 'FeatureCollection',
|
|
39917
|
-
features: [],
|
|
39918
|
-
};
|
|
39919
|
-
extents.forEach((extent) => {
|
|
39920
|
-
if (extent.geometry) {
|
|
39921
|
-
featureCollection.features.push({
|
|
39922
|
-
type: 'Feature',
|
|
39923
|
-
properties: {},
|
|
39924
|
-
geometry: extent.geometry,
|
|
39925
|
-
});
|
|
39926
|
-
}
|
|
39927
|
-
else if (extent.bbox?.length >= 0) {
|
|
39928
|
-
featureCollection.features.push({
|
|
39929
|
-
type: 'Feature',
|
|
39930
|
-
properties: {},
|
|
39931
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
39932
|
-
});
|
|
39933
|
-
}
|
|
39934
|
-
});
|
|
39935
|
-
const layer = {
|
|
39936
|
-
type: 'geojson',
|
|
39937
|
-
data: featureCollection,
|
|
39938
|
-
label: 'Spatial extents',
|
|
39939
|
-
style: {
|
|
39940
|
-
'stroke-color': 'black',
|
|
39941
|
-
'stroke-width': 2,
|
|
39942
|
-
},
|
|
39943
|
-
};
|
|
39944
|
-
const view = await createViewFromLayer(layer);
|
|
39945
|
-
return {
|
|
39946
|
-
view,
|
|
39947
|
-
layers: [layer],
|
|
39948
|
-
};
|
|
39949
|
-
}));
|
|
39950
|
-
this.error = '';
|
|
39951
|
-
}
|
|
39952
|
-
set spatialExtents(value) {
|
|
39953
|
-
this.spatialExtents$.next(value);
|
|
39954
|
-
}
|
|
39955
|
-
bboxCoordsToGeometry(bbox) {
|
|
39956
|
-
const geometry = new Polygon([
|
|
39957
|
-
[
|
|
39958
|
-
[bbox[0], bbox[1]],
|
|
39959
|
-
[bbox[0], bbox[3]],
|
|
39960
|
-
[bbox[2], bbox[3]],
|
|
39961
|
-
[bbox[2], bbox[1]],
|
|
39962
|
-
[bbox[0], bbox[1]],
|
|
39963
|
-
],
|
|
39964
|
-
]);
|
|
39965
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
39966
|
-
}
|
|
39967
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39968
|
-
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 }); }
|
|
39969
|
-
}
|
|
39970
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
39971
|
-
type: Component,
|
|
39972
|
-
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" }]
|
|
39973
|
-
}], propDecorators: { spatialExtents: [{
|
|
39974
|
-
type: Input
|
|
39975
|
-
}] } });
|
|
39976
|
-
|
|
39977
40428
|
/**
|
|
39978
40429
|
* This form field is not like the others, as it will read directly from the state to handle both spatial extents
|
|
39979
40430
|
* and place keywords.
|
|
@@ -40070,16 +40521,16 @@ class FormFieldSpatialExtentComponent {
|
|
|
40070
40521
|
this.editorFacade.updateRecordField('spatialExtents', spatialExtents);
|
|
40071
40522
|
}
|
|
40072
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 }); }
|
|
40073
|
-
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 }); }
|
|
40074
40525
|
}
|
|
40075
40526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, decorators: [{
|
|
40076
40527
|
type: Component,
|
|
40077
40528
|
args: [{ selector: 'gn-ui-form-field-spatial-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
40078
40529
|
CommonModule,
|
|
40079
40530
|
GenericKeywordsComponent,
|
|
40080
|
-
FormFieldMapContainerComponent,
|
|
40081
40531
|
TranslateModule,
|
|
40082
|
-
|
|
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" }]
|
|
40083
40534
|
}], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: EditorFacade }, { type: i1$1.TranslateService }] });
|
|
40084
40535
|
|
|
40085
40536
|
class ContactCardComponent {
|
|
@@ -40337,9 +40788,8 @@ class OnlineResourceCardComponent {
|
|
|
40337
40788
|
get subtitle() {
|
|
40338
40789
|
switch (this.onlineResource.type) {
|
|
40339
40790
|
case 'service':
|
|
40340
|
-
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40341
40791
|
case 'endpoint':
|
|
40342
|
-
return `${this.onlineResource.
|
|
40792
|
+
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40343
40793
|
case 'link':
|
|
40344
40794
|
case 'download':
|
|
40345
40795
|
return this.getFormat(this.onlineResource);
|
|
@@ -41496,6 +41946,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41496
41946
|
const ROUTER_STATE_KEY = 'router';
|
|
41497
41947
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
41498
41948
|
const ROUTER_ROUTE_DATASET = 'dataset';
|
|
41949
|
+
const ROUTER_ROUTE_SERVICE = 'service';
|
|
41950
|
+
const ROUTER_ROUTE_REUSE = 'reuse';
|
|
41499
41951
|
const ROUTER_ROUTE_ORGANIZATION = 'organization';
|
|
41500
41952
|
var ROUTE_PARAMS;
|
|
41501
41953
|
(function (ROUTE_PARAMS) {
|
|
@@ -41528,6 +41980,14 @@ class RouterService {
|
|
|
41528
41980
|
path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
|
|
41529
41981
|
component: this.routerConfig.recordRouteComponent,
|
|
41530
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
|
+
},
|
|
41531
41991
|
{
|
|
41532
41992
|
path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
|
|
41533
41993
|
component: this.routerConfig.organizationRouteComponent,
|
|
@@ -41540,7 +42000,7 @@ class RouterService {
|
|
|
41540
42000
|
getOrganizationPageRoute() {
|
|
41541
42001
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
41542
42002
|
}
|
|
41543
|
-
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 }); }
|
|
41544
42004
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
41545
42005
|
}
|
|
41546
42006
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -41551,7 +42011,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41551
42011
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
41552
42012
|
type: Inject,
|
|
41553
42013
|
args: [ROUTER_CONFIG]
|
|
41554
|
-
}] }, { type: i1$
|
|
42014
|
+
}] }, { type: i1$d.Router }] });
|
|
41555
42015
|
|
|
41556
42016
|
const goAction = createAction('[Router] Go', props());
|
|
41557
42017
|
const backAction = createAction('[Router] Back');
|
|
@@ -41623,13 +42083,19 @@ class RouterFacade {
|
|
|
41623
42083
|
this.currentRoute$ = this.store.pipe(select(selectCurrentRoute));
|
|
41624
42084
|
this.pathParams$ = this.store.pipe(select(selectRouteParams));
|
|
41625
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
|
+
};
|
|
41626
42091
|
}
|
|
41627
42092
|
goToMetadata(metadata) {
|
|
42093
|
+
const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET;
|
|
41628
42094
|
this.pathParams$
|
|
41629
42095
|
.pipe(take(1), filter((params) => params.metadataUuid !== metadata.uniqueIdentifier))
|
|
41630
42096
|
.subscribe(() => {
|
|
41631
42097
|
this.go({
|
|
41632
|
-
path: `${
|
|
42098
|
+
path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
|
|
41633
42099
|
});
|
|
41634
42100
|
this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
|
|
41635
42101
|
});
|
|
@@ -41856,12 +42322,12 @@ class RouterEffects {
|
|
|
41856
42322
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
41857
42323
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
41858
42324
|
}
|
|
41859
|
-
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 }); }
|
|
41860
42326
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
41861
42327
|
}
|
|
41862
42328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
41863
42329
|
type: Injectable
|
|
41864
|
-
}], 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: [{
|
|
41865
42331
|
type: Inject,
|
|
41866
42332
|
args: [ROUTER_CONFIG]
|
|
41867
42333
|
}] }, { type: FieldsService }] });
|
|
@@ -41921,5 +42387,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41921
42387
|
* Generated bundle index. Do not edit.
|
|
41922
42388
|
*/
|
|
41923
42389
|
|
|
41924
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
42390
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
41925
42391
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|