geonetwork-ui 2.3.0-dev.e03215d1 → 2.3.0-dev.e43863db
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/iso19115-3/iso19115-3.converter.mjs +2 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +9 -7
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +23 -8
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +15 -4
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -7
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +47 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +104 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +8 -3
- package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +8 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +58 -17
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +7 -3
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +17 -9
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +34 -5
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +1 -3
- package/esm2022/libs/feature/search/src/index.mjs +2 -1
- package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
- package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +1 -1
- package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/index.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +30 -0
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +89 -54
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -11
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +3 -5
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +5 -3
- package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
- package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +5 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +6 -5
- package/esm2022/libs/ui/layout/src/index.mjs +2 -1
- package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
- package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
- package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
- package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
- package/esm2022/translations/de.json +12 -14
- package/esm2022/translations/en.json +12 -14
- package/esm2022/translations/es.json +12 -14
- package/esm2022/translations/fr.json +12 -14
- package/esm2022/translations/it.json +12 -14
- package/esm2022/translations/nl.json +12 -14
- package/esm2022/translations/pt.json +12 -14
- package/fesm2022/geonetwork-ui.mjs +997 -536
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +2 -2
- package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +4 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +2 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +3 -3
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +4 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +21 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +7 -0
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -2
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +5 -2
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/search/src/index.d.ts +1 -0
- package/libs/feature/search/src/index.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -1
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/error/error.component.d.ts +16 -0
- package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +22 -4
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -30
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +1 -2
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
- package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -27
- package/libs/ui/layout/src/index.d.ts +1 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
- package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
- package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/model.d.ts +1 -0
- package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +9 -1
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +3 -3
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +35 -31
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +68 -16
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +72 -17
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +16 -10
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -3
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +65 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +14 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +143 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +5 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +7 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
- package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +7 -0
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +57 -17
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +6 -2
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +17 -9
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +40 -4
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +0 -2
- package/src/libs/feature/search/src/index.ts +1 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +4 -4
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
- package/src/libs/ui/elements/src/index.ts +1 -1
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -1
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
- package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.html → error/error.component.html} +18 -3
- package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.ts → error/error.component.ts} +5 -4
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +25 -9
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +116 -57
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -6
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +0 -1
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.ts +3 -0
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -0
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -0
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +1 -1
- package/src/libs/ui/layout/src/index.ts +1 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +8 -4
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
- package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
- package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
- package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
- package/src/libs/util/app-config/src/lib/model.ts +1 -0
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
- package/translations/de.json +12 -14
- package/translations/en.json +12 -14
- package/translations/es.json +12 -14
- package/translations/fr.json +12 -14
- package/translations/it.json +12 -14
- package/translations/nl.json +12 -14
- package/translations/pt.json +12 -14
- package/translations/sk.json +12 -14
- package/esm2022/libs/ui/elements/src/lib/search-results-error/search-results-error.component.mjs +0 -29
- package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts +0 -15
- package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts.map +0 -1
- /package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.css → error/error.component.css} +0 -0
|
@@ -8,11 +8,11 @@ import * as i1$1 from '@ngx-translate/core';
|
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap, defaultIfEmpty, scan } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, firstValueFrom, Subject, merge, throwError, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, animationFrameScheduler, from, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, exhaustMap, mergeMap as mergeMap$1,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, firstValueFrom, Subject, merge, throwError, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, from, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, exhaustMap, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
@@ -28,12 +28,13 @@ import { transformExtent, fromLonLat } from 'ol/proj';
|
|
|
28
28
|
import ImageWMS from 'ol/source/ImageWMS';
|
|
29
29
|
import TileWMS from 'ol/source/TileWMS';
|
|
30
30
|
import VectorSource from 'ol/source/Vector';
|
|
31
|
-
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
31
|
+
import { defaults as defaults$1, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
32
32
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
33
33
|
import chroma from 'chroma-js';
|
|
34
34
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
35
35
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
36
36
|
import proj4 from 'proj4/dist/proj4';
|
|
37
|
+
import { defaults } from 'ol/control/defaults';
|
|
37
38
|
import * as TOML from '@ltd/j-toml';
|
|
38
39
|
import CircleStyle from 'ol/style/Circle';
|
|
39
40
|
import View from 'ol/View';
|
|
@@ -42,7 +43,12 @@ import TileLayer from 'ol/layer/Tile';
|
|
|
42
43
|
import XYZ from 'ol/source/XYZ';
|
|
43
44
|
import { bbox } from 'ol/loadingstrategy';
|
|
44
45
|
import WMTS from 'ol/source/WMTS';
|
|
45
|
-
import
|
|
46
|
+
import OGCVectorTile from 'ol/source/OGCVectorTile.js';
|
|
47
|
+
import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
48
|
+
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
49
|
+
import OGCMapTile from 'ol/source/OGCMapTile.js';
|
|
50
|
+
import ImageLayer from 'ol/layer/Image';
|
|
51
|
+
import * as i2$4 from '@angular/material/tabs';
|
|
46
52
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
47
53
|
import * as i2$1 from '@angular/forms';
|
|
48
54
|
import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
@@ -54,11 +60,11 @@ import * as i1$4 from '@angular/material/checkbox';
|
|
|
54
60
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
55
61
|
import * as i5$1 from 'ngx-chips';
|
|
56
62
|
import { TagInputModule } from 'ngx-chips';
|
|
57
|
-
import * as
|
|
63
|
+
import * as i2$2 from '@angular/material/tooltip';
|
|
58
64
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
59
|
-
import * as i2$
|
|
65
|
+
import * as i2$3 from '@angular/material/datepicker';
|
|
60
66
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
61
|
-
import * as i3
|
|
67
|
+
import * as i3 from 'ngx-dropzone';
|
|
62
68
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
63
69
|
import * as i1$5 from '@angular/cdk/overlay';
|
|
64
70
|
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
@@ -84,21 +90,53 @@ import { trigger, transition, animate, keyframes, style } from '@angular/animati
|
|
|
84
90
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
85
91
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
86
92
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
87
|
-
import * as i2$
|
|
93
|
+
import * as i2$5 from '@angular/material/sort';
|
|
88
94
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
89
95
|
import * as i1$9 from '@angular/material/table';
|
|
90
96
|
import { MatTableModule } from '@angular/material/table';
|
|
91
|
-
import * as i3$
|
|
97
|
+
import * as i3$1 from 'ng-table-virtual-scroll';
|
|
92
98
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
93
99
|
import * as Papa from 'papaparse';
|
|
94
100
|
import parseDate from 'date-fns/parse';
|
|
95
101
|
import parseIsoDate from 'date-fns/parseISO';
|
|
96
|
-
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
97
102
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
98
|
-
import * as i3$
|
|
103
|
+
import * as i3$2 from '@ngrx/router-store';
|
|
99
104
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
100
105
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
101
106
|
|
|
107
|
+
class MetadataMapperContext {
|
|
108
|
+
}
|
|
109
|
+
class BaseConverter {
|
|
110
|
+
constructor(ctx = new MetadataMapperContext()) {
|
|
111
|
+
this.ctx = ctx;
|
|
112
|
+
}
|
|
113
|
+
readRecords(documents) {
|
|
114
|
+
return Promise.all(documents.map((doc) => this.readRecord(doc)));
|
|
115
|
+
}
|
|
116
|
+
writeRecords(records) {
|
|
117
|
+
return Promise.all(records.map((doc) => this.writeRecord(doc)));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function isEqual(a, b) {
|
|
122
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
123
|
+
return a.length === b.length && a.every((e, i) => isEqual(e, b[i]));
|
|
124
|
+
}
|
|
125
|
+
else if (a instanceof Date && b instanceof Date) {
|
|
126
|
+
return a.getTime() === b.getTime();
|
|
127
|
+
}
|
|
128
|
+
else if (a instanceof URL && b instanceof URL) {
|
|
129
|
+
return a.toString() === b.toString();
|
|
130
|
+
}
|
|
131
|
+
else if (a instanceof Object && b instanceof Object) {
|
|
132
|
+
const aKeys = Object.keys(a);
|
|
133
|
+
const bKeys = Object.keys(b);
|
|
134
|
+
return (aKeys.length === bKeys.length &&
|
|
135
|
+
aKeys.every((key) => isEqual(a[key], b[key])));
|
|
136
|
+
}
|
|
137
|
+
return a === b;
|
|
138
|
+
}
|
|
139
|
+
|
|
102
140
|
function pipe(...fns) {
|
|
103
141
|
return (value) => fns.reduce((prev, curr) => curr(prev), value);
|
|
104
142
|
}
|
|
@@ -498,6 +536,108 @@ function renameElements(rootElement, replaceMap) {
|
|
|
498
536
|
return rootElement;
|
|
499
537
|
}
|
|
500
538
|
|
|
539
|
+
function matchProtocol(protocol) {
|
|
540
|
+
if (/wms/i.test(protocol))
|
|
541
|
+
return 'wms';
|
|
542
|
+
if (/wfs/i.test(protocol))
|
|
543
|
+
return 'wfs';
|
|
544
|
+
if (/wmts/i.test(protocol))
|
|
545
|
+
return 'wmts';
|
|
546
|
+
if (/wps/i.test(protocol))
|
|
547
|
+
return 'wps';
|
|
548
|
+
if (/ogc\W*api\W*features/i.test(protocol))
|
|
549
|
+
return 'ogcFeatures';
|
|
550
|
+
if (/esri/i.test(protocol))
|
|
551
|
+
return 'esriRest';
|
|
552
|
+
return 'other';
|
|
553
|
+
}
|
|
554
|
+
function matchMimeType(format) {
|
|
555
|
+
if (/shp|shapefile/i.test(format))
|
|
556
|
+
return 'x-gis/x-shapefile';
|
|
557
|
+
// TODO: check whether the format is a valid mime type
|
|
558
|
+
return format || null;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Parts are [firstName, lastName]
|
|
563
|
+
* Second part will be null if no separation could be done
|
|
564
|
+
* @param fullName
|
|
565
|
+
*/
|
|
566
|
+
function fullNameToParts(fullName) {
|
|
567
|
+
const parts = fullName.trim().split(/\s+/);
|
|
568
|
+
const first = parts.shift();
|
|
569
|
+
return [first, parts.join(' ').trim() || null];
|
|
570
|
+
}
|
|
571
|
+
function namePartsToFull(firstName, lastName) {
|
|
572
|
+
const first = firstName?.trim();
|
|
573
|
+
const last = lastName?.trim();
|
|
574
|
+
if (!first && !last)
|
|
575
|
+
return null;
|
|
576
|
+
return last && first ? `${first} ${last}` : last || first;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
function getKeywordTypeFromKeywordTypeCode(typeCode) {
|
|
580
|
+
if (!typeCode)
|
|
581
|
+
return 'other';
|
|
582
|
+
switch (typeCode) {
|
|
583
|
+
case 'theme':
|
|
584
|
+
case 'place':
|
|
585
|
+
case 'temporal':
|
|
586
|
+
case 'other':
|
|
587
|
+
return typeCode;
|
|
588
|
+
default:
|
|
589
|
+
return 'other';
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
function getRoleFromRoleCode(roleCode) {
|
|
594
|
+
if (!roleCode)
|
|
595
|
+
return 'unspecified';
|
|
596
|
+
switch (roleCode) {
|
|
597
|
+
case 'author':
|
|
598
|
+
case 'coAuthor':
|
|
599
|
+
return 'author';
|
|
600
|
+
case 'originator':
|
|
601
|
+
return 'originator';
|
|
602
|
+
case 'principalInvestigator':
|
|
603
|
+
return 'principal_investigator';
|
|
604
|
+
case 'resourceProvider':
|
|
605
|
+
return 'resource_provider';
|
|
606
|
+
case 'processor':
|
|
607
|
+
return 'processor';
|
|
608
|
+
case 'custodian':
|
|
609
|
+
return 'custodian';
|
|
610
|
+
case 'owner':
|
|
611
|
+
return 'owner';
|
|
612
|
+
case 'pointOfContact':
|
|
613
|
+
return 'point_of_contact';
|
|
614
|
+
case 'publisher':
|
|
615
|
+
return 'publisher';
|
|
616
|
+
case 'distributor':
|
|
617
|
+
return 'distributor';
|
|
618
|
+
case 'user':
|
|
619
|
+
return 'user';
|
|
620
|
+
case 'collaborator':
|
|
621
|
+
return 'collaborator';
|
|
622
|
+
case 'editor':
|
|
623
|
+
return 'editor';
|
|
624
|
+
case 'contributor':
|
|
625
|
+
return 'contributor';
|
|
626
|
+
case 'stakeholder':
|
|
627
|
+
return 'stakeholder';
|
|
628
|
+
case 'sponsor':
|
|
629
|
+
return 'sponsor';
|
|
630
|
+
case 'funder':
|
|
631
|
+
return 'funder';
|
|
632
|
+
case 'rightsHolder':
|
|
633
|
+
return 'rights_holder';
|
|
634
|
+
case 'mediator':
|
|
635
|
+
return 'mediator';
|
|
636
|
+
default:
|
|
637
|
+
return 'other';
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
501
641
|
function getStatusFromStatusCode(statusCode) {
|
|
502
642
|
switch (statusCode) {
|
|
503
643
|
case 'completed':
|
|
@@ -580,108 +720,6 @@ function getUpdateFrequencyFromFrequencyCode(frequencyCode) {
|
|
|
580
720
|
}
|
|
581
721
|
}
|
|
582
722
|
|
|
583
|
-
function getRoleFromRoleCode(roleCode) {
|
|
584
|
-
if (!roleCode)
|
|
585
|
-
return 'unspecified';
|
|
586
|
-
switch (roleCode) {
|
|
587
|
-
case 'author':
|
|
588
|
-
case 'coAuthor':
|
|
589
|
-
return 'author';
|
|
590
|
-
case 'originator':
|
|
591
|
-
return 'originator';
|
|
592
|
-
case 'principalInvestigator':
|
|
593
|
-
return 'principal_investigator';
|
|
594
|
-
case 'resourceProvider':
|
|
595
|
-
return 'resource_provider';
|
|
596
|
-
case 'processor':
|
|
597
|
-
return 'processor';
|
|
598
|
-
case 'custodian':
|
|
599
|
-
return 'custodian';
|
|
600
|
-
case 'owner':
|
|
601
|
-
return 'owner';
|
|
602
|
-
case 'pointOfContact':
|
|
603
|
-
return 'point_of_contact';
|
|
604
|
-
case 'publisher':
|
|
605
|
-
return 'publisher';
|
|
606
|
-
case 'distributor':
|
|
607
|
-
return 'distributor';
|
|
608
|
-
case 'user':
|
|
609
|
-
return 'user';
|
|
610
|
-
case 'collaborator':
|
|
611
|
-
return 'collaborator';
|
|
612
|
-
case 'editor':
|
|
613
|
-
return 'editor';
|
|
614
|
-
case 'contributor':
|
|
615
|
-
return 'contributor';
|
|
616
|
-
case 'stakeholder':
|
|
617
|
-
return 'stakeholder';
|
|
618
|
-
case 'sponsor':
|
|
619
|
-
return 'sponsor';
|
|
620
|
-
case 'funder':
|
|
621
|
-
return 'funder';
|
|
622
|
-
case 'rightsHolder':
|
|
623
|
-
return 'rights_holder';
|
|
624
|
-
case 'mediator':
|
|
625
|
-
return 'mediator';
|
|
626
|
-
default:
|
|
627
|
-
return 'other';
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
function matchProtocol(protocol) {
|
|
632
|
-
if (/wms/i.test(protocol))
|
|
633
|
-
return 'wms';
|
|
634
|
-
if (/wfs/i.test(protocol))
|
|
635
|
-
return 'wfs';
|
|
636
|
-
if (/wmts/i.test(protocol))
|
|
637
|
-
return 'wmts';
|
|
638
|
-
if (/wps/i.test(protocol))
|
|
639
|
-
return 'wps';
|
|
640
|
-
if (/ogc\W*api\W*features/i.test(protocol))
|
|
641
|
-
return 'ogcFeatures';
|
|
642
|
-
if (/esri/i.test(protocol))
|
|
643
|
-
return 'esriRest';
|
|
644
|
-
return 'other';
|
|
645
|
-
}
|
|
646
|
-
function matchMimeType(format) {
|
|
647
|
-
if (/shp|shapefile/i.test(format))
|
|
648
|
-
return 'x-gis/x-shapefile';
|
|
649
|
-
// TODO: check whether the format is a valid mime type
|
|
650
|
-
return format || null;
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
function getKeywordTypeFromKeywordTypeCode(typeCode) {
|
|
654
|
-
if (!typeCode)
|
|
655
|
-
return 'other';
|
|
656
|
-
switch (typeCode) {
|
|
657
|
-
case 'theme':
|
|
658
|
-
case 'place':
|
|
659
|
-
case 'temporal':
|
|
660
|
-
case 'other':
|
|
661
|
-
return typeCode;
|
|
662
|
-
default:
|
|
663
|
-
return 'other';
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
/**
|
|
668
|
-
* Parts are [firstName, lastName]
|
|
669
|
-
* Second part will be null if no separation could be done
|
|
670
|
-
* @param fullName
|
|
671
|
-
*/
|
|
672
|
-
function fullNameToParts(fullName) {
|
|
673
|
-
const parts = fullName.trim().split(/\s+/);
|
|
674
|
-
const first = parts.shift();
|
|
675
|
-
return [first, parts.join(' ').trim() || null];
|
|
676
|
-
}
|
|
677
|
-
function namePartsToFull(firstName, lastName) {
|
|
678
|
-
const first = firstName?.trim();
|
|
679
|
-
const last = lastName?.trim();
|
|
680
|
-
if (!first && !last)
|
|
681
|
-
return null;
|
|
682
|
-
return last && first ? `${first} ${last}` : last || first;
|
|
683
|
-
}
|
|
684
|
-
|
|
685
723
|
function extractCharacterString() {
|
|
686
724
|
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
|
|
687
725
|
}
|
|
@@ -855,7 +893,7 @@ function getUpdateFrequencyFromCustomPeriod(isoPeriod) {
|
|
|
855
893
|
else if (days <= 7) {
|
|
856
894
|
return {
|
|
857
895
|
per: 'week',
|
|
858
|
-
updatedTimes: Math.round(7 / days),
|
|
896
|
+
updatedTimes: Math.round(7 / days - 0.0001), // this is to make sure that 'every 2 days' = '3 times per week'
|
|
859
897
|
};
|
|
860
898
|
}
|
|
861
899
|
else if (days) {
|
|
@@ -1030,6 +1068,21 @@ function extractServiceOnlineResources() {
|
|
|
1030
1068
|
function readOnlineResources(rootEl) {
|
|
1031
1069
|
return pipe(findNestedElements('gmd:distributionInfo', 'gmd:MD_Distribution'), mapArray(extractServiceOnlineResources()), flattenArray())(rootEl);
|
|
1032
1070
|
}
|
|
1071
|
+
function readTemporalExtents(rootEl) {
|
|
1072
|
+
return pipe(findIdentification(), findNestedElements('gmd:extent', 'gmd:EX_Extent', 'gmd:temporalElement'), mapArray(combine(findNestedElement('gmd:EX_TemporalExtent', 'gmd:extent', 'gml:TimePeriod'), findNestedElement('gmd:EX_TemporalExtent', 'gmd:extent', 'gml:TimeInstant'))), mapArray(([periodEl, instantEl]) => {
|
|
1073
|
+
if (periodEl) {
|
|
1074
|
+
return pipe(combine(pipe(findChildElement('gml:beginPosition', false), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null))), pipe(findChildElement('gml:endPosition', false), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)))), map(([start, end]) => ({
|
|
1075
|
+
start,
|
|
1076
|
+
end,
|
|
1077
|
+
})))(periodEl);
|
|
1078
|
+
}
|
|
1079
|
+
else {
|
|
1080
|
+
return pipe(findChildElement('gml:timePosition', false), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)), map((date) => ({
|
|
1081
|
+
start: date,
|
|
1082
|
+
})))(instantEl);
|
|
1083
|
+
}
|
|
1084
|
+
}))(rootEl);
|
|
1085
|
+
}
|
|
1033
1086
|
|
|
1034
1087
|
function writeCharacterString(text) {
|
|
1035
1088
|
return tap(pipe(findChildOrCreate('gco:CharacterString'), setTextContent(text)));
|
|
@@ -1154,7 +1207,7 @@ function getISODuration(updateFrequency) {
|
|
|
1154
1207
|
duration.hours = Math.round(24 / updateFrequency.updatedTimes);
|
|
1155
1208
|
break;
|
|
1156
1209
|
case 'week':
|
|
1157
|
-
duration.days = Math.round(7 / updateFrequency.updatedTimes);
|
|
1210
|
+
duration.days = Math.round(7 / updateFrequency.updatedTimes - 0.0001); // this is to make sure that '2 times per week' = 'every 3 days'
|
|
1158
1211
|
break;
|
|
1159
1212
|
case 'month':
|
|
1160
1213
|
if (updateFrequency.updatedTimes <= 1)
|
|
@@ -1428,38 +1481,16 @@ function createOnlineResource(onlineResource) {
|
|
|
1428
1481
|
function writeOnlineResources(record, rootEl) {
|
|
1429
1482
|
pipe(removeDistributions(), appendChildren(...record.onlineResources.map(createOnlineResource)))(rootEl);
|
|
1430
1483
|
}
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
}
|
|
1442
|
-
else if (a instanceof Object && b instanceof Object) {
|
|
1443
|
-
const aKeys = Object.keys(a);
|
|
1444
|
-
const bKeys = Object.keys(b);
|
|
1445
|
-
return (aKeys.length === bKeys.length &&
|
|
1446
|
-
aKeys.every((key) => isEqual(a[key], b[key])));
|
|
1447
|
-
}
|
|
1448
|
-
return a === b;
|
|
1449
|
-
}
|
|
1450
|
-
|
|
1451
|
-
class MetadataMapperContext {
|
|
1452
|
-
}
|
|
1453
|
-
class BaseConverter {
|
|
1454
|
-
constructor(ctx = new MetadataMapperContext()) {
|
|
1455
|
-
this.ctx = ctx;
|
|
1456
|
-
}
|
|
1457
|
-
readRecords(documents) {
|
|
1458
|
-
return Promise.all(documents.map((doc) => this.readRecord(doc)));
|
|
1459
|
-
}
|
|
1460
|
-
writeRecords(records) {
|
|
1461
|
-
return Promise.all(records.map((doc) => this.writeRecord(doc)));
|
|
1462
|
-
}
|
|
1484
|
+
function writeTemporalExtents(record, rootEl) {
|
|
1485
|
+
pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:extent', 'gmd:EX_Extent'), removeChildrenByName('gmd:temporalElement'), appendChildren(...record.temporalExtents.map((extent) => pipe(createElement('gmd:temporalElement'), createChild('gmd:EX_TemporalExtent'), appendChildren('start' in extent && 'end' in extent
|
|
1486
|
+
? pipe(createElement('gmd:extent'), createChild('gml:TimePeriod'), appendChildren(pipe(createElement('gml:beginPosition'), pipe(extent.start
|
|
1487
|
+
? setTextContent(format(extent.start, 'yyyy-MM-dd'))
|
|
1488
|
+
: addAttribute('indeterminatePosition', 'unknown'))), pipe(createElement('gml:endPosition'), pipe(extent.end
|
|
1489
|
+
? setTextContent(format(extent.end, 'yyyy-MM-dd'))
|
|
1490
|
+
: addAttribute('indeterminatePosition', 'unknown')))))
|
|
1491
|
+
: pipe(createElement('gmd:extent'), createChild('gml:TimeInstant'), appendChildren(pipe(createElement('gml:timePosition'), pipe(extent.start
|
|
1492
|
+
? setTextContent(format(extent.start, 'yyyy-MM-dd'))
|
|
1493
|
+
: addAttribute('indeterminatePosition', 'unknown'))))))))))(rootEl);
|
|
1463
1494
|
}
|
|
1464
1495
|
|
|
1465
1496
|
class Iso19139Converter extends BaseConverter {
|
|
@@ -1492,9 +1523,9 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1492
1523
|
lineage: readLineage$1,
|
|
1493
1524
|
distributions: readDistributions$1,
|
|
1494
1525
|
onlineResources: readOnlineResources,
|
|
1526
|
+
temporalExtents: readTemporalExtents,
|
|
1495
1527
|
// TODO
|
|
1496
1528
|
spatialExtents: () => [],
|
|
1497
|
-
temporalExtents: () => [],
|
|
1498
1529
|
extras: () => undefined,
|
|
1499
1530
|
landingPage: () => undefined,
|
|
1500
1531
|
languages: () => [],
|
|
@@ -1526,9 +1557,9 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1526
1557
|
lineage: writeLineage$1,
|
|
1527
1558
|
distributions: writeDistributions$1,
|
|
1528
1559
|
onlineResources: writeOnlineResources,
|
|
1560
|
+
temporalExtents: writeTemporalExtents,
|
|
1529
1561
|
// TODO
|
|
1530
1562
|
spatialExtents: () => undefined,
|
|
1531
|
-
temporalExtents: () => undefined,
|
|
1532
1563
|
extras: () => undefined,
|
|
1533
1564
|
landingPage: () => undefined,
|
|
1534
1565
|
languages: () => undefined,
|
|
@@ -1685,6 +1716,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1685
1716
|
fieldChanged('spatialRepresentation') &&
|
|
1686
1717
|
this.writers['spatialRepresentation'](record, rootEl);
|
|
1687
1718
|
fieldChanged('overviews') && this.writers['overviews'](record, rootEl);
|
|
1719
|
+
fieldChanged('temporalExtents') &&
|
|
1720
|
+
this.writers['temporalExtents'](record, rootEl);
|
|
1688
1721
|
fieldChanged('distributions') &&
|
|
1689
1722
|
this.writers['distributions'](record, rootEl);
|
|
1690
1723
|
fieldChanged('lineage') && this.writers['lineage'](record, rootEl);
|
|
@@ -17429,6 +17462,8 @@ var de = {
|
|
|
17429
17462
|
"editor.record.form.license.pddl": "",
|
|
17430
17463
|
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17431
17464
|
"editor.record.form.resourceUpdated": "",
|
|
17465
|
+
"editor.record.form.updateFrequency": "",
|
|
17466
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
17432
17467
|
"editor.record.loadError.body": "",
|
|
17433
17468
|
"editor.record.loadError.closeMessage": "",
|
|
17434
17469
|
"editor.record.loadError.title": "",
|
|
@@ -17499,6 +17534,7 @@ var de = {
|
|
|
17499
17534
|
"multiselect.filter.placeholder": "Suche",
|
|
17500
17535
|
"nav.back": "Zurück",
|
|
17501
17536
|
next: next$6,
|
|
17537
|
+
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
17502
17538
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
17503
17539
|
"organisation.sort.sortBy": "Sortieren nach:",
|
|
17504
17540
|
"organisations.hits.found": "{hits, plural, =0{Keine Organisation gefunden} other{{hits} von {total} Organisationen angezeigt}}",
|
|
@@ -17563,14 +17599,6 @@ var de = {
|
|
|
17563
17599
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17564
17600
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17565
17601
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
17566
|
-
"record.metadata.userFeedbacks": "",
|
|
17567
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17568
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17569
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17570
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17571
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17572
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17573
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17574
17602
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17575
17603
|
"record.metadata.status": "Status",
|
|
17576
17604
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17585,6 +17613,14 @@ var de = {
|
|
|
17585
17613
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
17586
17614
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
17587
17615
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
17616
|
+
"record.metadata.userFeedbacks": "",
|
|
17617
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17618
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17619
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17620
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17621
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17622
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17623
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17588
17624
|
"record.more.details": "Weitere Details",
|
|
17589
17625
|
"record.tab.chart": "Diagramm",
|
|
17590
17626
|
"record.tab.data": "Tabelle",
|
|
@@ -17605,6 +17641,7 @@ var de = {
|
|
|
17605
17641
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
17606
17642
|
"search.error.receivedError": "Ein Fehler ist aufgetreten",
|
|
17607
17643
|
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
17644
|
+
"search.error.recordHasnolink": "",
|
|
17608
17645
|
"search.field.any.placeholder": "Suche Datensätze ...",
|
|
17609
17646
|
"search.field.sortBy": "Sortieren nach:",
|
|
17610
17647
|
"search.filters.clear": "Zurücksetzen",
|
|
@@ -17644,12 +17681,6 @@ var de = {
|
|
|
17644
17681
|
"table.loading.data": "Daten werden geladen...",
|
|
17645
17682
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17646
17683
|
"table.select.data": "Datenquelle",
|
|
17647
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
17648
|
-
"timeSincePipe.minutesAgo": "",
|
|
17649
|
-
"timeSincePipe.hoursAgo": "",
|
|
17650
|
-
"timeSincePipe.daysAgo": "",
|
|
17651
|
-
"timeSincePipe.monthsAgo": "",
|
|
17652
|
-
"timeSincePipe.yearsAgo": "",
|
|
17653
17684
|
"tooltip.html.copy": "HTML kopieren",
|
|
17654
17685
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17655
17686
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17825,6 +17856,8 @@ var en = {
|
|
|
17825
17856
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17826
17857
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17827
17858
|
"editor.record.form.resourceUpdated": "Last update date",
|
|
17859
|
+
"editor.record.form.updateFrequency": "Update frequency",
|
|
17860
|
+
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17828
17861
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17829
17862
|
"editor.record.loadError.closeMessage": "Understood",
|
|
17830
17863
|
"editor.record.loadError.title": "Error loading record",
|
|
@@ -17895,6 +17928,7 @@ var en = {
|
|
|
17895
17928
|
"multiselect.filter.placeholder": "Search",
|
|
17896
17929
|
"nav.back": "Back",
|
|
17897
17930
|
next: next$5,
|
|
17931
|
+
"ogc.unreachable.unknown": "The service could not be reached",
|
|
17898
17932
|
"organisation.filter.placeholder": "Filter results",
|
|
17899
17933
|
"organisation.sort.sortBy": "Sort by:",
|
|
17900
17934
|
"organisations.hits.found": "{hits, plural, =0{No organizations found} other{{hits} out of {total} organizations shown}}",
|
|
@@ -17959,14 +17993,6 @@ var en = {
|
|
|
17959
17993
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17960
17994
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17961
17995
|
"record.metadata.related": "Related records",
|
|
17962
|
-
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17963
|
-
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17964
|
-
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17965
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17966
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17967
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17968
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17969
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17970
17996
|
"record.metadata.sheet": "Original metadata",
|
|
17971
17997
|
"record.metadata.status": "Status",
|
|
17972
17998
|
"record.metadata.technical": "Technical information",
|
|
@@ -17981,6 +18007,14 @@ var en = {
|
|
|
17981
18007
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17982
18008
|
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17983
18009
|
"record.metadata.usage": "License and Conditions",
|
|
18010
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
18011
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
18012
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
18013
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
18014
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
18015
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
18016
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
18017
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17984
18018
|
"record.more.details": "Read more",
|
|
17985
18019
|
"record.tab.chart": "Chart",
|
|
17986
18020
|
"record.tab.data": "Table",
|
|
@@ -18001,6 +18035,7 @@ var en = {
|
|
|
18001
18035
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
18002
18036
|
"search.error.receivedError": "An error was received",
|
|
18003
18037
|
"search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
|
|
18038
|
+
"search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
|
|
18004
18039
|
"search.field.any.placeholder": "Search datasets ...",
|
|
18005
18040
|
"search.field.sortBy": "Sort by:",
|
|
18006
18041
|
"search.filters.clear": "Reset",
|
|
@@ -18040,12 +18075,6 @@ var en = {
|
|
|
18040
18075
|
"table.loading.data": "Loading data...",
|
|
18041
18076
|
"table.object.count": "objects in this dataset",
|
|
18042
18077
|
"table.select.data": "Data source",
|
|
18043
|
-
"timeSincePipe.lessThanAMinute": "Less than a minute ago",
|
|
18044
|
-
"timeSincePipe.minutesAgo": "{value} minute{s} ago",
|
|
18045
|
-
"timeSincePipe.hoursAgo": "{value} hour{s} ago",
|
|
18046
|
-
"timeSincePipe.daysAgo": "{value} day{s} ago",
|
|
18047
|
-
"timeSincePipe.monthsAgo": "{value} month{s} ago",
|
|
18048
|
-
"timeSincePipe.yearsAgo": "{value} year{s} ago",
|
|
18049
18078
|
"tooltip.html.copy": "Copy HTML",
|
|
18050
18079
|
"tooltip.id.copy": "Copy unique identifier",
|
|
18051
18080
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -18221,6 +18250,8 @@ var es = {
|
|
|
18221
18250
|
"editor.record.form.license.pddl": "",
|
|
18222
18251
|
"editor.record.form.license.unknown": "",
|
|
18223
18252
|
"editor.record.form.resourceUpdated": "",
|
|
18253
|
+
"editor.record.form.updateFrequency": "",
|
|
18254
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
18224
18255
|
"editor.record.loadError.body": "",
|
|
18225
18256
|
"editor.record.loadError.closeMessage": "",
|
|
18226
18257
|
"editor.record.loadError.title": "",
|
|
@@ -18291,6 +18322,7 @@ var es = {
|
|
|
18291
18322
|
"multiselect.filter.placeholder": "",
|
|
18292
18323
|
"nav.back": "",
|
|
18293
18324
|
next: next$4,
|
|
18325
|
+
"ogc.unreachable.unknown": "",
|
|
18294
18326
|
"organisation.filter.placeholder": "",
|
|
18295
18327
|
"organisation.sort.sortBy": "",
|
|
18296
18328
|
"organisations.hits.found": "",
|
|
@@ -18355,14 +18387,6 @@ var es = {
|
|
|
18355
18387
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18356
18388
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18357
18389
|
"record.metadata.related": "",
|
|
18358
|
-
"record.metadata.userFeedbacks": "",
|
|
18359
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18360
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18361
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18362
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18363
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18364
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18365
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18366
18390
|
"record.metadata.sheet": "",
|
|
18367
18391
|
"record.metadata.status": "",
|
|
18368
18392
|
"record.metadata.technical": "",
|
|
@@ -18377,6 +18401,14 @@ var es = {
|
|
|
18377
18401
|
"record.metadata.updateFrequency": "",
|
|
18378
18402
|
"record.metadata.updatedOn": "",
|
|
18379
18403
|
"record.metadata.usage": "",
|
|
18404
|
+
"record.metadata.userFeedbacks": "",
|
|
18405
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18406
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18407
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18408
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18409
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18410
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18411
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18380
18412
|
"record.more.details": "",
|
|
18381
18413
|
"record.tab.chart": "",
|
|
18382
18414
|
"record.tab.data": "",
|
|
@@ -18397,6 +18429,7 @@ var es = {
|
|
|
18397
18429
|
"search.error.couldNotReachApi": "",
|
|
18398
18430
|
"search.error.receivedError": "",
|
|
18399
18431
|
"search.error.recordNotFound": "",
|
|
18432
|
+
"search.error.recordHasnolink": "",
|
|
18400
18433
|
"search.field.any.placeholder": "",
|
|
18401
18434
|
"search.field.sortBy": "",
|
|
18402
18435
|
"search.filters.clear": "",
|
|
@@ -18436,12 +18469,6 @@ var es = {
|
|
|
18436
18469
|
"table.loading.data": "",
|
|
18437
18470
|
"table.object.count": "",
|
|
18438
18471
|
"table.select.data": "",
|
|
18439
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
18440
|
-
"timeSincePipe.minutesAgo": "",
|
|
18441
|
-
"timeSincePipe.hoursAgo": "",
|
|
18442
|
-
"timeSincePipe.daysAgo": "",
|
|
18443
|
-
"timeSincePipe.monthsAgo": "",
|
|
18444
|
-
"timeSincePipe.yearsAgo": "",
|
|
18445
18472
|
"tooltip.html.copy": "",
|
|
18446
18473
|
"tooltip.id.copy": "",
|
|
18447
18474
|
"tooltip.url.copy": "",
|
|
@@ -18617,6 +18644,8 @@ var fr = {
|
|
|
18617
18644
|
"editor.record.form.license.pddl": "",
|
|
18618
18645
|
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18619
18646
|
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18647
|
+
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18648
|
+
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18620
18649
|
"editor.record.loadError.body": "",
|
|
18621
18650
|
"editor.record.loadError.closeMessage": "",
|
|
18622
18651
|
"editor.record.loadError.title": "",
|
|
@@ -18687,6 +18716,7 @@ var fr = {
|
|
|
18687
18716
|
"multiselect.filter.placeholder": "Rechercher",
|
|
18688
18717
|
"nav.back": "Retour",
|
|
18689
18718
|
next: next$3,
|
|
18719
|
+
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
18690
18720
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
18691
18721
|
"organisation.sort.sortBy": "Trier par :",
|
|
18692
18722
|
"organisations.hits.found": "{hits, plural, =0{Aucune organisation trouvé} one{1 organisation sur {total} affichée} other{{hits} organisations sur {total} affichées}}",
|
|
@@ -18751,14 +18781,6 @@ var fr = {
|
|
|
18751
18781
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18752
18782
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18753
18783
|
"record.metadata.related": "Voir aussi",
|
|
18754
|
-
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18755
|
-
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18756
|
-
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18757
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18758
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18759
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18760
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18761
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18762
18784
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18763
18785
|
"record.metadata.status": "Statut",
|
|
18764
18786
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18773,6 +18795,14 @@ var fr = {
|
|
|
18773
18795
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
18774
18796
|
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
18775
18797
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
18798
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18799
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18800
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18801
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18802
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18803
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18804
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18805
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18776
18806
|
"record.more.details": "Détails",
|
|
18777
18807
|
"record.tab.chart": "Graphique",
|
|
18778
18808
|
"record.tab.data": "Tableau",
|
|
@@ -18793,6 +18823,7 @@ var fr = {
|
|
|
18793
18823
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
18794
18824
|
"search.error.receivedError": "Erreur retournée",
|
|
18795
18825
|
"search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
|
|
18826
|
+
"search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
|
|
18796
18827
|
"search.field.any.placeholder": "Rechercher une donnée...",
|
|
18797
18828
|
"search.field.sortBy": "Trier par :",
|
|
18798
18829
|
"search.filters.clear": "Réinitialiser",
|
|
@@ -18832,12 +18863,6 @@ var fr = {
|
|
|
18832
18863
|
"table.loading.data": "Chargement des données...",
|
|
18833
18864
|
"table.object.count": "enregistrements dans ces données",
|
|
18834
18865
|
"table.select.data": "Source de données",
|
|
18835
|
-
"timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
|
|
18836
|
-
"timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
|
|
18837
|
-
"timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
|
|
18838
|
-
"timeSincePipe.daysAgo": "Il y a {value} jour{s}",
|
|
18839
|
-
"timeSincePipe.monthsAgo": "Il y a {value} mois",
|
|
18840
|
-
"timeSincePipe.yearsAgo": "Il y a {value} an{s}",
|
|
18841
18866
|
"tooltip.html.copy": "Copier le HTML",
|
|
18842
18867
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18843
18868
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -19013,6 +19038,8 @@ var it = {
|
|
|
19013
19038
|
"editor.record.form.license.pddl": "",
|
|
19014
19039
|
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19015
19040
|
"editor.record.form.resourceUpdated": "",
|
|
19041
|
+
"editor.record.form.updateFrequency": "",
|
|
19042
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
19016
19043
|
"editor.record.loadError.body": "",
|
|
19017
19044
|
"editor.record.loadError.closeMessage": "",
|
|
19018
19045
|
"editor.record.loadError.title": "",
|
|
@@ -19083,6 +19110,7 @@ var it = {
|
|
|
19083
19110
|
"multiselect.filter.placeholder": "Cerca",
|
|
19084
19111
|
"nav.back": "Indietro",
|
|
19085
19112
|
next: next$2,
|
|
19113
|
+
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
19086
19114
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
19087
19115
|
"organisation.sort.sortBy": "Ordina per:",
|
|
19088
19116
|
"organisations.hits.found": "{hits, plural, =0{Nessuna organizzazione trovata} one{1 organizzazione su {total} visualizzata} other{{hits} organizzazioni su {total} visualizzate}}",
|
|
@@ -19147,14 +19175,6 @@ var it = {
|
|
|
19147
19175
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
19148
19176
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
19149
19177
|
"record.metadata.related": "Vedi anche",
|
|
19150
|
-
"record.metadata.userFeedbacks": "",
|
|
19151
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19152
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19153
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19154
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19155
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19156
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19157
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19158
19178
|
"record.metadata.sheet": "Origine del metadata",
|
|
19159
19179
|
"record.metadata.status": "Stato",
|
|
19160
19180
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19169,6 +19189,14 @@ var it = {
|
|
|
19169
19189
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
19170
19190
|
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
19171
19191
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
19192
|
+
"record.metadata.userFeedbacks": "",
|
|
19193
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19194
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19195
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19196
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19197
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19198
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19199
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19172
19200
|
"record.more.details": "Dettagli",
|
|
19173
19201
|
"record.tab.chart": "Grafico",
|
|
19174
19202
|
"record.tab.data": "Tabella",
|
|
@@ -19189,6 +19217,7 @@ var it = {
|
|
|
19189
19217
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
19190
19218
|
"search.error.receivedError": "Errore ricevuto",
|
|
19191
19219
|
"search.error.recordNotFound": "Impossibile trovare questo dato",
|
|
19220
|
+
"search.error.recordHasnolink": "",
|
|
19192
19221
|
"search.field.any.placeholder": "Cerca un dato...",
|
|
19193
19222
|
"search.field.sortBy": "Ordina per:",
|
|
19194
19223
|
"search.filters.clear": "Ripristina",
|
|
@@ -19228,12 +19257,6 @@ var it = {
|
|
|
19228
19257
|
"table.loading.data": "Caricamento dei dati...",
|
|
19229
19258
|
"table.object.count": "record in questi dati",
|
|
19230
19259
|
"table.select.data": "Sorgente dati",
|
|
19231
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19232
|
-
"timeSincePipe.minutesAgo": "",
|
|
19233
|
-
"timeSincePipe.hoursAgo": "",
|
|
19234
|
-
"timeSincePipe.daysAgo": "",
|
|
19235
|
-
"timeSincePipe.monthsAgo": "",
|
|
19236
|
-
"timeSincePipe.yearsAgo": "",
|
|
19237
19260
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19238
19261
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19239
19262
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19409,6 +19432,8 @@ var nl = {
|
|
|
19409
19432
|
"editor.record.form.license.pddl": "",
|
|
19410
19433
|
"editor.record.form.license.unknown": "",
|
|
19411
19434
|
"editor.record.form.resourceUpdated": "",
|
|
19435
|
+
"editor.record.form.updateFrequency": "",
|
|
19436
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
19412
19437
|
"editor.record.loadError.body": "",
|
|
19413
19438
|
"editor.record.loadError.closeMessage": "",
|
|
19414
19439
|
"editor.record.loadError.title": "",
|
|
@@ -19479,6 +19504,7 @@ var nl = {
|
|
|
19479
19504
|
"multiselect.filter.placeholder": "",
|
|
19480
19505
|
"nav.back": "",
|
|
19481
19506
|
next: next$1,
|
|
19507
|
+
"ogc.unreachable.unknown": "",
|
|
19482
19508
|
"organisation.filter.placeholder": "",
|
|
19483
19509
|
"organisation.sort.sortBy": "",
|
|
19484
19510
|
"organisations.hits.found": "",
|
|
@@ -19543,14 +19569,6 @@ var nl = {
|
|
|
19543
19569
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19544
19570
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19545
19571
|
"record.metadata.related": "",
|
|
19546
|
-
"record.metadata.userFeedbacks": "",
|
|
19547
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19548
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19549
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19550
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19551
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19552
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19553
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19554
19572
|
"record.metadata.sheet": "",
|
|
19555
19573
|
"record.metadata.status": "",
|
|
19556
19574
|
"record.metadata.technical": "",
|
|
@@ -19565,6 +19583,14 @@ var nl = {
|
|
|
19565
19583
|
"record.metadata.updateFrequency": "",
|
|
19566
19584
|
"record.metadata.updatedOn": "",
|
|
19567
19585
|
"record.metadata.usage": "",
|
|
19586
|
+
"record.metadata.userFeedbacks": "",
|
|
19587
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19588
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19589
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19590
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19591
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19592
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19593
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19568
19594
|
"record.more.details": "",
|
|
19569
19595
|
"record.tab.chart": "",
|
|
19570
19596
|
"record.tab.data": "",
|
|
@@ -19585,6 +19611,7 @@ var nl = {
|
|
|
19585
19611
|
"search.error.couldNotReachApi": "",
|
|
19586
19612
|
"search.error.receivedError": "",
|
|
19587
19613
|
"search.error.recordNotFound": "",
|
|
19614
|
+
"search.error.recordHasnolink": "",
|
|
19588
19615
|
"search.field.any.placeholder": "",
|
|
19589
19616
|
"search.field.sortBy": "",
|
|
19590
19617
|
"search.filters.clear": "",
|
|
@@ -19624,12 +19651,6 @@ var nl = {
|
|
|
19624
19651
|
"table.loading.data": "",
|
|
19625
19652
|
"table.object.count": "",
|
|
19626
19653
|
"table.select.data": "",
|
|
19627
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19628
|
-
"timeSincePipe.minutesAgo": "",
|
|
19629
|
-
"timeSincePipe.hoursAgo": "",
|
|
19630
|
-
"timeSincePipe.daysAgo": "",
|
|
19631
|
-
"timeSincePipe.monthsAgo": "",
|
|
19632
|
-
"timeSincePipe.yearsAgo": "",
|
|
19633
19654
|
"tooltip.html.copy": "",
|
|
19634
19655
|
"tooltip.id.copy": "",
|
|
19635
19656
|
"tooltip.url.copy": "",
|
|
@@ -19805,6 +19826,8 @@ var pt = {
|
|
|
19805
19826
|
"editor.record.form.license.pddl": "",
|
|
19806
19827
|
"editor.record.form.license.unknown": "",
|
|
19807
19828
|
"editor.record.form.resourceUpdated": "",
|
|
19829
|
+
"editor.record.form.updateFrequency": "",
|
|
19830
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
19808
19831
|
"editor.record.loadError.body": "",
|
|
19809
19832
|
"editor.record.loadError.closeMessage": "",
|
|
19810
19833
|
"editor.record.loadError.title": "",
|
|
@@ -19875,6 +19898,7 @@ var pt = {
|
|
|
19875
19898
|
"multiselect.filter.placeholder": "",
|
|
19876
19899
|
"nav.back": "",
|
|
19877
19900
|
next: next,
|
|
19901
|
+
"ogc.unreachable.unknown": "",
|
|
19878
19902
|
"organisation.filter.placeholder": "",
|
|
19879
19903
|
"organisation.sort.sortBy": "",
|
|
19880
19904
|
"organisations.hits.found": "",
|
|
@@ -19939,14 +19963,6 @@ var pt = {
|
|
|
19939
19963
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19940
19964
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19941
19965
|
"record.metadata.related": "",
|
|
19942
|
-
"record.metadata.userFeedbacks": "",
|
|
19943
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19944
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19945
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19946
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19947
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19948
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19949
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19950
19966
|
"record.metadata.sheet": "",
|
|
19951
19967
|
"record.metadata.status": "",
|
|
19952
19968
|
"record.metadata.technical": "",
|
|
@@ -19961,6 +19977,14 @@ var pt = {
|
|
|
19961
19977
|
"record.metadata.updateFrequency": "",
|
|
19962
19978
|
"record.metadata.updatedOn": "",
|
|
19963
19979
|
"record.metadata.usage": "",
|
|
19980
|
+
"record.metadata.userFeedbacks": "",
|
|
19981
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19982
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19983
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19984
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19985
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19986
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19987
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19964
19988
|
"record.more.details": "",
|
|
19965
19989
|
"record.tab.chart": "",
|
|
19966
19990
|
"record.tab.data": "",
|
|
@@ -19981,6 +20005,7 @@ var pt = {
|
|
|
19981
20005
|
"search.error.couldNotReachApi": "",
|
|
19982
20006
|
"search.error.receivedError": "",
|
|
19983
20007
|
"search.error.recordNotFound": "",
|
|
20008
|
+
"search.error.recordHasnolink": "",
|
|
19984
20009
|
"search.field.any.placeholder": "",
|
|
19985
20010
|
"search.field.sortBy": "",
|
|
19986
20011
|
"search.filters.clear": "",
|
|
@@ -20020,12 +20045,6 @@ var pt = {
|
|
|
20020
20045
|
"table.loading.data": "",
|
|
20021
20046
|
"table.object.count": "",
|
|
20022
20047
|
"table.select.data": "",
|
|
20023
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
20024
|
-
"timeSincePipe.minutesAgo": "",
|
|
20025
|
-
"timeSincePipe.hoursAgo": "",
|
|
20026
|
-
"timeSincePipe.daysAgo": "",
|
|
20027
|
-
"timeSincePipe.monthsAgo": "",
|
|
20028
|
-
"timeSincePipe.yearsAgo": "",
|
|
20029
20048
|
"tooltip.html.copy": "",
|
|
20030
20049
|
"tooltip.id.copy": "",
|
|
20031
20050
|
"tooltip.url.copy": "",
|
|
@@ -21630,15 +21649,17 @@ class Gn4PlatformService {
|
|
|
21630
21649
|
return this.thesauri[uri];
|
|
21631
21650
|
}
|
|
21632
21651
|
getUserFeedbacks(uuid) {
|
|
21633
|
-
return this.userfeedbackApiService
|
|
21634
|
-
.
|
|
21635
|
-
|
|
21652
|
+
return this.userfeedbackApiService.getUserComments(uuid).pipe(map$1((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)), catchError((error) => {
|
|
21653
|
+
console.error('Error fetching user feedbacks:', error);
|
|
21654
|
+
return of(undefined);
|
|
21655
|
+
}));
|
|
21636
21656
|
}
|
|
21637
21657
|
postUserFeedbacks(userFeedback) {
|
|
21638
21658
|
const mappedUserFeedBack = this.mapper.userFeedbacksToApi(userFeedback);
|
|
21639
|
-
return this.userfeedbackApiService
|
|
21640
|
-
.
|
|
21641
|
-
|
|
21659
|
+
return this.userfeedbackApiService.newUserFeedback(mappedUserFeedBack).pipe(map$1(() => undefined), catchError((error) => {
|
|
21660
|
+
console.error('Error posting user feedback:', error);
|
|
21661
|
+
return of(undefined);
|
|
21662
|
+
}));
|
|
21642
21663
|
}
|
|
21643
21664
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }, { token: UserfeedbackApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21644
21665
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
@@ -22524,7 +22545,7 @@ class LinkClassifierService {
|
|
|
22524
22545
|
case 'wmts':
|
|
22525
22546
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
22526
22547
|
case 'ogcFeatures':
|
|
22527
|
-
return [LinkUsage.API];
|
|
22548
|
+
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
22528
22549
|
default:
|
|
22529
22550
|
return [LinkUsage.UNKNOWN];
|
|
22530
22551
|
}
|
|
@@ -22577,7 +22598,10 @@ class MapUtilsService {
|
|
|
22577
22598
|
}
|
|
22578
22599
|
createEmptyMap() {
|
|
22579
22600
|
return new Map$1({
|
|
22580
|
-
controls:
|
|
22601
|
+
controls: defaults({
|
|
22602
|
+
attribution: true,
|
|
22603
|
+
attributionOptions: { collapsible: false },
|
|
22604
|
+
}),
|
|
22581
22605
|
pixelRatio: 1,
|
|
22582
22606
|
});
|
|
22583
22607
|
}
|
|
@@ -22676,7 +22700,7 @@ class MapUtilsService {
|
|
|
22676
22700
|
}
|
|
22677
22701
|
prioritizePageScroll(interactions) {
|
|
22678
22702
|
interactions.clear();
|
|
22679
|
-
interactions.extend(defaults({
|
|
22703
|
+
interactions.extend(defaults$1({
|
|
22680
22704
|
// remove rotate interactions
|
|
22681
22705
|
altShiftDragRotate: false,
|
|
22682
22706
|
pinchRotate: false,
|
|
@@ -22695,7 +22719,7 @@ class MapUtilsService {
|
|
|
22695
22719
|
.getArray());
|
|
22696
22720
|
}
|
|
22697
22721
|
getRecordExtent(record) {
|
|
22698
|
-
if (!('spatialExtents' in record)) {
|
|
22722
|
+
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
22699
22723
|
return null;
|
|
22700
22724
|
}
|
|
22701
22725
|
// transform an array of geojson geometries into a bbox
|
|
@@ -23416,6 +23440,7 @@ function loadAppConfig() {
|
|
|
23416
23440
|
const parsedLayersSections = parseMultiConfigSection(parsed, 'map_layer', ['type'], ['name', 'url', 'data'], warnings, errors);
|
|
23417
23441
|
const parsedMapSection = parseConfigSection(parsed, 'map', [], [
|
|
23418
23442
|
'max_zoom',
|
|
23443
|
+
'do_not_tile_wms',
|
|
23419
23444
|
'max_extent',
|
|
23420
23445
|
'baselayer',
|
|
23421
23446
|
'do_not_use_default_basemap',
|
|
@@ -23427,6 +23452,7 @@ function loadAppConfig() {
|
|
|
23427
23452
|
? null
|
|
23428
23453
|
: {
|
|
23429
23454
|
MAX_ZOOM: parsedMapSection.max_zoom,
|
|
23455
|
+
DO_NOT_TILE_WMS: parsedMapSection.do_not_tile_wms,
|
|
23430
23456
|
MAX_EXTENT: parsedMapSection.max_extent,
|
|
23431
23457
|
EXTERNAL_VIEWER_URL_TEMPLATE: parsedMapSection.external_viewer_url_template,
|
|
23432
23458
|
EXTERNAL_VIEWER_OPEN_NEW_TAB: parsedMapSection.external_viewer_open_new_tab,
|
|
@@ -23604,6 +23630,7 @@ const MAP_CONFIG_FIXTURE = {
|
|
|
23604
23630
|
MAX_ZOOM: 10,
|
|
23605
23631
|
MAX_EXTENT: [-418263.418776, 5251529.591305, 961272.067714, 6706890.609855],
|
|
23606
23632
|
DO_NOT_USE_DEFAULT_BASEMAP: false,
|
|
23633
|
+
DO_NOT_TILE_WMS: false,
|
|
23607
23634
|
EXTERNAL_VIEWER_URL_TEMPLATE: 'https://example.com/myviewer/#/?actions=[{"type":"CATALOG:ADD_LAYERS_FROM_CATALOGS","layers":["${layer_name}"],"sources":[{"url":"${service_url}","type":"${service_type}"}]}]',
|
|
23608
23635
|
EXTERNAL_VIEWER_OPEN_NEW_TAB: true,
|
|
23609
23636
|
MAP_LAYERS: [
|
|
@@ -23793,6 +23820,7 @@ const DEFAULT_BASELAYER_CONTEXT = {
|
|
|
23793
23820
|
`https://b.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
23794
23821
|
`https://c.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
23795
23822
|
],
|
|
23823
|
+
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
23796
23824
|
};
|
|
23797
23825
|
const DEFAULT_VIEW = {
|
|
23798
23826
|
center: [0, 15],
|
|
@@ -23817,36 +23845,68 @@ class MapContextService {
|
|
|
23817
23845
|
}
|
|
23818
23846
|
map.setView(this.createView(mapContext.view, map));
|
|
23819
23847
|
map.getLayers().clear();
|
|
23820
|
-
mapContext.layers.forEach((layer) => map.addLayer(this.createLayer(layer)));
|
|
23848
|
+
mapContext.layers.forEach((layer) => map.addLayer(this.createLayer(layer, mapConfig)));
|
|
23821
23849
|
return map;
|
|
23822
23850
|
}
|
|
23823
|
-
createLayer(layerModel) {
|
|
23851
|
+
createLayer(layerModel, mapConfig) {
|
|
23824
23852
|
const { type } = layerModel;
|
|
23825
23853
|
const style = this.styleService.styles.default;
|
|
23826
23854
|
switch (type) {
|
|
23827
23855
|
case MapContextLayerTypeEnum.OGCAPI:
|
|
23828
|
-
|
|
23829
|
-
|
|
23830
|
-
|
|
23831
|
-
|
|
23832
|
-
|
|
23833
|
-
|
|
23834
|
-
|
|
23856
|
+
if (layerModel.layerType === 'vectorTiles') {
|
|
23857
|
+
return new VectorTileLayer({
|
|
23858
|
+
source: new OGCVectorTile({
|
|
23859
|
+
url: layerModel.url,
|
|
23860
|
+
format: new MVT(),
|
|
23861
|
+
attributions: layerModel.attributions,
|
|
23862
|
+
}),
|
|
23863
|
+
});
|
|
23864
|
+
}
|
|
23865
|
+
else if (layerModel.layerType === 'mapTiles') {
|
|
23866
|
+
return new TileLayer({
|
|
23867
|
+
source: new OGCMapTile({
|
|
23868
|
+
url: layerModel.url,
|
|
23869
|
+
attributions: layerModel.attributions,
|
|
23870
|
+
}),
|
|
23871
|
+
});
|
|
23872
|
+
}
|
|
23873
|
+
else {
|
|
23874
|
+
return new VectorLayer({
|
|
23875
|
+
source: new VectorSource({
|
|
23876
|
+
format: new GeoJSON(),
|
|
23877
|
+
url: layerModel.url,
|
|
23878
|
+
attributions: layerModel.attributions,
|
|
23879
|
+
}),
|
|
23880
|
+
style,
|
|
23881
|
+
});
|
|
23882
|
+
}
|
|
23835
23883
|
case MapContextLayerTypeEnum.XYZ:
|
|
23836
23884
|
return new TileLayer({
|
|
23837
23885
|
source: new XYZ({
|
|
23838
23886
|
url: 'url' in layerModel ? layerModel.url : undefined,
|
|
23839
23887
|
urls: 'urls' in layerModel ? layerModel.urls : undefined,
|
|
23888
|
+
attributions: layerModel.attributions,
|
|
23840
23889
|
}),
|
|
23841
23890
|
});
|
|
23842
23891
|
case MapContextLayerTypeEnum.WMS:
|
|
23843
|
-
|
|
23844
|
-
|
|
23845
|
-
|
|
23846
|
-
|
|
23847
|
-
|
|
23848
|
-
|
|
23849
|
-
|
|
23892
|
+
if (mapConfig?.DO_NOT_TILE_WMS) {
|
|
23893
|
+
return new ImageLayer({
|
|
23894
|
+
source: new ImageWMS({
|
|
23895
|
+
url: layerModel.url,
|
|
23896
|
+
params: { LAYERS: layerModel.name },
|
|
23897
|
+
attributions: layerModel.attributions,
|
|
23898
|
+
}),
|
|
23899
|
+
});
|
|
23900
|
+
}
|
|
23901
|
+
else {
|
|
23902
|
+
return new TileLayer({
|
|
23903
|
+
source: new TileWMS({
|
|
23904
|
+
url: layerModel.url,
|
|
23905
|
+
params: { LAYERS: layerModel.name, TILED: true },
|
|
23906
|
+
attributions: layerModel.attributions,
|
|
23907
|
+
}),
|
|
23908
|
+
});
|
|
23909
|
+
}
|
|
23850
23910
|
case MapContextLayerTypeEnum.WMTS: {
|
|
23851
23911
|
// TODO: isolate this in utils service
|
|
23852
23912
|
const olLayer = new TileLayer({});
|
|
@@ -23868,6 +23928,7 @@ class MapContextService {
|
|
|
23868
23928
|
tileGrid,
|
|
23869
23929
|
projection: matrixSet.crs,
|
|
23870
23930
|
dimensions,
|
|
23931
|
+
attributions: layerModel.attributions,
|
|
23871
23932
|
}));
|
|
23872
23933
|
});
|
|
23873
23934
|
return olLayer;
|
|
@@ -23890,6 +23951,7 @@ class MapContextService {
|
|
|
23890
23951
|
});
|
|
23891
23952
|
},
|
|
23892
23953
|
strategy: bbox,
|
|
23954
|
+
attributions: layerModel.attributions,
|
|
23893
23955
|
}));
|
|
23894
23956
|
});
|
|
23895
23957
|
return olLayer;
|
|
@@ -24297,11 +24359,11 @@ class CheckToggleComponent {
|
|
|
24297
24359
|
this.toggled.emit(event);
|
|
24298
24360
|
}
|
|
24299
24361
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24300
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24362
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckToggleComponent, isStandalone: true, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24301
24363
|
}
|
|
24302
24364
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24303
24365
|
type: Component,
|
|
24304
|
-
args: [{ selector: 'gn-ui-check-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n" }]
|
|
24366
|
+
args: [{ selector: 'gn-ui-check-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FormsModule], template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n" }]
|
|
24305
24367
|
}], propDecorators: { title: [{
|
|
24306
24368
|
type: Input
|
|
24307
24369
|
}], label: [{
|
|
@@ -24421,7 +24483,7 @@ class CopyTextButtonComponent {
|
|
|
24421
24483
|
event.target.blur();
|
|
24422
24484
|
}
|
|
24423
24485
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24424
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
24486
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24425
24487
|
}
|
|
24426
24488
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24427
24489
|
type: Component,
|
|
@@ -24441,7 +24503,7 @@ class DatePickerComponent {
|
|
|
24441
24503
|
this.dateChange = new EventEmitter();
|
|
24442
24504
|
}
|
|
24443
24505
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24444
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$
|
|
24506
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
24445
24507
|
}
|
|
24446
24508
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24447
24509
|
type: Component,
|
|
@@ -24460,7 +24522,7 @@ class DateRangePickerComponent {
|
|
|
24460
24522
|
this.endDate = event.value;
|
|
24461
24523
|
}
|
|
24462
24524
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24463
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$
|
|
24525
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$3.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$3.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24464
24526
|
}
|
|
24465
24527
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24466
24528
|
type: Component,
|
|
@@ -24484,7 +24546,7 @@ class DragAndDropFileInputComponent {
|
|
|
24484
24546
|
this.fileChange.emit(this.selectedFile);
|
|
24485
24547
|
}
|
|
24486
24548
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24487
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3
|
|
24549
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24488
24550
|
}
|
|
24489
24551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24490
24552
|
type: Component,
|
|
@@ -24812,7 +24874,7 @@ class DropdownSelectorComponent {
|
|
|
24812
24874
|
}
|
|
24813
24875
|
}
|
|
24814
24876
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24815
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24877
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth", disabled: "disabled" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24816
24878
|
}
|
|
24817
24879
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24818
24880
|
type: Component,
|
|
@@ -24822,7 +24884,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24822
24884
|
OverlayModule,
|
|
24823
24885
|
MatIconModule,
|
|
24824
24886
|
TranslateModule,
|
|
24825
|
-
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24887
|
+
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24826
24888
|
}], propDecorators: { title: [{
|
|
24827
24889
|
type: Input
|
|
24828
24890
|
}], showTitle: [{
|
|
@@ -24839,6 +24901,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24839
24901
|
type: Input
|
|
24840
24902
|
}], minWidth: [{
|
|
24841
24903
|
type: Input
|
|
24904
|
+
}], disabled: [{
|
|
24905
|
+
type: Input
|
|
24842
24906
|
}], selectValue: [{
|
|
24843
24907
|
type: Output
|
|
24844
24908
|
}], overlayOrigin: [{
|
|
@@ -25066,11 +25130,11 @@ class TextInputComponent {
|
|
|
25066
25130
|
this.rawChange.next(value);
|
|
25067
25131
|
}
|
|
25068
25132
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25069
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextInputComponent, selector: "gn-ui-text-input", inputs: { value: "value", extraClass: "extraClass", hint: "hint", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextInputComponent, selector: "gn-ui-text-input", inputs: { value: "value", extraClass: "extraClass", hint: "hint", required: "required", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n [disabled]=\"disabled\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25070
25134
|
}
|
|
25071
25135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
25072
25136
|
type: Component,
|
|
25073
|
-
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25137
|
+
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n [disabled]=\"disabled\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25074
25138
|
}], propDecorators: { value: [{
|
|
25075
25139
|
type: Input
|
|
25076
25140
|
}], extraClass: [{
|
|
@@ -25079,6 +25143,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25079
25143
|
type: Input
|
|
25080
25144
|
}], required: [{
|
|
25081
25145
|
type: Input
|
|
25146
|
+
}], disabled: [{
|
|
25147
|
+
type: Input
|
|
25082
25148
|
}], valueChange: [{
|
|
25083
25149
|
type: Output
|
|
25084
25150
|
}], input: [{
|
|
@@ -25562,7 +25628,6 @@ class UiInputsModule {
|
|
|
25562
25628
|
StarToggleComponent,
|
|
25563
25629
|
DropdownMultiselectComponent,
|
|
25564
25630
|
ViewportIntersectorComponent,
|
|
25565
|
-
CheckToggleComponent,
|
|
25566
25631
|
CopyTextButtonComponent,
|
|
25567
25632
|
CheckboxComponent,
|
|
25568
25633
|
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
@@ -25585,7 +25650,8 @@ class UiInputsModule {
|
|
|
25585
25650
|
ButtonComponent,
|
|
25586
25651
|
ImageInputComponent,
|
|
25587
25652
|
DropdownSelectorComponent,
|
|
25588
|
-
DateRangePickerComponent
|
|
25653
|
+
DateRangePickerComponent,
|
|
25654
|
+
CheckToggleComponent], exports: [DropdownSelectorComponent,
|
|
25589
25655
|
AutocompleteComponent,
|
|
25590
25656
|
ButtonComponent,
|
|
25591
25657
|
TextInputComponent,
|
|
@@ -25622,7 +25688,8 @@ class UiInputsModule {
|
|
|
25622
25688
|
MatNativeDateModule,
|
|
25623
25689
|
ImageInputComponent,
|
|
25624
25690
|
DropdownSelectorComponent,
|
|
25625
|
-
DateRangePickerComponent
|
|
25691
|
+
DateRangePickerComponent,
|
|
25692
|
+
CheckToggleComponent] }); }
|
|
25626
25693
|
}
|
|
25627
25694
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25628
25695
|
type: NgModule,
|
|
@@ -25636,7 +25703,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25636
25703
|
StarToggleComponent,
|
|
25637
25704
|
DropdownMultiselectComponent,
|
|
25638
25705
|
ViewportIntersectorComponent,
|
|
25639
|
-
CheckToggleComponent,
|
|
25640
25706
|
CopyTextButtonComponent,
|
|
25641
25707
|
CheckboxComponent,
|
|
25642
25708
|
SearchInputComponent,
|
|
@@ -25665,6 +25731,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25665
25731
|
ImageInputComponent,
|
|
25666
25732
|
DropdownSelectorComponent,
|
|
25667
25733
|
DateRangePickerComponent,
|
|
25734
|
+
CheckToggleComponent,
|
|
25668
25735
|
],
|
|
25669
25736
|
exports: [
|
|
25670
25737
|
DropdownSelectorComponent,
|
|
@@ -25689,34 +25756,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25689
25756
|
}]
|
|
25690
25757
|
}] });
|
|
25691
25758
|
|
|
25759
|
+
class PreviousNextButtonsComponent {
|
|
25760
|
+
constructor() {
|
|
25761
|
+
this.directionButtonClicked = new EventEmitter();
|
|
25762
|
+
}
|
|
25763
|
+
previousButtonClicked() {
|
|
25764
|
+
this.directionButtonClicked.next('previous');
|
|
25765
|
+
}
|
|
25766
|
+
nextButtonClicked() {
|
|
25767
|
+
this.directionButtonClicked.next('next');
|
|
25768
|
+
}
|
|
25769
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25770
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { isFirst: "isFirst", isLast: "isLast" }, outputs: { directionButtonClicked: "directionButtonClicked" }, ngImport: i0, template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25771
|
+
}
|
|
25772
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
25773
|
+
type: Component,
|
|
25774
|
+
args: [{ selector: 'gn-ui-previous-next-buttons', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonComponent, MatIconModule], template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
25775
|
+
}], propDecorators: { isFirst: [{
|
|
25776
|
+
type: Input
|
|
25777
|
+
}], isLast: [{
|
|
25778
|
+
type: Input
|
|
25779
|
+
}], directionButtonClicked: [{
|
|
25780
|
+
type: Output
|
|
25781
|
+
}] } });
|
|
25782
|
+
|
|
25692
25783
|
class AddLayerFromOgcApiComponent {
|
|
25693
25784
|
constructor(changeDetectorRef) {
|
|
25694
25785
|
this.changeDetectorRef = changeDetectorRef;
|
|
25695
25786
|
this.layerAdded = new EventEmitter();
|
|
25696
25787
|
this.urlChange = new Subject();
|
|
25697
|
-
this.layerUrl = '';
|
|
25698
25788
|
this.loading = false;
|
|
25699
25789
|
this.layers = [];
|
|
25700
|
-
this.ogcEndpoint = null;
|
|
25701
25790
|
this.errorMessage = null;
|
|
25791
|
+
this.selectedLayerTypes = {};
|
|
25702
25792
|
}
|
|
25703
25793
|
ngOnInit() {
|
|
25704
25794
|
this.urlChange.pipe(debounceTime$1(700)).subscribe(() => {
|
|
25705
25795
|
this.loadLayers();
|
|
25706
|
-
this.changeDetectorRef.detectChanges(); // manually trigger change detection
|
|
25707
25796
|
});
|
|
25708
25797
|
}
|
|
25709
25798
|
async loadLayers() {
|
|
25710
25799
|
this.errorMessage = null;
|
|
25711
25800
|
try {
|
|
25712
25801
|
this.loading = true;
|
|
25713
|
-
if (this.ogcUrl.trim()
|
|
25802
|
+
if (!this.ogcUrl.trim()) {
|
|
25714
25803
|
this.layers = [];
|
|
25715
25804
|
return;
|
|
25716
25805
|
}
|
|
25717
|
-
|
|
25718
|
-
|
|
25719
|
-
this.
|
|
25806
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25807
|
+
this.layers = await ogcEndpoint.allCollections;
|
|
25808
|
+
this.setDefaultLayerTypes();
|
|
25720
25809
|
}
|
|
25721
25810
|
catch (error) {
|
|
25722
25811
|
const err = error;
|
|
@@ -25728,21 +25817,75 @@ class AddLayerFromOgcApiComponent {
|
|
|
25728
25817
|
this.changeDetectorRef.markForCheck();
|
|
25729
25818
|
}
|
|
25730
25819
|
}
|
|
25731
|
-
|
|
25732
|
-
this.
|
|
25733
|
-
|
|
25734
|
-
|
|
25735
|
-
|
|
25736
|
-
|
|
25737
|
-
};
|
|
25738
|
-
|
|
25820
|
+
setDefaultLayerTypes() {
|
|
25821
|
+
this.layers.forEach((layer) => {
|
|
25822
|
+
const choices = this.getLayerChoices(layer);
|
|
25823
|
+
if (choices.length > 0) {
|
|
25824
|
+
this.selectedLayerTypes[layer.name] = choices[0].value;
|
|
25825
|
+
}
|
|
25826
|
+
});
|
|
25827
|
+
}
|
|
25828
|
+
getLayerChoices(layer) {
|
|
25829
|
+
const choices = [];
|
|
25830
|
+
if (layer.hasRecords) {
|
|
25831
|
+
choices.push({ label: 'Records', value: 'record' });
|
|
25832
|
+
}
|
|
25833
|
+
if (layer.hasFeatures) {
|
|
25834
|
+
choices.push({ label: 'Features', value: 'features' });
|
|
25835
|
+
}
|
|
25836
|
+
if (layer.hasVectorTiles) {
|
|
25837
|
+
choices.push({ label: 'Vector Tiles', value: 'vectorTiles' });
|
|
25838
|
+
}
|
|
25839
|
+
if (layer.hasMapTiles) {
|
|
25840
|
+
choices.push({ label: 'Map Tiles', value: 'mapTiles' });
|
|
25841
|
+
}
|
|
25842
|
+
return choices;
|
|
25843
|
+
}
|
|
25844
|
+
shouldDisplayLayer(layer) {
|
|
25845
|
+
return (layer.hasRecords ||
|
|
25846
|
+
layer.hasFeatures ||
|
|
25847
|
+
layer.hasVectorTiles ||
|
|
25848
|
+
layer.hasMapTiles);
|
|
25849
|
+
}
|
|
25850
|
+
onLayerTypeSelect(layerName, selectedType) {
|
|
25851
|
+
this.selectedLayerTypes[layerName] = selectedType
|
|
25852
|
+
? selectedType
|
|
25853
|
+
: this.getLayerChoices(layerName)[0]?.value;
|
|
25854
|
+
}
|
|
25855
|
+
async addLayer(layer, layerType) {
|
|
25856
|
+
try {
|
|
25857
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25858
|
+
let layerUrl;
|
|
25859
|
+
if (layerType === 'vectorTiles') {
|
|
25860
|
+
layerUrl = await ogcEndpoint.getVectorTilesetUrl(layer);
|
|
25861
|
+
}
|
|
25862
|
+
else if (layerType === 'mapTiles') {
|
|
25863
|
+
layerUrl = await ogcEndpoint.getMapTilesetUrl(layer);
|
|
25864
|
+
}
|
|
25865
|
+
else {
|
|
25866
|
+
layerUrl = await ogcEndpoint.getCollectionItemsUrl(layer, {
|
|
25867
|
+
outputFormat: 'json',
|
|
25868
|
+
});
|
|
25869
|
+
}
|
|
25870
|
+
const layerToAdd = {
|
|
25871
|
+
name: layer,
|
|
25872
|
+
url: layerUrl,
|
|
25873
|
+
type: MapContextLayerTypeEnum.OGCAPI,
|
|
25874
|
+
layerType: layerType,
|
|
25875
|
+
};
|
|
25876
|
+
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25877
|
+
}
|
|
25878
|
+
catch (error) {
|
|
25879
|
+
const err = error;
|
|
25880
|
+
console.error('Error adding layer:', err.message);
|
|
25881
|
+
}
|
|
25739
25882
|
}
|
|
25740
25883
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25741
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n
|
|
25884
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "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: "ngmodule", type: UiInputsModule }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { 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", "hint", "required", "disabled"], outputs: ["valueChange"] }] }); }
|
|
25742
25885
|
}
|
|
25743
25886
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25744
25887
|
type: Component,
|
|
25745
|
-
args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n
|
|
25888
|
+
args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"] }]
|
|
25746
25889
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
|
|
25747
25890
|
type: Input
|
|
25748
25891
|
}], layerAdded: [{
|
|
@@ -26484,7 +26627,8 @@ class ApiCardComponent {
|
|
|
26484
26627
|
}
|
|
26485
26628
|
ngOnInit() {
|
|
26486
26629
|
this.displayApiFormButton =
|
|
26487
|
-
this.link.accessServiceProtocol === 'ogcFeatures'
|
|
26630
|
+
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
26631
|
+
this.link.accessServiceProtocol === 'wfs';
|
|
26488
26632
|
}
|
|
26489
26633
|
ngOnChanges(changes) {
|
|
26490
26634
|
this.currentlyActive =
|
|
@@ -26497,7 +26641,7 @@ class ApiCardComponent {
|
|
|
26497
26641
|
}
|
|
26498
26642
|
}
|
|
26499
26643
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26500
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
26644
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26501
26645
|
}
|
|
26502
26646
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26503
26647
|
type: Component,
|
|
@@ -26628,7 +26772,7 @@ class DownloadsListComponent {
|
|
|
26628
26772
|
return getBadgeColor(getFileFormat(link));
|
|
26629
26773
|
}
|
|
26630
26774
|
isFromWfs(link) {
|
|
26631
|
-
return link.type === '
|
|
26775
|
+
return link.type === 'download' && link.accessServiceProtocol === 'wfs';
|
|
26632
26776
|
}
|
|
26633
26777
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26634
26778
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromWfs"], outputs: ["exportUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -26660,14 +26804,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26660
26804
|
}] } });
|
|
26661
26805
|
|
|
26662
26806
|
class LinkCardComponent {
|
|
26807
|
+
constructor() {
|
|
26808
|
+
this.compact = false;
|
|
26809
|
+
}
|
|
26810
|
+
get title() {
|
|
26811
|
+
if (this.link.name && this.link.description) {
|
|
26812
|
+
return `${this.link.name} | ${this.link.description}`;
|
|
26813
|
+
}
|
|
26814
|
+
return this.link.name || this.link.description || '';
|
|
26815
|
+
}
|
|
26663
26816
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26664
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, selector: "gn-ui-link-card", inputs: { link: "link" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group
|
|
26817
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link", compact: "compact" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26665
26818
|
}
|
|
26666
26819
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
26667
26820
|
type: Component,
|
|
26668
|
-
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group
|
|
26821
|
+
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n" }]
|
|
26669
26822
|
}], propDecorators: { link: [{
|
|
26670
26823
|
type: Input
|
|
26824
|
+
}], compact: [{
|
|
26825
|
+
type: Input
|
|
26671
26826
|
}] } });
|
|
26672
26827
|
|
|
26673
26828
|
class MarkdownParserComponent {
|
|
@@ -27126,42 +27281,37 @@ const DEFAULT_PARAMS = {
|
|
|
27126
27281
|
};
|
|
27127
27282
|
class RecordApiFormComponent {
|
|
27128
27283
|
constructor() {
|
|
27129
|
-
this.offset$ = new BehaviorSubject(
|
|
27130
|
-
this.limit$ = new BehaviorSubject(
|
|
27131
|
-
this.format$ = new BehaviorSubject(
|
|
27284
|
+
this.offset$ = new BehaviorSubject(DEFAULT_PARAMS.OFFSET);
|
|
27285
|
+
this.limit$ = new BehaviorSubject(DEFAULT_PARAMS.LIMIT);
|
|
27286
|
+
this.format$ = new BehaviorSubject(DEFAULT_PARAMS.FORMAT);
|
|
27287
|
+
this.endpoint$ = new BehaviorSubject(undefined);
|
|
27288
|
+
this.supportOffset = true;
|
|
27132
27289
|
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27133
|
-
this.apiQueryUrl$ = combineLatest([
|
|
27134
|
-
|
|
27135
|
-
|
|
27136
|
-
|
|
27137
|
-
|
|
27138
|
-
|
|
27139
|
-
|
|
27140
|
-
url.searchParams.set(key, value);
|
|
27141
|
-
}
|
|
27142
|
-
else {
|
|
27143
|
-
url.searchParams.delete(key);
|
|
27144
|
-
}
|
|
27145
|
-
}
|
|
27146
|
-
outputUrl = url.toString();
|
|
27147
|
-
}
|
|
27148
|
-
return outputUrl;
|
|
27149
|
-
}));
|
|
27290
|
+
this.apiQueryUrl$ = combineLatest([
|
|
27291
|
+
this.offset$,
|
|
27292
|
+
this.limit$,
|
|
27293
|
+
this.format$,
|
|
27294
|
+
// only compute the url if the endpoint was created
|
|
27295
|
+
this.endpoint$.pipe(filter$1((endpoint) => !!endpoint)),
|
|
27296
|
+
]).pipe(switchMap(([offset, limit, format]) => this.generateApiQueryUrl(offset, limit, format)));
|
|
27150
27297
|
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
27151
27298
|
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
27152
27299
|
}
|
|
27153
27300
|
set apiLink(value) {
|
|
27154
|
-
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
27155
27301
|
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27156
|
-
this.
|
|
27302
|
+
this.accessServiceProtocol = value ? value.accessServiceProtocol : undefined;
|
|
27303
|
+
this.apiFeatureType = value ? value.name : undefined;
|
|
27304
|
+
if (value) {
|
|
27305
|
+
this.apiBaseUrl = value.url.href;
|
|
27306
|
+
this.createEndpoint().then(() => this.parseOutputFormats());
|
|
27307
|
+
}
|
|
27157
27308
|
this.resetUrl();
|
|
27158
27309
|
}
|
|
27159
27310
|
setOffset(value) {
|
|
27160
27311
|
this.offset$.next(value);
|
|
27161
27312
|
}
|
|
27162
27313
|
setLimit(value) {
|
|
27163
|
-
|
|
27164
|
-
this.limit$.next(newLimit);
|
|
27314
|
+
this.limit$.next(value === '' ? '-1' : value);
|
|
27165
27315
|
}
|
|
27166
27316
|
setFormat(value) {
|
|
27167
27317
|
this.format$.next(String(value));
|
|
@@ -27171,45 +27321,84 @@ class RecordApiFormComponent {
|
|
|
27171
27321
|
this.limit$.next(DEFAULT_PARAMS.LIMIT);
|
|
27172
27322
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
27173
27323
|
}
|
|
27174
|
-
parseOutputFormats() {
|
|
27175
|
-
|
|
27324
|
+
async parseOutputFormats() {
|
|
27325
|
+
if (!this.endpoint)
|
|
27326
|
+
return;
|
|
27327
|
+
const apiUrl = this.apiBaseUrl.endsWith('?')
|
|
27176
27328
|
? this.apiBaseUrl.slice(0, -1)
|
|
27177
27329
|
: this.apiBaseUrl;
|
|
27178
|
-
this.getOutputFormats(apiUrl)
|
|
27179
|
-
|
|
27180
|
-
|
|
27181
|
-
|
|
27182
|
-
|
|
27183
|
-
|
|
27184
|
-
|
|
27185
|
-
|
|
27186
|
-
|
|
27187
|
-
|
|
27188
|
-
|
|
27189
|
-
|
|
27190
|
-
|
|
27191
|
-
|
|
27192
|
-
|
|
27330
|
+
const outputFormats = await this.getOutputFormats(apiUrl);
|
|
27331
|
+
const formatsList = outputFormats.itemFormats
|
|
27332
|
+
? this.mapFormats(outputFormats.itemFormats)
|
|
27333
|
+
: this.mapFormats(outputFormats.outputFormats || []);
|
|
27334
|
+
this.outputFormats = this.outputFormats
|
|
27335
|
+
.concat(formatsList.filter(Boolean))
|
|
27336
|
+
.filter((format, index, self) => index === self.findIndex((t) => t.value === format.value))
|
|
27337
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
27338
|
+
}
|
|
27339
|
+
mapFormats(formats) {
|
|
27340
|
+
return formats.map((format) => {
|
|
27341
|
+
const normalizedFormat = mimeTypeToFormat(format);
|
|
27342
|
+
return normalizedFormat
|
|
27343
|
+
? { label: normalizedFormat.toUpperCase(), value: normalizedFormat }
|
|
27344
|
+
: null;
|
|
27193
27345
|
});
|
|
27194
27346
|
}
|
|
27195
27347
|
async getOutputFormats(url) {
|
|
27196
|
-
|
|
27197
|
-
|
|
27198
|
-
|
|
27348
|
+
if (!this.endpoint)
|
|
27349
|
+
return {};
|
|
27350
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27351
|
+
this.supportOffset = this.endpoint.supportsStartIndex();
|
|
27352
|
+
return this.endpoint.getServiceInfo();
|
|
27353
|
+
}
|
|
27354
|
+
else {
|
|
27355
|
+
return (await this.endpoint.getCollectionInfo(this.firstCollection));
|
|
27356
|
+
}
|
|
27357
|
+
}
|
|
27358
|
+
async createEndpoint() {
|
|
27359
|
+
if (!this.apiBaseUrl || !this.accessServiceProtocol)
|
|
27360
|
+
return;
|
|
27361
|
+
if (this.accessServiceProtocol === 'wfs') {
|
|
27362
|
+
this.endpoint = new WfsEndpoint(this.apiBaseUrl);
|
|
27363
|
+
await this.endpoint.isReady();
|
|
27364
|
+
}
|
|
27365
|
+
else {
|
|
27366
|
+
this.endpoint = new OgcApiEndpoint(this.apiBaseUrl);
|
|
27367
|
+
this.firstCollection = (await this.endpoint.allCollections)[0].name;
|
|
27368
|
+
}
|
|
27369
|
+
this.endpoint$.next(this.endpoint);
|
|
27370
|
+
}
|
|
27371
|
+
async generateApiQueryUrl(offset, limit, format) {
|
|
27372
|
+
if (!this.apiBaseUrl || !this.endpoint || !this.apiFeatureType)
|
|
27373
|
+
return '';
|
|
27374
|
+
const options = {
|
|
27375
|
+
outputFormat: format,
|
|
27376
|
+
startIndex: offset ? Number(offset) : undefined,
|
|
27377
|
+
maxFeatures: limit !== '-1' ? Number(limit) : undefined,
|
|
27378
|
+
limit: limit !== '-1' ? Number(limit) : limit === '-1' ? -1 : undefined,
|
|
27379
|
+
offset: offset !== '' ? Number(offset) : undefined,
|
|
27380
|
+
};
|
|
27381
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27382
|
+
options.maxFeatures = limit !== '-1' ? Number(limit) : undefined;
|
|
27383
|
+
return this.endpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
27384
|
+
}
|
|
27385
|
+
else {
|
|
27386
|
+
return await this.endpoint.getCollectionItemsUrl(this.firstCollection, options);
|
|
27387
|
+
}
|
|
27199
27388
|
}
|
|
27200
27389
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27201
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate
|
|
27390
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27202
27391
|
}
|
|
27203
27392
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27204
27393
|
type: Component,
|
|
27205
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate
|
|
27394
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
27206
27395
|
}], propDecorators: { apiLink: [{
|
|
27207
27396
|
type: Input
|
|
27208
27397
|
}] } });
|
|
27209
27398
|
|
|
27210
27399
|
class RelatedRecordCardComponent {
|
|
27211
27400
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27212
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
27401
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27213
27402
|
}
|
|
27214
27403
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27215
27404
|
type: Component,
|
|
@@ -27223,17 +27412,18 @@ var ErrorType;
|
|
|
27223
27412
|
ErrorType[ErrorType["COULD_NOT_REACH_API"] = 0] = "COULD_NOT_REACH_API";
|
|
27224
27413
|
ErrorType[ErrorType["RECEIVED_ERROR"] = 1] = "RECEIVED_ERROR";
|
|
27225
27414
|
ErrorType[ErrorType["RECORD_NOT_FOUND"] = 2] = "RECORD_NOT_FOUND";
|
|
27415
|
+
ErrorType[ErrorType["DATASET_HAS_NO_LINK"] = 3] = "DATASET_HAS_NO_LINK";
|
|
27226
27416
|
})(ErrorType || (ErrorType = {}));
|
|
27227
|
-
class
|
|
27417
|
+
class ErrorComponent {
|
|
27228
27418
|
constructor() {
|
|
27229
27419
|
this.types = ErrorType;
|
|
27230
27420
|
}
|
|
27231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
27232
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
27421
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27422
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ErrorComponent, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27233
27423
|
}
|
|
27234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
27424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ErrorComponent, decorators: [{
|
|
27235
27425
|
type: Component,
|
|
27236
|
-
args: [{ selector: 'gn-ui-
|
|
27426
|
+
args: [{ selector: 'gn-ui-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"] }]
|
|
27237
27427
|
}], propDecorators: { type: [{
|
|
27238
27428
|
type: Input
|
|
27239
27429
|
}], error: [{
|
|
@@ -27305,48 +27495,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27305
27495
|
}] } });
|
|
27306
27496
|
|
|
27307
27497
|
class CarouselComponent {
|
|
27498
|
+
get isFirstStep() {
|
|
27499
|
+
return this.currentStep === 0;
|
|
27500
|
+
}
|
|
27501
|
+
get isLastStep() {
|
|
27502
|
+
return this.currentStep === this.steps.length - 1;
|
|
27503
|
+
}
|
|
27504
|
+
get stepsCount() {
|
|
27505
|
+
return this.steps.length;
|
|
27506
|
+
}
|
|
27308
27507
|
constructor(changeDetector) {
|
|
27309
27508
|
this.changeDetector = changeDetector;
|
|
27310
27509
|
this.containerClass = '';
|
|
27311
|
-
this.stepsContainerClass = '';
|
|
27510
|
+
this.stepsContainerClass = 'w-full bottom-0 top-auto';
|
|
27511
|
+
this.currentStepChange = new EventEmitter();
|
|
27312
27512
|
this.steps = [];
|
|
27313
|
-
this.
|
|
27513
|
+
this.currentStep = 0;
|
|
27514
|
+
this.refreshSteps = () => {
|
|
27515
|
+
this.steps = this.emblaApi.scrollSnapList();
|
|
27516
|
+
this.currentStep = this.emblaApi.selectedScrollSnap();
|
|
27517
|
+
this.currentStepChange.emit(this.currentStep);
|
|
27518
|
+
this.changeDetector.detectChanges();
|
|
27519
|
+
};
|
|
27314
27520
|
}
|
|
27315
27521
|
ngAfterViewInit() {
|
|
27316
27522
|
this.emblaApi = EmblaCarousel(this.carouselOverflowContainer.nativeElement, {
|
|
27317
27523
|
duration: 15,
|
|
27318
27524
|
});
|
|
27319
|
-
const refreshSteps = () => {
|
|
27320
|
-
this.steps = this.emblaApi.scrollSnapList();
|
|
27321
|
-
this.selectedStep = this.emblaApi.selectedScrollSnap();
|
|
27322
|
-
this.changeDetector.detectChanges();
|
|
27323
|
-
};
|
|
27324
27525
|
this.emblaApi
|
|
27325
|
-
.on('init', refreshSteps)
|
|
27326
|
-
.on('reInit', refreshSteps)
|
|
27327
|
-
.on('select', refreshSteps);
|
|
27526
|
+
.on('init', this.refreshSteps)
|
|
27527
|
+
.on('reInit', this.refreshSteps)
|
|
27528
|
+
.on('select', this.refreshSteps);
|
|
27328
27529
|
}
|
|
27329
27530
|
scrollToStep(stepIndex) {
|
|
27330
27531
|
this.emblaApi.scrollTo(stepIndex);
|
|
27331
27532
|
}
|
|
27533
|
+
slideToPrevious() {
|
|
27534
|
+
if (this.isFirstStep)
|
|
27535
|
+
return;
|
|
27536
|
+
this.emblaApi.scrollPrev();
|
|
27537
|
+
}
|
|
27538
|
+
slideToNext() {
|
|
27539
|
+
if (this.isLastStep)
|
|
27540
|
+
return;
|
|
27541
|
+
this.emblaApi.scrollNext();
|
|
27542
|
+
}
|
|
27332
27543
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27333
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"
|
|
27544
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative;display:block}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27334
27545
|
}
|
|
27335
27546
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
27336
27547
|
type: Component,
|
|
27337
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"
|
|
27338
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
27548
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative;display:block}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
|
|
27549
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselOverflowContainer: [{
|
|
27550
|
+
type: ViewChild,
|
|
27551
|
+
args: ['carouselOverflowContainer']
|
|
27552
|
+
}], containerClass: [{
|
|
27339
27553
|
type: Input
|
|
27340
27554
|
}], stepsContainerClass: [{
|
|
27341
27555
|
type: Input
|
|
27342
|
-
}],
|
|
27343
|
-
type:
|
|
27344
|
-
args: ['carouselOverflowContainer']
|
|
27556
|
+
}], currentStepChange: [{
|
|
27557
|
+
type: Output
|
|
27345
27558
|
}] } });
|
|
27346
27559
|
|
|
27347
27560
|
class FormFieldWrapperComponent {
|
|
27348
27561
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27349
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
27562
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27350
27563
|
}
|
|
27351
27564
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27352
27565
|
type: Component,
|
|
@@ -27495,17 +27708,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27495
27708
|
args: ['innerContainer']
|
|
27496
27709
|
}] } });
|
|
27497
27710
|
|
|
27711
|
+
class BlockListComponent {
|
|
27712
|
+
get pages() {
|
|
27713
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
27714
|
+
}
|
|
27715
|
+
get isFirstPage() {
|
|
27716
|
+
return this.currentPage === 0;
|
|
27717
|
+
}
|
|
27718
|
+
get isLastPage() {
|
|
27719
|
+
return this.currentPage === this.pagesCount - 1;
|
|
27720
|
+
}
|
|
27721
|
+
get pagesCount() {
|
|
27722
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
27723
|
+
}
|
|
27724
|
+
constructor(changeDetector) {
|
|
27725
|
+
this.changeDetector = changeDetector;
|
|
27726
|
+
this.pageSize = 5;
|
|
27727
|
+
this.containerClass = '';
|
|
27728
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
27729
|
+
this.minHeight = 0;
|
|
27730
|
+
this.currentPage = 0;
|
|
27731
|
+
this.refreshBlocksVisibility = () => {
|
|
27732
|
+
this.blocks.forEach((block, index) => {
|
|
27733
|
+
block.nativeElement.style.display =
|
|
27734
|
+
index >= this.currentPage * this.pageSize &&
|
|
27735
|
+
index < (this.currentPage + 1) * this.pageSize
|
|
27736
|
+
? null
|
|
27737
|
+
: 'none';
|
|
27738
|
+
});
|
|
27739
|
+
};
|
|
27740
|
+
}
|
|
27741
|
+
ngAfterViewInit() {
|
|
27742
|
+
this.blocks.changes.subscribe(this.refreshBlocksVisibility);
|
|
27743
|
+
this.refreshBlocksVisibility();
|
|
27744
|
+
// we store the first height as the min-height of the list container
|
|
27745
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
27746
|
+
this.changeDetector.detectChanges();
|
|
27747
|
+
}
|
|
27748
|
+
goToPage(index) {
|
|
27749
|
+
this.currentPage = Math.max(Math.min(index, this.pagesCount - 1), 0);
|
|
27750
|
+
this.changeDetector.detectChanges();
|
|
27751
|
+
this.refreshBlocksVisibility();
|
|
27752
|
+
}
|
|
27753
|
+
previousPage() {
|
|
27754
|
+
if (this.isFirstPage)
|
|
27755
|
+
return;
|
|
27756
|
+
this.goToPage(this.currentPage - 1);
|
|
27757
|
+
}
|
|
27758
|
+
nextPage() {
|
|
27759
|
+
if (this.isLastPage)
|
|
27760
|
+
return;
|
|
27761
|
+
this.goToPage(this.currentPage + 1);
|
|
27762
|
+
}
|
|
27763
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27764
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { pageSize: "pageSize", containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27765
|
+
}
|
|
27766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
27767
|
+
type: Component,
|
|
27768
|
+
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
|
|
27769
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageSize: [{
|
|
27770
|
+
type: Input
|
|
27771
|
+
}], containerClass: [{
|
|
27772
|
+
type: Input
|
|
27773
|
+
}], paginationContainerClass: [{
|
|
27774
|
+
type: Input
|
|
27775
|
+
}], blocks: [{
|
|
27776
|
+
type: ContentChildren,
|
|
27777
|
+
args: ['block', { read: ElementRef }]
|
|
27778
|
+
}], blockContainer: [{
|
|
27779
|
+
type: ViewChild,
|
|
27780
|
+
args: ['blockContainer']
|
|
27781
|
+
}] } });
|
|
27782
|
+
|
|
27498
27783
|
class UiLayoutModule {
|
|
27499
27784
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27500
27785
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, declarations: [ExpandablePanelComponent,
|
|
27501
27786
|
StickyHeaderComponent,
|
|
27502
27787
|
AnchorLinkDirective,
|
|
27503
|
-
ExpandablePanelButtonComponent,
|
|
27504
|
-
CarouselComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27788
|
+
ExpandablePanelButtonComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27505
27789
|
StickyHeaderComponent,
|
|
27506
27790
|
AnchorLinkDirective,
|
|
27507
|
-
ExpandablePanelButtonComponent
|
|
27508
|
-
CarouselComponent] }); }
|
|
27791
|
+
ExpandablePanelButtonComponent] }); }
|
|
27509
27792
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, MatIconModule, TranslateModule.forChild()] }); }
|
|
27510
27793
|
}
|
|
27511
27794
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, decorators: [{
|
|
@@ -27517,14 +27800,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27517
27800
|
StickyHeaderComponent,
|
|
27518
27801
|
AnchorLinkDirective,
|
|
27519
27802
|
ExpandablePanelButtonComponent,
|
|
27520
|
-
CarouselComponent,
|
|
27521
27803
|
],
|
|
27522
27804
|
exports: [
|
|
27523
27805
|
ExpandablePanelComponent,
|
|
27524
27806
|
StickyHeaderComponent,
|
|
27525
27807
|
AnchorLinkDirective,
|
|
27526
27808
|
ExpandablePanelButtonComponent,
|
|
27527
|
-
CarouselComponent,
|
|
27528
27809
|
],
|
|
27529
27810
|
}]
|
|
27530
27811
|
}] });
|
|
@@ -27534,7 +27815,7 @@ class UserPreviewComponent {
|
|
|
27534
27815
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27535
27816
|
}
|
|
27536
27817
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27537
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type:
|
|
27818
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27538
27819
|
}
|
|
27539
27820
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27540
27821
|
type: Component,
|
|
@@ -27630,17 +27911,15 @@ class UserFeedbackItemComponent {
|
|
|
27630
27911
|
this.onNewAnswerValueChange();
|
|
27631
27912
|
}
|
|
27632
27913
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27633
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers",
|
|
27914
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers", activeUser: "activeUser", isLastComment: "isLastComment", isAddUserFeedbackLoading: "isAddUserFeedbackLoading" }, outputs: { newUserFeedbackAnswer: "newUserFeedbackAnswer" }, ngImport: i0, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"activeUser\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: ["userFeedbackParent", "userFeedBacksAnswers", "activeUser", "isLastComment", "isAddUserFeedbackLoading"], outputs: ["newUserFeedbackAnswer"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: TimeSincePipe, name: "timeSince" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27634
27915
|
}
|
|
27635
27916
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, decorators: [{
|
|
27636
27917
|
type: Component,
|
|
27637
|
-
args: [{ selector: 'gn-ui-user-feedback-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"
|
|
27918
|
+
args: [{ selector: 'gn-ui-user-feedback-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"activeUser\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
27638
27919
|
}], propDecorators: { userFeedbackParent: [{
|
|
27639
27920
|
type: Input
|
|
27640
27921
|
}], userFeedBacksAnswers: [{
|
|
27641
27922
|
type: Input
|
|
27642
|
-
}], isActiveUserEditor: [{
|
|
27643
|
-
type: Input
|
|
27644
27923
|
}], activeUser: [{
|
|
27645
27924
|
type: Input
|
|
27646
27925
|
}], isLastComment: [{
|
|
@@ -27658,13 +27937,12 @@ class UiElementsModule {
|
|
|
27658
27937
|
DownloadItemComponent,
|
|
27659
27938
|
DownloadsListComponent,
|
|
27660
27939
|
ApiCardComponent,
|
|
27661
|
-
LinkCardComponent,
|
|
27662
27940
|
RelatedRecordCardComponent,
|
|
27663
27941
|
MetadataContactComponent,
|
|
27664
27942
|
MetadataCatalogComponent,
|
|
27665
27943
|
MetadataQualityComponent,
|
|
27666
27944
|
MetadataQualityItemComponent,
|
|
27667
|
-
|
|
27945
|
+
ErrorComponent,
|
|
27668
27946
|
PaginationComponent,
|
|
27669
27947
|
AvatarComponent,
|
|
27670
27948
|
UserPreviewComponent,
|
|
@@ -27689,13 +27967,12 @@ class UiElementsModule {
|
|
|
27689
27967
|
DownloadItemComponent,
|
|
27690
27968
|
DownloadsListComponent,
|
|
27691
27969
|
ApiCardComponent,
|
|
27692
|
-
LinkCardComponent,
|
|
27693
27970
|
RelatedRecordCardComponent,
|
|
27694
27971
|
MetadataContactComponent,
|
|
27695
27972
|
MetadataCatalogComponent,
|
|
27696
27973
|
MetadataQualityComponent,
|
|
27697
27974
|
MetadataQualityItemComponent,
|
|
27698
|
-
|
|
27975
|
+
ErrorComponent,
|
|
27699
27976
|
PaginationComponent,
|
|
27700
27977
|
ThumbnailComponent,
|
|
27701
27978
|
AvatarComponent,
|
|
@@ -27743,13 +28020,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27743
28020
|
DownloadItemComponent,
|
|
27744
28021
|
DownloadsListComponent,
|
|
27745
28022
|
ApiCardComponent,
|
|
27746
|
-
LinkCardComponent,
|
|
27747
28023
|
RelatedRecordCardComponent,
|
|
27748
28024
|
MetadataContactComponent,
|
|
27749
28025
|
MetadataCatalogComponent,
|
|
27750
28026
|
MetadataQualityComponent,
|
|
27751
28027
|
MetadataQualityItemComponent,
|
|
27752
|
-
|
|
28028
|
+
ErrorComponent,
|
|
27753
28029
|
PaginationComponent,
|
|
27754
28030
|
AvatarComponent,
|
|
27755
28031
|
UserPreviewComponent,
|
|
@@ -27766,13 +28042,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27766
28042
|
DownloadItemComponent,
|
|
27767
28043
|
DownloadsListComponent,
|
|
27768
28044
|
ApiCardComponent,
|
|
27769
|
-
LinkCardComponent,
|
|
27770
28045
|
RelatedRecordCardComponent,
|
|
27771
28046
|
MetadataContactComponent,
|
|
27772
28047
|
MetadataCatalogComponent,
|
|
27773
28048
|
MetadataQualityComponent,
|
|
27774
28049
|
MetadataQualityItemComponent,
|
|
27775
|
-
|
|
28050
|
+
ErrorComponent,
|
|
27776
28051
|
PaginationComponent,
|
|
27777
28052
|
ThumbnailComponent,
|
|
27778
28053
|
AvatarComponent,
|
|
@@ -29035,7 +29310,7 @@ class ResultsLayoutComponent {
|
|
|
29035
29310
|
this.searchFacade.setResultsLayout(layout);
|
|
29036
29311
|
}
|
|
29037
29312
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsLayoutComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29038
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsLayoutComponent, selector: "gn-ui-results-layout", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'results.layout.selectOne' | translate\"\n [ariaName]=\"'results.layout.selectOne' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"change($event)\"\n [selected]=\"searchFacade.layout$ | async\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29313
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsLayoutComponent, selector: "gn-ui-results-layout", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'results.layout.selectOne' | translate\"\n [ariaName]=\"'results.layout.selectOne' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"change($event)\"\n [selected]=\"searchFacade.layout$ | async\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29039
29314
|
}
|
|
29040
29315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsLayoutComponent, decorators: [{
|
|
29041
29316
|
type: Component,
|
|
@@ -29181,11 +29456,11 @@ class ResultsListContainerComponent {
|
|
|
29181
29456
|
return this.recordUrlTemplate.replace('${uuid}', metadata.uniqueIdentifier);
|
|
29182
29457
|
}
|
|
29183
29458
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29184
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container\n *ngIf=\"\n (facade.isLoading$ | async) === false &&\n (facade.isEndOfResults$ | async) === false\n \"\n >\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-
|
|
29459
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container\n *ngIf=\"\n (facade.isLoading$ | async) === false &&\n (facade.isEndOfResults$ | async) === false\n \"\n >\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-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$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }] }); }
|
|
29185
29460
|
}
|
|
29186
29461
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
29187
29462
|
type: Component,
|
|
29188
|
-
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\n *ngIf=\"\n (facade.isLoading$ | async) === false &&\n (facade.isEndOfResults$ | async) === false\n \"\n >\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-
|
|
29463
|
+
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\n *ngIf=\"\n (facade.isLoading$ | async) === false &&\n (facade.isEndOfResults$ | async) === false\n \"\n >\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-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" }]
|
|
29189
29464
|
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: undefined, decorators: [{
|
|
29190
29465
|
type: Inject,
|
|
29191
29466
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
@@ -29243,7 +29518,7 @@ class SortByComponent {
|
|
|
29243
29518
|
this.searchService.setSortBy(criteriaAsString.split(','));
|
|
29244
29519
|
}
|
|
29245
29520
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortByComponent, deps: [{ token: SearchFacade }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29246
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SortByComponent, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29521
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SortByComponent, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29247
29522
|
}
|
|
29248
29523
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortByComponent, decorators: [{
|
|
29249
29524
|
type: Component,
|
|
@@ -30111,7 +30386,7 @@ class AddLayerFromWmsComponent {
|
|
|
30111
30386
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
30112
30387
|
}
|
|
30113
30388
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30114
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30389
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30115
30390
|
}
|
|
30116
30391
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
30117
30392
|
type: Component,
|
|
@@ -30262,7 +30537,7 @@ class AddLayerFromWfsComponent {
|
|
|
30262
30537
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
30263
30538
|
}
|
|
30264
30539
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30265
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30540
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30266
30541
|
}
|
|
30267
30542
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
30268
30543
|
type: Component,
|
|
@@ -30282,7 +30557,7 @@ class LayersPanelComponent {
|
|
|
30282
30557
|
this.mapFacade.addLayer(layer);
|
|
30283
30558
|
}
|
|
30284
30559
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30285
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$
|
|
30560
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30286
30561
|
}
|
|
30287
30562
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
30288
30563
|
type: Component,
|
|
@@ -30751,14 +31026,12 @@ on(setChartConfig, (state, { chartConfig }) => ({
|
|
|
30751
31026
|
*/
|
|
30752
31027
|
on(loadUserFeedbacks, (state) => ({
|
|
30753
31028
|
...state,
|
|
30754
|
-
error: null,
|
|
30755
31029
|
allUserFeedbacksLoading: true,
|
|
30756
31030
|
})), on(addUserFeedback, (state) => ({
|
|
30757
31031
|
...state,
|
|
30758
31032
|
addUserFeedbackLoading: true,
|
|
30759
31033
|
})), on(loadUserFeedbacksSuccess, (state, { userFeedbacks }) => ({
|
|
30760
31034
|
...state,
|
|
30761
|
-
error: null,
|
|
30762
31035
|
userFeedbacks: userFeedbacks,
|
|
30763
31036
|
addUserFeedbackLoading: false,
|
|
30764
31037
|
allUserFeedbacksLoading: false,
|
|
@@ -30796,117 +31069,6 @@ const getUserFeedbacks = createSelector(getMdViewState, (state) => state.userFee
|
|
|
30796
31069
|
const getAllUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.allUserFeedbacksLoading);
|
|
30797
31070
|
const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.addUserFeedbackLoading);
|
|
30798
31071
|
|
|
30799
|
-
/**
|
|
30800
|
-
* The Metadata View Facade is used to render complete metadata records.
|
|
30801
|
-
* Supply it with an incomplete record (at least containing the uuid) and the
|
|
30802
|
-
* corresponding full record will be loaded.
|
|
30803
|
-
* To clear the current record use the `close()` method.
|
|
30804
|
-
*/
|
|
30805
|
-
class MdViewFacade {
|
|
30806
|
-
constructor(store, linkClassifier, avatarService) {
|
|
30807
|
-
this.store = store;
|
|
30808
|
-
this.linkClassifier = linkClassifier;
|
|
30809
|
-
this.avatarService = avatarService;
|
|
30810
|
-
this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
|
|
30811
|
-
this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
|
|
30812
|
-
this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
|
|
30813
|
-
this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
|
|
30814
|
-
this.error$ = this.store.pipe(select(getMetadataError));
|
|
30815
|
-
this.related$ = this.store.pipe(select(getRelated));
|
|
30816
|
-
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
30817
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('distributions' in record ? record.distributions : [])));
|
|
30818
|
-
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))));
|
|
30819
|
-
this.mapApiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API))));
|
|
30820
|
-
this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
|
|
30821
|
-
this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
|
|
30822
|
-
this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
|
|
30823
|
-
this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
|
|
30824
|
-
this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
|
|
30825
|
-
this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
|
|
30826
|
-
this.isAllUserFeedbackLoading$ = this.store.pipe(select(getAllUserFeedbacksLoading));
|
|
30827
|
-
this.isAddUserFeedbackLoading$ = this.store.pipe(select(getAddUserFeedbacksLoading));
|
|
30828
|
-
}
|
|
30829
|
-
/**
|
|
30830
|
-
* This will show an incomplete record (e.g. from a search result) as a preview
|
|
30831
|
-
* Note: the full record will not be loaded automatically; use the `loadFull` method for that
|
|
30832
|
-
*/
|
|
30833
|
-
setIncompleteMetadata(incomplete) {
|
|
30834
|
-
this.store.dispatch(setIncompleteMetadata({ incomplete }));
|
|
30835
|
-
}
|
|
30836
|
-
/**
|
|
30837
|
-
* This will trigger the load of a full metadata record
|
|
30838
|
-
*/
|
|
30839
|
-
loadFull(uuid) {
|
|
30840
|
-
this.store.dispatch(loadFullMetadata({ uuid }));
|
|
30841
|
-
}
|
|
30842
|
-
closeMetadata() {
|
|
30843
|
-
this.store.dispatch(closeMetadata());
|
|
30844
|
-
}
|
|
30845
|
-
setChartConfig(chartConfig) {
|
|
30846
|
-
this.store.dispatch(setChartConfig({ chartConfig }));
|
|
30847
|
-
}
|
|
30848
|
-
/**
|
|
30849
|
-
* UserFeedbacks
|
|
30850
|
-
*/
|
|
30851
|
-
addUserFeedback(userFeedback) {
|
|
30852
|
-
this.store.dispatch(addUserFeedback({ userFeedback }));
|
|
30853
|
-
}
|
|
30854
|
-
loadUserFeedbacks(datasetUuid) {
|
|
30855
|
-
this.store.dispatch(loadUserFeedbacks({ datasetUuid }));
|
|
30856
|
-
}
|
|
30857
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, deps: [{ token: i1$2.Store }, { token: LinkClassifierService }, { token: AvatarServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30858
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade }); }
|
|
30859
|
-
}
|
|
30860
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, decorators: [{
|
|
30861
|
-
type: Injectable
|
|
30862
|
-
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }]; } });
|
|
30863
|
-
|
|
30864
|
-
class MdViewEffects {
|
|
30865
|
-
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
30866
|
-
this.actions$ = actions$;
|
|
30867
|
-
this.recordsRepository = recordsRepository;
|
|
30868
|
-
this.platformServiceInterface = platformServiceInterface;
|
|
30869
|
-
/*
|
|
30870
|
-
Metadata effects
|
|
30871
|
-
*/
|
|
30872
|
-
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getByUniqueIdentifier(uuid)), map$1((record) => {
|
|
30873
|
-
if (record === null) {
|
|
30874
|
-
return loadFullMetadataFailure({ notFound: true });
|
|
30875
|
-
}
|
|
30876
|
-
return loadFullMetadataSuccess({ full: record });
|
|
30877
|
-
}), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
|
|
30878
|
-
/*
|
|
30879
|
-
Related effects
|
|
30880
|
-
*/
|
|
30881
|
-
this.loadRelatedRecords$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSimilarRecords(full)), map$1((related) => {
|
|
30882
|
-
return setRelated({ related });
|
|
30883
|
-
}), catchError((error) => of(setRelated({ related: null })))));
|
|
30884
|
-
/*
|
|
30885
|
-
UserFeedback effects
|
|
30886
|
-
*/
|
|
30887
|
-
this.loadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(loadUserFeedbacks), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30888
|
-
otherError: error.message,
|
|
30889
|
-
})))))));
|
|
30890
|
-
this.reloadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedbackSuccess), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30891
|
-
otherError: error.message,
|
|
30892
|
-
})))))));
|
|
30893
|
-
this.addUserFeedback$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedback), mergeMap$1((action) => this.platformServiceInterface
|
|
30894
|
-
.postUserFeedbacks(action.userFeedback)
|
|
30895
|
-
.pipe(map$1(() => addUserFeedbackSuccess({
|
|
30896
|
-
datasetUuid: action.userFeedback.metadataUUID,
|
|
30897
|
-
})), catchError((error) => {
|
|
30898
|
-
return of(addUserFeedbackFailure({
|
|
30899
|
-
otherError: error.message,
|
|
30900
|
-
}));
|
|
30901
|
-
})))));
|
|
30902
|
-
}
|
|
30903
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$8.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30904
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects }); }
|
|
30905
|
-
}
|
|
30906
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
30907
|
-
type: Injectable
|
|
30908
|
-
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
30909
|
-
|
|
30910
31072
|
class FigureComponent {
|
|
30911
31073
|
constructor() {
|
|
30912
31074
|
this.color = 'primary';
|
|
@@ -31140,7 +31302,7 @@ class TableComponent {
|
|
|
31140
31302
|
return rowIdPrefix + id;
|
|
31141
31303
|
}
|
|
31142
31304
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$
|
|
31305
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$1.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31144
31306
|
}
|
|
31145
31307
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
31146
31308
|
type: Component,
|
|
@@ -32010,6 +32172,7 @@ marker('wfs.unreachable.http');
|
|
|
32010
32172
|
marker('wfs.unreachable.unknown');
|
|
32011
32173
|
marker('wfs.featuretype.notfound');
|
|
32012
32174
|
marker('wfs.geojsongml.notsupported');
|
|
32175
|
+
marker('ogc.unreachable.unknown');
|
|
32013
32176
|
marker('dataset.error.network');
|
|
32014
32177
|
marker('dataset.error.http');
|
|
32015
32178
|
marker('dataset.error.parse');
|
|
@@ -32089,6 +32252,39 @@ class DataService {
|
|
|
32089
32252
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
32090
32253
|
}))));
|
|
32091
32254
|
}
|
|
32255
|
+
async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
|
|
32256
|
+
const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
|
|
32257
|
+
return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
|
|
32258
|
+
return {
|
|
32259
|
+
...ogcApiLink,
|
|
32260
|
+
type: 'download',
|
|
32261
|
+
url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
|
|
32262
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
|
|
32263
|
+
};
|
|
32264
|
+
});
|
|
32265
|
+
}
|
|
32266
|
+
async getDownloadUrlsFromOgcApi(url) {
|
|
32267
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32268
|
+
return await endpoint.allCollections
|
|
32269
|
+
.then((collections) => {
|
|
32270
|
+
return endpoint.getCollectionInfo(collections[0].name);
|
|
32271
|
+
})
|
|
32272
|
+
.catch((error) => {
|
|
32273
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
32274
|
+
});
|
|
32275
|
+
}
|
|
32276
|
+
async getItemsFromOgcApi(url) {
|
|
32277
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32278
|
+
return await endpoint.featureCollections
|
|
32279
|
+
.then((collections) => {
|
|
32280
|
+
return collections.length
|
|
32281
|
+
? endpoint.getCollectionItem(collections[0], '1')
|
|
32282
|
+
: null;
|
|
32283
|
+
})
|
|
32284
|
+
.catch((error) => {
|
|
32285
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
32286
|
+
});
|
|
32287
|
+
}
|
|
32092
32288
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
32093
32289
|
return ['json', 'geojson'].map((format) => ({
|
|
32094
32290
|
...esriRestLink,
|
|
@@ -32132,6 +32328,17 @@ class DataService {
|
|
|
32132
32328
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
32133
32329
|
return from(openDataset(url, 'geojson')).pipe();
|
|
32134
32330
|
}
|
|
32331
|
+
else if (link.type === 'service' &&
|
|
32332
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32333
|
+
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
32334
|
+
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
32335
|
+
return openDataset(geojsonUrl, 'geojson');
|
|
32336
|
+
}), tap$1((url) => {
|
|
32337
|
+
if (url === null) {
|
|
32338
|
+
throw new Error('wfs.geojsongml.notsupported');
|
|
32339
|
+
}
|
|
32340
|
+
}));
|
|
32341
|
+
}
|
|
32135
32342
|
return throwError(() => 'protocol not supported');
|
|
32136
32343
|
}
|
|
32137
32344
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -32358,7 +32565,7 @@ class ChartViewComponent {
|
|
|
32358
32565
|
this.changeDetector.detectChanges();
|
|
32359
32566
|
}
|
|
32360
32567
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32568
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32362
32569
|
}
|
|
32363
32570
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
32364
32571
|
type: Component,
|
|
@@ -32432,6 +32639,143 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32432
32639
|
}]
|
|
32433
32640
|
}] });
|
|
32434
32641
|
|
|
32642
|
+
/**
|
|
32643
|
+
* The Metadata View Facade is used to render complete metadata records.
|
|
32644
|
+
* Supply it with an incomplete record (at least containing the uuid) and the
|
|
32645
|
+
* corresponding full record will be loaded.
|
|
32646
|
+
* To clear the current record use the `close()` method.
|
|
32647
|
+
*/
|
|
32648
|
+
class MdViewFacade {
|
|
32649
|
+
constructor(store, linkClassifier, avatarService, dataService) {
|
|
32650
|
+
this.store = store;
|
|
32651
|
+
this.linkClassifier = linkClassifier;
|
|
32652
|
+
this.avatarService = avatarService;
|
|
32653
|
+
this.dataService = dataService;
|
|
32654
|
+
this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
|
|
32655
|
+
this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
|
|
32656
|
+
this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
|
|
32657
|
+
this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
|
|
32658
|
+
this.error$ = this.store.pipe(select(getMetadataError));
|
|
32659
|
+
this.related$ = this.store.pipe(select(getRelated));
|
|
32660
|
+
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
32661
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('distributions' in record ? record.distributions : [])));
|
|
32662
|
+
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))));
|
|
32663
|
+
this.mapApiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API))));
|
|
32664
|
+
this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
|
|
32665
|
+
this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
|
|
32666
|
+
this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
|
|
32667
|
+
this.geoDataLinksWithGeometry$ = this.allLinks$.pipe(mergeMap((links) => {
|
|
32668
|
+
return from(links);
|
|
32669
|
+
}), mergeMap((link) => {
|
|
32670
|
+
if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
|
|
32671
|
+
if (link.type === 'service' &&
|
|
32672
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32673
|
+
return from(this.dataService.getItemsFromOgcApi(link.url.href)).pipe(map$1((collectionRecords) => {
|
|
32674
|
+
return collectionRecords && collectionRecords.geometry
|
|
32675
|
+
? link
|
|
32676
|
+
: null;
|
|
32677
|
+
}), defaultIfEmpty(null));
|
|
32678
|
+
}
|
|
32679
|
+
else {
|
|
32680
|
+
return of(link);
|
|
32681
|
+
}
|
|
32682
|
+
}
|
|
32683
|
+
else {
|
|
32684
|
+
return of(null);
|
|
32685
|
+
}
|
|
32686
|
+
}), scan((acc, val) => {
|
|
32687
|
+
if (val !== null && !acc.includes(val)) {
|
|
32688
|
+
acc.push(val);
|
|
32689
|
+
}
|
|
32690
|
+
return acc;
|
|
32691
|
+
}, []));
|
|
32692
|
+
this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
|
|
32693
|
+
this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
|
|
32694
|
+
this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
|
|
32695
|
+
this.isAllUserFeedbackLoading$ = this.store.pipe(select(getAllUserFeedbacksLoading));
|
|
32696
|
+
this.isAddUserFeedbackLoading$ = this.store.pipe(select(getAddUserFeedbacksLoading));
|
|
32697
|
+
}
|
|
32698
|
+
/**
|
|
32699
|
+
* This will show an incomplete record (e.g. from a search result) as a preview
|
|
32700
|
+
* Note: the full record will not be loaded automatically; use the `loadFull` method for that
|
|
32701
|
+
*/
|
|
32702
|
+
setIncompleteMetadata(incomplete) {
|
|
32703
|
+
this.store.dispatch(setIncompleteMetadata({ incomplete }));
|
|
32704
|
+
}
|
|
32705
|
+
/**
|
|
32706
|
+
* This will trigger the load of a full metadata record
|
|
32707
|
+
*/
|
|
32708
|
+
loadFull(uuid) {
|
|
32709
|
+
this.store.dispatch(loadFullMetadata({ uuid }));
|
|
32710
|
+
}
|
|
32711
|
+
closeMetadata() {
|
|
32712
|
+
this.store.dispatch(closeMetadata());
|
|
32713
|
+
}
|
|
32714
|
+
setChartConfig(chartConfig) {
|
|
32715
|
+
this.store.dispatch(setChartConfig({ chartConfig }));
|
|
32716
|
+
}
|
|
32717
|
+
/**
|
|
32718
|
+
* UserFeedbacks
|
|
32719
|
+
*/
|
|
32720
|
+
addUserFeedback(userFeedback) {
|
|
32721
|
+
this.store.dispatch(addUserFeedback({ userFeedback }));
|
|
32722
|
+
}
|
|
32723
|
+
loadUserFeedbacks(datasetUuid) {
|
|
32724
|
+
this.store.dispatch(loadUserFeedbacks({ datasetUuid }));
|
|
32725
|
+
}
|
|
32726
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, deps: [{ token: i1$2.Store }, { token: LinkClassifierService }, { token: AvatarServiceInterface }, { token: DataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32727
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade }); }
|
|
32728
|
+
}
|
|
32729
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, decorators: [{
|
|
32730
|
+
type: Injectable
|
|
32731
|
+
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }, { type: DataService }]; } });
|
|
32732
|
+
|
|
32733
|
+
class MdViewEffects {
|
|
32734
|
+
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
32735
|
+
this.actions$ = actions$;
|
|
32736
|
+
this.recordsRepository = recordsRepository;
|
|
32737
|
+
this.platformServiceInterface = platformServiceInterface;
|
|
32738
|
+
/*
|
|
32739
|
+
Metadata effects
|
|
32740
|
+
*/
|
|
32741
|
+
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getByUniqueIdentifier(uuid)), map$1((record) => {
|
|
32742
|
+
if (record === null) {
|
|
32743
|
+
return loadFullMetadataFailure({ notFound: true });
|
|
32744
|
+
}
|
|
32745
|
+
return loadFullMetadataSuccess({ full: record });
|
|
32746
|
+
}), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
|
|
32747
|
+
/*
|
|
32748
|
+
Related effects
|
|
32749
|
+
*/
|
|
32750
|
+
this.loadRelatedRecords$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSimilarRecords(full)), map$1((related) => {
|
|
32751
|
+
return setRelated({ related });
|
|
32752
|
+
}), catchError((error) => of(setRelated({ related: null })))));
|
|
32753
|
+
/*
|
|
32754
|
+
UserFeedback effects
|
|
32755
|
+
*/
|
|
32756
|
+
this.loadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(loadUserFeedbacks), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
32757
|
+
otherError: error.message,
|
|
32758
|
+
})))))));
|
|
32759
|
+
this.reloadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedbackSuccess), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
32760
|
+
otherError: error.message,
|
|
32761
|
+
})))))));
|
|
32762
|
+
this.addUserFeedback$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedback), mergeMap$1((action) => this.platformServiceInterface
|
|
32763
|
+
.postUserFeedbacks(action.userFeedback)
|
|
32764
|
+
.pipe(map$1(() => addUserFeedbackSuccess({
|
|
32765
|
+
datasetUuid: action.userFeedback.metadataUUID,
|
|
32766
|
+
})), catchError((error) => {
|
|
32767
|
+
return of(addUserFeedbackFailure({
|
|
32768
|
+
otherError: error.message,
|
|
32769
|
+
}));
|
|
32770
|
+
})))));
|
|
32771
|
+
}
|
|
32772
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$8.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32773
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects }); }
|
|
32774
|
+
}
|
|
32775
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
32776
|
+
type: Injectable
|
|
32777
|
+
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
32778
|
+
|
|
32435
32779
|
marker('externalviewer.dataset.unnamed');
|
|
32436
32780
|
class ExternalViewerButtonComponent {
|
|
32437
32781
|
get externalViewer() {
|
|
@@ -32499,8 +32843,10 @@ class MapViewComponent {
|
|
|
32499
32843
|
this.subscription = new Subscription();
|
|
32500
32844
|
this.compatibleMapLinks$ = combineLatest([
|
|
32501
32845
|
this.mdViewFacade.mapApiLinks$,
|
|
32502
|
-
this.mdViewFacade.
|
|
32503
|
-
]).pipe(map$1(([mapApiLinks,
|
|
32846
|
+
this.mdViewFacade.geoDataLinksWithGeometry$,
|
|
32847
|
+
]).pipe(map$1(([mapApiLinks, geoDataLinksWithGeometry]) => {
|
|
32848
|
+
return [...mapApiLinks, ...geoDataLinksWithGeometry];
|
|
32849
|
+
}));
|
|
32504
32850
|
this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map$1((links) => links.length
|
|
32505
32851
|
? links.map((link, index) => ({
|
|
32506
32852
|
label: getLinkLabel(link),
|
|
@@ -32526,15 +32872,20 @@ class MapViewComponent {
|
|
|
32526
32872
|
return of([]);
|
|
32527
32873
|
}), finalize(() => (this.loading = false)));
|
|
32528
32874
|
}));
|
|
32529
|
-
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(this.mapUtils.getLayerExtent(layers[0])).pipe(catchError((
|
|
32530
|
-
|
|
32875
|
+
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(this.mapUtils.getLayerExtent(layers[0])).pipe(catchError(() => {
|
|
32876
|
+
this.error = 'The layer has no extent';
|
|
32531
32877
|
return of(undefined);
|
|
32532
32878
|
}), map$1((extent) => ({
|
|
32533
32879
|
layers,
|
|
32534
32880
|
view: {
|
|
32535
32881
|
extent,
|
|
32536
32882
|
},
|
|
32537
|
-
})), tap$1(() =>
|
|
32883
|
+
})), tap$1((res) => {
|
|
32884
|
+
this.resetSelection();
|
|
32885
|
+
}))), startWith({
|
|
32886
|
+
layers: [],
|
|
32887
|
+
view: {},
|
|
32888
|
+
}), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
32538
32889
|
if (context.view.extent)
|
|
32539
32890
|
return context;
|
|
32540
32891
|
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
@@ -32590,7 +32941,8 @@ class MapViewComponent {
|
|
|
32590
32941
|
}
|
|
32591
32942
|
else if ((link.type === 'service' &&
|
|
32592
32943
|
(link.accessServiceProtocol === 'wfs' ||
|
|
32593
|
-
link.accessServiceProtocol === 'esriRest'
|
|
32944
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
32945
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
32594
32946
|
link.type === 'download') {
|
|
32595
32947
|
return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
|
|
32596
32948
|
type: MapContextLayerTypeEnum.GEOJSON,
|
|
@@ -32603,7 +32955,7 @@ class MapViewComponent {
|
|
|
32603
32955
|
this.selectedLinkIndex$.next(link);
|
|
32604
32956
|
}
|
|
32605
32957
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token: FeatureInfoService }, { token: i0.ChangeDetectorRef }, { token: MapStyleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32606
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32958
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32607
32959
|
}
|
|
32608
32960
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
32609
32961
|
type: Component,
|
|
@@ -32641,7 +32993,7 @@ class DataViewComponent {
|
|
|
32641
32993
|
this.selectedLink$.next(link);
|
|
32642
32994
|
}
|
|
32643
32995
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32644
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewComponent, selector: "gn-ui-data-view", inputs: { mode: "mode" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32996
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewComponent, selector: "gn-ui-data-view", inputs: { mode: "mode" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32645
32997
|
}
|
|
32646
32998
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
32647
32999
|
type: Component,
|
|
@@ -32735,7 +33087,7 @@ class OrganisationsFilterComponent {
|
|
|
32735
33087
|
this.filterByValueChange.next(inputValue);
|
|
32736
33088
|
}
|
|
32737
33089
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationsFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32738
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: { sortBy: "sortBy", filterBy: "filterBy" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap sm:flex-nowrap justify-between bg-white shadow-xl p-5 rounded-lg\"\n>\n <span class=\"grow mb-4 mr-4 sm:mb-0 sm:mr-16 sm:max-w-sm\">\n <gn-ui-search-input\n (valueChange)=\"filterOrganisations($event)\"\n [placeholder]=\"'organisation.filter.placeholder' | translate\"\n ></gn-ui-search-input>\n </span>\n <span class=\"flex flex-wrap sm:flex-nowrap sm:shrink-0\">\n <gn-ui-dropdown-selector\n [title]=\"'organisation.sort.sortBy' | translate\"\n class=\"shrink\"\n [choices]=\"choices\"\n [minWidth]=\"'180px'\"\n [showTitle]=\"true\"\n (selectValue)=\"selectOrderToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </span>\n</div>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33090
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: { sortBy: "sortBy", filterBy: "filterBy" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap sm:flex-nowrap justify-between bg-white shadow-xl p-5 rounded-lg\"\n>\n <span class=\"grow mb-4 mr-4 sm:mb-0 sm:mr-16 sm:max-w-sm\">\n <gn-ui-search-input\n (valueChange)=\"filterOrganisations($event)\"\n [placeholder]=\"'organisation.filter.placeholder' | translate\"\n ></gn-ui-search-input>\n </span>\n <span class=\"flex flex-wrap sm:flex-nowrap sm:shrink-0\">\n <gn-ui-dropdown-selector\n [title]=\"'organisation.sort.sortBy' | translate\"\n class=\"shrink\"\n [choices]=\"choices\"\n [minWidth]=\"'180px'\"\n [showTitle]=\"true\"\n (selectValue)=\"selectOrderToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </span>\n</div>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32739
33091
|
}
|
|
32740
33092
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationsFilterComponent, decorators: [{
|
|
32741
33093
|
type: Component,
|
|
@@ -32775,7 +33127,7 @@ class LanguageSwitcherComponent {
|
|
|
32775
33127
|
this.translate.use(value);
|
|
32776
33128
|
}
|
|
32777
33129
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32778
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"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"], outputs: ["selectValue"] }] }); }
|
|
33130
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"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"] }] }); }
|
|
32779
33131
|
}
|
|
32780
33132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
32781
33133
|
type: Component,
|
|
@@ -33188,7 +33540,7 @@ class DataViewShareComponent {
|
|
|
33188
33540
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
33189
33541
|
}
|
|
33190
33542
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$
|
|
33543
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink" }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33192
33544
|
}
|
|
33193
33545
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
33194
33546
|
type: Component,
|
|
@@ -33331,6 +33683,13 @@ const DEFAULT_FIELDS = [
|
|
|
33331
33683
|
type: 'date',
|
|
33332
33684
|
},
|
|
33333
33685
|
},
|
|
33686
|
+
{
|
|
33687
|
+
model: 'updateFrequency',
|
|
33688
|
+
formFieldConfig: {
|
|
33689
|
+
labelKey: marker('editor.record.form.updateFrequency'),
|
|
33690
|
+
type: 'text',
|
|
33691
|
+
},
|
|
33692
|
+
},
|
|
33334
33693
|
];
|
|
33335
33694
|
|
|
33336
33695
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -33715,7 +34074,7 @@ class WizardFieldComponent {
|
|
|
33715
34074
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33716
34075
|
},
|
|
33717
34076
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
33718
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$
|
|
34077
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33719
34078
|
}
|
|
33720
34079
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33721
34080
|
type: Component,
|
|
@@ -34092,7 +34451,7 @@ class FormFieldLicenseComponent {
|
|
|
34092
34451
|
this.control.setValue([{ text: value }]);
|
|
34093
34452
|
}
|
|
34094
34453
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34095
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldLicenseComponent, isStandalone: true, selector: "gn-ui-form-field-license", inputs: { control: "control", label: "label" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34454
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldLicenseComponent, isStandalone: true, selector: "gn-ui-form-field-license", inputs: { control: "control", label: "label" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34096
34455
|
}
|
|
34097
34456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34098
34457
|
type: Component,
|
|
@@ -34114,6 +34473,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34114
34473
|
type: Input
|
|
34115
34474
|
}] } });
|
|
34116
34475
|
|
|
34476
|
+
class FormFieldUpdateFrequencyComponent {
|
|
34477
|
+
get planned() {
|
|
34478
|
+
return this.control.value !== 'notPlanned';
|
|
34479
|
+
}
|
|
34480
|
+
constructor(translateService) {
|
|
34481
|
+
this.translateService = translateService;
|
|
34482
|
+
this.choices = [
|
|
34483
|
+
{
|
|
34484
|
+
value: 'day.1',
|
|
34485
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34486
|
+
count: 1,
|
|
34487
|
+
}),
|
|
34488
|
+
},
|
|
34489
|
+
{
|
|
34490
|
+
value: 'day.2',
|
|
34491
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34492
|
+
count: 2,
|
|
34493
|
+
}),
|
|
34494
|
+
},
|
|
34495
|
+
{
|
|
34496
|
+
value: 'week.1',
|
|
34497
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34498
|
+
count: 1,
|
|
34499
|
+
}),
|
|
34500
|
+
},
|
|
34501
|
+
{
|
|
34502
|
+
value: 'week.2',
|
|
34503
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34504
|
+
count: 2,
|
|
34505
|
+
}),
|
|
34506
|
+
},
|
|
34507
|
+
{
|
|
34508
|
+
value: 'month.1',
|
|
34509
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34510
|
+
count: 1,
|
|
34511
|
+
}),
|
|
34512
|
+
},
|
|
34513
|
+
{
|
|
34514
|
+
value: 'month.2',
|
|
34515
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34516
|
+
count: 2,
|
|
34517
|
+
}),
|
|
34518
|
+
},
|
|
34519
|
+
{
|
|
34520
|
+
value: 'year.1',
|
|
34521
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34522
|
+
count: 1,
|
|
34523
|
+
}),
|
|
34524
|
+
},
|
|
34525
|
+
{
|
|
34526
|
+
value: 'year.2',
|
|
34527
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34528
|
+
count: 2,
|
|
34529
|
+
}),
|
|
34530
|
+
},
|
|
34531
|
+
];
|
|
34532
|
+
}
|
|
34533
|
+
ngOnInit() {
|
|
34534
|
+
const updatedTimes = this.control.value?.updatedTimes;
|
|
34535
|
+
const per = this.control.value?.per;
|
|
34536
|
+
if (updatedTimes && updatedTimes !== 1 && updatedTimes !== 2) {
|
|
34537
|
+
this.choices = [
|
|
34538
|
+
{
|
|
34539
|
+
value: `${per}.${updatedTimes}`,
|
|
34540
|
+
label: this.translateService.instant(`domain.record.updateFrequency.${per}`, {
|
|
34541
|
+
count: updatedTimes,
|
|
34542
|
+
}),
|
|
34543
|
+
},
|
|
34544
|
+
...this.choices,
|
|
34545
|
+
];
|
|
34546
|
+
}
|
|
34547
|
+
}
|
|
34548
|
+
onPlannedToggled() {
|
|
34549
|
+
if (this.planned) {
|
|
34550
|
+
this.control.setValue('notPlanned');
|
|
34551
|
+
}
|
|
34552
|
+
else {
|
|
34553
|
+
this.control.setValue({ updatedTimes: 1, per: 'day' });
|
|
34554
|
+
}
|
|
34555
|
+
}
|
|
34556
|
+
get selectedFrequency() {
|
|
34557
|
+
const { updatedTimes, per } = this.control.value;
|
|
34558
|
+
return `${per}.${updatedTimes}`;
|
|
34559
|
+
}
|
|
34560
|
+
onSelectFrequencyValue(value) {
|
|
34561
|
+
const split = value.split('.');
|
|
34562
|
+
this.control.setValue({ updatedTimes: Number(split[1]), per: split[0] });
|
|
34563
|
+
}
|
|
34564
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldUpdateFrequencyComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34565
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldUpdateFrequencyComponent, isStandalone: true, selector: "gn-ui-form-field-update-frequency", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n></gn-ui-check-toggle>\n<gn-ui-dropdown-selector\n title=\"updateFrequency\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34566
|
+
}
|
|
34567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldUpdateFrequencyComponent, decorators: [{
|
|
34568
|
+
type: Component,
|
|
34569
|
+
args: [{ selector: 'gn-ui-form-field-update-frequency', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CheckToggleComponent, DropdownSelectorComponent, TranslateModule], template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n></gn-ui-check-toggle>\n<gn-ui-dropdown-selector\n title=\"updateFrequency\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
34570
|
+
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { control: [{
|
|
34571
|
+
type: Input
|
|
34572
|
+
}] } });
|
|
34573
|
+
|
|
34117
34574
|
class FormFieldComponent {
|
|
34118
34575
|
set value(v) {
|
|
34119
34576
|
this.formControl.setValue(v, {
|
|
@@ -34174,11 +34631,14 @@ class FormFieldComponent {
|
|
|
34174
34631
|
get isResourceUpdated() {
|
|
34175
34632
|
return this.model === 'resourceUpdated';
|
|
34176
34633
|
}
|
|
34634
|
+
get isUpdateFrequency() {
|
|
34635
|
+
return this.model === 'updateFrequency';
|
|
34636
|
+
}
|
|
34177
34637
|
get withoutWrapper() {
|
|
34178
34638
|
return this.model === 'title' || this.model === 'abstract';
|
|
34179
34639
|
}
|
|
34180
34640
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
34641
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldObjectComponent, selector: "gn-ui-form-field-object" }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldTemporalExtentComponent, selector: "gn-ui-form-field-temporal-extent" }, { kind: "component", type: FormFieldFileComponent, selector: "gn-ui-form-field-file", inputs: ["control", "readonly", "invalid", "placeholder"] }, { kind: "component", type: FormFieldArrayComponent, selector: "gn-ui-form-field-array" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34182
34642
|
}
|
|
34183
34643
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
34184
34644
|
type: Component,
|
|
@@ -34191,6 +34651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34191
34651
|
FormFieldWrapperComponent,
|
|
34192
34652
|
FormFieldLicenseComponent,
|
|
34193
34653
|
FormFieldResourceUpdatedComponent,
|
|
34654
|
+
FormFieldUpdateFrequencyComponent,
|
|
34194
34655
|
FormFieldSimpleComponent,
|
|
34195
34656
|
FormFieldRichComponent,
|
|
34196
34657
|
FormFieldObjectComponent,
|
|
@@ -34199,7 +34660,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34199
34660
|
FormFieldFileComponent,
|
|
34200
34661
|
FormFieldArrayComponent,
|
|
34201
34662
|
TranslateModule,
|
|
34202
|
-
], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n" }]
|
|
34663
|
+
], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n" }]
|
|
34203
34664
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
34204
34665
|
type: Input
|
|
34205
34666
|
}], config: [{
|
|
@@ -34557,7 +35018,7 @@ class DefaultRouterModule {
|
|
|
34557
35018
|
};
|
|
34558
35019
|
}
|
|
34559
35020
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
34560
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
35021
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$2.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
34561
35022
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
34562
35023
|
RouterFacade,
|
|
34563
35024
|
{
|
|
@@ -34600,5 +35061,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34600
35061
|
* Generated bundle index. Do not edit.
|
|
34601
35062
|
*/
|
|
34602
35063
|
|
|
34603
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent,
|
|
35064
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
34604
35065
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|