geonetwork-ui 2.3.0-dev.c4b41b40 → 2.3.0-dev.cd1164a9

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 (148) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +2 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
  3. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -7
  4. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
  5. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -23
  6. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +1 -1
  7. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +104 -0
  8. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +8 -3
  9. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
  10. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +8 -1
  11. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
  12. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
  13. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
  14. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
  15. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +58 -17
  16. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +6 -2
  17. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  18. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +5 -3
  19. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +1 -3
  20. package/esm2022/libs/feature/search/src/index.mjs +2 -1
  21. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +1 -1
  22. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
  23. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +1 -1
  24. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
  25. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +1 -1
  26. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +1 -1
  27. package/esm2022/libs/ui/elements/src/index.mjs +2 -2
  28. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
  29. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
  30. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +30 -0
  31. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +89 -54
  32. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -6
  33. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +3 -5
  34. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -3
  35. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +5 -3
  36. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +5 -3
  37. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +6 -5
  38. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  39. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  40. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  41. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  42. package/esm2022/translations/de.json +12 -14
  43. package/esm2022/translations/en.json +12 -14
  44. package/esm2022/translations/es.json +12 -14
  45. package/esm2022/translations/fr.json +12 -14
  46. package/esm2022/translations/it.json +12 -14
  47. package/esm2022/translations/nl.json +12 -14
  48. package/esm2022/translations/pt.json +12 -14
  49. package/fesm2022/geonetwork-ui.mjs +493 -277
  50. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  51. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  52. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  53. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  54. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +21 -0
  55. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -0
  56. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -0
  57. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  58. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  59. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
  60. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  61. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +7 -0
  62. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  63. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -1
  64. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  65. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  66. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  67. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  68. package/libs/feature/search/src/index.d.ts +1 -0
  69. package/libs/feature/search/src/index.d.ts.map +1 -1
  70. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
  71. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  72. package/libs/ui/elements/src/index.d.ts +1 -1
  73. package/libs/ui/elements/src/index.d.ts.map +1 -1
  74. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  75. package/libs/ui/elements/src/lib/error/error.component.d.ts +16 -0
  76. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -0
  77. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +22 -4
  78. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  79. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -2
  80. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  81. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +1 -2
  82. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -1
  83. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts +1 -1
  84. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts.map +1 -1
  85. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +2 -1
  86. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  87. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -1
  88. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  89. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -27
  90. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  91. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  92. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  93. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  94. package/package.json +2 -2
  95. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +1 -1
  96. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +1 -4
  97. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +16 -10
  98. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
  99. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +4 -21
  100. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +0 -0
  101. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +14 -0
  102. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +143 -0
  103. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +5 -0
  104. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
  105. package/src/libs/feature/editor/src/lib/fields.config.ts +7 -0
  106. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
  107. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
  108. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
  109. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +7 -0
  110. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +57 -17
  111. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +5 -1
  112. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +4 -4
  113. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +0 -2
  114. package/src/libs/feature/search/src/index.ts +1 -0
  115. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +4 -4
  116. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
  117. package/src/libs/ui/elements/src/index.ts +1 -1
  118. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -1
  119. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
  120. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.html → error/error.component.html} +18 -3
  121. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.ts → error/error.component.ts} +5 -4
  122. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +25 -9
  123. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +116 -57
  124. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -4
  125. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
  126. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +0 -1
  127. package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.ts +3 -0
  128. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -0
  129. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +1 -0
  130. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -0
  131. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +1 -0
  132. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +1 -1
  133. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -0
  134. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  135. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  136. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  137. package/translations/de.json +12 -14
  138. package/translations/en.json +12 -14
  139. package/translations/es.json +12 -14
  140. package/translations/fr.json +12 -14
  141. package/translations/it.json +12 -14
  142. package/translations/nl.json +12 -14
  143. package/translations/pt.json +12 -14
  144. package/translations/sk.json +12 -14
  145. package/esm2022/libs/ui/elements/src/lib/search-results-error/search-results-error.component.mjs +0 -29
  146. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts +0 -15
  147. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts.map +0 -1
  148. /package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.css → error/error.component.css} +0 -0
@@ -1,14 +1,23 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
2
- import { OgcApiEndpoint } from '@camptocamp/ogc-client'
3
- import { DatasetServiceDistribution } from '../../../../../../libs/common/domain/src/lib/model/record'
2
+ import { OgcApiEndpoint, WfsEndpoint } from '@camptocamp/ogc-client'
3
+ import {
4
+ DatasetServiceDistribution,
5
+ ServiceProtocol,
6
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
4
7
  import { mimeTypeToFormat } from '../../../../../../libs/util/shared/src'
5
- import { BehaviorSubject, combineLatest, map } from 'rxjs'
8
+ import { BehaviorSubject, combineLatest, filter, map, switchMap } from 'rxjs'
6
9
 
7
10
  const DEFAULT_PARAMS = {
8
11
  OFFSET: '',
9
12
  LIMIT: '-1',
10
13
  FORMAT: 'json',
11
14
  }
15
+
16
+ interface OutputFormats {
17
+ itemFormats?: any[]
18
+ outputFormats?: any[]
19
+ }
20
+
12
21
  @Component({
13
22
  selector: 'gn-ui-record-api-form',
14
23
  templateUrl: './record-api-form.component.html',
@@ -17,38 +26,45 @@ const DEFAULT_PARAMS = {
17
26
  })
18
27
  export class RecordApiFormComponent {
19
28
  @Input() set apiLink(value: DatasetServiceDistribution) {
20
- this.apiBaseUrl = value ? value.url.href : undefined
21
29
  this.outputFormats = [{ value: 'json', label: 'JSON' }]
22
- this.parseOutputFormats()
30
+ this.accessServiceProtocol = value ? value.accessServiceProtocol : undefined
31
+ this.apiFeatureType = value ? value.name : undefined
32
+ if (value) {
33
+ this.apiBaseUrl = value.url.href
34
+ this.createEndpoint().then(() => this.parseOutputFormats())
35
+ }
23
36
  this.resetUrl()
24
37
  }
25
- offset$ = new BehaviorSubject('')
26
- limit$ = new BehaviorSubject('')
27
- format$ = new BehaviorSubject('')
38
+
39
+ offset$ = new BehaviorSubject(DEFAULT_PARAMS.OFFSET)
40
+ limit$ = new BehaviorSubject(DEFAULT_PARAMS.LIMIT)
41
+ format$ = new BehaviorSubject(DEFAULT_PARAMS.FORMAT)
42
+ endpoint$ = new BehaviorSubject<WfsEndpoint | OgcApiEndpoint | undefined>(
43
+ undefined
44
+ )
28
45
  apiBaseUrl: string
46
+ apiFeatureType: string
47
+ supportOffset = true
48
+ accessServiceProtocol: ServiceProtocol | undefined
29
49
  outputFormats = [{ value: 'json', label: 'JSON' }]
30
- apiQueryUrl$ = combineLatest([this.offset$, this.limit$, this.format$]).pipe(
31
- map(([offset, limit, format]) => {
32
- let outputUrl
33
- if (this.apiBaseUrl) {
34
- const url = new URL(this.apiBaseUrl)
35
- const params = { offset: offset, limit: limit, f: format }
36
- for (const [key, value] of Object.entries(params)) {
37
- if (value && value !== '0') {
38
- url.searchParams.set(key, value)
39
- } else {
40
- url.searchParams.delete(key)
41
- }
42
- }
43
- outputUrl = url.toString()
44
- }
45
- return outputUrl
46
- })
50
+ endpoint: WfsEndpoint | OgcApiEndpoint | undefined
51
+ firstCollection: string | undefined
52
+
53
+ apiQueryUrl$ = combineLatest([
54
+ this.offset$,
55
+ this.limit$,
56
+ this.format$,
57
+ // only compute the url if the endpoint was created
58
+ this.endpoint$.pipe(filter((endpoint) => !!endpoint)),
59
+ ]).pipe(
60
+ switchMap(([offset, limit, format]) =>
61
+ this.generateApiQueryUrl(offset, limit, format)
62
+ )
47
63
  )
64
+
48
65
  noLimitChecked$ = this.limit$.pipe(
49
66
  map((limit) => limit === '-1' || limit === '')
50
67
  )
51
-
52
68
  displayLimit$ = this.limit$.pipe(
53
69
  map((limit) => (limit !== '-1' ? limit : ''))
54
70
  )
@@ -58,8 +74,7 @@ export class RecordApiFormComponent {
58
74
  }
59
75
 
60
76
  setLimit(value: string) {
61
- const newLimit = value === '' ? '-1' : value
62
- this.limit$.next(newLimit)
77
+ this.limit$.next(value === '' ? '-1' : value)
63
78
  }
64
79
 
65
80
  setFormat(value: string | unknown) {
@@ -72,38 +87,82 @@ export class RecordApiFormComponent {
72
87
  this.format$.next(DEFAULT_PARAMS.FORMAT)
73
88
  }
74
89
 
75
- parseOutputFormats() {
76
- const apiUrl =
77
- this.apiBaseUrl.slice(-1) === '?'
78
- ? this.apiBaseUrl.slice(0, -1)
79
- : this.apiBaseUrl
80
-
81
- this.getOutputFormats(apiUrl).then((outputFormats) => {
82
- const formatsList = outputFormats.itemFormats.map((format) => {
83
- const normalizedFormat = mimeTypeToFormat(format)
84
- if (normalizedFormat) {
85
- return {
86
- label: normalizedFormat?.toUpperCase(),
87
- value: normalizedFormat,
88
- }
89
- }
90
- return null
91
- })
92
- this.outputFormats = this.outputFormats.concat(
93
- formatsList.filter(Boolean)
90
+ async parseOutputFormats() {
91
+ if (!this.endpoint) return
92
+ const apiUrl = this.apiBaseUrl.endsWith('?')
93
+ ? this.apiBaseUrl.slice(0, -1)
94
+ : this.apiBaseUrl
95
+ const outputFormats = await this.getOutputFormats(apiUrl)
96
+
97
+ const formatsList = outputFormats.itemFormats
98
+ ? this.mapFormats(outputFormats.itemFormats)
99
+ : this.mapFormats(outputFormats.outputFormats || [])
100
+
101
+ this.outputFormats = this.outputFormats
102
+ .concat(formatsList.filter(Boolean))
103
+ .filter(
104
+ (format, index, self) =>
105
+ index === self.findIndex((t) => t.value === format.value)
94
106
  )
95
- this.outputFormats = this.outputFormats
96
- .filter(
97
- (format, index, self) =>
98
- index === self.findIndex((t) => t.value === format.value)
99
- )
100
- .sort((a, b) => a.label.localeCompare(b.label))
107
+ .sort((a, b) => a.label.localeCompare(b.label))
108
+ }
109
+
110
+ mapFormats(formats: any[]) {
111
+ return formats.map((format) => {
112
+ const normalizedFormat = mimeTypeToFormat(format)
113
+ return normalizedFormat
114
+ ? { label: normalizedFormat.toUpperCase(), value: normalizedFormat }
115
+ : null
101
116
  })
102
117
  }
103
118
 
104
- async getOutputFormats(url) {
105
- const endpoint = await new OgcApiEndpoint(url)
106
- const firstCollection = (await endpoint.featureCollections)[0]
107
- return endpoint.getCollectionInfo(firstCollection)
119
+ async getOutputFormats(url: string): Promise<OutputFormats> {
120
+ if (!this.endpoint) return {}
121
+ if (this.endpoint instanceof WfsEndpoint) {
122
+ this.supportOffset = this.endpoint.supportsStartIndex()
123
+ return this.endpoint.getServiceInfo() as OutputFormats
124
+ } else {
125
+ return (await this.endpoint.getCollectionInfo(
126
+ this.firstCollection
127
+ )) as OutputFormats
128
+ }
129
+ }
130
+
131
+ async createEndpoint() {
132
+ if (!this.apiBaseUrl || !this.accessServiceProtocol) return
133
+ if (this.accessServiceProtocol === 'wfs') {
134
+ this.endpoint = new WfsEndpoint(this.apiBaseUrl)
135
+ await (this.endpoint as WfsEndpoint).isReady()
136
+ } else {
137
+ this.endpoint = new OgcApiEndpoint(this.apiBaseUrl)
138
+ this.firstCollection = (await this.endpoint.allCollections)[0].name
139
+ }
140
+ this.endpoint$.next(this.endpoint)
141
+ }
142
+
143
+ async generateApiQueryUrl(
144
+ offset: string,
145
+ limit: string,
146
+ format: string
147
+ ): Promise<string> {
148
+ if (!this.apiBaseUrl || !this.endpoint || !this.apiFeatureType) return ''
149
+
150
+ const options = {
151
+ outputFormat: format,
152
+ startIndex: offset ? Number(offset) : undefined,
153
+ maxFeatures: limit !== '-1' ? Number(limit) : undefined,
154
+ limit: limit !== '-1' ? Number(limit) : limit === '-1' ? -1 : undefined,
155
+ offset: offset !== '' ? Number(offset) : undefined,
156
+ }
157
+
158
+ if (this.endpoint instanceof WfsEndpoint) {
159
+ options.maxFeatures = limit !== '-1' ? Number(limit) : undefined
160
+ return this.endpoint.getFeatureUrl(this.apiFeatureType, options)
161
+ } else {
162
+ return await this.endpoint.getCollectionItemsUrl(
163
+ this.firstCollection,
164
+ options
165
+ )
166
+ }
108
167
  }
109
168
  }
@@ -12,13 +12,12 @@ import { ApiCardComponent } from './api-card/api-card.component'
12
12
  import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
13
13
  import { UiLayoutModule } from '../../../../../libs/ui/layout/src'
14
14
  import { TranslateModule } from '@ngx-translate/core'
15
- import { LinkCardComponent } from './link-card/link-card.component'
16
15
  import { RelatedRecordCardComponent } from './related-record-card/related-record-card.component'
17
16
  import { MetadataContactComponent } from './metadata-contact/metadata-contact.component'
18
17
  import { MetadataCatalogComponent } from './metadata-catalog/metadata-catalog.component'
19
18
  import { MetadataQualityComponent } from './metadata-quality/metadata-quality.component'
20
19
  import { MetadataQualityItemComponent } from './metadata-quality-item/metadata-quality-item.component'
21
- import { SearchResultsErrorComponent } from './search-results-error/search-results-error.component'
20
+ import { ErrorComponent } from './error/error.component'
22
21
  import { PaginationComponent } from './pagination/pagination.component'
23
22
  import { ThumbnailComponent } from './thumbnail/thumbnail.component'
24
23
  import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
@@ -62,7 +61,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
62
61
  MetadataCatalogComponent,
63
62
  MetadataQualityComponent,
64
63
  MetadataQualityItemComponent,
65
- SearchResultsErrorComponent,
64
+ ErrorComponent,
66
65
  PaginationComponent,
67
66
  AvatarComponent,
68
67
  UserPreviewComponent,
@@ -84,7 +83,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
84
83
  MetadataCatalogComponent,
85
84
  MetadataQualityComponent,
86
85
  MetadataQualityItemComponent,
87
- SearchResultsErrorComponent,
86
+ ErrorComponent,
88
87
  PaginationComponent,
89
88
  ThumbnailComponent,
90
89
  AvatarComponent,
@@ -30,7 +30,7 @@
30
30
  ></gn-ui-user-feedback-item>
31
31
  </div>
32
32
 
33
- <div *ngIf="isActiveUserEditor" class="mt-2 flex flex-col">
33
+ <div *ngIf="activeUser" class="mt-2 flex flex-col">
34
34
  <hr class="-mx-4 my-4" />
35
35
  <div
36
36
  id="new-comment-buttons"
@@ -21,7 +21,6 @@ import { UserModel } from '../../../../../../libs/common/domain/src/lib/model/us
21
21
  export class UserFeedbackItemComponent implements OnInit {
22
22
  @Input() userFeedbackParent: UserFeedbackViewModel
23
23
  @Input() userFeedBacksAnswers: UserFeedbackViewModel[]
24
- @Input() isActiveUserEditor: boolean
25
24
  @Input() activeUser: UserModel
26
25
  @Input() isLastComment: boolean
27
26
  @Input() isAddUserFeedbackLoading: boolean
@@ -5,12 +5,15 @@ import {
5
5
  Input,
6
6
  Output,
7
7
  } from '@angular/core'
8
+ import { FormsModule } from '@angular/forms'
8
9
 
9
10
  @Component({
10
11
  selector: 'gn-ui-check-toggle',
11
12
  templateUrl: './check-toggle.component.html',
12
13
  styleUrls: ['./check-toggle.component.css'],
13
14
  changeDetection: ChangeDetectionStrategy.OnPush,
15
+ standalone: true,
16
+ imports: [FormsModule],
14
17
  })
15
18
  export class CheckToggleComponent {
16
19
  @Input() title: string
@@ -18,6 +18,7 @@
18
18
  cdkOverlayOrigin
19
19
  #overlayOrigin="cdkOverlayOrigin"
20
20
  (keydown)="handleTriggerKeydown($event)"
21
+ [disabled]="disabled"
21
22
  >
22
23
  <div class="grow font-medium truncate py-1 mr-2 text-left">
23
24
  {{ getChoiceLabel() | translate }}
@@ -48,6 +48,7 @@ export class DropdownSelectorComponent implements OnInit {
48
48
  @Input() maxRows: number
49
49
  @Input() extraBtnClass = ''
50
50
  @Input() minWidth = ''
51
+ @Input() disabled: boolean
51
52
  @Output() selectValue = new EventEmitter<DropdownChoice['value']>()
52
53
  @ViewChild('overlayOrigin') overlayOrigin: CdkOverlayOrigin
53
54
  @ViewChild(CdkConnectedOverlay) overlay: CdkConnectedOverlay
@@ -8,4 +8,5 @@
8
8
  [placeholder]="hint"
9
9
  [attr.aria-label]="hint"
10
10
  [attr.required]="required || null"
11
+ [disabled]="disabled"
11
12
  />
@@ -29,6 +29,7 @@ export class TextInputComponent implements AfterViewInit {
29
29
  @Input() extraClass = ''
30
30
  @Input() hint: string
31
31
  @Input() required = false
32
+ @Input() disabled: boolean
32
33
  rawChange = new Subject<string>()
33
34
  @Output() valueChange = this.rawChange.pipe(distinctUntilChanged())
34
35
  @ViewChild('input') input
@@ -44,7 +44,6 @@ import { ImageInputComponent } from './image-input/image-input.component'
44
44
  StarToggleComponent,
45
45
  DropdownMultiselectComponent,
46
46
  ViewportIntersectorComponent,
47
- CheckToggleComponent,
48
47
  CopyTextButtonComponent,
49
48
  CheckboxComponent,
50
49
  SearchInputComponent,
@@ -73,6 +72,7 @@ import { ImageInputComponent } from './image-input/image-input.component'
73
72
  ImageInputComponent,
74
73
  DropdownSelectorComponent,
75
74
  DateRangePickerComponent,
75
+ CheckToggleComponent,
76
76
  ],
77
77
  exports: [
78
78
  DropdownSelectorComponent,
@@ -4,6 +4,7 @@
4
4
 
5
5
  :host {
6
6
  position: relative;
7
+ display: block;
7
8
  }
8
9
 
9
10
  .carousel-step-dot {
@@ -144,6 +144,7 @@ export function loadAppConfig() {
144
144
  [],
145
145
  [
146
146
  'max_zoom',
147
+ 'do_not_tile_wms',
147
148
  'max_extent',
148
149
  'baselayer',
149
150
  'do_not_use_default_basemap',
@@ -158,6 +159,7 @@ export function loadAppConfig() {
158
159
  ? null
159
160
  : ({
160
161
  MAX_ZOOM: parsedMapSection.max_zoom,
162
+ DO_NOT_TILE_WMS: parsedMapSection.do_not_tile_wms,
161
163
  MAX_EXTENT: parsedMapSection.max_extent,
162
164
  EXTERNAL_VIEWER_URL_TEMPLATE:
163
165
  parsedMapSection.external_viewer_url_template,
@@ -81,6 +81,7 @@ export const MAP_CONFIG_FIXTURE: MapConfig = {
81
81
  MAX_ZOOM: 10,
82
82
  MAX_EXTENT: [-418263.418776, 5251529.591305, 961272.067714, 6706890.609855],
83
83
  DO_NOT_USE_DEFAULT_BASEMAP: false,
84
+ DO_NOT_TILE_WMS: false,
84
85
  EXTERNAL_VIEWER_URL_TEMPLATE:
85
86
  'https://example.com/myviewer/#/?actions=[{"type":"CATALOG:ADD_LAYERS_FROM_CATALOGS","layers":["${layer_name}"],"sources":[{"url":"${service_url}","type":"${service_type}"}]}]',
86
87
  EXTERNAL_VIEWER_OPEN_NEW_TAB: true,
@@ -20,6 +20,7 @@ export interface LayerConfig {
20
20
 
21
21
  export interface MapConfig {
22
22
  MAX_ZOOM?: number
23
+ DO_NOT_TILE_WMS: boolean
23
24
  MAX_EXTENT?: [number, number, number, number] // Expressed as [minx, miny, maxx, maxy]
24
25
  EXTERNAL_VIEWER_URL_TEMPLATE?: string
25
26
  EXTERNAL_VIEWER_OPEN_NEW_TAB?: boolean
@@ -156,6 +156,8 @@
156
156
  "editor.record.form.license.pddl": "",
157
157
  "editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
158
158
  "editor.record.form.resourceUpdated": "",
159
+ "editor.record.form.updateFrequency": "",
160
+ "editor.record.form.updateFrequency.planned": "",
159
161
  "editor.record.loadError.body": "",
160
162
  "editor.record.loadError.closeMessage": "",
161
163
  "editor.record.loadError.title": "",
@@ -226,6 +228,7 @@
226
228
  "multiselect.filter.placeholder": "Suche",
227
229
  "nav.back": "Zurück",
228
230
  "next": "weiter",
231
+ "ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
229
232
  "organisation.filter.placeholder": "Ergebnisse filtern",
230
233
  "organisation.sort.sortBy": "Sortieren nach:",
231
234
  "organisations.hits.found": "{hits, plural, =0{Keine Organisation gefunden} other{{hits} von {total} Organisationen angezeigt}}",
@@ -290,14 +293,6 @@
290
293
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
291
294
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
292
295
  "record.metadata.related": "Ähnliche Datensätze",
293
- "record.metadata.userFeedbacks": "",
294
- "record.metadata.userFeedbacks.anonymousUser": "",
295
- "record.metadata.userFeedbacks.sortSelector.label": "",
296
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
297
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
298
- "record.metadata.userFeedbacks.newComment.placeholder": "",
299
- "record.metadata.userFeedbacks.newAnswer.placeholder": "",
300
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
301
296
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
302
297
  "record.metadata.status": "Status",
303
298
  "record.metadata.technical": "Technische Informationen",
@@ -312,6 +307,14 @@
312
307
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
313
308
  "record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
314
309
  "record.metadata.usage": "Nutzung und Einschränkungen",
310
+ "record.metadata.userFeedbacks": "",
311
+ "record.metadata.userFeedbacks.anonymousUser": "",
312
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
313
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
314
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
315
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
316
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
317
+ "record.metadata.userFeedbacks.sortSelector.label": "",
315
318
  "record.more.details": "Weitere Details",
316
319
  "record.tab.chart": "Diagramm",
317
320
  "record.tab.data": "Tabelle",
@@ -332,6 +335,7 @@
332
335
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
333
336
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
334
337
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
338
+ "search.error.recordHasnolink": "",
335
339
  "search.field.any.placeholder": "Suche Datensätze ...",
336
340
  "search.field.sortBy": "Sortieren nach:",
337
341
  "search.filters.clear": "Zurücksetzen",
@@ -371,12 +375,6 @@
371
375
  "table.loading.data": "Daten werden geladen...",
372
376
  "table.object.count": "Objekte in diesem Datensatz",
373
377
  "table.select.data": "Datenquelle",
374
- "timeSincePipe.lessThanAMinute": "",
375
- "timeSincePipe.minutesAgo": "",
376
- "timeSincePipe.hoursAgo": "",
377
- "timeSincePipe.daysAgo": "",
378
- "timeSincePipe.monthsAgo": "",
379
- "timeSincePipe.yearsAgo": "",
380
378
  "tooltip.html.copy": "HTML kopieren",
381
379
  "tooltip.id.copy": "Eindeutige Kennung kopieren",
382
380
  "tooltip.url.copy": "URL kopieren",
@@ -156,6 +156,8 @@
156
156
  "editor.record.form.license.pddl": "Open Data Commons PDDL",
157
157
  "editor.record.form.license.unknown": "Unknown or absent",
158
158
  "editor.record.form.resourceUpdated": "Last update date",
159
+ "editor.record.form.updateFrequency": "Update frequency",
160
+ "editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
159
161
  "editor.record.loadError.body": "The record could not be loaded:",
160
162
  "editor.record.loadError.closeMessage": "Understood",
161
163
  "editor.record.loadError.title": "Error loading record",
@@ -226,6 +228,7 @@
226
228
  "multiselect.filter.placeholder": "Search",
227
229
  "nav.back": "Back",
228
230
  "next": "next",
231
+ "ogc.unreachable.unknown": "The service could not be reached",
229
232
  "organisation.filter.placeholder": "Filter results",
230
233
  "organisation.sort.sortBy": "Sort by:",
231
234
  "organisations.hits.found": "{hits, plural, =0{No organizations found} other{{hits} out of {total} organizations shown}}",
@@ -290,14 +293,6 @@
290
293
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
291
294
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
292
295
  "record.metadata.related": "Related records",
293
- "record.metadata.userFeedbacks": "Questions / Answers",
294
- "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
295
- "record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
296
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
297
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
298
- "record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
299
- "record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
300
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
301
296
  "record.metadata.sheet": "Original metadata",
302
297
  "record.metadata.status": "Status",
303
298
  "record.metadata.technical": "Technical information",
@@ -312,6 +307,14 @@
312
307
  "record.metadata.updateFrequency": "Data Update Frequency",
313
308
  "record.metadata.updatedOn": "Last Data Information Update",
314
309
  "record.metadata.usage": "License and Conditions",
310
+ "record.metadata.userFeedbacks": "Questions / Answers",
311
+ "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
312
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
313
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
314
+ "record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
315
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
316
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
317
+ "record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
315
318
  "record.more.details": "Read more",
316
319
  "record.tab.chart": "Chart",
317
320
  "record.tab.data": "Table",
@@ -332,6 +335,7 @@
332
335
  "search.error.couldNotReachApi": "The API could not be reached",
333
336
  "search.error.receivedError": "An error was received",
334
337
  "search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
338
+ "search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
335
339
  "search.field.any.placeholder": "Search datasets ...",
336
340
  "search.field.sortBy": "Sort by:",
337
341
  "search.filters.clear": "Reset",
@@ -371,12 +375,6 @@
371
375
  "table.loading.data": "Loading data...",
372
376
  "table.object.count": "objects in this dataset",
373
377
  "table.select.data": "Data source",
374
- "timeSincePipe.lessThanAMinute": "Less than a minute ago",
375
- "timeSincePipe.minutesAgo": "{value} minute{s} ago",
376
- "timeSincePipe.hoursAgo": "{value} hour{s} ago",
377
- "timeSincePipe.daysAgo": "{value} day{s} ago",
378
- "timeSincePipe.monthsAgo": "{value} month{s} ago",
379
- "timeSincePipe.yearsAgo": "{value} year{s} ago",
380
378
  "tooltip.html.copy": "Copy HTML",
381
379
  "tooltip.id.copy": "Copy unique identifier",
382
380
  "tooltip.url.copy": "Copy URL",
@@ -156,6 +156,8 @@
156
156
  "editor.record.form.license.pddl": "",
157
157
  "editor.record.form.license.unknown": "",
158
158
  "editor.record.form.resourceUpdated": "",
159
+ "editor.record.form.updateFrequency": "",
160
+ "editor.record.form.updateFrequency.planned": "",
159
161
  "editor.record.loadError.body": "",
160
162
  "editor.record.loadError.closeMessage": "",
161
163
  "editor.record.loadError.title": "",
@@ -226,6 +228,7 @@
226
228
  "multiselect.filter.placeholder": "",
227
229
  "nav.back": "",
228
230
  "next": "",
231
+ "ogc.unreachable.unknown": "",
229
232
  "organisation.filter.placeholder": "",
230
233
  "organisation.sort.sortBy": "",
231
234
  "organisations.hits.found": "",
@@ -290,14 +293,6 @@
290
293
  "record.metadata.quality.updateFrequency.failed": "",
291
294
  "record.metadata.quality.updateFrequency.success": "",
292
295
  "record.metadata.related": "",
293
- "record.metadata.userFeedbacks": "",
294
- "record.metadata.userFeedbacks.anonymousUser": "",
295
- "record.metadata.userFeedbacks.sortSelector.label": "",
296
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
297
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
298
- "record.metadata.userFeedbacks.newComment.placeholder": "",
299
- "record.metadata.userFeedbacks.newAnswer.placeholder": "",
300
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
301
296
  "record.metadata.sheet": "",
302
297
  "record.metadata.status": "",
303
298
  "record.metadata.technical": "",
@@ -312,6 +307,14 @@
312
307
  "record.metadata.updateFrequency": "",
313
308
  "record.metadata.updatedOn": "",
314
309
  "record.metadata.usage": "",
310
+ "record.metadata.userFeedbacks": "",
311
+ "record.metadata.userFeedbacks.anonymousUser": "",
312
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
313
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
314
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
315
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
316
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
317
+ "record.metadata.userFeedbacks.sortSelector.label": "",
315
318
  "record.more.details": "",
316
319
  "record.tab.chart": "",
317
320
  "record.tab.data": "",
@@ -332,6 +335,7 @@
332
335
  "search.error.couldNotReachApi": "",
333
336
  "search.error.receivedError": "",
334
337
  "search.error.recordNotFound": "",
338
+ "search.error.recordHasnolink": "",
335
339
  "search.field.any.placeholder": "",
336
340
  "search.field.sortBy": "",
337
341
  "search.filters.clear": "",
@@ -371,12 +375,6 @@
371
375
  "table.loading.data": "",
372
376
  "table.object.count": "",
373
377
  "table.select.data": "",
374
- "timeSincePipe.lessThanAMinute": "",
375
- "timeSincePipe.minutesAgo": "",
376
- "timeSincePipe.hoursAgo": "",
377
- "timeSincePipe.daysAgo": "",
378
- "timeSincePipe.monthsAgo": "",
379
- "timeSincePipe.yearsAgo": "",
380
378
  "tooltip.html.copy": "",
381
379
  "tooltip.id.copy": "",
382
380
  "tooltip.url.copy": "",
@@ -156,6 +156,8 @@
156
156
  "editor.record.form.license.pddl": "",
157
157
  "editor.record.form.license.unknown": "Non-reconnue ou absente",
158
158
  "editor.record.form.resourceUpdated": "Date de dernière révision",
159
+ "editor.record.form.updateFrequency": "Fréquence de mise à jour",
160
+ "editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
159
161
  "editor.record.loadError.body": "",
160
162
  "editor.record.loadError.closeMessage": "",
161
163
  "editor.record.loadError.title": "",
@@ -226,6 +228,7 @@
226
228
  "multiselect.filter.placeholder": "Rechercher",
227
229
  "nav.back": "Retour",
228
230
  "next": "suivant",
231
+ "ogc.unreachable.unknown": "Le service n'est pas accessible",
229
232
  "organisation.filter.placeholder": "Filtrer les résultats",
230
233
  "organisation.sort.sortBy": "Trier par :",
231
234
  "organisations.hits.found": "{hits, plural, =0{Aucune organisation trouvé} one{1 organisation sur {total} affichée} other{{hits} organisations sur {total} affichées}}",
@@ -290,14 +293,6 @@
290
293
  "record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
291
294
  "record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
292
295
  "record.metadata.related": "Voir aussi",
293
- "record.metadata.userFeedbacks": "Questions / Réponses",
294
- "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
295
- "record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
296
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
297
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
298
- "record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
299
- "record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
300
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
301
296
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
302
297
  "record.metadata.status": "Statut",
303
298
  "record.metadata.technical": "Informations techniques",
@@ -312,6 +307,14 @@
312
307
  "record.metadata.updateFrequency": "Fréquence de mise à jour des données",
313
308
  "record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
314
309
  "record.metadata.usage": "Licences et conditions d'utilisation",
310
+ "record.metadata.userFeedbacks": "Questions / Réponses",
311
+ "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
312
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
313
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
314
+ "record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
315
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
316
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
317
+ "record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
315
318
  "record.more.details": "Détails",
316
319
  "record.tab.chart": "Graphique",
317
320
  "record.tab.data": "Tableau",
@@ -332,6 +335,7 @@
332
335
  "search.error.couldNotReachApi": "Problème de connexion à l'API",
333
336
  "search.error.receivedError": "Erreur retournée",
334
337
  "search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
338
+ "search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
335
339
  "search.field.any.placeholder": "Rechercher une donnée...",
336
340
  "search.field.sortBy": "Trier par :",
337
341
  "search.filters.clear": "Réinitialiser",
@@ -371,12 +375,6 @@
371
375
  "table.loading.data": "Chargement des données...",
372
376
  "table.object.count": "enregistrements dans ces données",
373
377
  "table.select.data": "Source de données",
374
- "timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
375
- "timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
376
- "timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
377
- "timeSincePipe.daysAgo": "Il y a {value} jour{s}",
378
- "timeSincePipe.monthsAgo": "Il y a {value} mois",
379
- "timeSincePipe.yearsAgo": "Il y a {value} an{s}",
380
378
  "tooltip.html.copy": "Copier le HTML",
381
379
  "tooltip.id.copy": "Copier l'identifiant unique",
382
380
  "tooltip.url.copy": "Copier l'URL",