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
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, Input, OnInit } 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 {
|
|
11
|
+
PopoverComponent,
|
|
12
|
+
SpinningLoaderComponent,
|
|
13
|
+
} from '../../../../../../libs/ui/widgets/src'
|
|
14
|
+
import {
|
|
15
|
+
WfsFeatureTypeFull,
|
|
16
|
+
WmsLayerFull,
|
|
17
|
+
WmtsLayer,
|
|
18
|
+
} from '@camptocamp/ogc-client'
|
|
19
|
+
|
|
20
|
+
marker(`service.metadata.search`)
|
|
21
|
+
marker(`service.metadata.capabilities.title`)
|
|
22
|
+
marker(`service.metadata.capabilities.abstract`)
|
|
23
|
+
marker(`service.metadata.capabilities.name`)
|
|
24
|
+
marker(`service.metadata.capabilities.defaultCrs`)
|
|
25
|
+
marker(`service.metadata.capabilities.availableCrs`)
|
|
26
|
+
marker(`service.metadata.capabilities.otherCrs`)
|
|
27
|
+
marker(`service.metadata.capabilities.objectCount`)
|
|
28
|
+
marker(`service.metadata.capabilities.geometryName`)
|
|
29
|
+
marker(`service.metadata.capabilities.geometryType`)
|
|
30
|
+
marker(`service.metadata.capabilities.keywords`)
|
|
31
|
+
marker(`service.metadata.capabilities.outputFormats`)
|
|
32
|
+
marker(`service.metadata.capabilities.resourceLinks`)
|
|
33
|
+
marker(`service.metadata.capabilities.attribution`)
|
|
34
|
+
|
|
35
|
+
@Component({
|
|
36
|
+
selector: 'gn-ui-service-capabilities',
|
|
37
|
+
standalone: true,
|
|
38
|
+
imports: [
|
|
39
|
+
CommonModule,
|
|
40
|
+
TranslateModule,
|
|
41
|
+
ButtonComponent,
|
|
42
|
+
TextInputComponent,
|
|
43
|
+
NgIcon,
|
|
44
|
+
PopoverComponent,
|
|
45
|
+
SpinningLoaderComponent,
|
|
46
|
+
],
|
|
47
|
+
viewProviders: [
|
|
48
|
+
provideIcons({
|
|
49
|
+
iconoirSearch,
|
|
50
|
+
matInfoOutline,
|
|
51
|
+
}),
|
|
52
|
+
],
|
|
53
|
+
templateUrl: './service-capabilities.component.html',
|
|
54
|
+
styleUrl: './service-capabilities.component.css',
|
|
55
|
+
})
|
|
56
|
+
export class ServiceCapabilitiesComponent implements OnInit {
|
|
57
|
+
@Input() apiLinks = []
|
|
58
|
+
availableLayers = []
|
|
59
|
+
filteredLayers = []
|
|
60
|
+
selectedLayer = null
|
|
61
|
+
layerInformation = []
|
|
62
|
+
searchQuery = ''
|
|
63
|
+
loading = false
|
|
64
|
+
searchActive
|
|
65
|
+
|
|
66
|
+
capabilitiesKeys = [
|
|
67
|
+
'title',
|
|
68
|
+
'abstract',
|
|
69
|
+
'name',
|
|
70
|
+
'defaultCrs',
|
|
71
|
+
'availableCrs',
|
|
72
|
+
'otherCrs',
|
|
73
|
+
'objectCount',
|
|
74
|
+
'geometryName',
|
|
75
|
+
'geometryType',
|
|
76
|
+
'keywords',
|
|
77
|
+
'outputFormats',
|
|
78
|
+
'resourceLinks',
|
|
79
|
+
'attribution',
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
constructor(
|
|
83
|
+
private cdr: ChangeDetectorRef,
|
|
84
|
+
private translateService: TranslateService
|
|
85
|
+
) {}
|
|
86
|
+
|
|
87
|
+
ngOnInit() {
|
|
88
|
+
this.loadLayers()
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
onSearchChange(event: Event) {
|
|
92
|
+
const input = event.target as HTMLInputElement
|
|
93
|
+
this.searchQuery = input.value
|
|
94
|
+
if (!input.value) {
|
|
95
|
+
this.searchActive = false
|
|
96
|
+
this.filteredLayers = this.availableLayers
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
onSearchEnter(event: KeyboardEvent) {
|
|
101
|
+
if (event.key === 'Enter') {
|
|
102
|
+
this.searchActive = true
|
|
103
|
+
this.searchLayers()
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
async loadLayers() {
|
|
108
|
+
if (
|
|
109
|
+
this.apiLinks.length > 0 &&
|
|
110
|
+
this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures'
|
|
111
|
+
) {
|
|
112
|
+
this.loading = true
|
|
113
|
+
this.availableLayers = await getLayers(
|
|
114
|
+
this.apiLinks[0].url.href,
|
|
115
|
+
this.apiLinks[0].accessServiceProtocol
|
|
116
|
+
)
|
|
117
|
+
this.loading = false
|
|
118
|
+
this.cdr.detectChanges()
|
|
119
|
+
this.filteredLayers = this.availableLayers
|
|
120
|
+
} else {
|
|
121
|
+
this.availableLayers = []
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
selectLayer(layer: WfsFeatureTypeFull | WmsLayerFull | WmtsLayer) {
|
|
126
|
+
if (layer === this.selectedLayer) {
|
|
127
|
+
this.selectedLayer = null
|
|
128
|
+
this.layerInformation = []
|
|
129
|
+
return
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
this.selectedLayer = layer
|
|
133
|
+
const filteredInfo = []
|
|
134
|
+
Object.keys(layer).map((key) => {
|
|
135
|
+
if (this.capabilitiesKeys.includes(key)) {
|
|
136
|
+
const displayName = this.translateService.instant(
|
|
137
|
+
`service.metadata.capabilities.${key}`
|
|
138
|
+
)
|
|
139
|
+
if (key in layer && layer[key]?.length) {
|
|
140
|
+
filteredInfo.push({ displayName, value: layer[key] })
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
this.layerInformation = filteredInfo
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
isList(value: string | string[]) {
|
|
149
|
+
return Array.isArray(value)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
getExtraInputClass() {
|
|
153
|
+
if (this.searchActive) {
|
|
154
|
+
return 'h-14 border rounded-lg border-primary text-primary focus:border-primary hover:border-primary'
|
|
155
|
+
}
|
|
156
|
+
return 'h-14 border rounded-lg'
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
searchLayers() {
|
|
160
|
+
this.searchActive = true
|
|
161
|
+
this.filteredLayers = this.availableLayers.filter((layer) => {
|
|
162
|
+
const query = this.searchQuery.toLowerCase()
|
|
163
|
+
if (layer.title) {
|
|
164
|
+
return (
|
|
165
|
+
layer.title.toLowerCase().includes(query) ||
|
|
166
|
+
layer.abstract?.toLowerCase().includes(query)
|
|
167
|
+
)
|
|
168
|
+
} else {
|
|
169
|
+
return layer.name.toLowerCase().includes(query)
|
|
170
|
+
}
|
|
171
|
+
})
|
|
172
|
+
if (!this.filteredLayers.includes(this.selectedLayer)) {
|
|
173
|
+
this.selectedLayer = null
|
|
174
|
+
this.layerInformation = []
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
getExtraClass(layerItem) {
|
|
179
|
+
return layerItem.title === this.selectedLayer?.title
|
|
180
|
+
? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
|
|
181
|
+
: `h-8 rounded-lg`
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -21,6 +21,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
|
|
|
21
21
|
import { UserPreviewComponent } from './user-preview/user-preview.component'
|
|
22
22
|
import { ApplicationBannerComponent } from './application-banner/application-banner.component'
|
|
23
23
|
import { InternalLinkCardComponent } from './internal-link-card/internal-link-card.component'
|
|
24
|
+
import { ServiceCapabilitiesComponent } from './service-capabilities/service-capabilities.component'
|
|
24
25
|
|
|
25
26
|
@NgModule({
|
|
26
27
|
imports: [
|
|
@@ -44,6 +45,7 @@ import { InternalLinkCardComponent } from './internal-link-card/internal-link-ca
|
|
|
44
45
|
ImageInputComponent,
|
|
45
46
|
ApplicationBannerComponent,
|
|
46
47
|
InternalLinkCardComponent,
|
|
48
|
+
ServiceCapabilitiesComponent,
|
|
47
49
|
],
|
|
48
50
|
providers: [
|
|
49
51
|
provideNgIconsConfig({
|
|
@@ -59,6 +61,7 @@ import { InternalLinkCardComponent } from './internal-link-card/internal-link-ca
|
|
|
59
61
|
ImageInputComponent,
|
|
60
62
|
ApplicationBannerComponent,
|
|
61
63
|
InternalLinkCardComponent,
|
|
64
|
+
ServiceCapabilitiesComponent,
|
|
62
65
|
],
|
|
63
66
|
})
|
|
64
67
|
export class UiElementsModule {}
|
|
@@ -31,11 +31,7 @@
|
|
|
31
31
|
*ngFor="let item of items"
|
|
32
32
|
(click)="handleRowClick(item)"
|
|
33
33
|
data-cy="table-row"
|
|
34
|
-
[title]="
|
|
35
|
-
!item.extras?.edit && !isDraftPage
|
|
36
|
-
? ('editor.record.lock.reason' | translate)
|
|
37
|
-
: ''
|
|
38
|
-
"
|
|
34
|
+
[title]="getItemTitle(item) | translate"
|
|
39
35
|
>
|
|
40
36
|
<div
|
|
41
37
|
class="relative h-0"
|
|
@@ -52,9 +48,9 @@
|
|
|
52
48
|
class="table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200"
|
|
53
49
|
[ngClass]="{
|
|
54
50
|
'text-purple-light cursor-default':
|
|
55
|
-
!item.extras?.edit && !isDraftPage,
|
|
51
|
+
(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',
|
|
56
52
|
'group-hover:text-main group-hover:bg-gray-50':
|
|
57
|
-
item.extras?.edit || isDraftPage,
|
|
53
|
+
(item.extras?.edit || isDraftPage) && item.kind === 'dataset',
|
|
58
54
|
}"
|
|
59
55
|
>
|
|
60
56
|
<ng-container
|
|
@@ -12,7 +12,11 @@ import { CommonModule } from '@angular/common'
|
|
|
12
12
|
import { NgIconComponent, provideIcons } from '@ng-icons/core'
|
|
13
13
|
import { iconoirNavArrowDown, iconoirNavArrowUp } from '@ng-icons/iconoir'
|
|
14
14
|
import { TranslateModule } from '@ngx-translate/core'
|
|
15
|
+
import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
16
|
+
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
15
17
|
|
|
18
|
+
marker('editor.record.lock.reason')
|
|
19
|
+
marker('editor.record.lock.format')
|
|
16
20
|
@Component({
|
|
17
21
|
selector: 'gn-ui-interactive-table',
|
|
18
22
|
templateUrl: './interactive-table.component.html',
|
|
@@ -44,6 +48,15 @@ export class InteractiveTableComponent {
|
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
|
|
51
|
+
getItemTitle(item: CatalogRecord) {
|
|
52
|
+
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
53
|
+
return 'editor.record.lock.reason'
|
|
54
|
+
} else if (item.kind !== 'dataset') {
|
|
55
|
+
return 'editor.record.lock.format'
|
|
56
|
+
}
|
|
57
|
+
return ''
|
|
58
|
+
}
|
|
59
|
+
|
|
47
60
|
handleRowClick(item: unknown) {
|
|
48
61
|
this.itemClick.emit(item)
|
|
49
62
|
}
|
|
@@ -3,3 +3,4 @@ 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
|
+
export * from './lib/components/spatial-extent/spatial-extent.component'
|
|
File without changes
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Component, Input } from '@angular/core'
|
|
2
2
|
import { CommonModule } from '@angular/common'
|
|
3
3
|
import { Geometry } from 'geojson'
|
|
4
4
|
import GeoJSON, { GeoJSONFeatureCollection } from 'ol/format/GeoJSON'
|
|
5
|
-
import { DatasetSpatialExtent } from '../../../../../../../../../libs/common/domain/src/lib/model/record'
|
|
6
5
|
import { Polygon } from 'ol/geom'
|
|
7
6
|
import {
|
|
8
7
|
createViewFromLayer,
|
|
9
8
|
MapContext,
|
|
10
9
|
MapContextLayer,
|
|
11
10
|
} from '@geospatial-sdk/core'
|
|
12
|
-
import { MapContainerComponent } from '
|
|
11
|
+
import { MapContainerComponent } from '../map-container/map-container.component'
|
|
13
12
|
import { BehaviorSubject, Observable } from 'rxjs'
|
|
14
13
|
import { switchMap } from 'rxjs/operators'
|
|
14
|
+
import { DatasetSpatialExtent } from '../../../../../../../libs/common/domain/src/lib/model/record'
|
|
15
15
|
|
|
16
16
|
@Component({
|
|
17
|
-
selector: 'gn-ui-
|
|
17
|
+
selector: 'gn-ui-spatial-extent',
|
|
18
18
|
standalone: true,
|
|
19
19
|
imports: [CommonModule, MapContainerComponent],
|
|
20
|
-
templateUrl: './
|
|
21
|
-
|
|
22
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
20
|
+
templateUrl: './spatial-extent.component.html',
|
|
21
|
+
styleUrl: './spatial-extent.component.css',
|
|
23
22
|
})
|
|
24
|
-
export class
|
|
23
|
+
export class SpatialExtentComponent {
|
|
25
24
|
@Input() set spatialExtents(value: DatasetSpatialExtent[]) {
|
|
26
25
|
this.spatialExtents$.next(value)
|
|
27
26
|
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
<ng-icon
|
|
10
10
|
name="iconoirLock"
|
|
11
11
|
class="text-purple"
|
|
12
|
-
*ngIf="!item.extras?.edit && !isDraftPage"
|
|
12
|
+
*ngIf="(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'"
|
|
13
13
|
></ng-icon>
|
|
14
14
|
<gn-ui-checkbox
|
|
15
|
-
*ngIf="item.extras?.edit || isDraftPage"
|
|
15
|
+
*ngIf="(item.extras?.edit || isDraftPage) && item.kind === 'dataset'"
|
|
16
16
|
[checked]="isChecked(item)"
|
|
17
17
|
(changed)="handleRecordSelectedChange($event, item)"
|
|
18
18
|
class="-m-2"
|
|
@@ -149,11 +149,14 @@
|
|
|
149
149
|
(buttonClick)="openActionMenu(item, template)"
|
|
150
150
|
type="light"
|
|
151
151
|
data-test="record-menu-button"
|
|
152
|
-
[disabled]="
|
|
152
|
+
[disabled]="
|
|
153
|
+
(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'
|
|
154
|
+
"
|
|
153
155
|
>
|
|
154
156
|
<ng-icon
|
|
155
157
|
[ngClass]="{
|
|
156
|
-
'text-purple-light':
|
|
158
|
+
'text-purple-light':
|
|
159
|
+
(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',
|
|
157
160
|
}"
|
|
158
161
|
name="matMoreVert"
|
|
159
162
|
></ng-icon>
|
|
@@ -174,8 +174,9 @@ export class ResultsTableComponent {
|
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
handleRecordClick(item: CatalogRecord) {
|
|
177
|
-
if (item?.extras?.edit || this.isDraftPage)
|
|
177
|
+
if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
|
|
178
178
|
this.recordClick.emit(item as CatalogRecord)
|
|
179
|
+
}
|
|
179
180
|
}
|
|
180
181
|
|
|
181
182
|
handleDuplicate(item: unknown) {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
DatasetOnlineResource,
|
|
4
|
+
ServiceOnlineResource,
|
|
5
|
+
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
3
6
|
import { getFileFormat } from './link-utils'
|
|
4
7
|
|
|
5
8
|
export enum LinkUsage {
|
|
@@ -16,8 +19,11 @@ export enum LinkUsage {
|
|
|
16
19
|
providedIn: 'root',
|
|
17
20
|
})
|
|
18
21
|
export class LinkClassifierService {
|
|
19
|
-
getUsagesForLink(
|
|
22
|
+
getUsagesForLink(
|
|
23
|
+
link: DatasetOnlineResource | ServiceOnlineResource
|
|
24
|
+
): LinkUsage[] {
|
|
20
25
|
switch (link.type) {
|
|
26
|
+
case 'endpoint':
|
|
21
27
|
case 'service': {
|
|
22
28
|
switch (link.accessServiceProtocol) {
|
|
23
29
|
case 'esriRest':
|
|
@@ -54,7 +60,10 @@ export class LinkClassifierService {
|
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
|
|
57
|
-
hasUsage(
|
|
63
|
+
hasUsage(
|
|
64
|
+
link: DatasetOnlineResource | ServiceOnlineResource,
|
|
65
|
+
usage: LinkUsage
|
|
66
|
+
) {
|
|
58
67
|
return this.getUsagesForLink(link).indexOf(usage) > -1
|
|
59
68
|
}
|
|
60
69
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
2
2
|
import {
|
|
3
3
|
DatasetOnlineResource,
|
|
4
|
+
ServiceOnlineResource,
|
|
4
5
|
ServiceProtocol,
|
|
5
6
|
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
6
7
|
import {
|
|
@@ -140,7 +141,9 @@ export function getFormatPriority(linkFormat: FileFormat): number {
|
|
|
140
141
|
return 0
|
|
141
142
|
}
|
|
142
143
|
|
|
143
|
-
export function getLinkPriority(
|
|
144
|
+
export function getLinkPriority(
|
|
145
|
+
link: DatasetOnlineResource | ServiceOnlineResource
|
|
146
|
+
): number {
|
|
144
147
|
return getFormatPriority(getFileFormat(link))
|
|
145
148
|
}
|
|
146
149
|
|
|
@@ -164,7 +167,9 @@ export function getFileFormatFromServiceOutput(
|
|
|
164
167
|
return null
|
|
165
168
|
}
|
|
166
169
|
|
|
167
|
-
export function getFileFormat(
|
|
170
|
+
export function getFileFormat(
|
|
171
|
+
link: DatasetOnlineResource | ServiceOnlineResource
|
|
172
|
+
): FileFormat {
|
|
168
173
|
if ('mimeType' in link) {
|
|
169
174
|
const mimeTypeFormat = mimeTypeToFormat(link.mimeType)
|
|
170
175
|
if (mimeTypeFormat !== null) {
|
|
@@ -181,7 +186,7 @@ export function getFileFormat(link: DatasetOnlineResource): FileFormat {
|
|
|
181
186
|
}
|
|
182
187
|
|
|
183
188
|
export function isFormatInQueryParam(
|
|
184
|
-
link: DatasetOnlineResource,
|
|
189
|
+
link: DatasetOnlineResource | ServiceOnlineResource,
|
|
185
190
|
alias: string
|
|
186
191
|
): boolean {
|
|
187
192
|
const queryParams = link.url.searchParams
|
|
@@ -203,7 +208,7 @@ export function mimeTypeToFormat(mimeType: string): FileFormat {
|
|
|
203
208
|
}
|
|
204
209
|
|
|
205
210
|
export function checkFileFormat(
|
|
206
|
-
link: DatasetOnlineResource,
|
|
211
|
+
link: DatasetOnlineResource | ServiceOnlineResource,
|
|
207
212
|
format: FileFormat
|
|
208
213
|
): boolean {
|
|
209
214
|
return (
|
|
@@ -225,7 +230,9 @@ export function getBadgeColor(linkFormat: FileFormat): string {
|
|
|
225
230
|
return 'var(--color-gray-700)' // Default color ?
|
|
226
231
|
}
|
|
227
232
|
|
|
228
|
-
export function getLinkLabel(
|
|
233
|
+
export function getLinkLabel(
|
|
234
|
+
link: DatasetOnlineResource | ServiceOnlineResource
|
|
235
|
+
): string {
|
|
229
236
|
let format = ''
|
|
230
237
|
switch (link.type) {
|
|
231
238
|
case 'service':
|
|
@@ -249,7 +256,7 @@ export function getLinkLabel(link: DatasetOnlineResource): string {
|
|
|
249
256
|
default:
|
|
250
257
|
format = getFileFormat(link)
|
|
251
258
|
}
|
|
252
|
-
const label = link.description || link.name
|
|
259
|
+
const label = link.description || ('name' in link ? link.name : '')
|
|
253
260
|
return format ? `${label} (${format})` : label
|
|
254
261
|
}
|
|
255
262
|
|
|
@@ -261,14 +268,25 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
|
|
|
261
268
|
}
|
|
262
269
|
case 'wfs': {
|
|
263
270
|
const endpointWfs = await new WfsEndpoint(url).isReady()
|
|
264
|
-
|
|
271
|
+
const featureTypes = await endpointWfs.getFeatureTypes()
|
|
272
|
+
const layers = await Promise.all(
|
|
273
|
+
featureTypes.map(async (collection) => {
|
|
274
|
+
return await endpointWfs.getFeatureTypeFull(collection.name)
|
|
275
|
+
})
|
|
276
|
+
)
|
|
277
|
+
return layers
|
|
265
278
|
}
|
|
266
279
|
case 'wms': {
|
|
267
280
|
const endpointWms = await new WmsEndpoint(url).isReady()
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
281
|
+
const layers = (
|
|
282
|
+
await endpointWms
|
|
283
|
+
.getLayers()
|
|
284
|
+
.flatMap(wmsLayerFlatten)
|
|
285
|
+
.filter((l) => l.name)
|
|
286
|
+
).map((collection) => {
|
|
287
|
+
return endpointWms.getLayerByName(collection.name)
|
|
288
|
+
})
|
|
289
|
+
return layers
|
|
272
290
|
}
|
|
273
291
|
case 'wmts': {
|
|
274
292
|
const endpointWmts = await new WmtsEndpoint(url).isReady()
|
|
@@ -279,7 +297,7 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
|
|
|
279
297
|
}
|
|
280
298
|
}
|
|
281
299
|
|
|
282
|
-
function wmsLayerFlatten(layerFull) {
|
|
300
|
+
export function wmsLayerFlatten(layerFull) {
|
|
283
301
|
const layer = {
|
|
284
302
|
title: layerFull.title,
|
|
285
303
|
name: layerFull.name,
|
package/tailwind.base.css
CHANGED
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
|
|
95
95
|
.gn-ui-btn-default {
|
|
96
96
|
@apply gn-ui-btn text-white
|
|
97
|
-
bg-gray-700 hover:bg-gray-800 active:bg-gray-900
|
|
98
|
-
border-gray-700 focus:ring-4 focus:ring-gray-200;
|
|
97
|
+
bg-gray-700 hover:bg-gray-800 hover:!text-white active:bg-gray-900
|
|
98
|
+
border-gray-700 focus:ring-4 focus:ring-gray-200 focus:text-gray-900;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
.gn-ui-btn-primary {
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
|
|
231
231
|
/* Section title */
|
|
232
232
|
.gn-ui-section-title {
|
|
233
|
-
@apply text-title font-medium pt-9 text-[28px]
|
|
233
|
+
@apply text-title font-medium pt-9 text-[28px];
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
|
package/translations/de.json
CHANGED
|
@@ -233,6 +233,7 @@
|
|
|
233
233
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
234
234
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
235
235
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
236
|
+
"editor.record.lock.format": "",
|
|
236
237
|
"editor.record.lock.reason": "",
|
|
237
238
|
"editor.record.onlineResource.protocol.other": "",
|
|
238
239
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -292,7 +293,6 @@
|
|
|
292
293
|
"input.image.dropFileLabel": "",
|
|
293
294
|
"input.image.selectFileLabel": "",
|
|
294
295
|
"input.image.uploadErrorLabel": "",
|
|
295
|
-
"input.image.uploadErrorRetry": "",
|
|
296
296
|
"input.image.uploadProgressCancel": "",
|
|
297
297
|
"input.image.uploadProgressLabel": "",
|
|
298
298
|
"language.ca": "Katalanisch",
|
|
@@ -359,6 +359,7 @@
|
|
|
359
359
|
"record.card.metadata.contact": "",
|
|
360
360
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
361
361
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
362
|
+
"record.kind.data": "",
|
|
362
363
|
"record.kind.dataset": "",
|
|
363
364
|
"record.kind.reuse": "",
|
|
364
365
|
"record.kind.service": "",
|
|
@@ -432,13 +433,12 @@
|
|
|
432
433
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
433
434
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
434
435
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
435
|
-
"record.metadata.related.contents": "
|
|
436
|
+
"record.metadata.related.contents": "",
|
|
436
437
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
437
438
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
438
439
|
"record.metadata.status": "Status",
|
|
439
440
|
"record.metadata.status.notPublished": "",
|
|
440
441
|
"record.metadata.status.published": "",
|
|
441
|
-
"record.metadata.technical": "Technische Informationen",
|
|
442
442
|
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
443
443
|
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
444
444
|
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
@@ -475,6 +475,7 @@
|
|
|
475
475
|
"results.sortBy.popularity": "Beliebtheit",
|
|
476
476
|
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
477
477
|
"results.sortBy.relevancy": "Relevanz",
|
|
478
|
+
"reuse.metadata.access": "",
|
|
478
479
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
479
480
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
480
481
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -524,6 +525,26 @@
|
|
|
524
525
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
525
526
|
"search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
|
|
526
527
|
"search.filters.user": "Editor",
|
|
528
|
+
"service.metadata.capabilities": "",
|
|
529
|
+
"service.metadata.capabilities.abstract": "",
|
|
530
|
+
"service.metadata.capabilities.attribution": "",
|
|
531
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
532
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
533
|
+
"service.metadata.capabilities.geometryName": "",
|
|
534
|
+
"service.metadata.capabilities.geometryType": "",
|
|
535
|
+
"service.metadata.capabilities.keywords": "",
|
|
536
|
+
"service.metadata.capabilities.name": "",
|
|
537
|
+
"service.metadata.capabilities.objectCount": "",
|
|
538
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
539
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
540
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
541
|
+
"service.metadata.capabilities.title": "",
|
|
542
|
+
"service.metadata.filter": "",
|
|
543
|
+
"service.metadata.filter.noLayers": "",
|
|
544
|
+
"service.metadata.other": "",
|
|
545
|
+
"service.metadata.question": "",
|
|
546
|
+
"service.metadata.search": "",
|
|
547
|
+
"service.metadata.spatialExtent": "",
|
|
527
548
|
"share.tab.permalink": "Teilen",
|
|
528
549
|
"share.tab.webComponent": "Integrieren",
|
|
529
550
|
"table.loading.data": "Daten werden geladen...",
|