geonetwork-ui 2.8.0-dev.c06b26576 → 2.8.0-dev.e22966206

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 (123) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +5 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
  5. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
  6. package/esm2022/libs/common/domain/src/index.mjs +3 -0
  7. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  8. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +3 -1
  9. package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
  10. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  11. package/esm2022/libs/feature/dataviz/src/index.mjs +2 -1
  12. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
  13. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +18 -7
  14. package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +22 -0
  15. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  16. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  17. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +2 -1
  18. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
  19. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
  20. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
  21. package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +11 -4
  22. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  23. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
  24. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  25. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -1
  26. package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +9 -11
  27. package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
  28. package/esm2022/translations/de.json +10 -3
  29. package/esm2022/translations/en.json +10 -4
  30. package/esm2022/translations/es.json +9 -2
  31. package/esm2022/translations/fr.json +10 -3
  32. package/esm2022/translations/it.json +11 -4
  33. package/esm2022/translations/nl.json +9 -2
  34. package/esm2022/translations/pt.json +9 -2
  35. package/esm2022/translations/sk.json +10 -3
  36. package/fesm2022/geonetwork-ui.mjs +224 -80
  37. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  38. package/index.d.ts +1 -0
  39. package/index.d.ts.map +1 -1
  40. package/index.ts +1 -0
  41. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  42. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  43. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
  44. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  45. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  46. package/libs/common/domain/src/index.d.ts +3 -0
  47. package/libs/common/domain/src/index.d.ts.map +1 -0
  48. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
  49. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  50. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +1 -1
  51. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  52. package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
  53. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  54. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  55. package/libs/feature/dataviz/src/index.d.ts +1 -0
  56. package/libs/feature/dataviz/src/index.d.ts.map +1 -1
  57. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  58. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  59. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +11 -0
  60. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
  61. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  62. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  63. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  64. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  65. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +24 -24
  66. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  67. package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
  68. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  69. package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
  70. package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
  71. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
  72. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  73. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  74. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +3 -2
  75. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -1
  76. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  77. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  78. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -0
  79. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  80. package/libs/util/shared/src/lib/services/proxy.service.d.ts +5 -4
  81. package/libs/util/shared/src/lib/services/proxy.service.d.ts.map +1 -1
  82. package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
  83. package/package.json +1 -1
  84. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +2 -0
  85. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -0
  86. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
  87. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
  88. package/src/libs/common/domain/src/index.ts +2 -0
  89. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
  90. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +4 -0
  91. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
  92. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
  93. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
  94. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +19 -0
  95. package/src/libs/feature/dataviz/src/index.ts +1 -0
  96. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
  97. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +16 -5
  98. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.css +0 -0
  99. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +5 -0
  100. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +27 -0
  101. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  102. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  103. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +11 -1
  104. package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
  105. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
  106. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
  107. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.html +43 -22
  108. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.ts +12 -3
  109. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +56 -14
  110. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
  111. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -0
  112. package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -0
  113. package/src/libs/util/shared/src/lib/services/proxy.service.ts +6 -2
  114. package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
  115. package/translations/de.json +10 -3
  116. package/translations/en.json +10 -4
  117. package/translations/es.json +9 -2
  118. package/translations/fr.json +10 -3
  119. package/translations/it.json +11 -4
  120. package/translations/nl.json +9 -2
  121. package/translations/pt.json +9 -2
  122. package/translations/sk.json +10 -3
  123. package/src/libs/common/domain/src/lib/index.ts +0 -2
@@ -1,15 +1,48 @@
1
- <a
2
- [href]="link.url"
3
- target="_blank"
4
- class="group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden"
5
- [ngClass]="cardClass"
6
- [title]="title"
7
- >
1
+ <ng-container *ngIf="isDatabase; else clickableLink">
2
+ <div [ngClass]="cardClass" [title]="title">
3
+ <ng-container *ngTemplateOutlet="cardContent"></ng-container>
4
+ <div
5
+ class="flex min-w-[32px]"
6
+ [ngClass]="size === 'S' ? 'items-end' : 'items-center'"
7
+ >
8
+ <div
9
+ class="gn-ui-card-icon"
10
+ [title]="'record.metadata.link.postgis.tooltip' | translate"
11
+ >
12
+ <ng-icon
13
+ class="inline-block card-icon align-middle"
14
+ name="iconoirDatabase"
15
+ ></ng-icon>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ </ng-container>
20
+
21
+ <ng-template #clickableLink>
22
+ <a [href]="link.url" target="_blank" [ngClass]="cardClass" [title]="title">
23
+ <ng-container *ngTemplateOutlet="cardContent"></ng-container>
24
+ <div
25
+ class="flex min-w-[32px]"
26
+ [ngClass]="size === 'S' ? 'items-end' : 'items-center'"
27
+ >
28
+ <div class="gn-ui-card-icon">
29
+ <ng-icon
30
+ class="inline-block card-icon align-middle"
31
+ name="matOpenInNew"
32
+ ></ng-icon>
33
+ </div>
34
+ </div>
35
+ </a>
36
+ </ng-template>
37
+ <ng-template #cardContent>
8
38
  <div class="flex flex-col justify-between flex-1 min-w-0">
9
39
  <div class="gn-ui-card-title">
10
40
  {{ link.description || link.name }}
11
41
  </div>
12
42
  <div class="gn-ui-card-detail">
43
+ <ng-container *ngIf="isDatabase">
44
+ {{ 'record.metadata.link.postgis.table' | translate }}
45
+ </ng-container>
13
46
  {{ link.name }}
14
47
  </div>
15
48
  <p *ngIf="!link.name && !link.description" class="gn-ui-card-title">
@@ -20,21 +53,9 @@
20
53
  class="inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100"
21
54
  [style.background-color]="getLinkColor(link)"
22
55
  data-cy="download-format"
23
- >{{
24
- getLinkFormat(link) || ('downloads.format.unknown' | translate)
25
- }}</span
26
56
  >
57
+ {{ getLinkFormat(link) || ('downloads.format.unknown' | translate) }}
58
+ </span>
27
59
  </div>
28
60
  </div>
29
- <div
30
- class="flex min-w-[32px]"
31
- [ngClass]="size === 'S' ? 'items-end' : 'items-center'"
32
- >
33
- <div class="gn-ui-card-icon">
34
- <ng-icon
35
- class="inline-block card-icon align-middle"
36
- name="matOpenInNew"
37
- ></ng-icon>
38
- </div>
39
- </div>
40
- </a>
61
+ </ng-template>
@@ -7,6 +7,7 @@ import {
7
7
  provideNgIconsConfig,
8
8
  } from '@ng-icons/core'
9
9
  import { matOpenInNew } from '@ng-icons/material-icons/baseline'
10
+ import { iconoirDatabase } from '@ng-icons/iconoir'
10
11
  import { getBadgeColor, getFileFormat } from '../../../../../../libs/util/shared/src'
11
12
  import { TranslatePipe } from '@ngx-translate/core'
12
13
 
@@ -21,6 +22,7 @@ type CardSize = 'L' | 'M' | 'S' | 'XS'
21
22
  providers: [
22
23
  provideIcons({
23
24
  matOpenInNew,
25
+ iconoirDatabase,
24
26
  }),
25
27
  provideNgIconsConfig({ size: '1.5em' }),
26
28
  ],
@@ -37,7 +39,7 @@ export class ExternalLinkCardComponent {
37
39
 
38
40
  @Input() set size(value: CardSize) {
39
41
  this._size = value
40
- this.cardClass = this.sizeClassMap[value]
42
+ this.cardClass = `group flex flex-row justify-between card-shadow rounded overflow-hidden ${this.sizeClassMap[value]}`
41
43
  }
42
44
  get size(): CardSize {
43
45
  return this._size
@@ -51,11 +53,18 @@ export class ExternalLinkCardComponent {
51
53
  return this.link.name || this.link.description || ''
52
54
  }
53
55
 
54
- getLinkFormat(link: any) {
56
+ get isDatabase(): boolean {
57
+ return (
58
+ this.link.type === 'service' &&
59
+ this.link.accessServiceProtocol === 'postgis'
60
+ )
61
+ }
62
+
63
+ getLinkFormat(link: DatasetOnlineResource): string {
55
64
  return getFileFormat(link)
56
65
  }
57
66
 
58
- getLinkColor(link: any) {
67
+ getLinkColor(link: DatasetOnlineResource): string {
59
68
  return getBadgeColor(getFileFormat(link))
60
69
  }
61
70
  }
@@ -3,7 +3,11 @@
3
3
  ghostClass="h-[178px]"
4
4
  [showContent]="fieldReady('abstract')"
5
5
  >
6
- <gn-ui-max-lines [maxLines]="6" *ngIf="metadata.abstract">
6
+ <gn-ui-max-lines
7
+ [maxLines]="6"
8
+ *ngIf="metadata.abstract"
9
+ data-test="metadata-info-abstract"
10
+ >
7
11
  <div class="mb-6">
8
12
  <gn-ui-markdown-parser
9
13
  [textContent]="metadata.abstract"
@@ -101,19 +105,31 @@
101
105
  <gn-ui-expandable-panel
102
106
  *ngIf="
103
107
  (metadata.kind === 'dataset' && metadata.lineage) ||
108
+ resourceContact ||
109
+ metadata.resourceCreated ||
110
+ metadata.resourcePublished ||
104
111
  metadata.resourceUpdated ||
105
- metadata.updateFrequency ||
106
- (metadata.kind === 'dataset' && metadata.status)
112
+ (metadata.kind === 'dataset' && metadata.updateFrequency) ||
113
+ metadata.otherLanguages?.length ||
114
+ (metadata.kind === 'dataset' && temporalExtent)
107
115
  "
108
116
  [title]="'record.metadata.details' | translate"
109
117
  data-test="details-panel"
110
118
  >
111
- <div *ngIf="metadata.lineage" class="text-gray-900 flex flex-col mt-4 gap-2">
119
+ <div
120
+ *ngIf="metadata.kind === 'dataset' && metadata.lineage"
121
+ class="text-gray-900 flex flex-col mt-4 gap-2"
122
+ data-test="details-panel-lineage"
123
+ >
112
124
  <p class="whitespace-pre-line break-words text-gray-900" gnUiLinkify>
113
125
  {{ metadata.lineage }}
114
126
  </p>
115
127
  </div>
116
- <div class="flex flex-row gap-6 mt-5 mb-8" *ngIf="resourceContact">
128
+ <div
129
+ class="flex flex-row gap-6 mt-5 mb-8 resource-contact"
130
+ *ngIf="resourceContact"
131
+ data-test="details-panel-resource-contact"
132
+ >
117
133
  <div
118
134
  *ngIf="resourceContact.organization?.logoUrl?.href"
119
135
  class="flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden"
@@ -165,19 +181,37 @@
165
181
  <div
166
182
  class="py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700"
167
183
  >
168
- <div *ngIf="metadata.resourceCreated">
184
+ <div
185
+ *ngIf="metadata.resourceCreated"
186
+ data-test="details-panel-resource-created"
187
+ >
169
188
  <p class="text-sm" translate>record.metadata.creation</p>
170
- <p class="text-primary font-medium mt-1">
189
+ <p class="text-primary font-medium mt-1 resource-created">
171
190
  {{ formatDate(metadata.resourceCreated) }}
172
191
  </p>
173
192
  </div>
174
- <div *ngIf="metadata.resourcePublished">
193
+ <div
194
+ *ngIf="metadata.resourcePublished"
195
+ data-test="details-panel-resource-published"
196
+ >
175
197
  <p class="text-sm" translate>record.metadata.publication</p>
176
- <p class="text-primary font-medium mt-1">
198
+ <p class="text-primary font-medium mt-1 resource-published">
177
199
  {{ formatDate(metadata.resourcePublished) }}
178
200
  </p>
179
201
  </div>
180
- <div *ngIf="updateFrequency">
202
+ <div
203
+ *ngIf="metadata.resourceUpdated"
204
+ data-test="details-panel-resource-updated"
205
+ >
206
+ <p class="text-sm" translate>record.metadata.update</p>
207
+ <p class="text-primary font-medium mt-1 resource-updated">
208
+ {{ formatDate(metadata.resourceUpdated) }}
209
+ </p>
210
+ </div>
211
+ <div
212
+ *ngIf="metadata.kind === 'dataset' && metadata.updateFrequency"
213
+ data-test="details-panel-update-frequency"
214
+ >
181
215
  <p class="text-sm" translate>record.metadata.updateFrequency</p>
182
216
  <p
183
217
  class="text-primary font-medium mt-1 updateFrequency"
@@ -187,11 +221,14 @@
187
221
  {{ updateFrequency }}
188
222
  </p>
189
223
  </div>
190
- <div *ngIf="metadata.otherLanguages?.length">
224
+ <div
225
+ *ngIf="metadata.otherLanguages?.length"
226
+ data-test="details-panel-other-languages"
227
+ >
191
228
  <p class="text-sm mb-1" translate>record.metadata.languages</p>
192
229
  <div class="flex flex-row gap-1 flex-wrap">
193
230
  <p
194
- class="text-primary font-medium"
231
+ class="text-primary font-medium other-languages"
195
232
  translate
196
233
  *ngFor="let language of metadata.otherLanguages"
197
234
  >
@@ -199,9 +236,14 @@
199
236
  </p>
200
237
  </div>
201
238
  </div>
202
- <div *ngIf="temporalExtent">
239
+ <div
240
+ *ngIf="metadata.kind === 'dataset' && temporalExtent"
241
+ data-test="details-panel-temporal-extent"
242
+ >
203
243
  <p class="text-sm" translate>record.metadata.temporalExtent</p>
204
- <div class="flex flex-row gap-1 mb-1 text-primary font-medium">
244
+ <div
245
+ class="flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent"
246
+ >
205
247
  <p
206
248
  *ngIf="temporalExtent.start && temporalExtent.end"
207
249
  translate
@@ -90,8 +90,10 @@ export class DropdownSelectorComponent implements OnInit {
90
90
 
91
91
  get selectedChoice(): DropdownChoice {
92
92
  return (
93
- this.choices.find((choice) => choice.value === this.selected) ??
94
- this.choices[0]
93
+ this.choices.find(
94
+ (choice) =>
95
+ JSON.stringify(choice.value) === JSON.stringify(this.selected)
96
+ ) ?? this.choices[0]
95
97
  )
96
98
  }
97
99
 
@@ -39,6 +39,10 @@ export class LinkClassifierService {
39
39
  return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA]
40
40
  case 'GPFDL':
41
41
  return [LinkUsage.API]
42
+ case 'postgis':
43
+ return [LinkUsage.UNKNOWN]
44
+ case 'stac':
45
+ return [LinkUsage.API]
42
46
  default:
43
47
  return [LinkUsage.UNKNOWN]
44
48
  }
@@ -150,6 +150,12 @@ export const FORMATS = {
150
150
  color: '#5A9E6F',
151
151
  mimeTypes: ['image/webp'],
152
152
  },
153
+ postgis: {
154
+ extensions: ['postgis'],
155
+ priority: 18,
156
+ color: '#336791',
157
+ mimeTypes: [],
158
+ },
153
159
  } as const
154
160
 
155
161
  export type FileFormat = keyof typeof FORMATS
@@ -195,6 +201,11 @@ export function getFileFormatFromServiceOutput(
195
201
  export function getFileFormat(
196
202
  link: DatasetOnlineResource | ServiceOnlineResource
197
203
  ): FileFormat {
204
+ if ('accessServiceProtocol' in link) {
205
+ if (link.accessServiceProtocol in FORMATS) {
206
+ return link.accessServiceProtocol as FileFormat
207
+ }
208
+ }
198
209
  if ('mimeType' in link) {
199
210
  const mimeTypeFormat = mimeTypeToFormat(link.mimeType)
200
211
  if (mimeTypeFormat !== null) {
@@ -1,4 +1,4 @@
1
- import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'
1
+ import { Injectable, InjectionToken, Injector } from '@angular/core'
2
2
  import { Location } from '@angular/common'
3
3
 
4
4
  export const PROXY_PATH = new InjectionToken<string>('proxyPath')
@@ -7,8 +7,12 @@ export const PROXY_PATH = new InjectionToken<string>('proxyPath')
7
7
  providedIn: 'root',
8
8
  })
9
9
  export class ProxyService {
10
+ private get proxyPath(): string | null {
11
+ return this.injector.get(PROXY_PATH, null)
12
+ }
13
+
10
14
  constructor(
11
- @Optional() @Inject(PROXY_PATH) private proxyPath: string,
15
+ private injector: Injector,
12
16
  private location: Location
13
17
  ) {}
14
18
 
@@ -6,12 +6,15 @@ export function sortByToStrings(sortBy: SortByField): string[] {
6
6
  }
7
7
 
8
8
  export function sortByToString(sortBy: SortByField): string {
9
- return sortByToStrings(sortBy)[0]
9
+ return sortByToStrings(sortBy).join(',')
10
10
  }
11
11
 
12
12
  export function sortByFromString(sortByString: string): SortByField {
13
- return [
14
- sortByString.startsWith('-') ? 'desc' : 'asc',
15
- sortByString.startsWith('-') ? sortByString.substring(1) : sortByString,
16
- ]
13
+ const fields = sortByString
14
+ .split(',')
15
+ .map((field) => [
16
+ field.startsWith('-') ? 'desc' : 'asc',
17
+ field.startsWith('-') ? field.substring(1) : field,
18
+ ]) as SortByField
19
+ return fields.length > 1 ? fields : (fields[0] as SortByField)
17
20
  }
@@ -418,6 +418,8 @@
418
418
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
419
419
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
420
420
  "record.metadata.api.accessServiceProtocol.other": "",
421
+ "record.metadata.api.accessServiceProtocol.postgis": "",
422
+ "record.metadata.api.accessServiceProtocol.stac": "",
421
423
  "record.metadata.api.accessServiceProtocol.tms": "",
422
424
  "record.metadata.api.accessServiceProtocol.wfs": "",
423
425
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -465,7 +467,8 @@
465
467
  "record.metadata.isGeographical": "Geographischer Datensatz",
466
468
  "record.metadata.keywords": "Stichworte",
467
469
  "record.metadata.languages": "Sprachen",
468
- "record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
470
+ "record.metadata.link.postgis.table": "",
471
+ "record.metadata.link.postgis.tooltip": "",
469
472
  "record.metadata.linked.datasets": "Verknüpfte Datensätze",
470
473
  "record.metadata.linked.records": "Verknüpfte Inhalte",
471
474
  "record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
@@ -506,6 +509,9 @@
506
509
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
507
510
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
508
511
  "record.metadata.related": "Entdecken Sie den Katalog",
512
+ "record.metadata.resourceCreated": "Erstellt am {date}",
513
+ "record.metadata.resourcePublished": "Veröffentlicht am {date}",
514
+ "record.metadata.resourceUpdated": "Zuletzt aktualisiert am {date}",
509
515
  "record.metadata.ressources.and.links": "Ressourcen und Links",
510
516
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
511
517
  "record.metadata.status": "Status",
@@ -518,8 +524,9 @@
518
524
  "record.metadata.title": "Titel",
519
525
  "record.metadata.topics": "Kategorien",
520
526
  "record.metadata.uniqueId": "Eindeutige Kennung",
527
+ "record.metadata.update": "Aktualisierungsdatum",
521
528
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
522
- "record.metadata.updatedOn": "Geändert am",
529
+ "record.metadata.updatedOn": "Informationen geändert am",
523
530
  "record.metadata.usage": "Nutzung und Einschränkungen",
524
531
  "record.metadata.userFeedbacks": "",
525
532
  "record.metadata.userFeedbacks.anonymousUser": "",
@@ -534,6 +541,7 @@
534
541
  "record.tab.chart": "Diagramm",
535
542
  "record.tab.data": "Tabelle",
536
543
  "record.tab.map": "Karte",
544
+ "record.tab.stac": "",
537
545
  "record.was.created.time": "erstellte diesen Ressource {time}",
538
546
  "records": "Datensätze",
539
547
  "results.layout.selectOne": "Layout auswählen",
@@ -542,7 +550,6 @@
542
550
  "results.records.hits.found": "{hits, plural, =0{Keine Ressource entsprechen der angegebenen Suche.} one{1 Ressource gefunden.} other{{hits} Ressourcen gefunden.}}",
543
551
  "results.records.hits.selected": "{ amount } ausgewählt",
544
552
  "results.showMore": "Mehr Ergebnisse anzeigen...",
545
- "results.sortBy.changeDate": "",
546
553
  "results.sortBy.dateStamp": "Neueste",
547
554
  "results.sortBy.popularity": "Beliebtheit",
548
555
  "results.sortBy.qualityScore": "Fertigstellungsanzeige",
@@ -241,7 +241,6 @@
241
241
  "editor.record.form.topics.inspire.intelligence": "Intelligence / Military",
242
242
  "editor.record.form.topics.inspire.location": "Location",
243
243
  "editor.record.form.topics.inspire.oceans": "Oceans",
244
- "editor.record.form.topics.inspire.placeholder": "Select an INSPIRE theme",
245
244
  "editor.record.form.topics.inspire.planning": "Planning / Cadastre",
246
245
  "editor.record.form.topics.inspire.society": "Society",
247
246
  "editor.record.form.topics.inspire.structure": "Structure",
@@ -419,6 +418,8 @@
419
418
  "record.metadata.api.accessServiceProtocol.maplibre-style": "maplibre-style",
420
419
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "ogcFeatures",
421
420
  "record.metadata.api.accessServiceProtocol.other": "other",
421
+ "record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
422
+ "record.metadata.api.accessServiceProtocol.stac": "STAC",
422
423
  "record.metadata.api.accessServiceProtocol.tms": "tms",
423
424
  "record.metadata.api.accessServiceProtocol.wfs": "wfs",
424
425
  "record.metadata.api.accessServiceProtocol.wms": "wms",
@@ -466,7 +467,8 @@
466
467
  "record.metadata.isGeographical": "Geographical dataset",
467
468
  "record.metadata.keywords": "Keywords",
468
469
  "record.metadata.languages": "Languages",
469
- "record.metadata.lastUpdate": "Last updated on {date}",
470
+ "record.metadata.link.postgis.table": "table :",
471
+ "record.metadata.link.postgis.tooltip": "PostGIS resources do not have access links",
470
472
  "record.metadata.linked.datasets": "Associated datasets",
471
473
  "record.metadata.linked.records": "Associated content",
472
474
  "record.metadata.linked.reuses": "Associated reuses",
@@ -507,6 +509,9 @@
507
509
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
508
510
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
509
511
  "record.metadata.related": "Explore the catalog",
512
+ "record.metadata.resourceCreated": "Created on {date}",
513
+ "record.metadata.resourcePublished": "Published on {date}",
514
+ "record.metadata.resourceUpdated": "Last updated on {date}",
510
515
  "record.metadata.ressources.and.links": "Resources and links",
511
516
  "record.metadata.sheet": "Original metadata",
512
517
  "record.metadata.status": "Status",
@@ -519,8 +524,9 @@
519
524
  "record.metadata.title": "Title",
520
525
  "record.metadata.topics": "Categories",
521
526
  "record.metadata.uniqueId": "Unique Identifier",
527
+ "record.metadata.update": "Date of update",
522
528
  "record.metadata.updateFrequency": "Data Update Frequency",
523
- "record.metadata.updatedOn": "Updated on",
529
+ "record.metadata.updatedOn": "Metadata modified on",
524
530
  "record.metadata.usage": "License and Conditions",
525
531
  "record.metadata.userFeedbacks": "Questions / Answers",
526
532
  "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
@@ -535,6 +541,7 @@
535
541
  "record.tab.chart": "Chart",
536
542
  "record.tab.data": "Table",
537
543
  "record.tab.map": "Map",
544
+ "record.tab.stac": "STAC",
538
545
  "record.was.created.time": "created this record {time}",
539
546
  "records": "datasets",
540
547
  "results.layout.selectOne": "Results layout",
@@ -543,7 +550,6 @@
543
550
  "results.records.hits.found": "{hits, plural, =0{No record match the specified search.} one{1 record found.} other{{hits} records found.}}",
544
551
  "results.records.hits.selected": "{ amount } selected",
545
552
  "results.showMore": "Show more results...",
546
- "results.sortBy.changeDate": "Last modification",
547
553
  "results.sortBy.dateStamp": "Newest",
548
554
  "results.sortBy.popularity": "Popularity",
549
555
  "results.sortBy.qualityScore": "Completion score",
@@ -418,6 +418,8 @@
418
418
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
419
419
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
420
420
  "record.metadata.api.accessServiceProtocol.other": "",
421
+ "record.metadata.api.accessServiceProtocol.postgis": "",
422
+ "record.metadata.api.accessServiceProtocol.stac": "",
421
423
  "record.metadata.api.accessServiceProtocol.tms": "",
422
424
  "record.metadata.api.accessServiceProtocol.wfs": "",
423
425
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -465,7 +467,8 @@
465
467
  "record.metadata.isGeographical": "",
466
468
  "record.metadata.keywords": "",
467
469
  "record.metadata.languages": "",
468
- "record.metadata.lastUpdate": "",
470
+ "record.metadata.link.postgis.table": "",
471
+ "record.metadata.link.postgis.tooltip": "",
469
472
  "record.metadata.linked.datasets": "",
470
473
  "record.metadata.linked.records": "",
471
474
  "record.metadata.linked.reuses": "",
@@ -506,6 +509,9 @@
506
509
  "record.metadata.quality.updateFrequency.failed": "",
507
510
  "record.metadata.quality.updateFrequency.success": "",
508
511
  "record.metadata.related": "",
512
+ "record.metadata.resourceCreated": "",
513
+ "record.metadata.resourcePublished": "",
514
+ "record.metadata.resourceUpdated": "",
509
515
  "record.metadata.ressources.and.links": "Recursos y enlaces",
510
516
  "record.metadata.sheet": "",
511
517
  "record.metadata.status": "",
@@ -518,6 +524,7 @@
518
524
  "record.metadata.title": "",
519
525
  "record.metadata.topics": "",
520
526
  "record.metadata.uniqueId": "",
527
+ "record.metadata.update": "",
521
528
  "record.metadata.updateFrequency": "",
522
529
  "record.metadata.updatedOn": "",
523
530
  "record.metadata.usage": "",
@@ -534,6 +541,7 @@
534
541
  "record.tab.chart": "",
535
542
  "record.tab.data": "",
536
543
  "record.tab.map": "",
544
+ "record.tab.stac": "",
537
545
  "record.was.created.time": "",
538
546
  "records": "",
539
547
  "results.layout.selectOne": "",
@@ -542,7 +550,6 @@
542
550
  "results.records.hits.found": "",
543
551
  "results.records.hits.selected": "",
544
552
  "results.showMore": "",
545
- "results.sortBy.changeDate": "",
546
553
  "results.sortBy.dateStamp": "",
547
554
  "results.sortBy.popularity": "",
548
555
  "results.sortBy.qualityScore": "",
@@ -418,6 +418,8 @@
418
418
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
419
419
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
420
420
  "record.metadata.api.accessServiceProtocol.other": "autre",
421
+ "record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
422
+ "record.metadata.api.accessServiceProtocol.stac": "STAC",
421
423
  "record.metadata.api.accessServiceProtocol.tms": "",
422
424
  "record.metadata.api.accessServiceProtocol.wfs": "",
423
425
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -465,7 +467,8 @@
465
467
  "record.metadata.isGeographical": "Donnée géographique",
466
468
  "record.metadata.keywords": "Mots-clés",
467
469
  "record.metadata.languages": "Langues",
468
- "record.metadata.lastUpdate": "Mis à jour le {date}",
470
+ "record.metadata.link.postgis.table": "table :",
471
+ "record.metadata.link.postgis.tooltip": "Les ressources de type PostGIS n'ont pas de lien d'accès",
469
472
  "record.metadata.linked.datasets": "Jeux de données associés",
470
473
  "record.metadata.linked.records": "Contenus associés",
471
474
  "record.metadata.linked.reuses": "Réutilisations associées",
@@ -506,6 +509,9 @@
506
509
  "record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
507
510
  "record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
508
511
  "record.metadata.related": "Explorez le catalogue",
512
+ "record.metadata.resourceCreated": "Créé le {date}",
513
+ "record.metadata.resourcePublished": "Publié le {date}",
514
+ "record.metadata.resourceUpdated": "Mis à jour le {date}",
509
515
  "record.metadata.ressources.and.links": "Ressources et liens",
510
516
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
511
517
  "record.metadata.status": "Statut",
@@ -518,8 +524,9 @@
518
524
  "record.metadata.title": "Intitulé",
519
525
  "record.metadata.topics": "Catégories",
520
526
  "record.metadata.uniqueId": "Identificateur de ressource unique",
527
+ "record.metadata.update": "Date de mise à jour",
521
528
  "record.metadata.updateFrequency": "Fréquence de mise à jour des données",
522
- "record.metadata.updatedOn": "Modifié le",
529
+ "record.metadata.updatedOn": "Fiche de métadonnées modifiée le",
523
530
  "record.metadata.usage": "Licences et conditions d'utilisation",
524
531
  "record.metadata.userFeedbacks": "Questions / Réponses",
525
532
  "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
@@ -534,6 +541,7 @@
534
541
  "record.tab.chart": "Graphique",
535
542
  "record.tab.data": "Tableau",
536
543
  "record.tab.map": "Carte",
544
+ "record.tab.stac": "STAC",
537
545
  "record.was.created.time": "a créé cette ressource {time}",
538
546
  "records": "Enregistrements",
539
547
  "results.layout.selectOne": "Affichage des résultats",
@@ -542,7 +550,6 @@
542
550
  "results.records.hits.found": "{hits, plural, =0{Aucune correspondance.} one{1 ressource trouvée.} other{{hits} ressources.}}",
543
551
  "results.records.hits.selected": "{amount, plural, one{1 selectionné} other{{ amount } sélectionnés}}",
544
552
  "results.showMore": "Plus de résultats...",
545
- "results.sortBy.changeDate": "Dernière modification",
546
553
  "results.sortBy.dateStamp": "Plus récent",
547
554
  "results.sortBy.popularity": "Popularité",
548
555
  "results.sortBy.qualityScore": "Indicateur de complétion",
@@ -418,6 +418,8 @@
418
418
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
419
419
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
420
420
  "record.metadata.api.accessServiceProtocol.other": "",
421
+ "record.metadata.api.accessServiceProtocol.postgis": "",
422
+ "record.metadata.api.accessServiceProtocol.stac": "",
421
423
  "record.metadata.api.accessServiceProtocol.tms": "",
422
424
  "record.metadata.api.accessServiceProtocol.wfs": "",
423
425
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -465,7 +467,8 @@
465
467
  "record.metadata.isGeographical": "Dati geografici",
466
468
  "record.metadata.keywords": "Parole chiave",
467
469
  "record.metadata.languages": "Lingue",
468
- "record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
470
+ "record.metadata.link.postgis.table": "",
471
+ "record.metadata.link.postgis.tooltip": "",
469
472
  "record.metadata.linked.datasets": "",
470
473
  "record.metadata.linked.records": "",
471
474
  "record.metadata.linked.reuses": "",
@@ -506,8 +509,11 @@
506
509
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
507
510
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
508
511
  "record.metadata.related": "Vedi anche",
512
+ "record.metadata.resourceCreated": "Creato il {date}",
513
+ "record.metadata.resourcePublished": "Pubblicato il {date}",
514
+ "record.metadata.resourceUpdated": "Ultimo aggiornamento il {date}",
509
515
  "record.metadata.ressources.and.links": "Risorse e collegamenti",
510
- "record.metadata.sheet": "Origine del metadata",
516
+ "record.metadata.sheet": "Origine dei metadati",
511
517
  "record.metadata.status": "Stato",
512
518
  "record.metadata.status.notPublished": "Non pubblicato",
513
519
  "record.metadata.status.published": "Pubblicato",
@@ -518,8 +524,9 @@
518
524
  "record.metadata.title": "Titolo",
519
525
  "record.metadata.topics": "Categorie",
520
526
  "record.metadata.uniqueId": "Identificatore unico di risorsa",
527
+ "record.metadata.update": "Data di aggiornamento",
521
528
  "record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
522
- "record.metadata.updatedOn": "Modificato il",
529
+ "record.metadata.updatedOn": "Metadati modificati il",
523
530
  "record.metadata.usage": "Licenze e limiti di utilizzo",
524
531
  "record.metadata.userFeedbacks": "Domande / Risposte",
525
532
  "record.metadata.userFeedbacks.anonymousUser": "Per pubblicare un commento, effettua il login.",
@@ -534,6 +541,7 @@
534
541
  "record.tab.chart": "Grafico",
535
542
  "record.tab.data": "Tabella",
536
543
  "record.tab.map": "Mappa",
544
+ "record.tab.stac": "",
537
545
  "record.was.created.time": "ha creato questi dati {time}",
538
546
  "records": "record",
539
547
  "results.layout.selectOne": "Mostra risultati",
@@ -542,7 +550,6 @@
542
550
  "results.records.hits.found": "{hits, plural, =0{Nessuna corrispondenza.} one{1 record trovato.} other{{hits} risultati.}}",
543
551
  "results.records.hits.selected": "{amount, plural, one{1 selezionato} other{{ amount } selezionati}}",
544
552
  "results.showMore": "Altri risultati...",
545
- "results.sortBy.changeDate": "Ultima modifica",
546
553
  "results.sortBy.dateStamp": "Più recente",
547
554
  "results.sortBy.popularity": "Popolarità",
548
555
  "results.sortBy.qualityScore": "Indicatore di completamento",