geonetwork-ui 2.1.0 → 2.2.0-dev.0eef2738

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 (166) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -1
  2. package/esm2022/libs/api/repository/src/index.mjs +2 -1
  3. package/esm2022/libs/feature/auth/src/lib/feature-auth.module.mjs +2 -2
  4. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +2 -2
  5. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +4 -15
  6. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  7. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  8. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  9. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
  10. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +11 -2
  11. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -3
  12. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +3 -1
  13. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +9 -6
  14. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -2
  15. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +1 -1
  16. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +3 -3
  17. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +2 -2
  18. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
  19. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  20. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  21. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  22. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
  23. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +10 -3
  24. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -6
  25. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  26. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
  27. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +13 -3
  28. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +19 -40
  29. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +6 -3
  30. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  31. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
  32. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
  33. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  34. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  35. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  36. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  37. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  38. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +5 -1
  39. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  40. package/esm2022/libs/util/i18n/src/index.mjs +2 -1
  41. package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +8 -1
  42. package/esm2022/libs/util/shared/src/lib/utils/fuzzy-filter.mjs +27 -0
  43. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  44. package/esm2022/translations/de.json +101 -84
  45. package/esm2022/translations/en.json +39 -22
  46. package/esm2022/translations/es.json +17 -0
  47. package/esm2022/translations/fr.json +25 -8
  48. package/esm2022/translations/it.json +26 -6
  49. package/esm2022/translations/nl.json +17 -0
  50. package/esm2022/translations/pt.json +17 -0
  51. package/fesm2022/geonetwork-ui.mjs +634 -233
  52. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  53. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  54. package/libs/api/repository/src/index.d.ts +1 -0
  55. package/libs/api/repository/src/index.d.ts.map +1 -1
  56. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts +0 -1
  57. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  58. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -2
  59. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  60. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  61. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  62. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  63. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
  64. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
  65. package/libs/feature/map/src/lib/feature-map.module.d.ts +15 -12
  66. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  67. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
  68. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  69. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -2
  70. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  71. package/libs/feature/search/src/lib/state/effects.d.ts +1 -1
  72. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  73. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -1
  74. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  75. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  76. package/libs/ui/elements/src/index.d.ts +2 -0
  77. package/libs/ui/elements/src/index.d.ts.map +1 -1
  78. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  79. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  80. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  81. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
  82. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
  83. package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts +1 -0
  84. package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts.map +1 -1
  85. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +1 -0
  86. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  87. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  88. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  89. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -11
  90. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  91. package/libs/ui/inputs/src/lib/button/button.component.d.ts +2 -4
  92. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  93. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  94. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts +1 -1
  95. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  96. package/libs/util/app-config/src/lib/model.d.ts +2 -0
  97. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  98. package/libs/util/i18n/src/index.d.ts +1 -0
  99. package/libs/util/i18n/src/index.d.ts.map +1 -1
  100. package/libs/util/shared/src/lib/services/theme.service.d.ts +1 -0
  101. package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
  102. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts +9 -0
  103. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts.map +1 -0
  104. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  105. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  106. package/package.json +8 -6
  107. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -0
  108. package/src/libs/api/repository/src/index.ts +1 -0
  109. package/src/libs/feature/auth/src/lib/feature-auth.module.ts +1 -1
  110. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +1 -1
  111. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +3 -17
  112. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  113. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  114. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  115. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  116. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  117. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  118. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
  119. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
  120. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
  121. package/src/libs/feature/map/src/lib/feature-map.module.ts +6 -0
  122. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +9 -3
  123. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +6 -0
  124. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
  125. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -4
  126. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -1
  127. package/src/libs/feature/search/src/lib/state/effects.ts +1 -1
  128. package/src/libs/feature/search/src/lib/utils/service/fields.ts +1 -1
  129. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
  130. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
  131. package/src/libs/ui/elements/src/index.ts +2 -0
  132. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  133. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +29 -0
  134. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  135. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
  136. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
  137. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +16 -0
  138. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +93 -27
  139. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +7 -0
  140. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  141. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +59 -32
  142. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +5 -0
  143. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  144. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  145. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +6 -0
  146. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  147. package/src/libs/ui/inputs/src/lib/button/button.component.ts +22 -42
  148. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +7 -4
  149. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
  150. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
  151. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  152. package/src/libs/util/app-config/src/lib/app-config.ts +4 -0
  153. package/src/libs/util/app-config/src/lib/model.ts +2 -0
  154. package/src/libs/util/i18n/src/index.ts +1 -0
  155. package/src/libs/util/shared/src/lib/services/theme.service.ts +9 -0
  156. package/src/libs/util/shared/src/lib/utils/fuzzy-filter.ts +32 -0
  157. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  158. package/tailwind.base.css +31 -1
  159. package/translations/de.json +101 -84
  160. package/translations/en.json +39 -22
  161. package/translations/es.json +17 -0
  162. package/translations/fr.json +25 -8
  163. package/translations/it.json +26 -6
  164. package/translations/nl.json +17 -0
  165. package/translations/pt.json +17 -0
  166. package/translations/sk.json +17 -0
@@ -14,57 +14,37 @@ import { propagateToDocumentOnly } from '../../../../../../libs/util/shared/src'
14
14
  changeDetection: ChangeDetectionStrategy.OnPush,
15
15
  })
16
16
  export class ButtonComponent {
17
- @Input() type: 'primary' | 'secondary' | 'default' | 'outline' | 'light' =
18
- 'default'
19
- @Input() disabled = false
20
- @Input() extraClass = ''
21
- @Output() buttonClick = new EventEmitter<void>()
22
-
23
- get classList() {
24
- return `${this.color} ${this.textColor} ${this.borderColor} ${this.extraClass}`
25
- }
17
+ private btnClass: string
26
18
 
27
- get color() {
28
- switch (this.type) {
29
- case 'default':
30
- return 'bg-gray-700 hover:bg-gray-800 hover:bg-gray-800 active:bg-gray-900'
19
+ // btn-classes are explicited to allow tailwind recognize them and add it in css.
20
+ @Input() set type(
21
+ value: 'primary' | 'secondary' | 'default' | 'outline' | 'light'
22
+ ) {
23
+ switch (value) {
31
24
  case 'primary':
32
- return 'bg-primary hover:bg-primary-darker focus:bg-primary-darker active:bg-primary-darkest'
25
+ this.btnClass = 'btn-primary'
26
+ break
33
27
  case 'secondary':
34
- return 'bg-secondary hover:bg-secondary-darker focus:bg-secondary-darker active:bg-secondary-darkest'
28
+ this.btnClass = 'btn-secondary'
29
+ break
35
30
  case 'outline':
36
- return 'bg-white'
31
+ this.btnClass = 'btn-outline'
32
+ break
37
33
  case 'light':
38
- return 'bg-white hover:bg-gray-50 focus:bg-gray-50 active:bg-gray-100'
34
+ this.btnClass = 'btn-light'
35
+ break
36
+ default:
37
+ this.btnClass = 'btn-default'
38
+ break
39
39
  }
40
40
  }
41
41
 
42
- get textColor() {
43
- switch (this.type) {
44
- case 'default':
45
- case 'secondary':
46
- case 'primary':
47
- return 'text-white'
48
- case 'outline':
49
- return 'text-main hover:text-primary-darker focus:text-primary-darker active:text-primary-black'
50
- case 'light':
51
- return 'text-main'
52
- }
53
- }
42
+ @Input() disabled = false
43
+ @Input() extraClass = ''
44
+ @Output() buttonClick = new EventEmitter<void>()
54
45
 
55
- get borderColor() {
56
- switch (this.type) {
57
- case 'default':
58
- return 'border border-gray-700 focus:ring-4 focus:ring-gray-200'
59
- case 'secondary':
60
- return 'border border-secondary focus:ring-4 focus:ring-secondary-lightest'
61
- case 'primary':
62
- return 'border border-primary focus:ring-4 focus:ring-primary-lightest'
63
- case 'outline':
64
- return 'border border-gray-300 hover:border-primary-lighter focus:border-primary-lighter focus:ring-4 focus:ring-primary-lightest active:border-primary-darker'
65
- case 'light':
66
- return 'border border-white focus:ring-4 focus:ring-gray-300'
67
- }
46
+ get classList() {
47
+ return `${this.btnClass} ${this.extraClass}`
68
48
  }
69
49
 
70
50
  handleClick(event: Event) {
@@ -17,7 +17,10 @@ import {
17
17
  } from '@angular/cdk/overlay'
18
18
  import { take } from 'rxjs/operators'
19
19
  import { Choice } from './dropdown-multiselect.model'
20
- import { propagateToDocumentOnly } from '../../../../../../libs/util/shared/src'
20
+ import {
21
+ createFuzzyFilter,
22
+ propagateToDocumentOnly,
23
+ } from '../../../../../../libs/util/shared/src'
21
24
 
22
25
  @Component({
23
26
  selector: 'gn-ui-dropdown-multiselect',
@@ -74,9 +77,9 @@ export class DropdownMultiselectComponent {
74
77
  }
75
78
 
76
79
  get filteredChoicesByText() {
77
- return this.choices.filter((choice) =>
78
- choice.label.toLowerCase().includes(this.searchInputValue?.toLowerCase())
79
- )
80
+ if (!this.searchInputValue) return this.choices
81
+ const filter = createFuzzyFilter(this.searchInputValue)
82
+ return this.choices.filter((choice) => filter(choice.label))
80
83
  }
81
84
 
82
85
  get focusedIndex(): number | -1 {
@@ -1,6 +1,11 @@
1
1
  <button
2
- class="group flex items-center justify-center backdrop-blur p-1 bg-primary-opacity-50 text-white rounded"
2
+ class="group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 text-white rounded content-center"
3
3
  >
4
- <mat-icon class="material-symbols-outlined align-middle">{{ icon }}</mat-icon>
5
- <span class="mx-2 hidden group-hover:inline">{{ label }}</span>
4
+ <mat-icon class="material-symbols-outlined align-middle w-[18px]">{{
5
+ icon
6
+ }}</mat-icon>
7
+ <span
8
+ class="mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75"
9
+ >{{ label.toUpperCase() }}</span
10
+ >
6
11
  </button>
@@ -11,6 +11,7 @@ mat-icon {
11
11
  font-size: 1.5em;
12
12
  margin-top: -0.1em;
13
13
  font-variation-settings: 'opsz' 40;
14
+ stroke: var(--color-primary-darker);
14
15
  }
15
16
 
16
17
  .star-filled {
@@ -1,4 +1,4 @@
1
- :host .carousel-container /deep/ > * {
1
+ :host .carousel-container ::ng-deep > * {
2
2
  flex-shrink: 0;
3
3
  }
4
4
  :host {
@@ -100,6 +100,7 @@ export function loadAppConfig() {
100
100
  'login_url',
101
101
  'web_component_embedder_url',
102
102
  'languages',
103
+ 'contact_email',
103
104
  ],
104
105
  warnings,
105
106
  errors
@@ -126,6 +127,7 @@ export function loadAppConfig() {
126
127
  WEB_COMPONENT_EMBEDDER_URL:
127
128
  parsedGlobalSection.web_component_embedder_url,
128
129
  LANGUAGES: parsedGlobalSection.languages,
130
+ CONTACT_EMAIL: parsedGlobalSection.contact_email,
129
131
  } as GlobalConfig)
130
132
 
131
133
  const parsedLayersSections = parseMultiConfigSection(
@@ -185,6 +187,7 @@ export function loadAppConfig() {
185
187
  'fonts_stylesheet_url',
186
188
  'thumbnail_placeholder',
187
189
  'header_background',
190
+ 'favicon',
188
191
  ],
189
192
  warnings,
190
193
  errors
@@ -204,6 +207,7 @@ export function loadAppConfig() {
204
207
  TITLE_FONT: parsedThemeSection.title_font,
205
208
  MAIN_FONT: parsedThemeSection.main_font,
206
209
  FONTS_STYLESHEET_URL: parsedThemeSection.fonts_stylesheet_url,
210
+ FAVICON: parsedThemeSection.favicon,
207
211
  } as ThemeConfig)
208
212
 
209
213
  const parsedSearchSection = parseConfigSection(
@@ -8,6 +8,7 @@ export interface GlobalConfig {
8
8
  LOGIN_URL?: string
9
9
  WEB_COMPONENT_EMBEDDER_URL?: string
10
10
  LANGUAGES?: string[]
11
+ CONTACT_EMAIL?: string
11
12
  }
12
13
 
13
14
  export interface LayerConfig {
@@ -37,6 +38,7 @@ export interface ThemeConfig {
37
38
  MAIN_FONT?: string
38
39
  TITLE_FONT?: string
39
40
  FONTS_STYLESHEET_URL?: string
41
+ FAVICON?: string
40
42
  }
41
43
 
42
44
  export interface SearchPreset {
@@ -5,3 +5,4 @@ export * from './lib/lang.service'
5
5
  export * from './lib/file.translate.loader'
6
6
  export * from './lib/testing/test.translate.module'
7
7
  export * from './lib/embedded.translate.loader'
8
+ export * from './lib/translate.loader.utils'
@@ -140,4 +140,13 @@ export class ThemeService {
140
140
  }
141
141
  return chroma.hsl(hue % 360, saturation, lightness).css()
142
142
  }
143
+
144
+ static setFavicon(faviconPath: string): void {
145
+ const link =
146
+ document.querySelector("link[rel*='icon']") ||
147
+ document.createElement('link')
148
+ link['rel'] = 'icon'
149
+ link['href'] = faviconPath
150
+ document.getElementsByTagName('head')[0].appendChild(link)
151
+ }
143
152
  }
@@ -0,0 +1,32 @@
1
+ type FuzzyFilter = (input: string) => boolean
2
+
3
+ function normalize(input: string) {
4
+ return input
5
+ .toLowerCase()
6
+ .normalize('NFD') // explode composite chars (e.g. é) into multiple chars
7
+ .replace(/[\u0300-\u036f]/g, '') // remove accents
8
+ .replace(/œ/g, 'oe') // remove accents
9
+ .replace(/[^a-z0-9\s]/g, ' ') // replace special characters with space
10
+ }
11
+
12
+ function asNormalizedParts(input: string): string[] {
13
+ return normalize(input)
14
+ .split(/\s+/)
15
+ .map((part) => part.trim())
16
+ .filter((part) => part.length > 0)
17
+ }
18
+
19
+ /**
20
+ * This creates a filter function based on a pattern (typically a user-input
21
+ * search text).
22
+ * @param pattern
23
+ */
24
+ export function createFuzzyFilter(pattern: string): FuzzyFilter {
25
+ const patternParts = asNormalizedParts(pattern)
26
+ return (input: string) => {
27
+ const inputParts = asNormalizedParts(input)
28
+ return patternParts.every((patternPart) =>
29
+ inputParts.some((part) => part.includes(patternPart))
30
+ )
31
+ }
32
+ }
@@ -5,3 +5,4 @@ export * from './geojson'
5
5
  export * from './sort-by'
6
6
  export * from './url'
7
7
  export * from './event'
8
+ export * from './fuzzy-filter'
package/tailwind.base.css CHANGED
@@ -7,8 +7,38 @@
7
7
  @apply shadow-xl hover:shadow-xl-hover transition-shadow;
8
8
  }
9
9
 
10
+ .btn {
11
+ @apply flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50;
12
+ }
13
+
10
14
  .btn-default {
11
- @apply bg-blue-600 text-white flex gap-3 items-center px-9 py-3 rounded-[50px] hover:scale-[1.02] transition-transform;
15
+ @apply btn text-white
16
+ bg-gray-700 hover:bg-gray-800 active:bg-gray-900
17
+ border border-gray-700 focus:ring-4 focus:ring-gray-200;
18
+ }
19
+
20
+ .btn-primary {
21
+ @apply btn text-white
22
+ bg-primary hover:bg-primary-darker focus:bg-primary-darker active:bg-primary-darkest
23
+ border border-primary focus:ring-4 focus:ring-primary-lightest;
24
+ }
25
+
26
+ .btn-secondary {
27
+ @apply btn text-white
28
+ bg-secondary hover:bg-secondary-darker focus:bg-secondary-darker active:bg-secondary-darkest
29
+ border border-secondary focus:ring-4 focus:ring-secondary-lightest;
30
+ }
31
+
32
+ .btn-outline {
33
+ @apply btn text-main
34
+ bg-white hover:text-primary-darker focus:text-primary-darker active:text-primary-black
35
+ border border-gray-300 hover:border-primary-lighter focus:border-primary-lighter focus:ring-4 focus:ring-primary-lightest active:border-primary-darker;
36
+ }
37
+
38
+ .btn-light {
39
+ @apply btn text-main
40
+ bg-white hover:bg-gray-50 focus:bg-gray-50 active:bg-gray-100
41
+ border border-white focus:ring-4 focus:ring-gray-300;
12
42
  }
13
43
 
14
44
  .badge-btn {
@@ -16,20 +16,20 @@
16
16
  "chart.type.line": "Liniendiagramm",
17
17
  "chart.type.lineSmooth": "Geglättes Liniendiagramm",
18
18
  "chart.type.pie": "Kreisdiagramm",
19
- "dashboard.labels.mySpace": "",
20
- "dashboard.records.all": "",
21
- "dashboard.records.myDraft": "",
22
- "dashboard.records.myLibrary": "",
23
- "dashboard.records.myOrg": "",
24
- "dashboard.records.myRecords": "",
25
- "dashboard.records.noRecord": "",
26
- "dashboard.records.noUser": "",
27
- "dashboard.records.publishedRecords": "",
28
- "dashboard.records.search": "",
29
- "dashboard.records.userDetail": "",
30
- "dashboard.records.userEmail": "",
31
- "dashboard.records.username": "",
32
- "dashboard.records.users": "",
19
+ "dashboard.labels.mySpace": "Mein Bereich",
20
+ "dashboard.records.all": "Katalog",
21
+ "dashboard.records.myDraft": "Meine Entwürfe",
22
+ "dashboard.records.myLibrary": "Meine Bibliothek",
23
+ "dashboard.records.myOrg": "Meine Organisation",
24
+ "dashboard.records.myRecords": "Meine Datensätze",
25
+ "dashboard.records.noRecord": "Kein Datensatz für diese Organisation",
26
+ "dashboard.records.noUser": "Keine Benutzer für diese Organisation",
27
+ "dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
28
+ "dashboard.records.search": "Suche nach \"{searchText}\"",
29
+ "dashboard.records.userDetail": "Name",
30
+ "dashboard.records.userEmail": "E-Mail",
31
+ "dashboard.records.username": "Benutzername",
32
+ "dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
33
33
  "datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
34
34
  "datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
35
35
  "datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
@@ -43,7 +43,7 @@
43
43
  "datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
44
44
  "datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
45
45
  "datafeeder.form.dropdown": "Für welche Skala wurde er erstellt?",
46
- "datafeeder.form.tags": "Wählen Sie einen oder mehrere Tags aus, die zu Ihrem Datensatz passen",
46
+ "datafeeder.form.tags": "Wählen Sie einen oder mehrere Tage aus, die zu Ihrem Datensatz passen",
47
47
  "datafeeder.form.title": "Geben Sie Ihrem Datensatz den besten Titel",
48
48
  "datafeeder.formsPage.title": "Erzählen Sie uns mehr über Ihren Datensatz",
49
49
  "datafeeder.month.april": "April",
@@ -58,16 +58,16 @@
58
58
  "datafeeder.month.november": "November",
59
59
  "datafeeder.month.october": "Oktober",
60
60
  "datafeeder.month.september": "September",
61
- "datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist",
62
- "datafeeder.publish.illustration.title": "Ein weiterer Datensatz zum Veröffentlichen?",
61
+ "datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist.",
62
+ "datafeeder.publish.illustration.title": "Ein weiterer Datensatz \n zum Veröffentlichen?",
63
63
  "datafeeder.publish.subtitle": "Das Veröffentlichen kann einige Minuten dauern.",
64
- "datafeeder.publish.title": "Vielen Dank! Ihr Datensatz wird veröffentlicht",
64
+ "datafeeder.publish.title": "Vielen Dank! \n Ihr Datensatz wird veröffentlicht",
65
65
  "datafeeder.publish.upload": "Jetzt hochladen",
66
66
  "datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
67
67
  "datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
68
68
  "datafeeder.publishSuccess.mapViewer": "Kartenviewer",
69
69
  "datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
70
- "datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! Ihr Datensatz wurde veröffentlicht",
70
+ "datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
71
71
  "datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
72
72
  "datafeeder.summarizePage.illustration": "Kein Fehler? Los geht's!",
73
73
  "datafeeder.summarizePage.previous": "Zurück",
@@ -75,11 +75,11 @@
75
75
  "datafeeder.summarizePage.title": "Sie sind fast fertig...",
76
76
  "datafeeder.upload.acceptedFormats": "Akzeptierte Dateiformate:",
77
77
  "datafeeder.upload.checkboxLabel": "Ich besitze die Rechte zur Veröffentlichung dieses Datensatzes",
78
- "datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geospatialen Datensatz enthält",
78
+ "datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geografischen Datensatz enthält",
79
79
  "datafeeder.upload.error.subtitle.cantOpenFile": "Bitte überprüfen Sie, ob die Datei gültig ist",
80
80
  "datafeeder.upload.error.subtitle.fileFormat": "Beachten Sie: Nur SHP-Dateien",
81
- "datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximal {size} MB",
82
- "datafeeder.upload.error.title.analysis": "Fehler bei der Datensatzanalyse",
81
+ "datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximale Dateigröße {size} MB",
82
+ "datafeeder.upload.error.title.analysis": "Fehler während der Datensatzanalyse",
83
83
  "datafeeder.upload.error.title.cantOpenFile": "Fehler beim Öffnen der Datei",
84
84
  "datafeeder.upload.error.title.fileFormat": "Das ausgewählte Dateiformat wird nicht unterstützt",
85
85
  "datafeeder.upload.error.title.fileHasntSelected": "Keine Datei ausgewählt",
@@ -87,19 +87,19 @@
87
87
  "datafeeder.upload.error.title.noRightsToSendData": "Sie dürfen diesen Datensatz nicht veröffentlichen",
88
88
  "datafeeder.upload.illustration.enrichment": "Anreicherung",
89
89
  "datafeeder.upload.illustration.import": "Import",
90
- "datafeeder.upload.illustration.title": "Das Hinzufügen von Daten war noch nie einfacher",
90
+ "datafeeder.upload.illustration.title": "Das Hinzufügen von Daten \n war noch nie so einfach",
91
91
  "datafeeder.upload.illustration.validation": "Validierung",
92
- "datafeeder.upload.illustration.verification": "Verifizierung",
92
+ "datafeeder.upload.illustration.verification": "Überprüfung",
93
93
  "datafeeder.upload.inputLabel": "Importieren Sie Ihre Datei",
94
94
  "datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
95
95
  "datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
96
96
  "datafeeder.upload.uploadButton": "Hochladen",
97
- "datafeeder.validation.encoding": "Kodierung",
97
+ "datafeeder.validation.encoding": "Codierung",
98
98
  "datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
99
99
  "datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
100
100
  "datafeeder.validation.projection": "Raumbezugssystem:",
101
- "datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem",
102
- "datafeeder.validation.sample.title": "Und eine Beispieleinheit aus dem Datensatz",
101
+ "datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem aus",
102
+ "datafeeder.validation.sample.title": "Und eine Beispielentität aus dem Datensatz",
103
103
  "datafeeder.wizard.emptyRequiredValuesMessage": "Bitte füllen Sie die obligatorischen Felder aus",
104
104
  "datafeeder.wizardSummarize.createdAt": "Erstellt am",
105
105
  "datafeeder.wizardSummarize.scale": "Maßstab",
@@ -109,16 +109,20 @@
109
109
  "datahub.header.news": "Startseite",
110
110
  "datahub.header.organisations": "Organisationen",
111
111
  "datahub.header.popularRecords": "Die beliebtesten",
112
- "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten von meiner Organisation</div>",
112
+ "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
113
+ "datahub.news.contact.contactus": "Kontaktieren Sie uns",
114
+ "datahub.news.contact.html": "<p>Brauchen Sie Daten, die derzeit nicht auf der Plattform vorhanden sind?</p><p>Unsere Teams stehen Ihnen zur Verfügung.</p>",
115
+ "datahub.news.contact.title": "Ein spezielles Bedürfnis?",
113
116
  "datahub.news.feed": "Nachrichtenfeed",
114
117
  "datahub.news.figures": "Indikatoren",
115
- "datahub.search.back": "Zurück zu den Ergebnissen",
118
+ "datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
119
+ "datahub.search.back": "Zurück",
116
120
  "datahub.search.filter.all": "Alle",
117
- "datahub.search.filter.generatedByWfs": "Generiert durch API",
121
+ "datahub.search.filter.generatedByWfs": "Generiert durch eine API",
118
122
  "datahub.search.filter.others": "Andere",
119
123
  "dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
120
124
  "dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
121
- "dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht geparst werden: \"{ info }\"",
125
+ "dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
122
126
  "dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
123
127
  "dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
124
128
  "domain.record.status.completed": "Abgeschlossen",
@@ -126,18 +130,18 @@
126
130
  "domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
127
131
  "domain.record.status.removed": "Entfernt",
128
132
  "domain.record.status.under_development": "In Erstellung",
129
- "domain.record.updateFrequency.asNeeded": "Bei Bedarf",
130
- "domain.record.updateFrequency.continual": "Kontinuierlich",
133
+ "domain.record.updateFrequency.asNeeded": "Nach Bedarf",
134
+ "domain.record.updateFrequency.continual": "Fortlaufend",
131
135
  "domain.record.updateFrequency.day": "{count, plural, =0{0} one{Ein} other{{count}}} mal am Tag",
132
- "domain.record.updateFrequency.irregular": "Unregelmässig",
136
+ "domain.record.updateFrequency.irregular": "Unregelmäßig",
133
137
  "domain.record.updateFrequency.month": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Monat",
134
138
  "domain.record.updateFrequency.notPlanned": "Nicht geplant",
135
- "domain.record.updateFrequency.periodic": "Regelmässig",
139
+ "domain.record.updateFrequency.periodic": "Regelmäßig",
136
140
  "domain.record.updateFrequency.unknown": "Unbekannt",
137
141
  "domain.record.updateFrequency.week": "{count, plural, =0{0} one{Ein} other{{count}}} mal in der Woche",
138
142
  "domain.record.updateFrequency.year": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Jahr",
139
143
  "downloads.format.unknown": "unbekannt",
140
- "downloads.wfs.featuretype.not.found": "Die Schicht wurde nicht gefunden",
144
+ "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
141
145
  "dropFile": "Datei ablegen",
142
146
  "externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
143
147
  "facets.block.title.OrgForResource": "Organisation",
@@ -172,10 +176,17 @@
172
176
  "map.add.layer.file": "Aus einer Datei",
173
177
  "map.add.layer.wfs": "Aus WFS",
174
178
  "map.add.layer.wms": "Aus WMS",
179
+ "map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
180
+ "map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
181
+ "map.layer.add": "Hinzufügen",
182
+ "map.layers.available": "Verfügbare Layer",
175
183
  "map.layers.list": "Ebenen",
176
184
  "map.loading.data": "Kartendaten werden geladen...",
185
+ "map.loading.service": "Dienst wird geladen...",
177
186
  "map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
178
187
  "map.select.layer": "Datenquelle",
188
+ "map.wfs.urlInput.hint": "Geben Sie die WFS URL ein",
189
+ "map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
179
190
  "multiselect.filter.placeholder": "Suche",
180
191
  "nav.back": "Zurück",
181
192
  "next": "weiter",
@@ -191,56 +202,61 @@
191
202
  "pagination.pageOf": "von",
192
203
  "previous": "zurück",
193
204
  "record.action.download": "Herunterladen",
194
- "record.action.view": "Ansehen",
205
+ "record.action.view": "Anzeigen",
195
206
  "record.externalViewer.open": "In externem Kartenviewer öffnen",
196
207
  "record.metadata.about": "Beschreibung",
197
208
  "record.metadata.api": "API",
198
- "record.metadata.api.form.closeButton": "",
199
- "record.metadata.api.form.closeForm": "",
200
- "record.metadata.api.form.create": "",
201
- "record.metadata.api.form.customUrl": "",
202
- "record.metadata.api.form.limit": "",
203
- "record.metadata.api.form.limit.all": "",
204
- "record.metadata.api.form.offset": "",
205
- "record.metadata.api.form.openForm": "",
206
- "record.metadata.api.form.reset": "",
207
- "record.metadata.api.form.title": "",
208
- "record.metadata.api.form.type": "",
209
- "record.metadata.author": "",
209
+ "record.metadata.api.form.closeButton": "Schließen",
210
+ "record.metadata.api.form.closeForm": "Formular schließen",
211
+ "record.metadata.api.form.create": "Ihre Anfrage erstellen",
212
+ "record.metadata.api.form.customUrl": "Benutzerdefinierte URL",
213
+ "record.metadata.api.form.limit": "Anzahl der Datensätze",
214
+ "record.metadata.api.form.limit.all": "Alle",
215
+ "record.metadata.api.form.offset": "Anzahl des ersten Datensatzes",
216
+ "record.metadata.api.form.openForm": "Formular öffnen",
217
+ "record.metadata.api.form.reset": "Zurücksetzen",
218
+ "record.metadata.api.form.title": "Benutzerdefinierte URL generieren",
219
+ "record.metadata.api.form.type": "Ausgabeformat",
220
+ "record.metadata.author": "Autor",
210
221
  "record.metadata.catalog": "Katalog",
211
222
  "record.metadata.contact": "Kontakt",
212
223
  "record.metadata.createdOn": "Erstellt am",
213
- "record.metadata.details": "Details",
224
+ "record.metadata.details": "Technische Informationen",
214
225
  "record.metadata.download": "Downloads",
215
- "record.metadata.formats": "",
226
+ "record.metadata.formats": "Formate",
216
227
  "record.metadata.isOpenData": "Open Data",
217
228
  "record.metadata.keywords": "Stichworte",
229
+ "record.metadata.lastUpdate": "Zuletzt aktualisiert am",
218
230
  "record.metadata.links": "Links",
219
- "record.metadata.noUsage": "Für diesen Datensatz sind keine Verwendungsbedingungen angegeben.",
231
+ "record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
220
232
  "record.metadata.origin": "Über die Daten",
233
+ "record.metadata.owner": "",
221
234
  "record.metadata.preview": "Vorschau",
222
235
  "record.metadata.publications": "Veröffentlichungen",
223
- "record.metadata.quality": "",
224
- "record.metadata.quality.contact.failed": "",
225
- "record.metadata.quality.contact.success": "",
226
- "record.metadata.quality.description.failed": "",
227
- "record.metadata.quality.description.success": "",
228
- "record.metadata.quality.details": "",
229
- "record.metadata.quality.keywords.failed": "",
230
- "record.metadata.quality.keywords.success": "",
231
- "record.metadata.quality.legalConstraints.failed": "",
232
- "record.metadata.quality.legalConstraints.success": "",
233
- "record.metadata.quality.organisation.failed": "",
234
- "record.metadata.quality.organisation.success": "",
235
- "record.metadata.quality.title.failed": "",
236
- "record.metadata.quality.title.success": "",
237
- "record.metadata.quality.topic.failed": "",
238
- "record.metadata.quality.topic.success": "",
239
- "record.metadata.quality.updateFrequency.failed": "",
240
- "record.metadata.quality.updateFrequency.success": "",
236
+ "record.metadata.quality": "Metadatenqualität",
237
+ "record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
238
+ "record.metadata.quality.contact.success": "Kontakt angegeben",
239
+ "record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
240
+ "record.metadata.quality.description.success": "Beschreibung angegeben",
241
+ "record.metadata.quality.details": "Details",
242
+ "record.metadata.quality.keywords.failed": "Schlagwörter nicht angegeben",
243
+ "record.metadata.quality.keywords.success": "Schlagwörter angegeben",
244
+ "record.metadata.quality.legalConstraints.failed": "Rechtliche Beschränkungen nicht angegeben",
245
+ "record.metadata.quality.legalConstraints.success": "Rechtliche Beschränkungen angegeben",
246
+ "record.metadata.quality.organisation.failed": "Organisation nicht angegeben",
247
+ "record.metadata.quality.organisation.success": "Organisation angegeben",
248
+ "record.metadata.quality.title.failed": "Titel nicht angegeben",
249
+ "record.metadata.quality.title.success": "Titel angegeben",
250
+ "record.metadata.quality.topic.failed": "Thema nicht angegeben",
251
+ "record.metadata.quality.topic.success": "Thema angegeben",
252
+ "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
253
+ "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
241
254
  "record.metadata.related": "Ähnliche Datensätze",
242
- "record.metadata.sheet": "Weitere Informationen erhalten Sie unter :",
255
+ "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
256
+ "record.metadata.themes": "Kategorien",
243
257
  "record.metadata.title": "Titel",
258
+ "record.metadata.type": "Geographischer Datensatz",
259
+ "record.metadata.uniqueId": "Eindeutige Kennung",
244
260
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
245
261
  "record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
246
262
  "record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
@@ -252,23 +268,23 @@
252
268
  "record.was.created.time": "erstellte diesen Datensatz {time}",
253
269
  "records": "Datensätze",
254
270
  "results.layout.selectOne": "Layout auswählen",
255
- "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{auf {hits} insgesamt angezeigt.}}",
256
- "results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie andere Wörter</li><li>Geben Sie weniger Wörter ein</li></ul>",
271
+ "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",
272
+ "results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie es mit anderen Worten</li><li>Beschränken Sie die Suchwörter</li></ul>",
257
273
  "results.records.hits.found": "{hits, plural, =0{Keine Dokumente entsprechen der angegebenen Suche.} one{1 Datensatz gefunden.} other{{hits} Datensätze gefunden.}}",
258
- "results.records.hits.selected": "",
274
+ "results.records.hits.selected": "{ amount } ausgewählt",
259
275
  "results.showMore": "Mehr Ergebnisse anzeigen...",
260
- "results.sortBy.dateStamp": "Letzte Aktualisierungen",
276
+ "results.sortBy.dateStamp": "Neueste",
261
277
  "results.sortBy.popularity": "Beliebtheit",
262
- "results.sortBy.qualityScore": "",
278
+ "results.sortBy.qualityScore": "Qualitätsbewertung",
263
279
  "results.sortBy.relevancy": "Relevanz",
264
280
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
265
281
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
266
- "search.error.receivedError": "Ein Fehler wurde empfangen",
282
+ "search.error.receivedError": "Ein Fehler ist aufgetreten",
267
283
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
268
- "search.field.any.placeholder": "Suche nach Datensätzen ...",
284
+ "search.field.any.placeholder": "Suche Datensätze ...",
269
285
  "search.field.sortBy": "Sortieren nach:",
270
286
  "search.filters.clear": "Zurücksetzen",
271
- "search.filters.contact": "Kontakt",
287
+ "search.filters.contact": "Kontakte",
272
288
  "search.filters.format": "Formate",
273
289
  "search.filters.inspireKeyword": "INSPIRE-Schlüsselwort",
274
290
  "search.filters.isSpatial": "Ist räumliche Daten",
@@ -286,13 +302,13 @@
286
302
  "search.filters.license.unknown": "Unbekannt oder nicht vorhanden",
287
303
  "search.filters.maximize": "Erweitern",
288
304
  "search.filters.minimize": "Minimieren",
289
- "search.filters.myRecords": "",
290
- "search.filters.myRecordsHelp": "",
291
- "search.filters.otherRecords": "",
305
+ "search.filters.myRecords": "Nur meine Datensätze anzeigen",
306
+ "search.filters.myRecordsHelp": "Wenn dies aktiviert ist, werden nur von mir erstellte Datensätze angezeigt; Datensätze, die von anderen erstellt wurden, werden nicht angezeigt.",
307
+ "search.filters.otherRecords": "Datensätze von einer anderen Person anzeigen",
292
308
  "search.filters.publicationYear": "Veröffentlichungsjahr",
293
309
  "search.filters.publisher": "Organisationen",
294
- "search.filters.representationType": "",
295
- "search.filters.resourceType": "",
310
+ "search.filters.representationType": "Repräsentationstyp",
311
+ "search.filters.resourceType": "Ressourcentyp",
296
312
  "search.filters.standard": "Standard",
297
313
  "search.filters.title": "Ergebnisse filtern",
298
314
  "search.filters.topic": "Thema",
@@ -304,6 +320,7 @@
304
320
  "table.object.count": "Objekte in diesem Datensatz",
305
321
  "table.select.data": "Datenquelle",
306
322
  "tooltip.html.copy": "HTML kopieren",
323
+ "tooltip.id.copy": "",
307
324
  "tooltip.url.copy": "URL kopieren",
308
325
  "tooltip.url.open": "URL öffnen",
309
326
  "ui.readLess": "Weniger lesen",