geonetwork-ui 2.2.0-dev.46643468 → 2.2.0-dev.4db0b597
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +36 -2
- package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
- package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
- package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
- package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
- package/esm2022/libs/feature/map/src/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +17 -3
- package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
- package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
- package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
- package/esm2022/libs/feature/search/src/index.mjs +4 -1
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
- package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +4 -4
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +3 -1
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
- package/esm2022/libs/ui/layout/src/index.mjs +3 -1
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
- package/esm2022/libs/ui/search/src/index.mjs +1 -2
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
- package/esm2022/libs/util/i18n/src/index.mjs +1 -2
- package/esm2022/translations/de.json +5 -3
- package/esm2022/translations/en.json +6 -4
- package/esm2022/translations/es.json +5 -3
- package/esm2022/translations/fr.json +6 -4
- package/esm2022/translations/it.json +5 -3
- package/esm2022/translations/nl.json +5 -3
- package/esm2022/translations/pt.json +5 -3
- package/fesm2022/geonetwork-ui.mjs +550 -435
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
- package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +9 -5
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
- package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
- package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
- package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/map/src/index.d.ts +1 -0
- package/libs/feature/map/src/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
- package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +13 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
- package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
- package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/index.d.ts +3 -0
- package/libs/feature/search/src/index.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -3
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/feature-search.module.d.ts +0 -4
- package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
- package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
- package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
- package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
- package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
- package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
- package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.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/editable-label/editable-label.directive.d.ts +13 -0
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/ui/layout/src/index.d.ts +2 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
- package/libs/ui/search/src/index.d.ts +0 -1
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/i18n/src/index.d.ts +0 -1
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +43 -0
- package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
- package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
- package/src/libs/common/domain/src/lib/index.ts +2 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +11 -7
- package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
- package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
- package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
- package/src/libs/feature/map/src/index.ts +1 -0
- package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +8 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
- package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
- package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
- package/src/libs/feature/search/src/index.ts +3 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -1
- package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
- package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
- package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
- package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
- package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
- package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +3 -2
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +3 -3
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +1 -1
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -0
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
- package/src/libs/ui/layout/src/index.ts +2 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
- package/src/libs/ui/search/src/index.ts +0 -1
- package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
- package/src/libs/util/i18n/src/index.ts +0 -1
- package/translations/de.json +5 -3
- package/translations/en.json +6 -4
- package/translations/es.json +5 -3
- package/translations/fr.json +6 -4
- package/translations/it.json +5 -3
- package/translations/nl.json +5 -3
- package/translations/pt.json +5 -3
- package/translations/sk.json +5 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
- package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
- package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
- package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
- package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
- package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
- package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
- package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
- package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
- package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
- package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
- package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
- package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
- package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
- package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
- package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
- package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
- package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
- package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
- package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
- package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
- package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
- /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
- /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
2
|
import format from 'date-fns/format';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ElementRef, ViewChildren } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ContentChildren, ElementRef, ViewChildren } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
8
|
-
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService
|
|
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
11
|
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, switchMap as switchMap$1, catchError, take, withLatestFrom, delay, debounceTime, throttleTime, distinctUntilChanged, finalize, first, share, pairwise, mergeMap } 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, Subject, merge, throwError, BehaviorSubject,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject, firstValueFrom, fromEvent, timer, from, Subscription, animationFrameScheduler, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule } from '@ngrx/store';
|
|
@@ -32,8 +32,8 @@ import WMTS, { optionsFromCapabilities } from 'ol/source/WMTS';
|
|
|
32
32
|
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
33
33
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
34
34
|
import WMTSCapabilities from 'ol/format/WMTSCapabilities';
|
|
35
|
-
import { WmsEndpoint, WfsEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
36
35
|
import chroma from 'chroma-js';
|
|
36
|
+
import { WmsEndpoint, WfsEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
37
37
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
38
38
|
import proj4 from 'proj4/dist/proj4';
|
|
39
39
|
import * as TOML from '@ltd/j-toml';
|
|
@@ -78,6 +78,8 @@ import * as i1$8 from '@ngrx/effects';
|
|
|
78
78
|
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
79
79
|
import tippy from 'tippy.js';
|
|
80
80
|
import { valid as valid$1 } from 'geojson-validation';
|
|
81
|
+
import { Polygon } from 'ol/geom';
|
|
82
|
+
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
81
83
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
82
84
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
83
85
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
@@ -1414,6 +1416,7 @@ const selectTranslatedValue = (source, lang3) => selectFallback(selectField(sour
|
|
|
1414
1416
|
const selectTranslatedField = (source, fieldName, lang3) => selectTranslatedValue(selectField(source, fieldName), lang3);
|
|
1415
1417
|
const toDate = (field) => new Date(field);
|
|
1416
1418
|
const getFirstValue = (field) => Array.isArray(field) ? field[0] : field;
|
|
1419
|
+
const getArrayItem = (field, index) => Array.isArray(field) && field[index] !== undefined ? field[index] : null;
|
|
1417
1420
|
const getAsArray = (field) => Array.isArray(field) ? field : field !== null ? [field] : [];
|
|
1418
1421
|
const getAsUrl = (field, location = window.location.toString()) => {
|
|
1419
1422
|
// an empty string is not a valid url, even though it could be considered an empty path to the root
|
|
@@ -16540,133 +16543,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
16540
16543
|
}]
|
|
16541
16544
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
16542
16545
|
|
|
16543
|
-
// IMPORTANT:
|
|
16544
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/test-translate-loader.service.ts
|
|
16545
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16546
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16547
|
-
class TestTranslateLoader extends TranslateLoader {
|
|
16548
|
-
constructor(_translations = {}) {
|
|
16549
|
-
super();
|
|
16550
|
-
this._translations = _translations;
|
|
16551
|
-
}
|
|
16552
|
-
/**
|
|
16553
|
-
* Returns an {Observable} of translations for the specified language. If the
|
|
16554
|
-
* language is not recognized, an empty translations object will be returned.
|
|
16555
|
-
*
|
|
16556
|
-
* @param language the language for which the translations should be retrieved.
|
|
16557
|
-
* @returns the translations for the specified
|
|
16558
|
-
* language or an empty set of translations if the language is not recognized.
|
|
16559
|
-
*/
|
|
16560
|
-
getTranslation(language) {
|
|
16561
|
-
return of(this._translations[language] || {});
|
|
16562
|
-
}
|
|
16563
|
-
}
|
|
16564
|
-
|
|
16565
|
-
// IMPORTANT:
|
|
16566
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/testing.module.ts
|
|
16567
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16568
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16569
|
-
/**
|
|
16570
|
-
* The TranslateTestingModule provides the {TranslateModule} as well as a
|
|
16571
|
-
* {TranslateService} configured to return translations specific for the
|
|
16572
|
-
* test environment.
|
|
16573
|
-
*
|
|
16574
|
-
* @export
|
|
16575
|
-
*/
|
|
16576
|
-
class TranslateTestingModule {
|
|
16577
|
-
constructor() {
|
|
16578
|
-
this._translations = {};
|
|
16579
|
-
}
|
|
16580
|
-
static withTranslations(languageOrTranslations, translations) {
|
|
16581
|
-
const translateTestingModule = new TranslateTestingModule();
|
|
16582
|
-
if (typeof languageOrTranslations === 'string') {
|
|
16583
|
-
return translateTestingModule.withTranslations(languageOrTranslations, translations);
|
|
16584
|
-
}
|
|
16585
|
-
return translateTestingModule.withTranslations(languageOrTranslations);
|
|
16586
|
-
}
|
|
16587
|
-
get ngModule() {
|
|
16588
|
-
return TranslateTestingModule;
|
|
16589
|
-
}
|
|
16590
|
-
get providers() {
|
|
16591
|
-
const translateService = new TranslateService(null, new TestTranslateLoader(this._translations), this._compiler || new TranslateFakeCompiler(), new TranslateDefaultParser(), new FakeMissingTranslationHandler(), true, true, false, this._defaultLanguage);
|
|
16592
|
-
return [
|
|
16593
|
-
{
|
|
16594
|
-
provide: TranslateService,
|
|
16595
|
-
useValue: translateService,
|
|
16596
|
-
},
|
|
16597
|
-
];
|
|
16598
|
-
}
|
|
16599
|
-
withTranslations(languageOrTranslations, translations) {
|
|
16600
|
-
if (typeof languageOrTranslations === 'string' && translations) {
|
|
16601
|
-
this.addTranslations(languageOrTranslations, translations);
|
|
16602
|
-
this._defaultLanguage = languageOrTranslations;
|
|
16603
|
-
}
|
|
16604
|
-
else if (languageOrTranslations) {
|
|
16605
|
-
Object.keys(languageOrTranslations).forEach((language) => this.addTranslations(language, languageOrTranslations[language]));
|
|
16606
|
-
}
|
|
16607
|
-
return this;
|
|
16608
|
-
}
|
|
16609
|
-
/**
|
|
16610
|
-
* Updates the {TranslationTestingModule} to provide a {TranslateService} that will
|
|
16611
|
-
* use the provided {TranslateCompiler} to translate the test translations.
|
|
16612
|
-
*
|
|
16613
|
-
* @example
|
|
16614
|
-
*
|
|
16615
|
-
* TranslateTestingModule.withTranslations('en', {people: '{gender, select, male{He is} female{She is} other{They are}} {how})'})
|
|
16616
|
-
* .withCompiler(new TranslateMessageFormatCompiler());
|
|
16617
|
-
*
|
|
16618
|
-
* @param compiler the compiler to use to compile the test translations.
|
|
16619
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16620
|
-
* @memberof TranslateTestingModule
|
|
16621
|
-
*/
|
|
16622
|
-
withCompiler(compiler) {
|
|
16623
|
-
this._compiler = compiler;
|
|
16624
|
-
return this;
|
|
16625
|
-
}
|
|
16626
|
-
/**
|
|
16627
|
-
* Updates the {TranslateTestingModule} to use the provided language as the default language.
|
|
16628
|
-
* By default, the default language will be set to the first language provided.
|
|
16629
|
-
*
|
|
16630
|
-
* @example
|
|
16631
|
-
*
|
|
16632
|
-
* TranslateTestingModule.withTranslations('es', SPANISH_TRANSLATIONS)
|
|
16633
|
-
* .withTranslations('en', ENGLISH_TRANSLATIONS)
|
|
16634
|
-
* .withDefaultLanguage('en');
|
|
16635
|
-
*
|
|
16636
|
-
* @param language the new default language for translations.
|
|
16637
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16638
|
-
* @memberof TranslateTestingModule
|
|
16639
|
-
*/
|
|
16640
|
-
withDefaultLanguage(language) {
|
|
16641
|
-
this._defaultLanguage = language || this._defaultLanguage;
|
|
16642
|
-
return this;
|
|
16643
|
-
}
|
|
16644
|
-
addTranslations(language, translations) {
|
|
16645
|
-
if (!this._defaultLanguage) {
|
|
16646
|
-
this._defaultLanguage = language;
|
|
16647
|
-
}
|
|
16648
|
-
if (this._translations[language]) {
|
|
16649
|
-
this._translations[language] = {
|
|
16650
|
-
...this._translations[language],
|
|
16651
|
-
...translations,
|
|
16652
|
-
};
|
|
16653
|
-
}
|
|
16654
|
-
else {
|
|
16655
|
-
this._translations[language] = translations;
|
|
16656
|
-
}
|
|
16657
|
-
}
|
|
16658
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16659
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule], exports: [TranslateModule] }); }
|
|
16660
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule, TranslateModule] }); }
|
|
16661
|
-
}
|
|
16662
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, decorators: [{
|
|
16663
|
-
type: NgModule,
|
|
16664
|
-
args: [{
|
|
16665
|
-
imports: [TranslateModule],
|
|
16666
|
-
exports: [TranslateModule],
|
|
16667
|
-
}]
|
|
16668
|
-
}] });
|
|
16669
|
-
|
|
16670
16546
|
var dropFile$6 = "Datei ablegen";
|
|
16671
16547
|
var next$6 = "weiter";
|
|
16672
16548
|
var previous$6 = "zurück";
|
|
@@ -16689,20 +16565,21 @@ var de = {
|
|
|
16689
16565
|
"chart.type.line": "Liniendiagramm",
|
|
16690
16566
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16691
16567
|
"chart.type.pie": "Kreisdiagramm",
|
|
16568
|
+
"dashboard.createRecord": "",
|
|
16692
16569
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16693
16570
|
"dashboard.records.all": "Katalog",
|
|
16694
16571
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
16695
16572
|
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
16696
16573
|
"dashboard.records.myOrg": "Meine Organisation",
|
|
16697
16574
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
16698
|
-
"dashboard.records.noRecord": "Kein Datensatz für diese Organisation",
|
|
16699
|
-
"dashboard.records.noUser": "Keine Benutzer für diese Organisation",
|
|
16700
16575
|
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
16701
16576
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
16702
16577
|
"dashboard.records.userDetail": "Name",
|
|
16703
16578
|
"dashboard.records.userEmail": "E-Mail",
|
|
16704
16579
|
"dashboard.records.username": "Benutzername",
|
|
16705
16580
|
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16581
|
+
"dashboard.results.listMetadata": "",
|
|
16582
|
+
"dashboard.results.listResources": "",
|
|
16706
16583
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16707
16584
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16708
16585
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16850,6 +16727,7 @@ var de = {
|
|
|
16850
16727
|
"map.add.layer.wfs": "Aus WFS",
|
|
16851
16728
|
"map.add.layer.wms": "Aus WMS",
|
|
16852
16729
|
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16730
|
+
"map.geocoding.placeholder": "",
|
|
16853
16731
|
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16854
16732
|
"map.layer.add": "Hinzufügen",
|
|
16855
16733
|
"map.layers.available": "Verfügbare Layer",
|
|
@@ -16893,7 +16771,6 @@ var de = {
|
|
|
16893
16771
|
"record.metadata.author": "Autor",
|
|
16894
16772
|
"record.metadata.catalog": "Katalog",
|
|
16895
16773
|
"record.metadata.contact": "Kontakt",
|
|
16896
|
-
"record.metadata.createdOn": "Erstellt am",
|
|
16897
16774
|
"record.metadata.details": "Technische Informationen",
|
|
16898
16775
|
"record.metadata.download": "Downloads",
|
|
16899
16776
|
"record.metadata.formats": "Formate",
|
|
@@ -16926,6 +16803,7 @@ var de = {
|
|
|
16926
16803
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16927
16804
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16928
16805
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16806
|
+
"record.metadata.status": "",
|
|
16929
16807
|
"record.metadata.themes": "Kategorien",
|
|
16930
16808
|
"record.metadata.title": "Titel",
|
|
16931
16809
|
"record.metadata.type": "Geographischer Datensatz",
|
|
@@ -17027,20 +16905,21 @@ var en = {
|
|
|
17027
16905
|
"chart.type.line": "line chart",
|
|
17028
16906
|
"chart.type.lineSmooth": "smooth line chart",
|
|
17029
16907
|
"chart.type.pie": "pie chart",
|
|
16908
|
+
"dashboard.createRecord": "New record",
|
|
17030
16909
|
"dashboard.labels.mySpace": "My space",
|
|
17031
|
-
"dashboard.records.all": "
|
|
16910
|
+
"dashboard.records.all": "Metadata records",
|
|
17032
16911
|
"dashboard.records.myDraft": "My drafts",
|
|
17033
16912
|
"dashboard.records.myLibrary": "My library",
|
|
17034
16913
|
"dashboard.records.myOrg": "Organization",
|
|
17035
16914
|
"dashboard.records.myRecords": "My Records",
|
|
17036
|
-
"dashboard.records.noRecord": "No record for this organization",
|
|
17037
|
-
"dashboard.records.noUser": "No users for this organization",
|
|
17038
16915
|
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
17039
16916
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
17040
16917
|
"dashboard.records.userDetail": "Name",
|
|
17041
16918
|
"dashboard.records.userEmail": "Email",
|
|
17042
16919
|
"dashboard.records.username": "Username",
|
|
17043
16920
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
16921
|
+
"dashboard.results.listMetadata": "Show metadata",
|
|
16922
|
+
"dashboard.results.listResources": "Show resources",
|
|
17044
16923
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
17045
16924
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
17046
16925
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
@@ -17188,6 +17067,7 @@ var en = {
|
|
|
17188
17067
|
"map.add.layer.wfs": "From WFS",
|
|
17189
17068
|
"map.add.layer.wms": "From WMS",
|
|
17190
17069
|
"map.addFromFile.placeholder": "Click or drop a file here",
|
|
17070
|
+
"map.geocoding.placeholder": "Search for a place",
|
|
17191
17071
|
"map.help.addFromFile": "Click or drag and drop a file to add to the map (currently supports GeoJSON format only).",
|
|
17192
17072
|
"map.layer.add": "Add",
|
|
17193
17073
|
"map.layers.available": "Available Layers",
|
|
@@ -17231,7 +17111,6 @@ var en = {
|
|
|
17231
17111
|
"record.metadata.author": "Author",
|
|
17232
17112
|
"record.metadata.catalog": "Catalog",
|
|
17233
17113
|
"record.metadata.contact": "Contact",
|
|
17234
|
-
"record.metadata.createdOn": "Created on",
|
|
17235
17114
|
"record.metadata.details": "Technical information",
|
|
17236
17115
|
"record.metadata.download": "Downloads",
|
|
17237
17116
|
"record.metadata.formats": "Formats",
|
|
@@ -17264,6 +17143,7 @@ var en = {
|
|
|
17264
17143
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17265
17144
|
"record.metadata.related": "Related records",
|
|
17266
17145
|
"record.metadata.sheet": "Original metadata",
|
|
17146
|
+
"record.metadata.status": "Status",
|
|
17267
17147
|
"record.metadata.themes": "Categories",
|
|
17268
17148
|
"record.metadata.title": "Title",
|
|
17269
17149
|
"record.metadata.type": "Geographical dataset",
|
|
@@ -17365,20 +17245,21 @@ var es = {
|
|
|
17365
17245
|
"chart.type.line": "gráfico de líneas",
|
|
17366
17246
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
17367
17247
|
"chart.type.pie": "gráfico circular",
|
|
17248
|
+
"dashboard.createRecord": "",
|
|
17368
17249
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
17369
17250
|
"dashboard.records.all": "Catálogo",
|
|
17370
17251
|
"dashboard.records.myDraft": "Mis borradores",
|
|
17371
17252
|
"dashboard.records.myLibrary": "Mi biblioteca",
|
|
17372
17253
|
"dashboard.records.myOrg": "Organización",
|
|
17373
17254
|
"dashboard.records.myRecords": "Mis Registros",
|
|
17374
|
-
"dashboard.records.noRecord": "",
|
|
17375
|
-
"dashboard.records.noUser": "",
|
|
17376
17255
|
"dashboard.records.publishedRecords": "",
|
|
17377
17256
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
17378
17257
|
"dashboard.records.userDetail": "",
|
|
17379
17258
|
"dashboard.records.userEmail": "",
|
|
17380
17259
|
"dashboard.records.username": "",
|
|
17381
17260
|
"dashboard.records.users": "",
|
|
17261
|
+
"dashboard.results.listMetadata": "",
|
|
17262
|
+
"dashboard.results.listResources": "",
|
|
17382
17263
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
17383
17264
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
17384
17265
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -17526,6 +17407,7 @@ var es = {
|
|
|
17526
17407
|
"map.add.layer.wfs": "",
|
|
17527
17408
|
"map.add.layer.wms": "",
|
|
17528
17409
|
"map.addFromFile.placeholder": "",
|
|
17410
|
+
"map.geocoding.placeholder": "",
|
|
17529
17411
|
"map.help.addFromFile": "",
|
|
17530
17412
|
"map.layer.add": "",
|
|
17531
17413
|
"map.layers.available": "",
|
|
@@ -17569,7 +17451,6 @@ var es = {
|
|
|
17569
17451
|
"record.metadata.author": "",
|
|
17570
17452
|
"record.metadata.catalog": "",
|
|
17571
17453
|
"record.metadata.contact": "",
|
|
17572
|
-
"record.metadata.createdOn": "",
|
|
17573
17454
|
"record.metadata.details": "",
|
|
17574
17455
|
"record.metadata.download": "",
|
|
17575
17456
|
"record.metadata.formats": "",
|
|
@@ -17602,6 +17483,7 @@ var es = {
|
|
|
17602
17483
|
"record.metadata.quality.updateFrequency.success": "",
|
|
17603
17484
|
"record.metadata.related": "",
|
|
17604
17485
|
"record.metadata.sheet": "",
|
|
17486
|
+
"record.metadata.status": "",
|
|
17605
17487
|
"record.metadata.themes": "",
|
|
17606
17488
|
"record.metadata.title": "",
|
|
17607
17489
|
"record.metadata.type": "",
|
|
@@ -17703,20 +17585,21 @@ var fr = {
|
|
|
17703
17585
|
"chart.type.line": "ligne",
|
|
17704
17586
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17705
17587
|
"chart.type.pie": "camembert",
|
|
17588
|
+
"dashboard.createRecord": "",
|
|
17706
17589
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17707
17590
|
"dashboard.records.all": "Catalogue",
|
|
17708
17591
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
17709
17592
|
"dashboard.records.myLibrary": "Ma bibliothèque",
|
|
17710
17593
|
"dashboard.records.myOrg": "Mon organisation",
|
|
17711
17594
|
"dashboard.records.myRecords": "Mes fiches publiées",
|
|
17712
|
-
"dashboard.records.noRecord": "Aucun jeu de données pour cette organisation",
|
|
17713
|
-
"dashboard.records.noUser": "Aucun utilisateur pour cette organisation",
|
|
17714
17595
|
"dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
|
|
17715
17596
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
17716
17597
|
"dashboard.records.userDetail": "Nom",
|
|
17717
17598
|
"dashboard.records.userEmail": "Email",
|
|
17718
17599
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17719
17600
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17601
|
+
"dashboard.results.listMetadata": "",
|
|
17602
|
+
"dashboard.results.listResources": "",
|
|
17720
17603
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17721
17604
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17722
17605
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17798,7 +17681,7 @@ var fr = {
|
|
|
17798
17681
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
17799
17682
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
17800
17683
|
"datahub.news.contact.contactus": "Contactez-nous",
|
|
17801
|
-
"datahub.news.contact.html": "<p>Vous avez besoin de données qui ne sont pas présentes sur la plateforme actuellement ? </p><p> Nos équipes sont
|
|
17684
|
+
"datahub.news.contact.html": "<p>Vous avez besoin de données qui ne sont pas présentes sur la plateforme actuellement ? </p><p> Nos équipes sont là pour vous répondre.</p>",
|
|
17802
17685
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
17803
17686
|
"datahub.news.feed": "Fil d'activité",
|
|
17804
17687
|
"datahub.news.figures": "Quelques chiffres",
|
|
@@ -17864,6 +17747,7 @@ var fr = {
|
|
|
17864
17747
|
"map.add.layer.wfs": "",
|
|
17865
17748
|
"map.add.layer.wms": "",
|
|
17866
17749
|
"map.addFromFile.placeholder": "",
|
|
17750
|
+
"map.geocoding.placeholder": "",
|
|
17867
17751
|
"map.help.addFromFile": "",
|
|
17868
17752
|
"map.layer.add": "",
|
|
17869
17753
|
"map.layers.available": "",
|
|
@@ -17907,7 +17791,6 @@ var fr = {
|
|
|
17907
17791
|
"record.metadata.author": "Auteur",
|
|
17908
17792
|
"record.metadata.catalog": "Catalogue",
|
|
17909
17793
|
"record.metadata.contact": "Contact",
|
|
17910
|
-
"record.metadata.createdOn": "Créé le",
|
|
17911
17794
|
"record.metadata.details": "Informations techniques",
|
|
17912
17795
|
"record.metadata.download": "Téléchargements",
|
|
17913
17796
|
"record.metadata.formats": "Formats",
|
|
@@ -17940,6 +17823,7 @@ var fr = {
|
|
|
17940
17823
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17941
17824
|
"record.metadata.related": "Voir aussi",
|
|
17942
17825
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17826
|
+
"record.metadata.status": "",
|
|
17943
17827
|
"record.metadata.themes": "Catégories",
|
|
17944
17828
|
"record.metadata.title": "Titre",
|
|
17945
17829
|
"record.metadata.type": "Donnée géographique",
|
|
@@ -18041,20 +17925,21 @@ var it = {
|
|
|
18041
17925
|
"chart.type.line": "grafico a linee",
|
|
18042
17926
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
18043
17927
|
"chart.type.pie": "grafico a torta",
|
|
17928
|
+
"dashboard.createRecord": "",
|
|
18044
17929
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
18045
17930
|
"dashboard.records.all": "Catalogo",
|
|
18046
17931
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
18047
17932
|
"dashboard.records.myLibrary": "La mia biblioteca",
|
|
18048
17933
|
"dashboard.records.myOrg": "La mia organizzazione",
|
|
18049
17934
|
"dashboard.records.myRecords": "I miei dati",
|
|
18050
|
-
"dashboard.records.noRecord": "Nessun dati per questa organizzazione",
|
|
18051
|
-
"dashboard.records.noUser": "Nessun utente per questa organizzazione",
|
|
18052
17935
|
"dashboard.records.publishedRecords": "dati pubblicati",
|
|
18053
17936
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
18054
17937
|
"dashboard.records.userDetail": "Nome",
|
|
18055
17938
|
"dashboard.records.userEmail": "Email",
|
|
18056
17939
|
"dashboard.records.username": "Nome utente",
|
|
18057
17940
|
"dashboard.records.users": "utenti",
|
|
17941
|
+
"dashboard.results.listMetadata": "",
|
|
17942
|
+
"dashboard.results.listResources": "",
|
|
18058
17943
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
18059
17944
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
18060
17945
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18202,6 +18087,7 @@ var it = {
|
|
|
18202
18087
|
"map.add.layer.wfs": "Da un WFS",
|
|
18203
18088
|
"map.add.layer.wms": "Da un WMS",
|
|
18204
18089
|
"map.addFromFile.placeholder": "",
|
|
18090
|
+
"map.geocoding.placeholder": "",
|
|
18205
18091
|
"map.help.addFromFile": "",
|
|
18206
18092
|
"map.layer.add": "",
|
|
18207
18093
|
"map.layers.available": "",
|
|
@@ -18245,7 +18131,6 @@ var it = {
|
|
|
18245
18131
|
"record.metadata.author": "Autore",
|
|
18246
18132
|
"record.metadata.catalog": "Catalogo",
|
|
18247
18133
|
"record.metadata.contact": "Contatto",
|
|
18248
|
-
"record.metadata.createdOn": "Creato il",
|
|
18249
18134
|
"record.metadata.details": "Informazioni tecniche",
|
|
18250
18135
|
"record.metadata.download": "Download",
|
|
18251
18136
|
"record.metadata.formats": "Formati",
|
|
@@ -18278,6 +18163,7 @@ var it = {
|
|
|
18278
18163
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18279
18164
|
"record.metadata.related": "Vedi anche",
|
|
18280
18165
|
"record.metadata.sheet": "Origine del metadata",
|
|
18166
|
+
"record.metadata.status": "",
|
|
18281
18167
|
"record.metadata.themes": "Categorie",
|
|
18282
18168
|
"record.metadata.title": "Titolo",
|
|
18283
18169
|
"record.metadata.type": "Dati geografici",
|
|
@@ -18379,20 +18265,21 @@ var nl = {
|
|
|
18379
18265
|
"chart.type.line": "lijndiagram",
|
|
18380
18266
|
"chart.type.lineSmooth": "glad lijndiagram",
|
|
18381
18267
|
"chart.type.pie": "cirkeldiagram",
|
|
18268
|
+
"dashboard.createRecord": "",
|
|
18382
18269
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
18383
18270
|
"dashboard.records.all": "Catalogus",
|
|
18384
18271
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
18385
18272
|
"dashboard.records.myLibrary": "Mijn bibliotheek",
|
|
18386
18273
|
"dashboard.records.myOrg": "Organisatie",
|
|
18387
18274
|
"dashboard.records.myRecords": "Mijn Records",
|
|
18388
|
-
"dashboard.records.noRecord": "",
|
|
18389
|
-
"dashboard.records.noUser": "",
|
|
18390
18275
|
"dashboard.records.publishedRecords": "",
|
|
18391
18276
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
18392
18277
|
"dashboard.records.userDetail": "",
|
|
18393
18278
|
"dashboard.records.userEmail": "",
|
|
18394
18279
|
"dashboard.records.username": "",
|
|
18395
18280
|
"dashboard.records.users": "",
|
|
18281
|
+
"dashboard.results.listMetadata": "",
|
|
18282
|
+
"dashboard.results.listResources": "",
|
|
18396
18283
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18397
18284
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18398
18285
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18540,6 +18427,7 @@ var nl = {
|
|
|
18540
18427
|
"map.add.layer.wfs": "",
|
|
18541
18428
|
"map.add.layer.wms": "",
|
|
18542
18429
|
"map.addFromFile.placeholder": "",
|
|
18430
|
+
"map.geocoding.placeholder": "",
|
|
18543
18431
|
"map.help.addFromFile": "",
|
|
18544
18432
|
"map.layer.add": "",
|
|
18545
18433
|
"map.layers.available": "",
|
|
@@ -18583,7 +18471,6 @@ var nl = {
|
|
|
18583
18471
|
"record.metadata.author": "",
|
|
18584
18472
|
"record.metadata.catalog": "",
|
|
18585
18473
|
"record.metadata.contact": "",
|
|
18586
|
-
"record.metadata.createdOn": "",
|
|
18587
18474
|
"record.metadata.details": "",
|
|
18588
18475
|
"record.metadata.download": "",
|
|
18589
18476
|
"record.metadata.formats": "",
|
|
@@ -18616,6 +18503,7 @@ var nl = {
|
|
|
18616
18503
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18617
18504
|
"record.metadata.related": "",
|
|
18618
18505
|
"record.metadata.sheet": "",
|
|
18506
|
+
"record.metadata.status": "",
|
|
18619
18507
|
"record.metadata.themes": "",
|
|
18620
18508
|
"record.metadata.title": "",
|
|
18621
18509
|
"record.metadata.type": "",
|
|
@@ -18717,20 +18605,21 @@ var pt = {
|
|
|
18717
18605
|
"chart.type.line": "gráfico de linha",
|
|
18718
18606
|
"chart.type.lineSmooth": "gráfico de linha suave",
|
|
18719
18607
|
"chart.type.pie": "gráfico de pizza",
|
|
18608
|
+
"dashboard.createRecord": "",
|
|
18720
18609
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
18721
18610
|
"dashboard.records.all": "Catálogo",
|
|
18722
18611
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
18723
18612
|
"dashboard.records.myLibrary": "Minha biblioteca",
|
|
18724
18613
|
"dashboard.records.myOrg": "Organização",
|
|
18725
18614
|
"dashboard.records.myRecords": "Meus Registros",
|
|
18726
|
-
"dashboard.records.noRecord": "",
|
|
18727
|
-
"dashboard.records.noUser": "",
|
|
18728
18615
|
"dashboard.records.publishedRecords": "",
|
|
18729
18616
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
18730
18617
|
"dashboard.records.userDetail": "",
|
|
18731
18618
|
"dashboard.records.userEmail": "",
|
|
18732
18619
|
"dashboard.records.username": "",
|
|
18733
18620
|
"dashboard.records.users": "",
|
|
18621
|
+
"dashboard.results.listMetadata": "",
|
|
18622
|
+
"dashboard.results.listResources": "",
|
|
18734
18623
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18735
18624
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18736
18625
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18878,6 +18767,7 @@ var pt = {
|
|
|
18878
18767
|
"map.add.layer.wfs": "",
|
|
18879
18768
|
"map.add.layer.wms": "",
|
|
18880
18769
|
"map.addFromFile.placeholder": "",
|
|
18770
|
+
"map.geocoding.placeholder": "",
|
|
18881
18771
|
"map.help.addFromFile": "",
|
|
18882
18772
|
"map.layer.add": "",
|
|
18883
18773
|
"map.layers.available": "",
|
|
@@ -18921,7 +18811,6 @@ var pt = {
|
|
|
18921
18811
|
"record.metadata.author": "",
|
|
18922
18812
|
"record.metadata.catalog": "",
|
|
18923
18813
|
"record.metadata.contact": "",
|
|
18924
|
-
"record.metadata.createdOn": "",
|
|
18925
18814
|
"record.metadata.details": "",
|
|
18926
18815
|
"record.metadata.download": "",
|
|
18927
18816
|
"record.metadata.formats": "",
|
|
@@ -18954,6 +18843,7 @@ var pt = {
|
|
|
18954
18843
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18955
18844
|
"record.metadata.related": "",
|
|
18956
18845
|
"record.metadata.sheet": "",
|
|
18846
|
+
"record.metadata.status": "",
|
|
18957
18847
|
"record.metadata.themes": "",
|
|
18958
18848
|
"record.metadata.title": "",
|
|
18959
18849
|
"record.metadata.type": "",
|
|
@@ -19205,6 +19095,40 @@ class Gn4FieldMapper {
|
|
|
19205
19095
|
kind,
|
|
19206
19096
|
};
|
|
19207
19097
|
},
|
|
19098
|
+
geom: (output, source) => {
|
|
19099
|
+
const geoms = getAsArray(selectField(source, 'geom'));
|
|
19100
|
+
const shapes = getAsArray(selectField(source, 'shape'));
|
|
19101
|
+
const extentDescriptions = getAsArray(selectField(source, 'extentDescriptionObject'));
|
|
19102
|
+
const spatialExtents = getAsArray(selectField(source, 'spatialExtents'));
|
|
19103
|
+
return {
|
|
19104
|
+
...output,
|
|
19105
|
+
spatialExtents: [
|
|
19106
|
+
...spatialExtents,
|
|
19107
|
+
...geoms.map((geom, index) => {
|
|
19108
|
+
const description = selectTranslatedValue(getArrayItem(extentDescriptions, index), this.lang3);
|
|
19109
|
+
const geometry = shapes[index] ?? geom;
|
|
19110
|
+
return {
|
|
19111
|
+
...(description !== null ? { description } : null),
|
|
19112
|
+
geometry,
|
|
19113
|
+
};
|
|
19114
|
+
}),
|
|
19115
|
+
],
|
|
19116
|
+
};
|
|
19117
|
+
},
|
|
19118
|
+
resourceTemporalDateRange: (output, source) => {
|
|
19119
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalDateRange'));
|
|
19120
|
+
return {
|
|
19121
|
+
...output,
|
|
19122
|
+
temporalExtents: ranges.map((range) => {
|
|
19123
|
+
const start = selectField(range, 'gte');
|
|
19124
|
+
const end = selectField(range, 'lte');
|
|
19125
|
+
return {
|
|
19126
|
+
...(start !== null ? { start: toDate(start) } : null),
|
|
19127
|
+
...(end !== null ? { end: toDate(end) } : null),
|
|
19128
|
+
};
|
|
19129
|
+
}),
|
|
19130
|
+
};
|
|
19131
|
+
},
|
|
19208
19132
|
};
|
|
19209
19133
|
this.genericField = (output) => output;
|
|
19210
19134
|
this.constraintField = (fieldName, output, source) => ({
|
|
@@ -20393,36 +20317,23 @@ class SelectionService {
|
|
|
20393
20317
|
this.selectedRecordsIdentifiers$.next(filtered);
|
|
20394
20318
|
}
|
|
20395
20319
|
selectRecords(records) {
|
|
20396
|
-
const newIds =
|
|
20397
|
-
|
|
20398
|
-
newIds.push(record.uniqueIdentifier);
|
|
20399
|
-
});
|
|
20400
|
-
const apiResponse = this.selectionsApi.add(BUCKET_ID, newIds);
|
|
20401
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20320
|
+
const newIds = records.map((record) => record.uniqueIdentifier);
|
|
20321
|
+
this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
|
|
20402
20322
|
this.addIdsToSelected(newIds);
|
|
20403
|
-
})
|
|
20323
|
+
});
|
|
20404
20324
|
}
|
|
20405
20325
|
deselectRecords(records) {
|
|
20406
|
-
const idsToBeRemoved =
|
|
20407
|
-
|
|
20408
|
-
idsToBeRemoved.push(record.uniqueIdentifier);
|
|
20409
|
-
});
|
|
20410
|
-
const apiResponse = this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved);
|
|
20411
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20326
|
+
const idsToBeRemoved = records.map((record) => record.uniqueIdentifier);
|
|
20327
|
+
this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
|
|
20412
20328
|
this.removeIdsFromSelected(idsToBeRemoved);
|
|
20413
|
-
}), map$2(() => undefined));
|
|
20414
|
-
}
|
|
20415
|
-
clearSelection() {
|
|
20416
|
-
const currentSelectedResponse = this.selectionsApi.get(BUCKET_ID);
|
|
20417
|
-
let currentSelection;
|
|
20418
|
-
this.subscription = currentSelectedResponse.subscribe((value) => {
|
|
20419
|
-
currentSelection = [...value];
|
|
20420
20329
|
});
|
|
20421
|
-
|
|
20422
|
-
|
|
20423
|
-
|
|
20330
|
+
}
|
|
20331
|
+
async clearSelection() {
|
|
20332
|
+
const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID));
|
|
20333
|
+
const currentSelection = Array.from(response);
|
|
20334
|
+
this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
|
|
20424
20335
|
this.removeIdsFromSelected(currentSelection);
|
|
20425
|
-
})
|
|
20336
|
+
});
|
|
20426
20337
|
}
|
|
20427
20338
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, deps: [{ token: SelectionsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20428
20339
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, providedIn: 'root' }); }
|
|
@@ -20740,6 +20651,8 @@ const defaultMapOptions = {
|
|
|
20740
20651
|
};
|
|
20741
20652
|
const FEATURE_MAP_OPTIONS = new InjectionToken('mapOptions');
|
|
20742
20653
|
|
|
20654
|
+
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
20655
|
+
|
|
20743
20656
|
var MapContextLayerTypeEnum;
|
|
20744
20657
|
(function (MapContextLayerTypeEnum) {
|
|
20745
20658
|
MapContextLayerTypeEnum["XYZ"] = "xyz";
|
|
@@ -21334,72 +21247,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21334
21247
|
}]
|
|
21335
21248
|
}] });
|
|
21336
21249
|
|
|
21337
|
-
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
21338
|
-
|
|
21339
|
-
class MapUtilsWMSService {
|
|
21340
|
-
constructor(proxy) {
|
|
21341
|
-
this.proxy = proxy;
|
|
21342
|
-
}
|
|
21343
|
-
getCapabilities(layer) {
|
|
21344
|
-
return from(new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady());
|
|
21345
|
-
}
|
|
21346
|
-
getLayerFull(layer) {
|
|
21347
|
-
return this.getCapabilities(layer).pipe(map$1((endpoint) => endpoint.getLayerByName(layer.name)));
|
|
21348
|
-
}
|
|
21349
|
-
getLayerLonLatBBox(layer) {
|
|
21350
|
-
return this.getLayerFull(layer).pipe(switchMap$1((wmsLayerFull) => from(this.getLonLatBBox(wmsLayerFull))));
|
|
21351
|
-
}
|
|
21352
|
-
async getLonLatBBox(wmsLayerFull) {
|
|
21353
|
-
const { boundingBoxes } = wmsLayerFull;
|
|
21354
|
-
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21355
|
-
if (lonLatCRS) {
|
|
21356
|
-
return boundingBoxes[lonLatCRS];
|
|
21357
|
-
}
|
|
21358
|
-
else {
|
|
21359
|
-
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21360
|
-
register(proj4);
|
|
21361
|
-
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21362
|
-
proj4.defs(availableEPSGCode, proj);
|
|
21363
|
-
const bboxWithFiniteNumbers = [
|
|
21364
|
-
parseFloat(boundingBoxes[availableEPSGCode][0]),
|
|
21365
|
-
parseFloat(boundingBoxes[availableEPSGCode][1]),
|
|
21366
|
-
parseFloat(boundingBoxes[availableEPSGCode][2]),
|
|
21367
|
-
parseFloat(boundingBoxes[availableEPSGCode][3]),
|
|
21368
|
-
];
|
|
21369
|
-
const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21370
|
-
return extent;
|
|
21371
|
-
}
|
|
21372
|
-
}
|
|
21373
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21374
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, providedIn: 'root' }); }
|
|
21375
|
-
}
|
|
21376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, decorators: [{
|
|
21377
|
-
type: Injectable,
|
|
21378
|
-
args: [{
|
|
21379
|
-
providedIn: 'root',
|
|
21380
|
-
}]
|
|
21381
|
-
}], ctorParameters: function () { return [{ type: ProxyService }]; } });
|
|
21382
|
-
|
|
21383
21250
|
const FEATURE_PROJECTION = 'EPSG:3857';
|
|
21384
21251
|
const DATA_PROJECTION = 'EPSG:4326';
|
|
21252
|
+
const GEOJSON = new GeoJSON();
|
|
21385
21253
|
class MapUtilsService {
|
|
21386
|
-
constructor(http,
|
|
21254
|
+
constructor(http, proxy) {
|
|
21387
21255
|
this.http = http;
|
|
21388
|
-
this.
|
|
21256
|
+
this.proxy = proxy;
|
|
21389
21257
|
this.readFeatureCollection = (featureCollection, featureProjection = FEATURE_PROJECTION, dataProjection = DATA_PROJECTION) => {
|
|
21390
|
-
|
|
21258
|
+
return GEOJSON.readFeatures(featureCollection, {
|
|
21391
21259
|
featureProjection,
|
|
21392
21260
|
dataProjection,
|
|
21393
21261
|
});
|
|
21394
|
-
return olFeatures;
|
|
21395
21262
|
};
|
|
21396
21263
|
}
|
|
21397
21264
|
createEmptyMap() {
|
|
21398
|
-
|
|
21265
|
+
return new Map$1({
|
|
21399
21266
|
controls: [],
|
|
21400
21267
|
pixelRatio: 1,
|
|
21401
21268
|
});
|
|
21402
|
-
return map;
|
|
21403
21269
|
}
|
|
21404
21270
|
isWMSLayer(layer) {
|
|
21405
21271
|
return (layer.getSource() instanceof TileWMS ||
|
|
@@ -21414,8 +21280,7 @@ class MapUtilsService {
|
|
|
21414
21280
|
...source.getParams(),
|
|
21415
21281
|
INFO_FORMAT: 'application/json',
|
|
21416
21282
|
};
|
|
21417
|
-
|
|
21418
|
-
return url;
|
|
21283
|
+
return source.getFeatureInfoUrl(coordinate, resolution, projection, params);
|
|
21419
21284
|
}
|
|
21420
21285
|
getVectorFeaturesFromClick(olMap, event) {
|
|
21421
21286
|
const features = [];
|
|
@@ -21443,38 +21308,56 @@ class MapUtilsService {
|
|
|
21443
21308
|
/**
|
|
21444
21309
|
* Will emit `null` if no extent could be computed
|
|
21445
21310
|
*/
|
|
21446
|
-
getLayerExtent(layer) {
|
|
21447
|
-
let
|
|
21311
|
+
async getLayerExtent(layer) {
|
|
21312
|
+
let latLonExtent;
|
|
21448
21313
|
if (layer &&
|
|
21449
21314
|
layer.type === 'geojson' &&
|
|
21450
21315
|
'data' in layer &&
|
|
21451
21316
|
typeof layer.data === 'object' &&
|
|
21452
21317
|
layer.data.features[0] &&
|
|
21453
21318
|
layer.data.features[0].geometry) {
|
|
21454
|
-
|
|
21455
|
-
.readFeatures(
|
|
21319
|
+
latLonExtent = new GeoJSON()
|
|
21320
|
+
.readFeatures(layer.data)
|
|
21456
21321
|
.map((feature) => feature.getGeometry())
|
|
21457
21322
|
.filter((geom) => !!geom)
|
|
21458
|
-
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null)
|
|
21323
|
+
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null);
|
|
21459
21324
|
}
|
|
21460
21325
|
else if (layer && layer.type === 'wms') {
|
|
21461
|
-
|
|
21326
|
+
latLonExtent = await this.getWmsLayerExtent(layer);
|
|
21462
21327
|
}
|
|
21463
21328
|
else if (layer && layer.type === 'wmts') {
|
|
21464
21329
|
if (layer.extent) {
|
|
21465
|
-
|
|
21330
|
+
latLonExtent = layer.extent;
|
|
21466
21331
|
}
|
|
21467
21332
|
else {
|
|
21468
|
-
return
|
|
21333
|
+
return layer.options.tileGrid.getExtent();
|
|
21469
21334
|
}
|
|
21470
21335
|
}
|
|
21471
21336
|
else {
|
|
21472
|
-
return
|
|
21337
|
+
return null;
|
|
21338
|
+
}
|
|
21339
|
+
if (!latLonExtent || isEmpty(latLonExtent)) {
|
|
21340
|
+
return null;
|
|
21341
|
+
}
|
|
21342
|
+
return transformExtent(latLonExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21343
|
+
}
|
|
21344
|
+
async getWmsLayerExtent(layer) {
|
|
21345
|
+
const endpoint = await new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady();
|
|
21346
|
+
const { boundingBoxes } = endpoint.getLayerByName(layer.name);
|
|
21347
|
+
if (!Object.keys(boundingBoxes).length) {
|
|
21348
|
+
return null;
|
|
21349
|
+
}
|
|
21350
|
+
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21351
|
+
if (lonLatCRS) {
|
|
21352
|
+
return boundingBoxes[lonLatCRS].map(parseFloat);
|
|
21353
|
+
}
|
|
21354
|
+
else {
|
|
21355
|
+
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21356
|
+
register(proj4);
|
|
21357
|
+
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21358
|
+
const bboxWithFiniteNumbers = boundingBoxes[availableEPSGCode].map(parseFloat);
|
|
21359
|
+
return transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21473
21360
|
}
|
|
21474
|
-
return geographicExtent.pipe(map$1((extent) => [
|
|
21475
|
-
...fromLonLat([extent[0], extent[1]], 'EPSG:3857'),
|
|
21476
|
-
...fromLonLat([extent[2], extent[3]], 'EPSG:3857'),
|
|
21477
|
-
]), map$1((extent) => (isEmpty(extent) ? null : extent)));
|
|
21478
21361
|
}
|
|
21479
21362
|
getWmtsLayerFromCapabilities(link) {
|
|
21480
21363
|
const getCapabilitiesUrl = new URL(link.url, window.location.toString());
|
|
@@ -21530,7 +21413,18 @@ ${e.stack || e.message || e}`);
|
|
|
21530
21413
|
])
|
|
21531
21414
|
.getArray());
|
|
21532
21415
|
}
|
|
21533
|
-
|
|
21416
|
+
getRecordExtent(record) {
|
|
21417
|
+
if (!('spatialExtents' in record)) {
|
|
21418
|
+
return null;
|
|
21419
|
+
}
|
|
21420
|
+
// transform an array of geojson geometries into a bbox
|
|
21421
|
+
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
21422
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
21423
|
+
return extend(prev, geom.getExtent());
|
|
21424
|
+
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
21425
|
+
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21426
|
+
}
|
|
21427
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, deps: [{ token: i1.HttpClient }, { token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21534
21428
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
21535
21429
|
}
|
|
21536
21430
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, decorators: [{
|
|
@@ -21538,7 +21432,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21538
21432
|
args: [{
|
|
21539
21433
|
providedIn: 'root',
|
|
21540
21434
|
}]
|
|
21541
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type:
|
|
21435
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: ProxyService }]; } });
|
|
21542
21436
|
function dragPanCondition(event) {
|
|
21543
21437
|
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
21544
21438
|
if (!dragPanCondition) {
|
|
@@ -24493,6 +24387,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24493
24387
|
}]
|
|
24494
24388
|
}] });
|
|
24495
24389
|
|
|
24390
|
+
class InteractiveTableColumnComponent {
|
|
24391
|
+
constructor() {
|
|
24392
|
+
this.grow = false;
|
|
24393
|
+
this.sortable = false;
|
|
24394
|
+
this.activeSort = null;
|
|
24395
|
+
this.sortChange = new EventEmitter();
|
|
24396
|
+
}
|
|
24397
|
+
handleSortChange() {
|
|
24398
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
24399
|
+
this.sortChange.emit(this.activeSort);
|
|
24400
|
+
}
|
|
24401
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24402
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: InteractiveTableColumnComponent, isStandalone: true, selector: "gn-ui-interactive-table-column", inputs: { grow: "grow", sortable: "sortable", activeSort: "activeSort" }, outputs: { sortChange: "sortChange" }, queries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "cell", first: true, predicate: ["cell"], descendants: true }], ngImport: i0, template: "<span>empty</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24403
|
+
}
|
|
24404
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
24405
|
+
type: Component,
|
|
24406
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
24407
|
+
}], propDecorators: { header: [{
|
|
24408
|
+
type: ContentChild,
|
|
24409
|
+
args: ['header']
|
|
24410
|
+
}], cell: [{
|
|
24411
|
+
type: ContentChild,
|
|
24412
|
+
args: ['cell']
|
|
24413
|
+
}], grow: [{
|
|
24414
|
+
type: Input
|
|
24415
|
+
}], sortable: [{
|
|
24416
|
+
type: Input
|
|
24417
|
+
}], activeSort: [{
|
|
24418
|
+
type: Input
|
|
24419
|
+
}], sortChange: [{
|
|
24420
|
+
type: Output
|
|
24421
|
+
}] } });
|
|
24422
|
+
|
|
24423
|
+
class InteractiveTableComponent {
|
|
24424
|
+
constructor() {
|
|
24425
|
+
this.items = [];
|
|
24426
|
+
this.itemClick = new EventEmitter();
|
|
24427
|
+
}
|
|
24428
|
+
get gridStyle() {
|
|
24429
|
+
return {
|
|
24430
|
+
'grid-template-columns': this.columns
|
|
24431
|
+
.map((column) => column.grow ? `minmax(0px,1fr)` : `minmax(0px,max-content)`)
|
|
24432
|
+
.join(' '),
|
|
24433
|
+
};
|
|
24434
|
+
}
|
|
24435
|
+
handleRowClick(item) {
|
|
24436
|
+
this.itemClick.emit(item);
|
|
24437
|
+
}
|
|
24438
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24439
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24440
|
+
}
|
|
24441
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
24442
|
+
type: Component,
|
|
24443
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
24444
|
+
}], propDecorators: { columns: [{
|
|
24445
|
+
type: ContentChildren,
|
|
24446
|
+
args: [InteractiveTableColumnComponent]
|
|
24447
|
+
}], items: [{
|
|
24448
|
+
type: Input
|
|
24449
|
+
}], itemClick: [{
|
|
24450
|
+
type: Output
|
|
24451
|
+
}] } });
|
|
24452
|
+
|
|
24496
24453
|
class LinkCardComponent {
|
|
24497
24454
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24498
24455
|
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 h-40 grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden lg:w-80\"\n>\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\">open_in_new</mat-icon>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -24538,11 +24495,11 @@ class MetadataContactComponent {
|
|
|
24538
24495
|
this.organizationClick.emit(this.shownOrganization);
|
|
24539
24496
|
}
|
|
24540
24497
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24541
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6
|
|
24498
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24542
24499
|
}
|
|
24543
24500
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24544
24501
|
type: Component,
|
|
24545
|
-
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6
|
|
24502
|
+
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
24546
24503
|
}], propDecorators: { metadata: [{
|
|
24547
24504
|
type: Input
|
|
24548
24505
|
}], organizationClick: [{
|
|
@@ -24946,11 +24903,11 @@ class DropdownMultiselectComponent {
|
|
|
24946
24903
|
this.setFocus();
|
|
24947
24904
|
}
|
|
24948
24905
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$6.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24949
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\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\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\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.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 #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice,
|
|
24906
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\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\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\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.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 #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\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: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.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$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24950
24907
|
}
|
|
24951
24908
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24952
24909
|
type: Component,
|
|
24953
|
-
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\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\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\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.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 #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice,
|
|
24910
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\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\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\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.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 #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24954
24911
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24955
24912
|
type: Input
|
|
24956
24913
|
}], choices: [{
|
|
@@ -25209,11 +25166,11 @@ class AutocompleteComponent {
|
|
|
25209
25166
|
}
|
|
25210
25167
|
}
|
|
25211
25168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25212
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(
|
|
25169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25213
25170
|
}
|
|
25214
25171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25215
25172
|
type: Component,
|
|
25216
|
-
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(
|
|
25173
|
+
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
25217
25174
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
25218
25175
|
type: Input
|
|
25219
25176
|
}], action: [{
|
|
@@ -25589,11 +25546,11 @@ class CheckboxComponent {
|
|
|
25589
25546
|
this.changed.emit(this.checked);
|
|
25590
25547
|
}
|
|
25591
25548
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25592
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25549
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25593
25550
|
}
|
|
25594
25551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
25595
25552
|
type: Component,
|
|
25596
|
-
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25553
|
+
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"] }]
|
|
25597
25554
|
}], propDecorators: { type: [{
|
|
25598
25555
|
type: Input
|
|
25599
25556
|
}], checked: [{
|
|
@@ -25648,6 +25605,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25648
25605
|
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
25649
25606
|
}] });
|
|
25650
25607
|
|
|
25608
|
+
class EditableLabelDirective {
|
|
25609
|
+
constructor(el, renderer) {
|
|
25610
|
+
this.el = el;
|
|
25611
|
+
this.renderer = renderer;
|
|
25612
|
+
this.editableLabelChanged = new EventEmitter();
|
|
25613
|
+
}
|
|
25614
|
+
ngAfterViewInit() {
|
|
25615
|
+
if (this.gnUiEditableLabel !== false) {
|
|
25616
|
+
const appendedInput = this.renderer.createElement('input');
|
|
25617
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
25618
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
25619
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
25620
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
25621
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
25622
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
25623
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
25624
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
25625
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
25626
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
25627
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
25628
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
25629
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
25630
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
25631
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
25632
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
25633
|
+
});
|
|
25634
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
25635
|
+
}
|
|
25636
|
+
}
|
|
25637
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25638
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
25639
|
+
}
|
|
25640
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25641
|
+
type: Directive,
|
|
25642
|
+
args: [{
|
|
25643
|
+
selector: '[gnUiEditableLabel]',
|
|
25644
|
+
standalone: true,
|
|
25645
|
+
}]
|
|
25646
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25647
|
+
type: Output
|
|
25648
|
+
}], gnUiEditableLabel: [{
|
|
25649
|
+
type: Input
|
|
25650
|
+
}] } });
|
|
25651
|
+
|
|
25651
25652
|
class UiInputsModule {
|
|
25652
25653
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25653
25654
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
@@ -25687,7 +25688,8 @@ class UiInputsModule {
|
|
|
25687
25688
|
MatFormFieldModule,
|
|
25688
25689
|
MatInputModule,
|
|
25689
25690
|
MatDatepickerModule,
|
|
25690
|
-
MatNativeDateModule
|
|
25691
|
+
MatNativeDateModule,
|
|
25692
|
+
EditableLabelDirective], exports: [DropdownSelectorComponent,
|
|
25691
25693
|
AutocompleteComponent,
|
|
25692
25694
|
ButtonComponent,
|
|
25693
25695
|
TextInputComponent,
|
|
@@ -25703,7 +25705,8 @@ class UiInputsModule {
|
|
|
25703
25705
|
CopyTextButtonComponent,
|
|
25704
25706
|
CheckboxComponent,
|
|
25705
25707
|
SearchInputComponent,
|
|
25706
|
-
DateRangePickerComponent
|
|
25708
|
+
DateRangePickerComponent,
|
|
25709
|
+
EditableLabelDirective] }); }
|
|
25707
25710
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, imports: [CommonModule,
|
|
25708
25711
|
TranslateModule.forChild(),
|
|
25709
25712
|
NgxDropzoneModule,
|
|
@@ -25769,6 +25772,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25769
25772
|
MatInputModule,
|
|
25770
25773
|
MatDatepickerModule,
|
|
25771
25774
|
MatNativeDateModule,
|
|
25775
|
+
EditableLabelDirective,
|
|
25772
25776
|
],
|
|
25773
25777
|
exports: [
|
|
25774
25778
|
DropdownSelectorComponent,
|
|
@@ -25788,6 +25792,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25788
25792
|
CheckboxComponent,
|
|
25789
25793
|
SearchInputComponent,
|
|
25790
25794
|
DateRangePickerComponent,
|
|
25795
|
+
EditableLabelDirective,
|
|
25791
25796
|
],
|
|
25792
25797
|
}]
|
|
25793
25798
|
}] });
|
|
@@ -25887,7 +25892,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25887
25892
|
|
|
25888
25893
|
const DEFAULT_PARAMS = {
|
|
25889
25894
|
OFFSET: '',
|
|
25890
|
-
LIMIT: '',
|
|
25895
|
+
LIMIT: '-1',
|
|
25891
25896
|
FORMAT: 'json',
|
|
25892
25897
|
};
|
|
25893
25898
|
class RecordApiFormComponent {
|
|
@@ -25936,11 +25941,11 @@ class RecordApiFormComponent {
|
|
|
25936
25941
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
25937
25942
|
}
|
|
25938
25943
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25939
|
-
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 flex-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 (input)=\"setLimit($event.target.value)\"\n [value]=\"limit$ | 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]=\"(limit$ | async) === ''\"\n (change)=\"setLimit('')\"\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>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (input)=\"setOffset($event.target.value)\"\n hint=\"\"\n >\n </gn-ui-text-input>\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]=\"formatsList\"\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$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"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], 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 }); }
|
|
25944
|
+
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 flex-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 (input)=\"setLimit($event.target.value)\"\n [value]=\"(limit$ | async) !== '-1' ? (limit$ | 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]=\"(limit$ | async) === '-1'\"\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>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (input)=\"setOffset($event.target.value)\"\n hint=\"\"\n >\n </gn-ui-text-input>\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]=\"formatsList\"\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$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"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], 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 }); }
|
|
25940
25945
|
}
|
|
25941
25946
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
25942
25947
|
type: Component,
|
|
25943
|
-
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 flex-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 (input)=\"setLimit($event.target.value)\"\n [value]=\"limit$ | 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]=\"(limit$ | async) === ''\"\n (change)=\"setLimit('')\"\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>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (input)=\"setOffset($event.target.value)\"\n hint=\"\"\n >\n </gn-ui-text-input>\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]=\"formatsList\"\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"] }]
|
|
25948
|
+
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 flex-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 (input)=\"setLimit($event.target.value)\"\n [value]=\"(limit$ | async) !== '-1' ? (limit$ | 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]=\"(limit$ | async) === '-1'\"\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>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (input)=\"setOffset($event.target.value)\"\n hint=\"\"\n >\n </gn-ui-text-input>\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]=\"formatsList\"\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"] }]
|
|
25944
25949
|
}], propDecorators: { apiLink: [{
|
|
25945
25950
|
type: Input
|
|
25946
25951
|
}] } });
|
|
@@ -25953,11 +25958,11 @@ class ImageOverlayPreviewComponent {
|
|
|
25953
25958
|
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
25954
25959
|
}
|
|
25955
25960
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25956
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
25961
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }] }); }
|
|
25957
25962
|
}
|
|
25958
25963
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
25959
25964
|
type: Component,
|
|
25960
|
-
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
25965
|
+
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
|
|
25961
25966
|
}], propDecorators: { imageUrl: [{
|
|
25962
25967
|
type: Input
|
|
25963
25968
|
}], isPlaceholderShown: [{
|
|
@@ -26012,6 +26017,7 @@ class UiElementsModule {
|
|
|
26012
26017
|
AvatarComponent,
|
|
26013
26018
|
UserPreviewComponent,
|
|
26014
26019
|
PaginationButtonsComponent,
|
|
26020
|
+
MaxLinesComponent,
|
|
26015
26021
|
RecordApiFormComponent,
|
|
26016
26022
|
MarkdownParserComponent,
|
|
26017
26023
|
ImageOverlayPreviewComponent] }); }
|
|
@@ -26084,6 +26090,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26084
26090
|
AvatarComponent,
|
|
26085
26091
|
UserPreviewComponent,
|
|
26086
26092
|
PaginationButtonsComponent,
|
|
26093
|
+
MaxLinesComponent,
|
|
26087
26094
|
RecordApiFormComponent,
|
|
26088
26095
|
MarkdownParserComponent,
|
|
26089
26096
|
ImageOverlayPreviewComponent,
|
|
@@ -26091,143 +26098,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26091
26098
|
}]
|
|
26092
26099
|
}] });
|
|
26093
26100
|
|
|
26094
|
-
class RecordTableComponent {
|
|
26095
|
-
constructor() {
|
|
26096
|
-
this.selectedRecords = [];
|
|
26097
|
-
this.records = [];
|
|
26098
|
-
this.recordClick = new EventEmitter();
|
|
26099
|
-
this.recordsSelect = new EventEmitter();
|
|
26100
|
-
this.recordsDeselect = new EventEmitter();
|
|
26101
|
-
this.sortByChange = new EventEmitter();
|
|
26102
|
-
}
|
|
26103
|
-
dateToString(date) {
|
|
26104
|
-
return date?.toLocaleDateString(undefined, {
|
|
26105
|
-
year: 'numeric',
|
|
26106
|
-
month: 'long',
|
|
26107
|
-
day: 'numeric',
|
|
26108
|
-
timeZone: 'UTC',
|
|
26109
|
-
});
|
|
26110
|
-
}
|
|
26111
|
-
getStatus(isPublishedToAll) {
|
|
26112
|
-
return isPublishedToAll ? 'published' : 'not published';
|
|
26113
|
-
}
|
|
26114
|
-
formatUserInfo(userInfo) {
|
|
26115
|
-
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
26116
|
-
if (infos && infos.length === 4) {
|
|
26117
|
-
return `${infos[2]} ${infos[1]}`;
|
|
26118
|
-
}
|
|
26119
|
-
return undefined;
|
|
26120
|
-
}
|
|
26121
|
-
getRecordFormats(record) {
|
|
26122
|
-
if (record.kind === 'service' || !('distributions' in record)) {
|
|
26123
|
-
return [];
|
|
26124
|
-
}
|
|
26125
|
-
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
26126
|
-
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
26127
|
-
return formats;
|
|
26128
|
-
}
|
|
26129
|
-
getBadgeColor(format) {
|
|
26130
|
-
return getBadgeColor(format);
|
|
26131
|
-
}
|
|
26132
|
-
getOrderForColumn(col) {
|
|
26133
|
-
if (!this.sortBy) {
|
|
26134
|
-
return null;
|
|
26135
|
-
}
|
|
26136
|
-
let order = null;
|
|
26137
|
-
const sortedArray = Array.isArray(this.sortBy[0])
|
|
26138
|
-
? this.sortBy
|
|
26139
|
-
: [this.sortBy];
|
|
26140
|
-
sortedArray.forEach((sortedCol) => {
|
|
26141
|
-
if (sortedCol[1] === col) {
|
|
26142
|
-
order = sortedCol[0];
|
|
26143
|
-
}
|
|
26144
|
-
});
|
|
26145
|
-
return order;
|
|
26146
|
-
}
|
|
26147
|
-
setSortBy(col) {
|
|
26148
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26149
|
-
let newOrder;
|
|
26150
|
-
if (sortOrder) {
|
|
26151
|
-
newOrder = sortOrder === 'asc' ? 'desc' : 'asc';
|
|
26152
|
-
}
|
|
26153
|
-
else {
|
|
26154
|
-
newOrder = 'asc';
|
|
26155
|
-
}
|
|
26156
|
-
this.sortByChange.emit([newOrder, col]);
|
|
26157
|
-
this.sortBy = [newOrder, col];
|
|
26158
|
-
}
|
|
26159
|
-
isSortedBy(col, order) {
|
|
26160
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26161
|
-
return sortOrder === order;
|
|
26162
|
-
}
|
|
26163
|
-
isChecked(record) {
|
|
26164
|
-
if (this.selectedRecords.includes(record.uniqueIdentifier)) {
|
|
26165
|
-
return true;
|
|
26166
|
-
}
|
|
26167
|
-
return false;
|
|
26168
|
-
}
|
|
26169
|
-
handleRecordSelectedChange(selected, record) {
|
|
26170
|
-
if (!selected) {
|
|
26171
|
-
this.recordsDeselect.emit([record]);
|
|
26172
|
-
this.selectedRecords = this.selectedRecords.filter((val) => val !== record.uniqueIdentifier);
|
|
26173
|
-
}
|
|
26174
|
-
else {
|
|
26175
|
-
this.recordsSelect.emit([record]);
|
|
26176
|
-
this.selectedRecords.push(record.uniqueIdentifier);
|
|
26177
|
-
}
|
|
26178
|
-
}
|
|
26179
|
-
selectAll() {
|
|
26180
|
-
if (this.isAllSelected()) {
|
|
26181
|
-
this.recordsDeselect.emit(this.records);
|
|
26182
|
-
this.selectedRecords = [];
|
|
26183
|
-
}
|
|
26184
|
-
else {
|
|
26185
|
-
this.recordsSelect.emit(this.records);
|
|
26186
|
-
this.selectedRecords = this.records.map((record) => {
|
|
26187
|
-
return record.uniqueIdentifier;
|
|
26188
|
-
});
|
|
26189
|
-
}
|
|
26190
|
-
}
|
|
26191
|
-
isAllSelected() {
|
|
26192
|
-
if (this.selectedRecords.length === this.records.length) {
|
|
26193
|
-
const allRecords = this.records.filter((record) => this.selectedRecords.includes(record.uniqueIdentifier));
|
|
26194
|
-
if (allRecords.length === this.records.length) {
|
|
26195
|
-
return true;
|
|
26196
|
-
}
|
|
26197
|
-
}
|
|
26198
|
-
return false;
|
|
26199
|
-
}
|
|
26200
|
-
isSomeSelected() {
|
|
26201
|
-
if (this.selectedRecords.length > 0 &&
|
|
26202
|
-
this.selectedRecords.length < this.records.length) {
|
|
26203
|
-
return true;
|
|
26204
|
-
}
|
|
26205
|
-
return false;
|
|
26206
|
-
}
|
|
26207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26208
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordTableComponent, selector: "gn-ui-record-table", inputs: { selectedRecords: "selectedRecords", records: "records", totalHits: "totalHits", sortBy: "sortBy" }, outputs: { recordClick: "recordClick", recordsSelect: "recordsSelect", recordsDeselect: "recordsDeselect", sortByChange: "sortByChange" }, ngImport: i0, template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
26209
|
-
}
|
|
26210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, decorators: [{
|
|
26211
|
-
type: Component,
|
|
26212
|
-
args: [{ selector: 'gn-ui-record-table', template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"] }]
|
|
26213
|
-
}], propDecorators: { selectedRecords: [{
|
|
26214
|
-
type: Input
|
|
26215
|
-
}], records: [{
|
|
26216
|
-
type: Input
|
|
26217
|
-
}], totalHits: [{
|
|
26218
|
-
type: Input
|
|
26219
|
-
}], sortBy: [{
|
|
26220
|
-
type: Input
|
|
26221
|
-
}], recordClick: [{
|
|
26222
|
-
type: Output
|
|
26223
|
-
}], recordsSelect: [{
|
|
26224
|
-
type: Output
|
|
26225
|
-
}], recordsDeselect: [{
|
|
26226
|
-
type: Output
|
|
26227
|
-
}], sortByChange: [{
|
|
26228
|
-
type: Output
|
|
26229
|
-
}] } });
|
|
26230
|
-
|
|
26231
26101
|
class UiSearchModule {
|
|
26232
26102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26233
26103
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -26240,8 +26110,7 @@ class UiSearchModule {
|
|
|
26240
26110
|
ResultsHitsNumberComponent,
|
|
26241
26111
|
ResultsListItemComponent,
|
|
26242
26112
|
RecordPreviewFeedComponent,
|
|
26243
|
-
RecordPreviewRowComponent,
|
|
26244
|
-
RecordTableComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26113
|
+
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26245
26114
|
FacetsModule$1,
|
|
26246
26115
|
FormsModule,
|
|
26247
26116
|
ReactiveFormsModule,
|
|
@@ -26252,7 +26121,8 @@ class UiSearchModule {
|
|
|
26252
26121
|
UiElementsModule,
|
|
26253
26122
|
MatIconModule,
|
|
26254
26123
|
MatCheckboxModule,
|
|
26255
|
-
RouterLink
|
|
26124
|
+
RouterLink,
|
|
26125
|
+
InteractiveTableComponent], exports: [RecordPreviewListComponent,
|
|
26256
26126
|
RecordPreviewCardComponent,
|
|
26257
26127
|
RecordPreviewTextComponent,
|
|
26258
26128
|
RecordPreviewTitleComponent,
|
|
@@ -26262,8 +26132,7 @@ class UiSearchModule {
|
|
|
26262
26132
|
RecordPreviewComponent,
|
|
26263
26133
|
ResultsHitsNumberComponent,
|
|
26264
26134
|
RecordPreviewFeedComponent,
|
|
26265
|
-
RecordPreviewRowComponent
|
|
26266
|
-
RecordTableComponent] }); }
|
|
26135
|
+
RecordPreviewRowComponent] }); }
|
|
26267
26136
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, providers: [
|
|
26268
26137
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
26269
26138
|
], imports: [CommonModule,
|
|
@@ -26278,7 +26147,8 @@ class UiSearchModule {
|
|
|
26278
26147
|
UiInputsModule,
|
|
26279
26148
|
UiElementsModule,
|
|
26280
26149
|
MatIconModule,
|
|
26281
|
-
MatCheckboxModule,
|
|
26150
|
+
MatCheckboxModule,
|
|
26151
|
+
InteractiveTableComponent, FacetsModule$1] }); }
|
|
26282
26152
|
}
|
|
26283
26153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
26284
26154
|
type: NgModule,
|
|
@@ -26295,7 +26165,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26295
26165
|
ResultsListItemComponent,
|
|
26296
26166
|
RecordPreviewFeedComponent,
|
|
26297
26167
|
RecordPreviewRowComponent,
|
|
26298
|
-
RecordTableComponent,
|
|
26299
26168
|
],
|
|
26300
26169
|
imports: [
|
|
26301
26170
|
CommonModule,
|
|
@@ -26312,6 +26181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26312
26181
|
MatIconModule,
|
|
26313
26182
|
MatCheckboxModule,
|
|
26314
26183
|
RouterLink,
|
|
26184
|
+
InteractiveTableComponent,
|
|
26315
26185
|
],
|
|
26316
26186
|
exports: [
|
|
26317
26187
|
RecordPreviewListComponent,
|
|
@@ -26325,7 +26195,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26325
26195
|
ResultsHitsNumberComponent,
|
|
26326
26196
|
RecordPreviewFeedComponent,
|
|
26327
26197
|
RecordPreviewRowComponent,
|
|
26328
|
-
RecordTableComponent,
|
|
26329
26198
|
],
|
|
26330
26199
|
providers: [
|
|
26331
26200
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
@@ -26884,6 +26753,9 @@ const getFavoritesOnly = createSelector(getSearchStateSearch, (state) => state.p
|
|
|
26884
26753
|
const getError = createSelector(getSearchStateSearch, (state) => state.error);
|
|
26885
26754
|
const getSpatialFilterEnabled = createSelector(getSearchStateSearch, (state) => state.params.useSpatialFilter);
|
|
26886
26755
|
|
|
26756
|
+
// this geometry will be used to filter & boost results accordingly
|
|
26757
|
+
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
26758
|
+
|
|
26887
26759
|
class SearchFacade {
|
|
26888
26760
|
constructor(store, filterGeometry) {
|
|
26889
26761
|
this.store = store;
|
|
@@ -26988,6 +26860,7 @@ class SearchFacade {
|
|
|
26988
26860
|
this.store.dispatch(new SetFilters({}, this.searchId));
|
|
26989
26861
|
this.store.dispatch(new SetSortBy([], this.searchId));
|
|
26990
26862
|
this.store.dispatch(new SetFavoritesOnly(false, this.searchId));
|
|
26863
|
+
return this;
|
|
26991
26864
|
}
|
|
26992
26865
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade, deps: [{ token: i1$2.Store }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26993
26866
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade }); }
|
|
@@ -27372,8 +27245,11 @@ class FuzzySearchComponent {
|
|
|
27372
27245
|
this.searchService.updateFilters({ any });
|
|
27373
27246
|
}
|
|
27374
27247
|
}
|
|
27375
|
-
handleInputCleared() {
|
|
27376
|
-
this.
|
|
27248
|
+
async handleInputCleared() {
|
|
27249
|
+
const currentSearchFilters = await firstValueFrom(this.searchFacade.searchFilters$);
|
|
27250
|
+
if (currentSearchFilters.any) {
|
|
27251
|
+
this.searchService.updateFilters({ any: '' });
|
|
27252
|
+
}
|
|
27377
27253
|
}
|
|
27378
27254
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27379
27255
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -27453,6 +27329,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27453
27329
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
27454
27330
|
}] }]; } });
|
|
27455
27331
|
|
|
27332
|
+
// expects the replacement key ${uuid}
|
|
27333
|
+
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
27334
|
+
|
|
27456
27335
|
class FavoriteStarComponent {
|
|
27457
27336
|
set record(value) {
|
|
27458
27337
|
this.record_ = value;
|
|
@@ -27714,9 +27593,11 @@ class SearchEffects {
|
|
|
27714
27593
|
// I could not get this to work (maybe a bug in rxjs?)
|
|
27715
27594
|
switchMap$1(([, state]) => this.favoritesService.myFavoritesUuid$.pipe(take(1), map$1((favorites) => [state, favorites]))), switchMap$1(([state, favorites]) => {
|
|
27716
27595
|
if (!state.params.useSpatialFilter || !this.filterGeometry$) {
|
|
27717
|
-
return of([state, favorites,
|
|
27596
|
+
return of([state, favorites, undefined]);
|
|
27718
27597
|
}
|
|
27719
27598
|
return this.filterGeometry$.pipe(tap$2((geom) => {
|
|
27599
|
+
if (!geom)
|
|
27600
|
+
return;
|
|
27720
27601
|
try {
|
|
27721
27602
|
const trace = valid$1(geom, true);
|
|
27722
27603
|
if (trace?.length > 0) {
|
|
@@ -27728,7 +27609,7 @@ class SearchEffects {
|
|
|
27728
27609
|
throw new Error();
|
|
27729
27610
|
}
|
|
27730
27611
|
}), map$1((geom) => [state, favorites, geom]), catchError((e) => {
|
|
27731
|
-
return of([state, favorites,
|
|
27612
|
+
return of([state, favorites, undefined]);
|
|
27732
27613
|
}));
|
|
27733
27614
|
}), switchMap$1(([state, favorites, geometry]) => {
|
|
27734
27615
|
const { currentPage, pageSize, sort } = state.params;
|
|
@@ -28165,10 +28046,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28165
28046
|
type: Input
|
|
28166
28047
|
}] } });
|
|
28167
28048
|
|
|
28168
|
-
// this geometry will be used to filter & boost results accordingly
|
|
28169
|
-
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
28170
|
-
// expects the replacement key ${uuid}
|
|
28171
|
-
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
28172
28049
|
class FeatureSearchModule {
|
|
28173
28050
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28174
28051
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, declarations: [SortByComponent,
|
|
@@ -28267,6 +28144,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28267
28144
|
}]
|
|
28268
28145
|
}] });
|
|
28269
28146
|
|
|
28147
|
+
class ResultsTableComponent {
|
|
28148
|
+
constructor(searchFacade, searchService, selectionService) {
|
|
28149
|
+
this.searchFacade = searchFacade;
|
|
28150
|
+
this.searchService = searchService;
|
|
28151
|
+
this.selectionService = selectionService;
|
|
28152
|
+
this.recordClick = new EventEmitter();
|
|
28153
|
+
this.records$ = this.searchFacade.results$;
|
|
28154
|
+
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
28155
|
+
}
|
|
28156
|
+
dateToString(date) {
|
|
28157
|
+
return date?.toLocaleDateString(undefined, {
|
|
28158
|
+
year: 'numeric',
|
|
28159
|
+
month: 'long',
|
|
28160
|
+
day: 'numeric',
|
|
28161
|
+
timeZone: 'UTC',
|
|
28162
|
+
});
|
|
28163
|
+
}
|
|
28164
|
+
getStatus(isPublishedToAll) {
|
|
28165
|
+
return isPublishedToAll ? 'published' : 'not published';
|
|
28166
|
+
}
|
|
28167
|
+
getRecordFormats(record) {
|
|
28168
|
+
if (record.kind === 'service' || !('distributions' in record)) {
|
|
28169
|
+
return [];
|
|
28170
|
+
}
|
|
28171
|
+
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
28172
|
+
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
28173
|
+
return formats;
|
|
28174
|
+
}
|
|
28175
|
+
formatUserInfo(userInfo) {
|
|
28176
|
+
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
28177
|
+
if (infos && infos.length === 4) {
|
|
28178
|
+
return `${infos[2]} ${infos[1]}`;
|
|
28179
|
+
}
|
|
28180
|
+
return undefined;
|
|
28181
|
+
}
|
|
28182
|
+
getBadgeColor(format) {
|
|
28183
|
+
return getBadgeColor(format);
|
|
28184
|
+
}
|
|
28185
|
+
handleRecordClick(item) {
|
|
28186
|
+
this.recordClick.emit(item);
|
|
28187
|
+
}
|
|
28188
|
+
setSortBy(col, order) {
|
|
28189
|
+
this.searchService.setSortBy([order, col]);
|
|
28190
|
+
}
|
|
28191
|
+
isSortedBy(col) {
|
|
28192
|
+
return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
|
|
28193
|
+
const sortArray = Array.isArray(sortOrder[0])
|
|
28194
|
+
? sortOrder
|
|
28195
|
+
: [sortOrder];
|
|
28196
|
+
for (const sort of sortArray) {
|
|
28197
|
+
if (sort[1] === col) {
|
|
28198
|
+
return sort[0];
|
|
28199
|
+
}
|
|
28200
|
+
}
|
|
28201
|
+
return null;
|
|
28202
|
+
}));
|
|
28203
|
+
}
|
|
28204
|
+
isChecked(record) {
|
|
28205
|
+
return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
|
|
28206
|
+
return selectedRecords.includes(record.uniqueIdentifier);
|
|
28207
|
+
}));
|
|
28208
|
+
}
|
|
28209
|
+
handleRecordSelectedChange(selected, record) {
|
|
28210
|
+
if (!selected) {
|
|
28211
|
+
this.selectionService.deselectRecords([record]);
|
|
28212
|
+
}
|
|
28213
|
+
else {
|
|
28214
|
+
this.selectionService.selectRecords([record]);
|
|
28215
|
+
}
|
|
28216
|
+
}
|
|
28217
|
+
async toggleSelectAll() {
|
|
28218
|
+
const records = await firstValueFrom(this.records$);
|
|
28219
|
+
if (await firstValueFrom(this.isAllSelected())) {
|
|
28220
|
+
this.selectionService.deselectRecords(records);
|
|
28221
|
+
}
|
|
28222
|
+
else {
|
|
28223
|
+
this.selectionService.selectRecords(records);
|
|
28224
|
+
}
|
|
28225
|
+
}
|
|
28226
|
+
isAllSelected() {
|
|
28227
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28228
|
+
return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28229
|
+
}));
|
|
28230
|
+
}
|
|
28231
|
+
isSomeSelected() {
|
|
28232
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28233
|
+
const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28234
|
+
const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28235
|
+
return !allSelected && someSelected;
|
|
28236
|
+
}));
|
|
28237
|
+
}
|
|
28238
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28239
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
28240
|
+
}
|
|
28241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28242
|
+
type: Component,
|
|
28243
|
+
args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
|
|
28244
|
+
CommonModule,
|
|
28245
|
+
UiInputsModule,
|
|
28246
|
+
InteractiveTableComponent,
|
|
28247
|
+
InteractiveTableColumnComponent,
|
|
28248
|
+
MatIconModule,
|
|
28249
|
+
TranslateModule,
|
|
28250
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
28251
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
28252
|
+
type: Output
|
|
28253
|
+
}] } });
|
|
28254
|
+
|
|
28270
28255
|
class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
28271
28256
|
get mapLinks() {
|
|
28272
28257
|
return this.record.distributions.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API));
|
|
@@ -28593,6 +28578,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28593
28578
|
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-context [context]=\"context$ | async\"></gn-ui-map-context>\n" }]
|
|
28594
28579
|
}], ctorParameters: function () { return [{ type: MapFacade }]; } });
|
|
28595
28580
|
|
|
28581
|
+
const GEOCODING_PROVIDER = new InjectionToken('geocoding-provider');
|
|
28582
|
+
class GeocodingService {
|
|
28583
|
+
constructor(provider) {
|
|
28584
|
+
this.provider = provider;
|
|
28585
|
+
}
|
|
28586
|
+
query(text) {
|
|
28587
|
+
let queryObservable;
|
|
28588
|
+
switch (this.provider[0]) {
|
|
28589
|
+
case 'geoadmin':
|
|
28590
|
+
queryObservable = from(queryGeoadmin(text, this.provider[1]));
|
|
28591
|
+
break;
|
|
28592
|
+
case 'geonames':
|
|
28593
|
+
queryObservable = from(queryGeonames(text, this.provider[1]));
|
|
28594
|
+
break;
|
|
28595
|
+
case 'data-gouv-fr':
|
|
28596
|
+
queryObservable = from(queryDataGouvFr(text, this.provider[1]));
|
|
28597
|
+
break;
|
|
28598
|
+
default:
|
|
28599
|
+
return throwError(() => new Error(`Unsupported geocoding provider: ${this.provider[0]}`));
|
|
28600
|
+
}
|
|
28601
|
+
return queryObservable.pipe(catchError((error) => throwError(error)));
|
|
28602
|
+
}
|
|
28603
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, deps: [{ token: GEOCODING_PROVIDER }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28604
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, providedIn: 'root' }); }
|
|
28605
|
+
}
|
|
28606
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, decorators: [{
|
|
28607
|
+
type: Injectable,
|
|
28608
|
+
args: [{
|
|
28609
|
+
providedIn: 'root',
|
|
28610
|
+
}]
|
|
28611
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
28612
|
+
type: Inject,
|
|
28613
|
+
args: [GEOCODING_PROVIDER]
|
|
28614
|
+
}] }]; } });
|
|
28615
|
+
|
|
28616
|
+
class GeocodingComponent {
|
|
28617
|
+
constructor(mapManager, geocodingService) {
|
|
28618
|
+
this.mapManager = mapManager;
|
|
28619
|
+
this.geocodingService = geocodingService;
|
|
28620
|
+
this.searchText = '';
|
|
28621
|
+
this.results = [];
|
|
28622
|
+
this.searchTextChanged = new Subject();
|
|
28623
|
+
this.destroy$ = new Subject();
|
|
28624
|
+
this.errorMessage = null;
|
|
28625
|
+
this.searchTextChanged
|
|
28626
|
+
.pipe(debounceTime(300), switchMap$1((searchText) => {
|
|
28627
|
+
return from(this.geocodingService.query(searchText)).pipe(catchError$1((error) => {
|
|
28628
|
+
this.errorMessage =
|
|
28629
|
+
'An error occurred while searching. Please try again.';
|
|
28630
|
+
console.error(error);
|
|
28631
|
+
return [];
|
|
28632
|
+
}));
|
|
28633
|
+
}), takeUntil(this.destroy$))
|
|
28634
|
+
.subscribe((results) => {
|
|
28635
|
+
this.results = results;
|
|
28636
|
+
});
|
|
28637
|
+
}
|
|
28638
|
+
ngOnDestroy() {
|
|
28639
|
+
this.destroy$.next();
|
|
28640
|
+
this.destroy$.complete();
|
|
28641
|
+
}
|
|
28642
|
+
onSearchChange(searchText) {
|
|
28643
|
+
if (!searchText) {
|
|
28644
|
+
this.clearSearch();
|
|
28645
|
+
return;
|
|
28646
|
+
}
|
|
28647
|
+
else {
|
|
28648
|
+
this.searchTextChanged.next(searchText);
|
|
28649
|
+
}
|
|
28650
|
+
}
|
|
28651
|
+
clearSearch() {
|
|
28652
|
+
this.searchText = '';
|
|
28653
|
+
this.results = [];
|
|
28654
|
+
this.errorMessage = null;
|
|
28655
|
+
}
|
|
28656
|
+
zoomToLocation(result) {
|
|
28657
|
+
const map = this.mapManager.map;
|
|
28658
|
+
const view = map.getView();
|
|
28659
|
+
const geometry = result.geom;
|
|
28660
|
+
if (geometry.type === 'Point') {
|
|
28661
|
+
this.zoomToPoint(geometry.coordinates, view);
|
|
28662
|
+
}
|
|
28663
|
+
else if (geometry.type === 'Polygon') {
|
|
28664
|
+
this.zoomToPolygon(geometry.coordinates, view);
|
|
28665
|
+
}
|
|
28666
|
+
else {
|
|
28667
|
+
console.error(`Unsupported geometry type: ${geometry.type}`);
|
|
28668
|
+
}
|
|
28669
|
+
}
|
|
28670
|
+
zoomToPoint(pointCoords, view) {
|
|
28671
|
+
const transformedCoords = fromLonLat(pointCoords);
|
|
28672
|
+
view.setCenter(transformedCoords);
|
|
28673
|
+
view.setZoom(12);
|
|
28674
|
+
}
|
|
28675
|
+
zoomToPolygon(polygonCoords, view) {
|
|
28676
|
+
const transformedCoords = polygonCoords[0].map((coord) => fromLonLat(coord));
|
|
28677
|
+
const polygon = new Polygon([transformedCoords]);
|
|
28678
|
+
view.fit(polygon, {
|
|
28679
|
+
duration: 100,
|
|
28680
|
+
maxZoom: 12,
|
|
28681
|
+
});
|
|
28682
|
+
}
|
|
28683
|
+
onEnterPress() {
|
|
28684
|
+
if (this.results && this.results.length > 0) {
|
|
28685
|
+
this.zoomToLocation(this.results[0]);
|
|
28686
|
+
}
|
|
28687
|
+
}
|
|
28688
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, deps: [{ token: MapManagerService }, { token: GeocodingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28689
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: GeocodingComponent, selector: "gn-ui-geocoding", ngImport: i0, template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28690
|
+
}
|
|
28691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, decorators: [{
|
|
28692
|
+
type: Component,
|
|
28693
|
+
args: [{ selector: 'gn-ui-geocoding', template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n" }]
|
|
28694
|
+
}], ctorParameters: function () { return [{ type: MapManagerService }, { type: GeocodingService }]; } });
|
|
28695
|
+
|
|
28596
28696
|
class FeatureMapModule {
|
|
28597
28697
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28598
28698
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, declarations: [MapContextComponent,
|
|
@@ -28603,7 +28703,8 @@ class FeatureMapModule {
|
|
|
28603
28703
|
AddLayerRecordPreviewComponent,
|
|
28604
28704
|
AddLayerFromWmsComponent,
|
|
28605
28705
|
AddLayerFromFileComponent,
|
|
28606
|
-
AddLayerFromWfsComponent
|
|
28706
|
+
AddLayerFromWfsComponent,
|
|
28707
|
+
GeocodingComponent], imports: [CommonModule,
|
|
28607
28708
|
UiMapModule,
|
|
28608
28709
|
UiLayoutModule,
|
|
28609
28710
|
MatIconModule,
|
|
@@ -28614,13 +28715,18 @@ class FeatureMapModule {
|
|
|
28614
28715
|
MapInstanceDirective,
|
|
28615
28716
|
LayersPanelComponent,
|
|
28616
28717
|
AddLayerFromCatalogComponent,
|
|
28617
|
-
MapContainerComponent
|
|
28718
|
+
MapContainerComponent,
|
|
28719
|
+
GeocodingComponent] }); }
|
|
28618
28720
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, providers: [
|
|
28619
28721
|
{
|
|
28620
28722
|
provide: FEATURE_MAP_OPTIONS,
|
|
28621
28723
|
useValue: defaultMapOptions,
|
|
28622
28724
|
},
|
|
28623
28725
|
MapFacade,
|
|
28726
|
+
{
|
|
28727
|
+
provide: GEOCODING_PROVIDER,
|
|
28728
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28729
|
+
},
|
|
28624
28730
|
], imports: [CommonModule,
|
|
28625
28731
|
UiMapModule,
|
|
28626
28732
|
UiLayoutModule,
|
|
@@ -28646,6 +28752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28646
28752
|
AddLayerFromWmsComponent,
|
|
28647
28753
|
AddLayerFromFileComponent,
|
|
28648
28754
|
AddLayerFromWfsComponent,
|
|
28755
|
+
GeocodingComponent,
|
|
28649
28756
|
],
|
|
28650
28757
|
exports: [
|
|
28651
28758
|
MapContextComponent,
|
|
@@ -28653,6 +28760,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28653
28760
|
LayersPanelComponent,
|
|
28654
28761
|
AddLayerFromCatalogComponent,
|
|
28655
28762
|
MapContainerComponent,
|
|
28763
|
+
GeocodingComponent,
|
|
28656
28764
|
],
|
|
28657
28765
|
imports: [
|
|
28658
28766
|
CommonModule,
|
|
@@ -28673,6 +28781,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28673
28781
|
useValue: defaultMapOptions,
|
|
28674
28782
|
},
|
|
28675
28783
|
MapFacade,
|
|
28784
|
+
{
|
|
28785
|
+
provide: GEOCODING_PROVIDER,
|
|
28786
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28787
|
+
},
|
|
28676
28788
|
],
|
|
28677
28789
|
}]
|
|
28678
28790
|
}] });
|
|
@@ -28767,7 +28879,7 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28767
28879
|
...state,
|
|
28768
28880
|
chartConfig,
|
|
28769
28881
|
})), on(close, (state) => {
|
|
28770
|
-
// eslint-disable-next-line
|
|
28882
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28771
28883
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28772
28884
|
return stateWithoutMd;
|
|
28773
28885
|
}));
|
|
@@ -30437,12 +30549,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30437
30549
|
}] } });
|
|
30438
30550
|
|
|
30439
30551
|
class MapViewComponent {
|
|
30440
|
-
constructor(mdViewFacade, mapManager, mapUtils, dataService,
|
|
30552
|
+
constructor(mdViewFacade, mapManager, mapUtils, dataService, featureInfo, changeRef, styleService) {
|
|
30441
30553
|
this.mdViewFacade = mdViewFacade;
|
|
30442
30554
|
this.mapManager = mapManager;
|
|
30443
30555
|
this.mapUtils = mapUtils;
|
|
30444
30556
|
this.dataService = dataService;
|
|
30445
|
-
this.proxy = proxy;
|
|
30446
30557
|
this.featureInfo = featureInfo;
|
|
30447
30558
|
this.changeRef = changeRef;
|
|
30448
30559
|
this.styleService = styleService;
|
|
@@ -30477,7 +30588,7 @@ class MapViewComponent {
|
|
|
30477
30588
|
return of([]);
|
|
30478
30589
|
}), finalize(() => (this.loading = false)));
|
|
30479
30590
|
}));
|
|
30480
|
-
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => this.mapUtils.getLayerExtent(layers[0]).pipe(catchError((error) => {
|
|
30591
|
+
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(this.mapUtils.getLayerExtent(layers[0])).pipe(catchError((error) => {
|
|
30481
30592
|
console.warn(error); // FIXME: report this to the user somehow
|
|
30482
30593
|
return of(undefined);
|
|
30483
30594
|
}), map$1((extent) => ({
|
|
@@ -30485,7 +30596,18 @@ class MapViewComponent {
|
|
|
30485
30596
|
view: {
|
|
30486
30597
|
extent,
|
|
30487
30598
|
},
|
|
30488
|
-
})), tap$1(() => this.resetSelection()))))
|
|
30599
|
+
})), tap$1(() => this.resetSelection()))), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
30600
|
+
if (context.view.extent)
|
|
30601
|
+
return context;
|
|
30602
|
+
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
30603
|
+
return {
|
|
30604
|
+
...context,
|
|
30605
|
+
view: {
|
|
30606
|
+
...context.view,
|
|
30607
|
+
extent,
|
|
30608
|
+
},
|
|
30609
|
+
};
|
|
30610
|
+
}));
|
|
30489
30611
|
}
|
|
30490
30612
|
ngOnDestroy() {
|
|
30491
30613
|
this.subscription.unsubscribe();
|
|
@@ -30538,13 +30660,13 @@ class MapViewComponent {
|
|
|
30538
30660
|
selectLinkToDisplay(link) {
|
|
30539
30661
|
this.selectedLinkIndex$.next(link);
|
|
30540
30662
|
}
|
|
30541
|
-
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:
|
|
30663
|
+
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 }); }
|
|
30542
30664
|
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 }); }
|
|
30543
30665
|
}
|
|
30544
30666
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
30545
30667
|
type: Component,
|
|
30546
30668
|
args: [{ selector: 'gn-ui-map-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
30547
|
-
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type:
|
|
30669
|
+
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type: FeatureInfoService }, { type: i0.ChangeDetectorRef }, { type: MapStyleService }]; } });
|
|
30548
30670
|
|
|
30549
30671
|
class DataViewComponent {
|
|
30550
30672
|
constructor(mdViewFacade) {
|
|
@@ -30996,13 +31118,6 @@ class MyOrgService {
|
|
|
30996
31118
|
constructor(platformService, orgService) {
|
|
30997
31119
|
this.platformService = platformService;
|
|
30998
31120
|
this.orgService = orgService;
|
|
30999
|
-
this.myOrgDataSubject = new BehaviorSubject({
|
|
31000
|
-
orgName: '',
|
|
31001
|
-
logoUrl: '',
|
|
31002
|
-
recordCount: 0,
|
|
31003
|
-
userCount: 0,
|
|
31004
|
-
userList: [],
|
|
31005
|
-
});
|
|
31006
31121
|
this.myOrgData$ = combineLatest([
|
|
31007
31122
|
this.platformService.getMe(),
|
|
31008
31123
|
this.platformService.getUsers(),
|
|
@@ -31021,7 +31136,7 @@ class MyOrgService {
|
|
|
31021
31136
|
userList,
|
|
31022
31137
|
userCount,
|
|
31023
31138
|
};
|
|
31024
|
-
}));
|
|
31139
|
+
}), shareReplay(1));
|
|
31025
31140
|
}
|
|
31026
31141
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31027
31142
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, providedIn: 'root' }); }
|
|
@@ -31714,11 +31829,11 @@ class RecordFormComponent {
|
|
|
31714
31829
|
return field.config.model;
|
|
31715
31830
|
}
|
|
31716
31831
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31717
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31832
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["config", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31718
31833
|
}
|
|
31719
31834
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31720
31835
|
type: Component,
|
|
31721
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
31836
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
31722
31837
|
}], ctorParameters: function () { return [{ type: EditorService }]; } });
|
|
31723
31838
|
|
|
31724
31839
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -32086,5 +32201,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32086
32201
|
* Generated bundle index. Do not edit.
|
|
32087
32202
|
*/
|
|
32088
32203
|
|
|
32089
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, Gn4MetadataMapper, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService,
|
|
32204
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, 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, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
32090
32205
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|