geonetwork-ui 2.6.0-dev.01d2b5fc0 → 2.6.0-dev.0716b5712

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.
Files changed (93) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +18 -11
  2. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  3. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -3
  4. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  5. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -1
  6. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +3 -3
  7. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +1 -1
  8. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
  9. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +2 -4
  10. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +40 -14
  11. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +27 -6
  12. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +22 -6
  13. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  14. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +29 -7
  15. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  16. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -2
  17. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  18. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +14 -3
  19. package/esm2022/libs/ui/map/src/lib/components/map-legend/map-legend.component.mjs +5 -1
  20. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +6 -2
  21. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +4 -1
  22. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +30 -2
  23. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +21 -19
  24. package/esm2022/translations/de.json +3 -0
  25. package/esm2022/translations/en.json +4 -1
  26. package/esm2022/translations/es.json +3 -0
  27. package/esm2022/translations/fr.json +3 -0
  28. package/esm2022/translations/it.json +3 -1
  29. package/esm2022/translations/nl.json +3 -0
  30. package/esm2022/translations/pt.json +3 -0
  31. package/fesm2022/geonetwork-ui.mjs +237 -78
  32. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  33. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  34. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  35. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +18 -2
  36. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  37. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  38. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +1 -1
  39. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  40. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +7 -2
  41. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  42. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts +9 -1
  43. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  44. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +8 -1
  45. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  46. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +10 -2
  47. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  48. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  49. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +4 -2
  50. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
  51. package/libs/ui/map/src/lib/components/map-legend/map-legend.component.d.ts.map +1 -1
  52. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  53. package/libs/util/data-fetcher/src/lib/model.d.ts +3 -2
  54. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  55. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +1 -0
  56. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  57. package/libs/util/shared/src/lib/links/link-utils.d.ts +16 -16
  58. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  59. package/package.json +1 -1
  60. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -12
  61. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +17 -1
  62. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +18 -2
  63. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +1 -0
  64. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -0
  65. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +10 -8
  66. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -3
  67. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -0
  68. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +36 -7
  69. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +64 -38
  70. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +26 -2
  71. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +17 -17
  72. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +20 -2
  73. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +7 -6
  74. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +27 -29
  75. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +33 -3
  76. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +1 -1
  77. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -1
  78. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -4
  79. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +14 -0
  80. package/src/libs/ui/map/src/lib/components/map-legend/map-legend.component.ts +3 -0
  81. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +3 -1
  82. package/src/libs/util/data-fetcher/src/lib/model.ts +11 -1
  83. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +29 -3
  84. package/src/libs/util/shared/src/lib/links/link-utils.ts +20 -18
  85. package/tailwind.base.css +34 -1
  86. package/translations/de.json +3 -0
  87. package/translations/en.json +4 -1
  88. package/translations/es.json +3 -0
  89. package/translations/fr.json +3 -0
  90. package/translations/it.json +3 -1
  91. package/translations/nl.json +3 -0
  92. package/translations/pt.json +3 -0
  93. package/translations/sk.json +3 -0
@@ -1,7 +1,3 @@
1
- :host .carousel-container ::ng-deep > * {
2
- flex-shrink: 0;
3
- }
4
-
5
1
  :host {
6
2
  position: relative;
7
3
  display: block;
@@ -28,6 +28,8 @@ import {
28
28
  MapContextLayer,
29
29
  MapContextLayerXyz,
30
30
  MapContextView,
31
+ SourceLoadErrorEvent,
32
+ SourceLoadErrorType,
31
33
  } from '@geospatial-sdk/core'
32
34
  import {
33
35
  applyContextDiffToMap,
@@ -119,6 +121,18 @@ export class MapContainerComponent implements AfterViewInit, OnChanges {
119
121
  }
120
122
  return this._mapClick
121
123
  }
124
+ _sourceLoadError: EventEmitter<SourceLoadErrorEvent>
125
+ @Output() get sourceLoadError() {
126
+ if (!this._sourceLoadError) {
127
+ this.openlayersMap.then((olMap) => {
128
+ listen(olMap, SourceLoadErrorType, (error: SourceLoadErrorEvent) =>
129
+ this._sourceLoadError.emit(error)
130
+ )
131
+ })
132
+ this._sourceLoadError = new EventEmitter<SourceLoadErrorEvent>()
133
+ }
134
+ return this._sourceLoadError
135
+ }
122
136
 
123
137
  @ViewChild('map') container: ElementRef
124
138
  displayMessage$: Observable<boolean>
@@ -33,6 +33,9 @@ export class MapLegendComponent implements OnChanges {
33
33
  if (this.legendHTML) {
34
34
  this.legendStatusChange.emit(true)
35
35
  }
36
+ } else {
37
+ this.legendHTML = false
38
+ this.legendStatusChange.emit(false)
36
39
  }
37
40
  }
38
41
  }
@@ -53,7 +53,9 @@ export async function openDataset(
53
53
  reader.load()
54
54
  return reader
55
55
  } catch (e: any) {
56
- throw FetchError.parsingFailed(e.message)
56
+ //WfsReader may already raise a FetchError
57
+ if (e instanceof FetchError) throw e
58
+ else throw FetchError.parsingFailed(e.message)
57
59
  }
58
60
  }
59
61
 
@@ -7,7 +7,14 @@ export class FetchError {
7
7
  stack = null
8
8
 
9
9
  constructor(
10
- public type: 'http' | 'network' | 'parse' | 'unsupportedType' | 'unknown',
10
+ public type:
11
+ | 'http'
12
+ | 'forbidden'
13
+ | 'network'
14
+ | 'parse'
15
+ | 'unsupportedType'
16
+ | 'unknown',
17
+
11
18
  public info: string,
12
19
  public httpStatus = 0
13
20
  ) {
@@ -20,6 +27,9 @@ ${body}`
20
27
  : `${code}`
21
28
  return new FetchError('http', info, code)
22
29
  }
30
+ static forbidden(code: number) {
31
+ return new FetchError('forbidden', '', code)
32
+ }
23
33
  static corsOrNetwork(message: string) {
24
34
  return new FetchError('network', message, 0)
25
35
  }
@@ -1,5 +1,5 @@
1
- import { WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client'
2
- import { DataItem, DatasetInfo, PropertyInfo } from '../model'
1
+ import { EndpointError, WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client'
2
+ import { DataItem, DatasetInfo, FetchError, PropertyInfo } from '../model'
3
3
  import { fetchDataAsText } from '../utils'
4
4
  import { GmlReader, parseGml } from './gml'
5
5
  import { GeojsonReader, parseGeojson } from './geojson'
@@ -7,6 +7,32 @@ import { BaseCacheReader } from './base-cache'
7
7
  import { getJsonDataItemsProxy, jsonToGeojsonFeature } from '../utils'
8
8
  import { generateSqlQuery } from '../sql-utils'
9
9
 
10
+ export async function getWfsEndpoint(wfsUrl: string): Promise<WfsEndpoint> {
11
+ try {
12
+ return await new WfsEndpoint(wfsUrl).isReady()
13
+ } catch (e) {
14
+ if (
15
+ e instanceof Error &&
16
+ 'isCrossOriginRelated' in e &&
17
+ 'httpStatus' in e
18
+ ) {
19
+ const error = e as EndpointError
20
+ if (error.isCrossOriginRelated === true) {
21
+ throw new Error(`wfs.unreachable.cors`)
22
+ }
23
+ if (error.httpStatus === 401 || error.httpStatus === 403) {
24
+ throw FetchError.forbidden(error.httpStatus)
25
+ } else if (error.httpStatus === 400 || error.httpStatus > 403) {
26
+ throw FetchError.http(error.httpStatus)
27
+ } else {
28
+ throw FetchError.unknownType()
29
+ }
30
+ } else {
31
+ throw FetchError.unknownType()
32
+ }
33
+ }
34
+ }
35
+
10
36
  export class WfsReader extends BaseCacheReader {
11
37
  endpoint: WfsEndpoint
12
38
  featureTypeName: string
@@ -53,7 +79,7 @@ export class WfsReader extends BaseCacheReader {
53
79
  }
54
80
 
55
81
  static async createReader(wfsUrlEndpoint: string, featureTypeName?: string) {
56
- const wfsEndpoint = await new WfsEndpoint(wfsUrlEndpoint).isReady()
82
+ const wfsEndpoint = await getWfsEndpoint(wfsUrlEndpoint)
57
83
  const featureTypes = wfsEndpoint.getFeatureTypes()
58
84
  const featureType = wfsEndpoint.getFeatureTypeSummary(
59
85
  featureTypes.length === 1 && !featureTypeName
@@ -16,7 +16,7 @@ export const FORMATS = {
16
16
  csv: {
17
17
  extensions: ['csv'],
18
18
  priority: 1,
19
- color: '#a6d6c0',
19
+ color: '#F6A924',
20
20
  mimeTypes: ['text/csv', 'application/csv'],
21
21
  },
22
22
  excel: {
@@ -28,7 +28,7 @@ export const FORMATS = {
28
28
  'openxmlformats-officedocument',
29
29
  ],
30
30
  priority: 2,
31
- color: '#acc5e4',
31
+ color: '#FFDE10',
32
32
  mimeTypes: [
33
33
  'application/vnd.ms-excel',
34
34
  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
@@ -37,31 +37,31 @@ export const FORMATS = {
37
37
  geojson: {
38
38
  extensions: ['geojson'],
39
39
  priority: 3,
40
- color: '#b3cde8',
40
+ color: '#293C6F',
41
41
  mimeTypes: ['application/geo+json', 'application/vnd.geo+json'],
42
42
  },
43
43
  json: {
44
44
  extensions: ['json'],
45
45
  priority: 3,
46
- color: '#b3cde8',
46
+ color: '#84D0F0',
47
47
  mimeTypes: ['application/json'],
48
48
  },
49
49
  shp: {
50
50
  extensions: ['shp', 'shape', 'zipped-shapefile'],
51
51
  priority: 4,
52
- color: '#b2d8ba',
52
+ color: '#009036',
53
53
  mimeTypes: ['x-gis/x-shapefile'],
54
54
  },
55
55
  gml: {
56
56
  extensions: ['gml'],
57
57
  priority: 5,
58
- color: '#e3b3e5',
58
+ color: '#E75113',
59
59
  mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
60
60
  },
61
61
  kml: {
62
62
  extensions: ['kml', 'kmz'],
63
63
  priority: 6,
64
- color: '#c1e6a0',
64
+ color: '#F4B5D0',
65
65
  mimeTypes: [
66
66
  'application/vnd.google-earth.kml+xml',
67
67
  'application/vnd.google-earth.kmz',
@@ -70,55 +70,55 @@ export const FORMATS = {
70
70
  gpkg: {
71
71
  extensions: ['gpkg', 'geopackage'],
72
72
  priority: 7,
73
- color: '#f7cce6',
73
+ color: '#7D5D9F',
74
74
  mimeTypes: ['application/geopackage+sqlite3'],
75
75
  },
76
76
  zip: {
77
77
  extensions: ['zip', 'tar.gz'],
78
78
  priority: 8,
79
- color: '#ffe7a3',
79
+ color: '#B0CB52',
80
80
  mimeTypes: ['application/zip', 'application/x-zip'],
81
81
  },
82
82
  pdf: {
83
83
  extensions: ['pdf'],
84
84
  priority: 9,
85
- color: '#f5b2a3',
85
+ color: '#49579E',
86
86
  mimeTypes: ['application/pdf'],
87
87
  },
88
88
  jpg: {
89
89
  extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
90
90
  priority: 9,
91
- color: '#d1c1e9',
91
+ color: '#C4A98F',
92
92
  mimeTypes: ['image/jpg'],
93
93
  },
94
94
  svg: {
95
95
  extensions: ['svg'],
96
96
  priority: 10,
97
- color: '#f3c1c9',
97
+ color: '#EB6D82',
98
98
  mimeTypes: ['image/svg+xml'],
99
99
  },
100
100
  dxf: {
101
101
  extensions: ['dxf'],
102
102
  priority: 11,
103
- color: '#f6ceac',
103
+ color: '#DCCD00',
104
104
  mimeTypes: ['application/x-dxf', 'image/x-dxf'],
105
105
  },
106
106
  html: {
107
107
  extensions: ['html', 'htm'],
108
108
  priority: 12,
109
- color: '#FFF2CC',
109
+ color: '#C0C9B6',
110
110
  mimeTypes: ['text/html'],
111
111
  },
112
112
  fgb: {
113
113
  extensions: ['fgb', 'flatgeobuf'],
114
114
  priority: 13,
115
- color: '#ffe7a3',
115
+ color: '#A8111C',
116
116
  mimeTypes: ['application/flatgeobuf'],
117
117
  },
118
118
  jsonfg: {
119
119
  extensions: ['jsonfg', 'jsonfgc'],
120
120
  priority: 14,
121
- color: '#ffe7a3',
121
+ color: '#009EE0',
122
122
  mimeTypes: [
123
123
  'application/vnd.ogc.fg+json',
124
124
  'application/vnd.ogc.fg+json;compatibility=geojson',
@@ -207,9 +207,11 @@ export function checkFileFormat(
207
207
  format: FileFormat
208
208
  ): boolean {
209
209
  return (
210
- ('name' in link && new RegExp(`[./]${format}`, 'i').test(link.name)) ||
210
+ ('name' in link &&
211
+ new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
211
212
  ('url' in link &&
212
- new RegExp(`[./]${format}`, 'i').test(link.url.toString()))
213
+ new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
214
+ ('name' in link && link.name.toLowerCase().includes(format))
213
215
  )
214
216
  }
215
217
 
package/tailwind.base.css CHANGED
@@ -129,6 +129,34 @@
129
129
  border border-white focus:ring-4 focus:ring-gray-300;
130
130
  }
131
131
 
132
+ .gn-ui-card-xs {
133
+ @apply min-h-[68px] md:w-[487px];
134
+ }
135
+
136
+ .gn-ui-card-s {
137
+ @apply min-h-[135px] md:w-80;
138
+ }
139
+
140
+ .gn-ui-card-m {
141
+ @apply min-h-[68px] md:w-[487px];
142
+ }
143
+
144
+ .gn-ui-card-l {
145
+ @apply min-h-[68px] md:w-[992px];
146
+ }
147
+
148
+ .gn-ui-card-title {
149
+ @apply font-title font-medium text-black text-ellipsis overflow-hidden break-words line-clamp-3;
150
+ }
151
+
152
+ .gn-ui-card-icon {
153
+ @apply flex border border-gray-300 rounded-lg py-1 px-2 align-middle;
154
+ }
155
+
156
+ .gn-ui-card-detail {
157
+ @apply font-medium text-gray-500 text-ellipsis break-words text-sm;
158
+ }
159
+
132
160
  /* DROPDOWN MULTISELECT CLASS */
133
161
  .gn-ui-multiselect-counter {
134
162
  --text-color: var(--gn-ui-multiselect-counter-text-color, white);
@@ -186,7 +214,7 @@
186
214
 
187
215
  /* TODO: add prefix */
188
216
  .card-icon {
189
- @apply text-primary opacity-50 group-hover:text-secondary group-hover:opacity-100 transition-colors transition-opacity;
217
+ @apply text-black group-hover:text-primary-darkest transition-colors;
190
218
  }
191
219
 
192
220
  /* makes spinners appear in the right color */
@@ -194,6 +222,11 @@
194
222
  mat-progress-spinner circle {
195
223
  stroke: currentColor !important;
196
224
  }
225
+
226
+ /* Section title */
227
+ .gn-ui-section-title {
228
+ @apply text-title font-medium pt-9 text-[28px] container-lg px-4 lg:mx-auto;
229
+ }
197
230
  }
198
231
 
199
232
  html {
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "Generiert durch eine API",
69
69
  "datahub.search.filter.generatedByWfs": "",
70
70
  "datahub.search.filter.others": "Andere",
71
+ "dataset.error.forbidden": "Der Zugriff auf diese Ressource ist eingeschränkt",
71
72
  "dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
72
73
  "dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
73
74
  "dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
425
426
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
426
427
  "record.metadata.related": "Ähnliche Datensätze",
428
+ "record.metadata.related.contents": "Verwandte Inhalte",
429
+ "record.metadata.ressources.and.links": "Ressourcen und Links",
427
430
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
428
431
  "record.metadata.status": "Status",
429
432
  "record.metadata.status.notPublished": "",
@@ -66,8 +66,9 @@
66
66
  "datahub.search.back": "Back",
67
67
  "datahub.search.filter.all": "All",
68
68
  "datahub.search.filter.generatedByAPI": "Generated by an API",
69
- "datahub.search.filter.generatedByWfs": "",
69
+ "datahub.search.filter.generatedByWfs": "Generated by a WFS",
70
70
  "datahub.search.filter.others": "Others",
71
+ "dataset.error.forbidden": "Access to this resource is restricted",
71
72
  "dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
72
73
  "dataset.error.network": "The data could not be loaded because of a network error or CORS limitations: \"{ info }\"",
73
74
  "dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
425
426
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
426
427
  "record.metadata.related": "Related datasets",
428
+ "record.metadata.related.contents": "Related contents",
429
+ "record.metadata.ressources.and.links": "Resources and links",
427
430
  "record.metadata.sheet": "Original metadata",
428
431
  "record.metadata.status": "Status",
429
432
  "record.metadata.status.notPublished": "Not published",
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "",
69
69
  "datahub.search.filter.generatedByWfs": "",
70
70
  "datahub.search.filter.others": "",
71
+ "dataset.error.forbidden": "El acceso a este recurso está restringido",
71
72
  "dataset.error.http": "",
72
73
  "dataset.error.network": "",
73
74
  "dataset.error.parse": "",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "",
425
426
  "record.metadata.quality.updateFrequency.success": "",
426
427
  "record.metadata.related": "",
428
+ "record.metadata.related.contents": "Contenidos relacionados",
429
+ "record.metadata.ressources.and.links": "Recursos y enlaces",
427
430
  "record.metadata.sheet": "",
428
431
  "record.metadata.status": "",
429
432
  "record.metadata.status.notPublished": "",
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "généré par une API",
69
69
  "datahub.search.filter.generatedByWfs": "généré par un WFS",
70
70
  "datahub.search.filter.others": "Autres",
71
+ "dataset.error.forbidden": "L’accès à cette ressource est restreint",
71
72
  "dataset.error.http": "Le chargement des données a échoué en raison d'une erreur HTTP: \"{ info }\"",
72
73
  "dataset.error.network": "Le chargement des données a échoué en raison d'une erreur réseau ou de limitations CORS: \"{ info }\"",
73
74
  "dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
425
426
  "record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
426
427
  "record.metadata.related": "Voir aussi",
428
+ "record.metadata.related.contents": "Contenus associés",
429
+ "record.metadata.ressources.and.links": "Ressources et liens",
427
430
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
428
431
  "record.metadata.status": "Statut",
429
432
  "record.metadata.status.notPublished": "Non publié",
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "generato da un'API",
69
69
  "datahub.search.filter.generatedByWfs": "generato da un WFS",
70
70
  "datahub.search.filter.others": "Altri",
71
+ "dataset.error.forbidden": "L'accesso a questa risorsa è limitato",
71
72
  "dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
72
73
  "dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
73
74
  "dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
425
426
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
426
427
  "record.metadata.related": "Vedi anche",
428
+ "record.metadata.related.contents": "Contenuti correlati",
429
+ "record.metadata.ressources.and.links": "Risorse e collegamenti",
427
430
  "record.metadata.sheet": "Origine del metadata",
428
431
  "record.metadata.status": "Stato",
429
432
  "record.metadata.status.notPublished": "Non pubblicato",
@@ -531,7 +534,6 @@
531
534
  "tooltip.url.open": "Aprire l'URL",
532
535
  "ui.readLess": "Ridurre",
533
536
  "ui.readMore": "Leggere di più",
534
- "wfs.aggregations.notsupported": "Aggregazioni non supportate per i servizi WFS",
535
537
  "wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
536
538
  "wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
537
539
  "wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "",
69
69
  "datahub.search.filter.generatedByWfs": "",
70
70
  "datahub.search.filter.others": "",
71
+ "dataset.error.forbidden": "",
71
72
  "dataset.error.http": "",
72
73
  "dataset.error.network": "",
73
74
  "dataset.error.parse": "",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "",
425
426
  "record.metadata.quality.updateFrequency.success": "",
426
427
  "record.metadata.related": "",
428
+ "record.metadata.related.contents": "Gerelateerde inhoud",
429
+ "record.metadata.ressources.and.links": "Bronnen en links",
427
430
  "record.metadata.sheet": "",
428
431
  "record.metadata.status": "",
429
432
  "record.metadata.status.notPublished": "",
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "",
69
69
  "datahub.search.filter.generatedByWfs": "",
70
70
  "datahub.search.filter.others": "",
71
+ "dataset.error.forbidden": "",
71
72
  "dataset.error.http": "",
72
73
  "dataset.error.network": "",
73
74
  "dataset.error.parse": "",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "",
425
426
  "record.metadata.quality.updateFrequency.success": "",
426
427
  "record.metadata.related": "",
428
+ "record.metadata.related.contents": "Conteúdos relacionados",
429
+ "record.metadata.ressources.and.links": "Recursos e links",
427
430
  "record.metadata.sheet": "",
428
431
  "record.metadata.status": "",
429
432
  "record.metadata.status.notPublished": "",
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "vygenerované cez API",
69
69
  "datahub.search.filter.generatedByWfs": "",
70
70
  "datahub.search.filter.others": "Iné",
71
+ "dataset.error.forbidden": "",
71
72
  "dataset.error.http": "Dáta sa nedajú načítať kvôli chybe HTTP: \"{ info }\"",
72
73
  "dataset.error.network": "Dáta sa nedajú načítať kvôli chybe v sieti alebo obmedzeniam CORS: \"{ info }\"",
73
74
  "dataset.error.parse": "Dáta boli načítané, ale nedajú sa analyzovať: \"{ info }\"",
@@ -424,6 +425,8 @@
424
425
  "record.metadata.quality.updateFrequency.failed": "Frekvencia aktualizácie nie je určená",
425
426
  "record.metadata.quality.updateFrequency.success": "Frekvencia aktualizácie je určená",
426
427
  "record.metadata.related": "Súvisiace záznamy",
428
+ "record.metadata.related.contents": "Související obsah",
429
+ "record.metadata.ressources.and.links": "Prostředky a odkazy",
427
430
  "record.metadata.sheet": "Ďalšie metadáta sú k dispozícii na:",
428
431
  "record.metadata.status": "Stav",
429
432
  "record.metadata.status.notPublished": "",