geonetwork-ui 2.6.0-dev.9df114cd4 → 2.6.0-dev.d216c4dea
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
- package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
- package/esm2022/libs/feature/record/src/index.mjs +1 -2
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
- package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
- package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
- package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
- package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -15
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
- package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
- package/esm2022/libs/ui/map/src/index.mjs +2 -1
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
- package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +13 -6
- package/esm2022/translations/de.json +24 -3
- package/esm2022/translations/en.json +26 -5
- package/esm2022/translations/es.json +24 -3
- package/esm2022/translations/fr.json +24 -3
- package/esm2022/translations/it.json +24 -3
- package/esm2022/translations/nl.json +24 -3
- package/esm2022/translations/pt.json +24 -3
- package/fesm2022/geonetwork-ui.mjs +882 -451
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -2
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +0 -1
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
- package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
- package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/map/src/index.d.ts +1 -0
- package/libs/ui/map/src/index.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
- package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
- package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -2
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
- package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
- package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
- package/src/libs/feature/record/src/index.ts +0 -1
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
- package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
- package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
- package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
- package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -8
- package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
- package/src/libs/ui/map/src/index.ts +1 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
- package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +7 -8
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
- package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
- package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
- package/src/libs/util/shared/src/lib/links/link-utils.ts +30 -12
- package/tailwind.base.css +3 -3
- package/translations/de.json +24 -3
- package/translations/en.json +26 -5
- package/translations/es.json +24 -3
- package/translations/fr.json +24 -3
- package/translations/it.json +24 -3
- package/translations/nl.json +24 -3
- package/translations/pt.json +24 -3
- package/translations/sk.json +24 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
- package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
- package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
- /package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css → ui/elements/src/lib/service-capabilities/service-capabilities.component.css} +0 -0
package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import { getLayers } from '../../../../../../libs/util/shared/src';
|
|
5
|
+
import { ButtonComponent, TextInputComponent } from '../../../../../../libs/ui/inputs/src';
|
|
6
|
+
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
7
|
+
import { iconoirSearch } from '@ng-icons/iconoir';
|
|
8
|
+
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
9
|
+
import { matInfoOutline } from '@ng-icons/material-icons/outline';
|
|
10
|
+
import { PopoverComponent, SpinningLoaderComponent, } from '../../../../../../libs/ui/widgets/src';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@ngx-translate/core";
|
|
13
|
+
import * as i2 from "@angular/common";
|
|
14
|
+
marker(`service.metadata.search`);
|
|
15
|
+
marker(`service.metadata.capabilities.title`);
|
|
16
|
+
marker(`service.metadata.capabilities.abstract`);
|
|
17
|
+
marker(`service.metadata.capabilities.name`);
|
|
18
|
+
marker(`service.metadata.capabilities.defaultCrs`);
|
|
19
|
+
marker(`service.metadata.capabilities.availableCrs`);
|
|
20
|
+
marker(`service.metadata.capabilities.otherCrs`);
|
|
21
|
+
marker(`service.metadata.capabilities.objectCount`);
|
|
22
|
+
marker(`service.metadata.capabilities.geometryName`);
|
|
23
|
+
marker(`service.metadata.capabilities.geometryType`);
|
|
24
|
+
marker(`service.metadata.capabilities.keywords`);
|
|
25
|
+
marker(`service.metadata.capabilities.outputFormats`);
|
|
26
|
+
marker(`service.metadata.capabilities.resourceLinks`);
|
|
27
|
+
marker(`service.metadata.capabilities.attribution`);
|
|
28
|
+
export class ServiceCapabilitiesComponent {
|
|
29
|
+
constructor(cdr, translateService) {
|
|
30
|
+
this.cdr = cdr;
|
|
31
|
+
this.translateService = translateService;
|
|
32
|
+
this.apiLinks = [];
|
|
33
|
+
this.availableLayers = [];
|
|
34
|
+
this.filteredLayers = [];
|
|
35
|
+
this.selectedLayer = null;
|
|
36
|
+
this.layerInformation = [];
|
|
37
|
+
this.searchQuery = '';
|
|
38
|
+
this.loading = false;
|
|
39
|
+
this.capabilitiesKeys = [
|
|
40
|
+
'title',
|
|
41
|
+
'abstract',
|
|
42
|
+
'name',
|
|
43
|
+
'defaultCrs',
|
|
44
|
+
'availableCrs',
|
|
45
|
+
'otherCrs',
|
|
46
|
+
'objectCount',
|
|
47
|
+
'geometryName',
|
|
48
|
+
'geometryType',
|
|
49
|
+
'keywords',
|
|
50
|
+
'outputFormats',
|
|
51
|
+
'resourceLinks',
|
|
52
|
+
'attribution',
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
this.loadLayers();
|
|
57
|
+
}
|
|
58
|
+
onSearchChange(event) {
|
|
59
|
+
const input = event.target;
|
|
60
|
+
this.searchQuery = input.value;
|
|
61
|
+
if (!input.value) {
|
|
62
|
+
this.searchActive = false;
|
|
63
|
+
this.filteredLayers = this.availableLayers;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
onSearchEnter(event) {
|
|
67
|
+
if (event.key === 'Enter') {
|
|
68
|
+
this.searchActive = true;
|
|
69
|
+
this.searchLayers();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async loadLayers() {
|
|
73
|
+
if (this.apiLinks.length > 0 &&
|
|
74
|
+
this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures') {
|
|
75
|
+
this.loading = true;
|
|
76
|
+
this.availableLayers = await getLayers(this.apiLinks[0].url.href, this.apiLinks[0].accessServiceProtocol);
|
|
77
|
+
this.loading = false;
|
|
78
|
+
this.cdr.detectChanges();
|
|
79
|
+
this.filteredLayers = this.availableLayers;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.availableLayers = [];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
selectLayer(layer) {
|
|
86
|
+
if (layer === this.selectedLayer) {
|
|
87
|
+
this.selectedLayer = null;
|
|
88
|
+
this.layerInformation = [];
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.selectedLayer = layer;
|
|
92
|
+
const filteredInfo = [];
|
|
93
|
+
Object.keys(layer).map((key) => {
|
|
94
|
+
if (this.capabilitiesKeys.includes(key)) {
|
|
95
|
+
const displayName = this.translateService.instant(`service.metadata.capabilities.${key}`);
|
|
96
|
+
if (key in layer && layer[key]?.length) {
|
|
97
|
+
filteredInfo.push({ displayName, value: layer[key] });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
this.layerInformation = filteredInfo;
|
|
102
|
+
}
|
|
103
|
+
isList(value) {
|
|
104
|
+
return Array.isArray(value);
|
|
105
|
+
}
|
|
106
|
+
getExtraInputClass() {
|
|
107
|
+
if (this.searchActive) {
|
|
108
|
+
return 'h-14 border rounded-lg border-primary text-primary focus:border-primary hover:border-primary';
|
|
109
|
+
}
|
|
110
|
+
return 'h-14 border rounded-lg';
|
|
111
|
+
}
|
|
112
|
+
searchLayers() {
|
|
113
|
+
this.searchActive = true;
|
|
114
|
+
this.filteredLayers = this.availableLayers.filter((layer) => {
|
|
115
|
+
const query = this.searchQuery.toLowerCase();
|
|
116
|
+
if (layer.title) {
|
|
117
|
+
return (layer.title.toLowerCase().includes(query) ||
|
|
118
|
+
layer.abstract?.toLowerCase().includes(query));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return layer.name.toLowerCase().includes(query);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
if (!this.filteredLayers.includes(this.selectedLayer)) {
|
|
125
|
+
this.selectedLayer = null;
|
|
126
|
+
this.layerInformation = [];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
getExtraClass(layerItem) {
|
|
130
|
+
return layerItem.title === this.selectedLayer?.title
|
|
131
|
+
? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
|
|
132
|
+
: `h-8 rounded-lg`;
|
|
133
|
+
}
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 512px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
|
|
136
|
+
provideIcons({
|
|
137
|
+
iconoirSearch,
|
|
138
|
+
matInfoOutline,
|
|
139
|
+
}),
|
|
140
|
+
] }); }
|
|
141
|
+
}
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, decorators: [{
|
|
143
|
+
type: Component,
|
|
144
|
+
args: [{ selector: 'gn-ui-service-capabilities', standalone: true, imports: [
|
|
145
|
+
CommonModule,
|
|
146
|
+
TranslateModule,
|
|
147
|
+
ButtonComponent,
|
|
148
|
+
TextInputComponent,
|
|
149
|
+
NgIcon,
|
|
150
|
+
PopoverComponent,
|
|
151
|
+
SpinningLoaderComponent,
|
|
152
|
+
], viewProviders: [
|
|
153
|
+
provideIcons({
|
|
154
|
+
iconoirSearch,
|
|
155
|
+
matInfoOutline,
|
|
156
|
+
}),
|
|
157
|
+
], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 512px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
|
|
158
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }], propDecorators: { apiLinks: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}] } });
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXBhYmlsaXRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMvbGliL3NlcnZpY2UtY2FwYWJpbGl0aWVzL3NlcnZpY2UtY2FwYWJpbGl0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9zZXJ2aWNlLWNhcGFiaWxpdGllcy9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLHVDQUF1QyxDQUFBOzs7O0FBTzlDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0FBQzdDLE1BQU0s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SkFDbEIsTUFBTSw2R0FDTixnQkFBZ0Isd0ZBQ2hCLHVCQUF1Qix1REFFVjtZQUNiLFlBQVksQ0FBQztnQkFDWCxhQUFhO2dCQUNiLGNBQWM7YUFDZixDQUFDO1NBQ0g7OzRGQUlVLDRCQUE0QjtrQkFyQnhDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBQzFCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLE1BQU07d0JBQ04sZ0JBQWdCO3dCQUNoQix1QkFBdUI7cUJBQ3hCLGlCQUNjO3dCQUNiLFlBQVksQ0FBQzs0QkFDWCxhQUFhOzRCQUNiLGNBQWM7eUJBQ2YsQ0FBQztxQkFDSDtxSEFLUSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGF5ZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQsIFRleHRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBpY29ub2lyU2VhcmNoIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBtYXRJbmZvT3V0bGluZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9vdXRsaW5lJ1xuaW1wb3J0IHtcbiAgUG9wb3ZlckNvbXBvbmVudCxcbiAgU3Bpbm5pbmdMb2FkZXJDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5pbXBvcnQge1xuICBXZnNGZWF0dXJlVHlwZUZ1bGwsXG4gIFdtc0xheWVyRnVsbCxcbiAgV210c0xheWVyLFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuc2VhcmNoYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMudGl0bGVgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5hYnN0cmFjdGApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLm5hbWVgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5kZWZhdWx0Q3JzYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMuYXZhaWxhYmxlQ3JzYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMub3RoZXJDcnNgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5vYmplY3RDb3VudGApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmdlb21ldHJ5TmFtZWApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmdlb21ldHJ5VHlwZWApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmtleXdvcmRzYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMub3V0cHV0Rm9ybWF0c2ApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLnJlc291cmNlTGlua3NgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5hdHRyaWJ1dGlvbmApXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXNlcnZpY2UtY2FwYWJpbGl0aWVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBOZ0ljb24sXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBTcGlubmluZ0xvYWRlckNvbXBvbmVudCxcbiAgXSxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHByb3ZpZGVJY29ucyh7XG4gICAgICBpY29ub2lyU2VhcmNoLFxuICAgICAgbWF0SW5mb091dGxpbmUsXG4gICAgfSksXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUNhcGFiaWxpdGllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFwaUxpbmtzID0gW11cbiAgYXZhaWxhYmxlTGF5ZXJzID0gW11cbiAgZmlsdGVyZWRMYXllcnMgPSBbXVxuICBzZWxlY3RlZExheWVyID0gbnVsbFxuICBsYXllckluZm9ybWF0aW9uID0gW11cbiAgc2VhcmNoUXVlcnkgPSAnJ1xuICBsb2FkaW5nID0gZmFsc2VcbiAgc2VhcmNoQWN0aXZlXG5cbiAgY2FwYWJpbGl0aWVzS2V5cyA9IFtcbiAgICAndGl0bGUnLFxuICAgICdhYnN0cmFjdCcsXG4gICAgJ25hbWUnLFxuICAgICdkZWZhdWx0Q3JzJyxcbiAgICAnYXZhaWxhYmxlQ3JzJyxcbiAgICAnb3RoZXJDcnMnLFxuICAgICdvYmplY3RDb3VudCcsXG4gICAgJ2dlb21ldHJ5TmFtZScsXG4gICAgJ2dlb21ldHJ5VHlwZScsXG4gICAgJ2tleXdvcmRzJyxcbiAgICAnb3V0cHV0Rm9ybWF0cycsXG4gICAgJ3Jlc291cmNlTGlua3MnLFxuICAgICdhdHRyaWJ1dGlvbicsXG4gIF1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRMYXllcnMoKVxuICB9XG5cbiAgb25TZWFyY2hDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudFxuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSBpbnB1dC52YWx1ZVxuICAgIGlmICghaW5wdXQudmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICAgIHRoaXMuZmlsdGVyZWRMYXllcnMgPSB0aGlzLmF2YWlsYWJsZUxheWVyc1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9IHRydWVcbiAgICAgIHRoaXMuc2VhcmNoTGF5ZXJzKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTGF5ZXJzKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpTGlua3MubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5hcGlMaW5rc1swXS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgIT09ICdvZ2NGZWF0dXJlcydcbiAgICApIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIHRoaXMuYXZhaWxhYmxlTGF5ZXJzID0gYXdhaXQgZ2V0TGF5ZXJzKFxuICAgICAgICB0aGlzLmFwaUxpbmtzWzBdLnVybC5ocmVmLFxuICAgICAgICB0aGlzLmFwaUxpbmtzWzBdLmFjY2Vzc1NlcnZpY2VQcm90b2NvbFxuICAgICAgKVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgICAgdGhpcy5maWx0ZXJlZExheWVycyA9IHRoaXMuYXZhaWxhYmxlTGF5ZXJzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlTGF5ZXJzID0gW11cbiAgICB9XG4gIH1cblxuICBzZWxlY3RMYXllcihsYXllcjogV2ZzRmVhdHVyZVR5cGVGdWxsIHwgV21zTGF5ZXJGdWxsIHwgV210c0xheWVyKSB7XG4gICAgaWYgKGxheWVyID09PSB0aGlzLnNlbGVjdGVkTGF5ZXIpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMYXllciA9IG51bGxcbiAgICAgIHRoaXMubGF5ZXJJbmZvcm1hdGlvbiA9IFtdXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkTGF5ZXIgPSBsYXllclxuICAgIGNvbnN0IGZpbHRlcmVkSW5mbyA9IFtdXG4gICAgT2JqZWN0LmtleXMobGF5ZXIpLm1hcCgoa2V5KSA9PiB7XG4gICAgICBpZiAodGhpcy5jYXBhYmlsaXRpZXNLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMuJHtrZXl9YFxuICAgICAgICApXG4gICAgICAgIGlmIChrZXkgaW4gbGF5ZXIgJiYgbGF5ZXJba2V5XT8ubGVuZ3RoKSB7XG4gICAgICAgICAgZmlsdGVyZWRJbmZvLnB1c2goeyBkaXNwbGF5TmFtZSwgdmFsdWU6IGxheWVyW2tleV0gfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmxheWVySW5mb3JtYXRpb24gPSBmaWx0ZXJlZEluZm9cbiAgfVxuXG4gIGlzTGlzdCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgfVxuXG4gIGdldEV4dHJhSW5wdXRDbGFzcygpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hBY3RpdmUpIHtcbiAgICAgIHJldHVybiAnaC0xNCBib3JkZXIgcm91bmRlZC1sZyBib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnkgZm9jdXM6Ym9yZGVyLXByaW1hcnkgaG92ZXI6Ym9yZGVyLXByaW1hcnknXG4gICAgfVxuICAgIHJldHVybiAnaC0xNCBib3JkZXIgcm91bmRlZC1sZydcbiAgfVxuXG4gIHNlYXJjaExheWVycygpIHtcbiAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9IHRydWVcbiAgICB0aGlzLmZpbHRlcmVkTGF5ZXJzID0gdGhpcy5hdmFpbGFibGVMYXllcnMuZmlsdGVyKChsYXllcikgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLnNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChsYXllci50aXRsZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGxheWVyLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8XG4gICAgICAgICAgbGF5ZXIuYWJzdHJhY3Q/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXllci5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoIXRoaXMuZmlsdGVyZWRMYXllcnMuaW5jbHVkZXModGhpcy5zZWxlY3RlZExheWVyKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZExheWVyID0gbnVsbFxuICAgICAgdGhpcy5sYXllckluZm9ybWF0aW9uID0gW11cbiAgICB9XG4gIH1cblxuICBnZXRFeHRyYUNsYXNzKGxheWVySXRlbSkge1xuICAgIHJldHVybiBsYXllckl0ZW0udGl0bGUgPT09IHRoaXMuc2VsZWN0ZWRMYXllcj8udGl0bGVcbiAgICAgID8gYGgtOCByb3VuZGVkLWxnIGJnLXByaW1hcnktZGFya2VyIHRleHQtd2hpdGUgaG92ZXI6dGV4dC1wcmltYXJ5LWRhcmtlciBob3ZlcjpiZy13aGl0ZWBcbiAgICAgIDogYGgtOCByb3VuZGVkLWxnYFxuICB9XG59XG4iLCI8ZGl2IHN0eWxlPVwiaGVpZ2h0OiA2NTJweFwiIGlkPVwicHJldmlld1wiICpuZ0lmPVwiYXBpTGlua3MubGVuZ3RoID4gMFwiPlxuICA8ZGl2IGNsYXNzPVwiYmctcHJpbWFyeS1vcGFjaXR5LTEwIG92ZXJmbG93LXZpc2libGVcIiBzdHlsZT1cImhlaWdodDogNTEycHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWxnIHB4LTQgbGc6bXgtYXV0b1wiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImduLXVpLXNlY3Rpb24tdGl0bGUgbWItNlwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIHctZnVsbCBoLVsyMDBweF0gaXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxnbi11aS1zcGlubmluZy1sb2FkZXI+PC9nbi11aS1zcGlubmluZy1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTQgbWQ6dy0yLzUgdy1mdWxsIG1iLTQgZmxleCBmbGV4LXJvdyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICA8Z24tdWktdGV4dC1pbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgICBbZXh0cmFDbGFzc109XCJnZXRFeHRyYUlucHV0Q2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZXJ2aWNlLm1ldGFkYXRhLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblNlYXJjaEVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZ24tdWktdGV4dC1pbnB1dD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1sIGFic29sdXRlIGJvcmRlci1ncmF5LTIwMCByaWdodC0wIGgtMTQgdy0xNFwiPlxuICAgICAgICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgICAgICAgICNpbnB1dEJ0blxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgZXh0cmFDbGFzcz1cImgtMTIgdy0xMiBib3JkZXItMCBhYnNvbHV0ZSByaWdodC0xIHRvcC0xXCJcbiAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJzZWFyY2hMYXllcnMoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIj48L25nLWljb24+XG4gICAgICAgICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Z24tdWktcG9wb3ZlclxuICAgICAgICAgICAgICBbY29udGVudF09XCJwb3BvdmVySXRlbXNcIlxuICAgICAgICAgICAgICB0aGVtZT1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LTE0IGgtMTQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWljb24gbmFtZT1cIm1hdEluZm9PdXRsaW5lXCIgY2xhc3M9XCJ3LTYgaC02IHB0LTAuNVwiPjwvbmctaWNvbj5cbiAgICAgICAgICAgIDwvZ24tdWktcG9wb3Zlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTAwcHhcIlxuICAgICAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBzaGFkb3cteGwgcm91bmRlZCBwLTAgZmxleCBtZDpmbGV4LXJvdyBmbGV4LWNvbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgYmctZ3JheS0xMDAgbWQ6dy0xLzIgbWQ6aC1mdWxsIHctZnVsbCBoLTEvMiByb3VuZGVkLWwgb3ZlcmZsb3cteS1hdXRvIHB5LTUgcHItMSBwbC0zXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0PVwibGF5ZXItbGlzdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGF5ZXJJdGVtIG9mIGZpbHRlcmVkTGF5ZXJzXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgW2V4dHJhQ2xhc3NdPVwiZ2V0RXh0cmFDbGFzcyhsYXllckl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwic2VsZWN0TGF5ZXIobGF5ZXJJdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBsYXllckl0ZW0udGl0bGUgfHwgbGF5ZXJJdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVyZWRMYXllcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWdyYXktODAwXCI+XG4gICAgICAgICAgICAgICAge3sgJ3NlcnZpY2UubWV0YWRhdGEuZmlsdGVyLm5vTGF5ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10ZXN0PVwibGF5ZXItaW5mb3JtYXRpb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgbWQ6aC1mdWxsIG1kOnctMS8yIHctZnVsbCBoLTEvMiBweS01IHB4LTEwIG92ZXJmbG93LXktYXV0b1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXllckluZm9ybWF0aW9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTQgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB3LTI0XCI+e3sgaXRlbS5kaXNwbGF5TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMaXN0KGl0ZW0udmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIGl0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYnJlYWstd29yZHMgbWF4LXctNzJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJJdGVtIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWstd29yZHMgbWF4LXctNzJcIiAqbmdJZj1cIiFpc0xpc3QoaXRlbS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcG9wb3Zlckl0ZW1zPlxuICA8ZGl2IGNsYXNzPVwicC0yIHB5LTRcIj5cbiAgICA8ZGl2IHRyYW5zbGF0ZT5zZXJ2aWNlLm1ldGFkYXRhLmZpbHRlcjwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -17,6 +17,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe';
|
|
|
17
17
|
import { UserPreviewComponent } from './user-preview/user-preview.component';
|
|
18
18
|
import { ApplicationBannerComponent } from './application-banner/application-banner.component';
|
|
19
19
|
import { InternalLinkCardComponent } from './internal-link-card/internal-link-card.component';
|
|
20
|
+
import { ServiceCapabilitiesComponent } from './service-capabilities/service-capabilities.component';
|
|
20
21
|
import * as i0 from "@angular/core";
|
|
21
22
|
import * as i1 from "@ngx-translate/core";
|
|
22
23
|
export class UiElementsModule {
|
|
@@ -38,13 +39,15 @@ export class UiElementsModule {
|
|
|
38
39
|
TextInputComponent,
|
|
39
40
|
ImageInputComponent,
|
|
40
41
|
ApplicationBannerComponent,
|
|
41
|
-
InternalLinkCardComponent
|
|
42
|
+
InternalLinkCardComponent,
|
|
43
|
+
ServiceCapabilitiesComponent], exports: [ThumbnailComponent,
|
|
42
44
|
AvatarComponent,
|
|
43
45
|
UserPreviewComponent,
|
|
44
46
|
MarkdownParserComponent,
|
|
45
47
|
ImageInputComponent,
|
|
46
48
|
ApplicationBannerComponent,
|
|
47
|
-
InternalLinkCardComponent
|
|
49
|
+
InternalLinkCardComponent,
|
|
50
|
+
ServiceCapabilitiesComponent] }); }
|
|
48
51
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
49
52
|
provideNgIconsConfig({
|
|
50
53
|
size: '1.5em',
|
|
@@ -65,7 +68,8 @@ export class UiElementsModule {
|
|
|
65
68
|
TextInputComponent,
|
|
66
69
|
ImageInputComponent,
|
|
67
70
|
ApplicationBannerComponent,
|
|
68
|
-
InternalLinkCardComponent
|
|
71
|
+
InternalLinkCardComponent,
|
|
72
|
+
ServiceCapabilitiesComponent] }); }
|
|
69
73
|
}
|
|
70
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
71
75
|
type: NgModule,
|
|
@@ -91,6 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
91
95
|
ImageInputComponent,
|
|
92
96
|
ApplicationBannerComponent,
|
|
93
97
|
InternalLinkCardComponent,
|
|
98
|
+
ServiceCapabilitiesComponent,
|
|
94
99
|
],
|
|
95
100
|
providers: [
|
|
96
101
|
provideNgIconsConfig({
|
|
@@ -106,7 +111,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
106
111
|
ImageInputComponent,
|
|
107
112
|
ApplicationBannerComponent,
|
|
108
113
|
InternalLinkCardComponent,
|
|
114
|
+
ServiceCapabilitiesComponent,
|
|
109
115
|
],
|
|
110
116
|
}]
|
|
111
117
|
}] });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZWxlbWVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMvbGliL3VpLWVsZW1lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGNBQWMsR0FDZixNQUFNLG1DQUFtQyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQTtBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUE7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUE7QUFDN0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdURBQXVELENBQUE7OztBQTJDcEcsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsaUJBWlosZUFBZSxFQUFFLG9CQUFvQixhQTNCbEQsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsY0FBYyxzQkFFZCxnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLGNBQWM7WUFDZCxXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQix1QkFBdUI7WUFDdkIsa0JBQWtCO1lBQ2xCLGFBQWE7WUFDYixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLHlCQUF5QjtZQUN6Qiw0QkFBNEIsYUFTNUIsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixvQkFBb0I7WUFDcEIsdUJBQXVCO1lBQ3ZCLG1CQUFtQjtZQUNuQiwwQkFBMEI7WUFDMUIseUJBQXlCO1lBQ3pCLDRCQUE0QjtnSEFHbkIsZ0JBQWdCLGFBakJoQjtZQUNULG9CQUFvQixDQUFDO2dCQUNuQixJQUFJLEVBQUUsT0FBTzthQUNkLENBQUM7U0FDSCxZQTFCQyxZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixjQUFjO1lBQ2QsZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLGNBQWM7WUFDZCxXQUFXO1lBRVgsZ0JBQWdCO1lBRWhCLGtCQUFrQjtZQUVsQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLHlCQUF5QjtZQUN6Qiw0QkFBNEI7OzRGQW1CbkIsZ0JBQWdCO2tCQXpDNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxlQUFlLENBQUMsUUFBUSxFQUFFO3dCQUMxQixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6Qiw0QkFBNEI7cUJBQzdCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxvQkFBb0IsQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLE9BQU87eUJBQ2QsQ0FBQztxQkFDSDtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQix5QkFBeUI7d0JBQ3pCLDRCQUE0QjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nT3B0aW1pemVkSW1hZ2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQge1xuICBCYWRnZUNvbXBvbmVudCxcbiAgVGV4dElucHV0Q29tcG9uZW50LFxuICBVaUlucHV0c01vZHVsZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgTWF4TGluZXNDb21wb25lbnQsIFVpTGF5b3V0TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCwgVWlXaWRnZXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcbmltcG9ydCB7IFV0aWxTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IHByb3ZpZGVOZ0ljb25zQ29uZmlnIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCdcbmltcG9ydCB7IEltYWdlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLWlucHV0L2ltYWdlLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IE1hcmtkb3duUGFyc2VyQ29tcG9uZW50IH0gZnJvbSAnLi9tYXJrZG93bi1wYXJzZXIvbWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudCdcbmltcG9ydCB7IFRodW1ibmFpbENvbXBvbmVudCB9IGZyb20gJy4vdGh1bWJuYWlsL3RodW1ibmFpbC5jb21wb25lbnQnXG5pbXBvcnQgeyBUaW1lU2luY2VQaXBlIH0gZnJvbSAnLi91c2VyLWZlZWRiYWNrLWl0ZW0vdGltZS1zaW5jZS5waXBlJ1xuaW1wb3J0IHsgVXNlclByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL3VzZXItcHJldmlldy91c2VyLXByZXZpZXcuY29tcG9uZW50J1xuaW1wb3J0IHsgQXBwbGljYXRpb25CYW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2FwcGxpY2F0aW9uLWJhbm5lci9hcHBsaWNhdGlvbi1iYW5uZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgSW50ZXJuYWxMaW5rQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJuYWwtbGluay1jYXJkL2ludGVybmFsLWxpbmstY2FyZC5jb21wb25lbnQnXG5pbXBvcnQgeyBTZXJ2aWNlQ2FwYWJpbGl0aWVzQ29tcG9uZW50IH0gZnJvbSAnLi9zZXJ2aWNlLWNhcGFiaWxpdGllcy9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQnXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBVaVdpZGdldHNNb2R1bGUsXG4gICAgVWlMYXlvdXRNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKCksXG4gICAgVXRpbFNoYXJlZE1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVWlJbnB1dHNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdPcHRpbWl6ZWRJbWFnZSxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIE1hcmtkb3duUGFyc2VyQ29tcG9uZW50LFxuICAgIFRodW1ibmFpbENvbXBvbmVudCxcbiAgICBUaW1lU2luY2VQaXBlLFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIE1heExpbmVzQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBJbWFnZUlucHV0Q29tcG9uZW50LFxuICAgIEFwcGxpY2F0aW9uQmFubmVyQ29tcG9uZW50LFxuICAgIEludGVybmFsTGlua0NhcmRDb21wb25lbnQsXG4gICAgU2VydmljZUNhcGFiaWxpdGllc0NvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZU5nSWNvbnNDb25maWcoe1xuICAgICAgc2l6ZTogJzEuNWVtJyxcbiAgICB9KSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbQXZhdGFyQ29tcG9uZW50LCBVc2VyUHJldmlld0NvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUaHVtYm5haWxDb21wb25lbnQsXG4gICAgQXZhdGFyQ29tcG9uZW50LFxuICAgIFVzZXJQcmV2aWV3Q29tcG9uZW50LFxuICAgIE1hcmtkb3duUGFyc2VyQ29tcG9uZW50LFxuICAgIEltYWdlSW5wdXRDb21wb25lbnQsXG4gICAgQXBwbGljYXRpb25CYW5uZXJDb21wb25lbnQsXG4gICAgSW50ZXJuYWxMaW5rQ2FyZENvbXBvbmVudCxcbiAgICBTZXJ2aWNlQ2FwYWJpbGl0aWVzQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBVaUVsZW1lbnRzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -4,9 +4,12 @@ import { CommonModule } from '@angular/common';
|
|
|
4
4
|
import { NgIconComponent, provideIcons } from '@ng-icons/core';
|
|
5
5
|
import { iconoirNavArrowDown, iconoirNavArrowUp } from '@ng-icons/iconoir';
|
|
6
6
|
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
+
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/common";
|
|
9
10
|
import * as i2 from "@ngx-translate/core";
|
|
11
|
+
marker('editor.record.lock.reason');
|
|
12
|
+
marker('editor.record.lock.format');
|
|
10
13
|
export class InteractiveTableComponent {
|
|
11
14
|
constructor() {
|
|
12
15
|
this.items = [];
|
|
@@ -24,15 +27,24 @@ export class InteractiveTableComponent {
|
|
|
24
27
|
.join(' '),
|
|
25
28
|
};
|
|
26
29
|
}
|
|
30
|
+
getItemTitle(item) {
|
|
31
|
+
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
32
|
+
return 'editor.record.lock.reason';
|
|
33
|
+
}
|
|
34
|
+
else if (item.kind !== 'dataset') {
|
|
35
|
+
return 'editor.record.lock.format';
|
|
36
|
+
}
|
|
37
|
+
return '';
|
|
38
|
+
}
|
|
27
39
|
handleRowClick(item) {
|
|
28
40
|
this.itemClick.emit(item);
|
|
29
41
|
}
|
|
30
42
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
43
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32
44
|
}
|
|
33
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
34
46
|
type: Component,
|
|
35
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
47
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"] }]
|
|
36
48
|
}], propDecorators: { columns: [{
|
|
37
49
|
type: ContentChildren,
|
|
38
50
|
args: [InteractiveTableColumnComponent]
|
|
@@ -43,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43
55
|
}], itemClick: [{
|
|
44
56
|
type: Output
|
|
45
57
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjL2xpYi9pbnRlcmFjdGl2ZS10YWJsZS9pbnRlcmFjdGl2ZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMvbGliL2ludGVyYWN0aXZlLXRhYmxlL2ludGVyYWN0aXZlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0RBQStELENBQUE7QUFDL0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7OztBQUdoRSxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtBQUNuQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtBQVVuQyxNQUFNLE9BQU8seUJBQXlCO0lBVHRDO1FBYVcsVUFBSyxHQUFjLEVBQUUsQ0FBQTtRQUNyQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNsQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQTtLQTRCbEQ7SUExQkMsSUFBSSxTQUFTO1FBQ1gsT0FBTztZQUNMLHVCQUF1QixFQUFFLElBQUksQ0FBQyxPQUFPO2lCQUNsQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNkLE1BQU0sQ0FBQyxLQUFLO2dCQUNWLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDZCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7b0JBQ1gsQ0FBQyxDQUFDLGlCQUFpQjtvQkFDbkIsQ0FBQyxDQUFDLHlCQUF5QixDQUNoQztpQkFDQSxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2IsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBbUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sMkJBQTJCLENBQUE7UUFDcEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxPQUFPLDJCQUEyQixDQUFBO1FBQ3BDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBYTtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzQixDQUFDOytHQWpDVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixtS0FGekIsQ0FBQyxZQUFZLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsa0RBR3BELCtCQUErQiw2QkM3QmxELG15RUE4REEsMlNEckNZLFlBQVksMGxCQUFFLGVBQWUsNEdBQUUsZUFBZTs7NEZBRzdDLHlCQUF5QjtrQkFUckMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsYUFDOUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7OEJBSXJFLE9BQU87c0JBRE4sZUFBZTt1QkFBQywrQkFBK0I7Z0JBR3ZDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uL2ludGVyYWN0aXZlLXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ0ljb25Db21wb25lbnQsIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgaWNvbm9pck5hdkFycm93RG93biwgaWNvbm9pck5hdkFycm93VXAgfSBmcm9tICdAbmctaWNvbnMvaWNvbm9pcidcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5tYXJrZXIoJ2VkaXRvci5yZWNvcmQubG9jay5yZWFzb24nKVxubWFya2VyKCdlZGl0b3IucmVjb3JkLmxvY2suZm9ybWF0JylcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWludGVyYWN0aXZlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ludGVyYWN0aXZlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW50ZXJhY3RpdmUtdGFibGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdJY29uQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlSWNvbnMoeyBpY29ub2lyTmF2QXJyb3dEb3duLCBpY29ub2lyTmF2QXJyb3dVcCB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQge1xuICBAQ29udGVudENoaWxkcmVuKEludGVyYWN0aXZlVGFibGVDb2x1bW5Db21wb25lbnQpXG4gIGNvbHVtbnM6IFF1ZXJ5TGlzdDxJbnRlcmFjdGl2ZVRhYmxlQ29sdW1uQ29tcG9uZW50PlxuXG4gIEBJbnB1dCgpIGl0ZW1zOiB1bmtub3duW10gPSBbXVxuICBASW5wdXQoKSBpc0RyYWZ0UGFnZSA9IGZhbHNlXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KClcblxuICBnZXQgZ3JpZFN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzogdGhpcy5jb2x1bW5zXG4gICAgICAgIC5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICBjb2x1bW4ud2lkdGhcbiAgICAgICAgICAgID8gY29sdW1uLndpZHRoXG4gICAgICAgICAgICA6IGNvbHVtbi5ncm93XG4gICAgICAgICAgICAgID8gYG1pbm1heCgwcHgsMWZyKWBcbiAgICAgICAgICAgICAgOiBgbWlubWF4KDBweCxtYXgtY29udGVudClgXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJyAnKSxcbiAgICB9XG4gIH1cblxuICBnZXRJdGVtVGl0bGUoaXRlbTogQ2F0YWxvZ1JlY29yZCkge1xuICAgIGlmICghaXRlbS5leHRyYXM/LmVkaXQgJiYgIXRoaXMuaXNEcmFmdFBhZ2UgJiYgaXRlbS5raW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIHJldHVybiAnZWRpdG9yLnJlY29yZC5sb2NrLnJlYXNvbidcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCAhPT0gJ2RhdGFzZXQnKSB7XG4gICAgICByZXR1cm4gJ2VkaXRvci5yZWNvcmQubG9jay5mb3JtYXQnXG4gICAgfVxuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaGFuZGxlUm93Q2xpY2soaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoaXRlbSlcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdyaWQgdy1mdWxsXCIgW25nU3R5bGVdPVwiZ3JpZFN0eWxlXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50cyB3LWZ1bGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInRhYmxlLWhlYWRlci1jZWxsIGdhcC0xXCJcbiAgICAgICAgKGNsaWNrKT1cImNvbHVtbi5zb3J0YWJsZSAmJiBjb2x1bW4uaGFuZGxlU29ydENoYW5nZSgpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNvcnQtYnV0dG9uIGZsZXggZmxleC1jb2xcIiAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZVwiPlxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZ3JheS02MDAgLW1iLTJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndGV4dC1tYWluJzogY29sdW1uLmFjdGl2ZVNvcnQgPT09ICdhc2MnIH1cIlxuICAgICAgICAgICAgbmFtZT1cImljb25vaXJOYXZBcnJvd1VwXCJcbiAgICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZ3JheS02MDBcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndGV4dC1tYWluJzogY29sdW1uLmFjdGl2ZVNvcnQgPT09ICdkZXNjJyB9XCJcbiAgICAgICAgICAgIG5hbWU9XCJpY29ub2lyTmF2QXJyb3dEb3duXCJcbiAgICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiAqbmdJZj1cIiFjb2x1bW4uc29ydGFibGVcIiBjbGFzcz1cInRhYmxlLWhlYWRlci1jZWxsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbnRlbnRzIHRleHQtZ3JheS05MDAgY3Vyc29yLXBvaW50ZXIgZ3JvdXBcIlxuICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlUm93Q2xpY2soaXRlbSlcIlxuICAgIGRhdGEtY3k9XCJ0YWJsZS1yb3dcIlxuICAgIFt0aXRsZV09XCJnZXRJdGVtVGl0bGUoaXRlbSkgfCB0cmFuc2xhdGVcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBoLTBcIlxuICAgICAgW25nU3R5bGVdPVwieyAnZ3JpZC1jb2x1bW4nOiAnc3BhbiAnICsgdGhpcy5jb2x1bW5zLmxlbmd0aCB9XCJcbiAgICA+XG4gICAgICA8IS0tIHRoaXMgZWxlbWVudCBpcyBvbmx5IHVzZWQgaW4ga2V5Ym9hcmQgbmF2aWdhdGlvbiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteC0wIGgtWzUwcHhdIGJnLXRyYW5zcGFyZW50IHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGFibGUtcm93LWNlbGwgcHgtMyBweS0xLjUgZmxleCBpdGVtcy1jZW50ZXIgYmctd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tNzUgdHJ1bmNhdGUgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICd0ZXh0LXB1cnBsZS1saWdodCBjdXJzb3ItZGVmYXVsdCc6XG4gICAgICAgICAgICAoIWl0ZW0uZXh0cmFzPy5lZGl0ICYmICFpc0RyYWZ0UGFnZSkgfHwgaXRlbS5raW5kICE9PSAnZGF0YXNldCcsXG4gICAgICAgICAgJ2dyb3VwLWhvdmVyOnRleHQtbWFpbiBncm91cC1ob3ZlcjpiZy1ncmF5LTUwJzpcbiAgICAgICAgICAgIChpdGVtLmV4dHJhcz8uZWRpdCB8fCBpc0RyYWZ0UGFnZSkgJiYgaXRlbS5raW5kID09PSAnZGF0YXNldCcsXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uY2VsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -3,4 +3,5 @@ export * from './lib/components/map-container/map-settings.token';
|
|
|
3
3
|
export * from './lib/components/feature-detail/feature-detail.component';
|
|
4
4
|
export * from './lib/components/map-legend/map-legend.component';
|
|
5
5
|
export * from './lib/map-utils';
|
|
6
|
-
|
|
6
|
+
export * from './lib/components/spatial-extent/spatial-extent.component';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL21hcC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3REFBd0QsQ0FBQTtBQUN0RSxjQUFjLG1EQUFtRCxDQUFBO0FBQ2pFLGNBQWMsMERBQTBELENBQUE7QUFDeEUsY0FBYyxrREFBa0QsQ0FBQTtBQUNoRSxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsMERBQTBELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21hcC1jb250YWluZXIvbWFwLWNvbnRhaW5lci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21hcC1jb250YWluZXIvbWFwLXNldHRpbmdzLnRva2VuJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9mZWF0dXJlLWRldGFpbC9mZWF0dXJlLWRldGFpbC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXAtdXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NwYXRpYWwtZXh0ZW50L3NwYXRpYWwtZXh0ZW50LmNvbXBvbmVudCdcbiJdfQ==
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import GeoJSON from 'ol/format/GeoJSON';
|
|
4
|
+
import { Polygon } from 'ol/geom';
|
|
5
|
+
import { createViewFromLayer, } from '@geospatial-sdk/core';
|
|
6
|
+
import { MapContainerComponent } from '../map-container/map-container.component';
|
|
7
|
+
import { BehaviorSubject } from 'rxjs';
|
|
8
|
+
import { switchMap } from 'rxjs/operators';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common";
|
|
11
|
+
export class SpatialExtentComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.spatialExtents$ = new BehaviorSubject([]);
|
|
14
|
+
this.mapContext$ = this.spatialExtents$.pipe(switchMap(async (extents) => {
|
|
15
|
+
if (extents.length === 0) {
|
|
16
|
+
return null; // null extent means default view
|
|
17
|
+
}
|
|
18
|
+
const featureCollection = {
|
|
19
|
+
type: 'FeatureCollection',
|
|
20
|
+
features: [],
|
|
21
|
+
};
|
|
22
|
+
extents.forEach((extent) => {
|
|
23
|
+
if (extent.geometry) {
|
|
24
|
+
featureCollection.features.push({
|
|
25
|
+
type: 'Feature',
|
|
26
|
+
properties: {},
|
|
27
|
+
geometry: extent.geometry,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else if (extent.bbox?.length >= 0) {
|
|
31
|
+
featureCollection.features.push({
|
|
32
|
+
type: 'Feature',
|
|
33
|
+
properties: {},
|
|
34
|
+
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
const layer = {
|
|
39
|
+
type: 'geojson',
|
|
40
|
+
data: featureCollection,
|
|
41
|
+
label: 'Spatial extents',
|
|
42
|
+
style: {
|
|
43
|
+
'stroke-color': 'black',
|
|
44
|
+
'stroke-width': 2,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
const view = await createViewFromLayer(layer);
|
|
48
|
+
return {
|
|
49
|
+
view,
|
|
50
|
+
layers: [layer],
|
|
51
|
+
};
|
|
52
|
+
}));
|
|
53
|
+
this.error = '';
|
|
54
|
+
}
|
|
55
|
+
set spatialExtents(value) {
|
|
56
|
+
this.spatialExtents$.next(value);
|
|
57
|
+
}
|
|
58
|
+
bboxCoordsToGeometry(bbox) {
|
|
59
|
+
const geometry = new Polygon([
|
|
60
|
+
[
|
|
61
|
+
[bbox[0], bbox[1]],
|
|
62
|
+
[bbox[0], bbox[3]],
|
|
63
|
+
[bbox[2], bbox[3]],
|
|
64
|
+
[bbox[2], bbox[1]],
|
|
65
|
+
[bbox[0], bbox[1]],
|
|
66
|
+
],
|
|
67
|
+
]);
|
|
68
|
+
return new GeoJSON().writeGeometryObject(geometry);
|
|
69
|
+
}
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpatialExtentComponent, isStandalone: true, selector: "gn-ui-spatial-extent", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }] }); }
|
|
72
|
+
}
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, decorators: [{
|
|
74
|
+
type: Component,
|
|
75
|
+
args: [{ selector: 'gn-ui-spatial-extent', standalone: true, imports: [CommonModule, MapContainerComponent], template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n" }]
|
|
76
|
+
}], propDecorators: { spatialExtents: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}] } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1leHRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9tYXAvc3JjL2xpYi9jb21wb25lbnRzL3NwYXRpYWwtZXh0ZW50L3NwYXRpYWwtZXh0ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYy9saWIvY29tcG9uZW50cy9zcGF0aWFsLWV4dGVudC9zcGF0aWFsLWV4dGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFOUMsT0FBTyxPQUFxQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDakMsT0FBTyxFQUNMLG1CQUFtQixHQUdwQixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7QUFVMUMsTUFBTSxPQUFPLHNCQUFzQjtJQVBuQztRQVdFLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXlCLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLGdCQUFXLEdBQTJCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM3RCxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzFCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxJQUFJLENBQUEsQ0FBQyxpQ0FBaUM7WUFDL0MsQ0FBQztZQUNELE1BQU0saUJBQWlCLEdBQTZCO2dCQUNsRCxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixRQUFRLEVBQUUsRUFBRTthQUNiLENBQUE7WUFDRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwQixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUM5QixJQUFJLEVBQUUsU0FBUzt3QkFDZixVQUFVLEVBQUUsRUFBRTt3QkFDZCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7cUJBQzFCLENBQUMsQ0FBQTtnQkFDSixDQUFDO3FCQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3BDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQzlCLElBQUksRUFBRSxTQUFTO3dCQUNmLFVBQVUsRUFBRSxFQUFFO3dCQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztxQkFDakQsQ0FBQyxDQUFBO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUVGLE1BQU0sS0FBSyxHQUFvQjtnQkFDN0IsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsS0FBSyxFQUFFO29CQUNMLGNBQWMsRUFBRSxPQUFPO29CQUN2QixjQUFjLEVBQUUsQ0FBQztpQkFDbEI7YUFDRixDQUFBO1lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM3QyxPQUFPO2dCQUNMLElBQUk7Z0JBQ0osTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ2hCLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsVUFBSyxHQUFHLEVBQUUsQ0FBQTtLQWVYO0lBN0RDLElBQWEsY0FBYyxDQUFDLEtBQTZCO1FBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUE4Q0Qsb0JBQW9CLENBQUMsSUFBc0M7UUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUM7WUFDM0I7Z0JBQ0UsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkI7U0FDRixDQUFDLENBQUE7UUFFRixPQUFPLElBQUksT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDcEQsQ0FBQzsrR0E3RFUsc0JBQXNCO21HQUF0QixzQkFBc0IsOEhDdEJuQyxpSEFJQSx5RERjWSxZQUFZLG9GQUFFLHFCQUFxQjs7NEZBSWxDLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDOzhCQUtqQyxjQUFjO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgR2VvSlNPTiwgeyBHZW9KU09ORmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTidcbmltcG9ydCB7IFBvbHlnb24gfSBmcm9tICdvbC9nZW9tJ1xuaW1wb3J0IHtcbiAgY3JlYXRlVmlld0Zyb21MYXllcixcbiAgTWFwQ29udGV4dCxcbiAgTWFwQ29udGV4dExheWVyLFxufSBmcm9tICdAZ2Vvc3BhdGlhbC1zZGsvY29yZSdcbmltcG9ydCB7IE1hcENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL21hcC1jb250YWluZXIvbWFwLWNvbnRhaW5lci5jb21wb25lbnQnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBEYXRhc2V0U3BhdGlhbEV4dGVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktc3BhdGlhbC1leHRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXBDb250YWluZXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3BhdGlhbC1leHRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3BhdGlhbC1leHRlbnQuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNwYXRpYWxFeHRlbnRDb21wb25lbnQge1xuICBASW5wdXQoKSBzZXQgc3BhdGlhbEV4dGVudHModmFsdWU6IERhdGFzZXRTcGF0aWFsRXh0ZW50W10pIHtcbiAgICB0aGlzLnNwYXRpYWxFeHRlbnRzJC5uZXh0KHZhbHVlKVxuICB9XG4gIHNwYXRpYWxFeHRlbnRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YXNldFNwYXRpYWxFeHRlbnRbXT4oW10pXG4gIG1hcENvbnRleHQkOiBPYnNlcnZhYmxlPE1hcENvbnRleHQ+ID0gdGhpcy5zcGF0aWFsRXh0ZW50cyQucGlwZShcbiAgICBzd2l0Y2hNYXAoYXN5bmMgKGV4dGVudHMpID0+IHtcbiAgICAgIGlmIChleHRlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbCAvLyBudWxsIGV4dGVudCBtZWFucyBkZWZhdWx0IHZpZXdcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZlYXR1cmVDb2xsZWN0aW9uOiBHZW9KU09ORmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBbXSxcbiAgICAgIH1cbiAgICAgIGV4dGVudHMuZm9yRWFjaCgoZXh0ZW50KSA9PiB7XG4gICAgICAgIGlmIChleHRlbnQuZ2VvbWV0cnkpIHtcbiAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgZ2VvbWV0cnk6IGV4dGVudC5nZW9tZXRyeSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKGV4dGVudC5iYm94Py5sZW5ndGggPj0gMCkge1xuICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgICBnZW9tZXRyeTogdGhpcy5iYm94Q29vcmRzVG9HZW9tZXRyeShleHRlbnQuYmJveCksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgY29uc3QgbGF5ZXI6IE1hcENvbnRleHRMYXllciA9IHtcbiAgICAgICAgdHlwZTogJ2dlb2pzb24nLFxuICAgICAgICBkYXRhOiBmZWF0dXJlQ29sbGVjdGlvbixcbiAgICAgICAgbGFiZWw6ICdTcGF0aWFsIGV4dGVudHMnLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICdzdHJva2UtY29sb3InOiAnYmxhY2snLFxuICAgICAgICAgICdzdHJva2Utd2lkdGgnOiAyLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICAgY29uc3QgdmlldyA9IGF3YWl0IGNyZWF0ZVZpZXdGcm9tTGF5ZXIobGF5ZXIpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2aWV3LFxuICAgICAgICBsYXllcnM6IFtsYXllcl0sXG4gICAgICB9XG4gICAgfSlcbiAgKVxuXG4gIGVycm9yID0gJydcblxuICBiYm94Q29vcmRzVG9HZW9tZXRyeShiYm94OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSk6IEdlb21ldHJ5IHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBQb2x5Z29uKFtcbiAgICAgIFtcbiAgICAgICAgW2Jib3hbMF0sIGJib3hbMV1dLFxuICAgICAgICBbYmJveFswXSwgYmJveFszXV0sXG4gICAgICAgIFtiYm94WzJdLCBiYm94WzNdXSxcbiAgICAgICAgW2Jib3hbMl0sIGJib3hbMV1dLFxuICAgICAgICBbYmJveFswXSwgYmJveFsxXV0sXG4gICAgICBdLFxuICAgIF0pXG5cbiAgICByZXR1cm4gbmV3IEdlb0pTT04oKS53cml0ZUdlb21ldHJ5T2JqZWN0KGdlb21ldHJ5KVxuICB9XG59XG4iLCI8Z24tdWktbWFwLWNvbnRhaW5lclxuICBjbGFzcz1cImgtZnVsbCB3LWZ1bGxcIlxuICBbY29udGV4dF09XCJtYXBDb250ZXh0JCB8IGFzeW5jXCJcbj48L2duLXVpLW1hcC1jb250YWluZXI+XG4iXX0=
|