geonetwork-ui 2.6.0-dev.01d2b5fc0 → 2.6.0-dev.502fa026d

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 (64) 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/map/src/lib/components/map-container/map-container.component.mjs +14 -3
  12. package/esm2022/libs/ui/map/src/lib/components/map-legend/map-legend.component.mjs +5 -1
  13. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +6 -2
  14. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +4 -1
  15. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +30 -2
  16. package/esm2022/translations/de.json +1 -0
  17. package/esm2022/translations/en.json +1 -0
  18. package/esm2022/translations/es.json +1 -0
  19. package/esm2022/translations/fr.json +1 -0
  20. package/esm2022/translations/it.json +1 -0
  21. package/esm2022/translations/nl.json +1 -0
  22. package/esm2022/translations/pt.json +1 -0
  23. package/fesm2022/geonetwork-ui.mjs +121 -34
  24. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  25. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  26. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  27. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +17 -2
  28. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  29. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  30. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +1 -1
  31. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  32. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +7 -2
  33. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  34. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +4 -2
  35. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
  36. package/libs/ui/map/src/lib/components/map-legend/map-legend.component.d.ts.map +1 -1
  37. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  38. package/libs/util/data-fetcher/src/lib/model.d.ts +3 -2
  39. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  40. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +1 -0
  41. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -12
  44. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +16 -1
  45. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +18 -2
  46. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +1 -0
  47. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -0
  48. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +10 -8
  49. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -3
  50. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -0
  51. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +36 -7
  52. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +14 -0
  53. package/src/libs/ui/map/src/lib/components/map-legend/map-legend.component.ts +3 -0
  54. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +3 -1
  55. package/src/libs/util/data-fetcher/src/lib/model.ts +11 -1
  56. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +29 -3
  57. package/translations/de.json +1 -0
  58. package/translations/en.json +1 -0
  59. package/translations/es.json +1 -0
  60. package/translations/fr.json +1 -0
  61. package/translations/it.json +1 -0
  62. package/translations/nl.json +1 -0
  63. package/translations/pt.json +1 -0
  64. package/translations/sk.json +1 -0
@@ -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
@@ -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 }\"",
@@ -68,6 +68,7 @@
68
68
  "datahub.search.filter.generatedByAPI": "Generated by an API",
69
69
  "datahub.search.filter.generatedByWfs": "",
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 }\"",
@@ -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": "",
@@ -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 }\"",
@@ -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}\"",
@@ -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": "",
@@ -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": "",
@@ -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 }\"",