geonetwork-ui 2.4.0-dev.e1bb65c4 → 2.4.0-dev.e4dc8777

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 (144) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +2 -1
  2. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +2 -2
  4. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -5
  5. package/esm2022/libs/common/domain/src/lib/model/record/organization.model.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  7. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  8. package/esm2022/libs/feature/catalog/src/index.mjs +2 -1
  9. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +1 -1
  10. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  11. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +4 -0
  12. package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +4 -6
  13. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -2
  14. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +6 -3
  15. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +2 -1
  16. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  17. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +9 -2
  18. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +8 -1
  19. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  20. package/esm2022/libs/feature/search/src/lib/state/selectors.mjs +4 -1
  21. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +7 -3
  22. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +5 -5
  23. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +5 -2
  24. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -8
  25. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  26. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  27. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +5 -3
  28. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +4 -4
  29. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +24 -5
  30. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +7 -9
  31. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  32. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +71 -0
  33. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +1 -1
  34. package/esm2022/translations/de.json +25 -4
  35. package/esm2022/translations/en.json +25 -4
  36. package/esm2022/translations/es.json +25 -4
  37. package/esm2022/translations/fr.json +26 -5
  38. package/esm2022/translations/it.json +25 -4
  39. package/esm2022/translations/nl.json +25 -4
  40. package/esm2022/translations/pt.json +25 -4
  41. package/fesm2022/geonetwork-ui.mjs +338 -136
  42. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  43. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  44. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  45. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -1
  46. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  47. package/libs/common/domain/src/lib/model/record/organization.model.d.ts +1 -0
  48. package/libs/common/domain/src/lib/model/record/organization.model.d.ts.map +1 -1
  49. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
  50. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  51. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  52. package/libs/feature/catalog/src/index.d.ts +1 -0
  53. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  54. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  55. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  56. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +3 -0
  57. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -0
  58. package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
  59. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  60. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  61. package/libs/feature/router/src/lib/default/constants.d.ts +1 -0
  62. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  63. package/libs/feature/router/src/lib/default/router.config.d.ts +1 -0
  64. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  65. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -0
  66. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  67. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +1 -0
  68. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  69. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  70. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  71. package/libs/feature/search/src/lib/state/selectors.d.ts +1 -0
  72. package/libs/feature/search/src/lib/state/selectors.d.ts.map +1 -1
  73. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  74. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts +2 -2
  75. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +2 -1
  76. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  77. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -2
  78. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  79. package/libs/ui/elements/src/index.d.ts +0 -1
  80. package/libs/ui/elements/src/index.d.ts.map +1 -1
  81. package/libs/ui/elements/src/lib/error/error.component.d.ts +3 -1
  82. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -1
  83. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +5 -1
  84. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  85. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +19 -19
  86. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  87. package/libs/ui/layout/src/index.d.ts +1 -0
  88. package/libs/ui/layout/src/index.d.ts.map +1 -1
  89. package/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.d.ts +2 -2
  90. package/libs/ui/layout/src/lib/max-lines/max-lines.component.d.ts.map +1 -0
  91. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  92. package/package.json +1 -1
  93. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -0
  94. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +3 -1
  95. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +1 -1
  96. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +26 -15
  97. package/src/libs/common/domain/src/lib/model/record/organization.model.ts +1 -0
  98. package/src/libs/common/domain/src/lib/platform.service.interface.ts +5 -1
  99. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +28 -0
  100. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +4 -0
  101. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +2 -0
  102. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  103. package/src/libs/feature/catalog/src/index.ts +1 -0
  104. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -1
  105. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.html +1 -1
  106. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +2 -2
  107. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +6 -0
  108. package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
  109. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +8 -6
  110. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +6 -2
  111. package/src/libs/feature/router/src/lib/default/constants.ts +1 -0
  112. package/src/libs/feature/router/src/lib/default/router.config.ts +1 -0
  113. package/src/libs/feature/router/src/lib/default/router.service.ts +13 -1
  114. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +9 -1
  115. package/src/libs/feature/search/src/lib/state/search.facade.ts +5 -0
  116. package/src/libs/feature/search/src/lib/state/selectors.ts +7 -0
  117. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +16 -2
  118. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +8 -6
  119. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  120. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +2 -0
  121. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +11 -3
  122. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +3 -7
  123. package/src/libs/ui/elements/src/index.ts +0 -1
  124. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +29 -29
  125. package/src/libs/ui/elements/src/lib/error/error.component.html +30 -6
  126. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -0
  127. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  128. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +22 -1
  129. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -4
  130. package/src/libs/ui/layout/src/index.ts +1 -0
  131. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.html +1 -0
  132. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.ts +9 -5
  133. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -1
  134. package/translations/de.json +25 -4
  135. package/translations/en.json +25 -4
  136. package/translations/es.json +25 -4
  137. package/translations/fr.json +26 -5
  138. package/translations/it.json +25 -4
  139. package/translations/nl.json +25 -4
  140. package/translations/pt.json +25 -4
  141. package/translations/sk.json +26 -5
  142. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +0 -69
  143. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +0 -1
  144. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.css +0 -0
@@ -8,7 +8,6 @@ export * from './lib/image-overlay-preview/image-overlay-preview.component'
8
8
  export * from './lib/link-card/link-card.component'
9
9
  export * from './lib/markdown-editor/markdown-editor.component'
10
10
  export * from './lib/markdown-parser/markdown-parser.component'
11
- export * from './lib/max-lines/max-lines.component'
12
11
  export * from './lib/metadata-catalog/metadata-catalog.component'
13
12
  export * from './lib/metadata-contact/metadata-contact.component'
14
13
  export * from './lib/metadata-info/metadata-info.component'
@@ -1,7 +1,5 @@
1
1
  <div
2
- class="group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden"
3
- [ngClass]="{ 'cursor-pointer': displayApiFormButton }"
4
- (click)="openRecordApiFormPanel()"
2
+ class="group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden cursor-default"
5
3
  >
6
4
  <div
7
5
  class="font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]"
@@ -17,35 +15,37 @@
17
15
  }"
18
16
  >{{ link.accessServiceProtocol }}</span
19
17
  >
20
- <gn-ui-copy-text-button
21
- *ngIf="!displayApiFormButton"
22
- [text]="link.url.toString()"
23
- [tooltipText]="'tooltip.url.copy' | translate"
24
- [displayText]="false"
25
- ></gn-ui-copy-text-button>
26
- <button
27
- *ngIf="displayApiFormButton"
28
- type="button"
29
- [ngClass]="{
30
- 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':
31
- displayText
32
- }"
33
- mat-raised-button
34
- [matTooltip]="
35
- !currentlyActive
36
- ? ('record.metadata.api.form.openForm' | translate)
37
- : ('record.metadata.api.form.closeForm' | translate)
38
- "
39
- matTooltipPosition="above"
40
- >
41
- <mat-icon
42
- class="material-symbols-outlined pointer-events-none align-middle card-icon"
18
+ <div class="flex flex-row gap-2 items-center">
19
+ <gn-ui-copy-text-button
20
+ [text]="link.url"
21
+ [tooltipText]="'tooltip.url.copy' | translate"
22
+ [displayText]="false"
23
+ ></gn-ui-copy-text-button>
24
+ <button
25
+ *ngIf="displayApiFormButton"
26
+ type="button"
43
27
  [ngClass]="{
44
- 'text-secondary opacity-100': currentlyActive
28
+ 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':
29
+ displayText
45
30
  }"
46
- >more_horiz</mat-icon
31
+ mat-raised-button
32
+ [matTooltip]="
33
+ !currentlyActive
34
+ ? ('record.metadata.api.form.openForm' | translate)
35
+ : ('record.metadata.api.form.closeForm' | translate)
36
+ "
37
+ matTooltipPosition="above"
38
+ (click)="openRecordApiFormPanel()"
47
39
  >
48
- </button>
40
+ <mat-icon
41
+ class="material-symbols-outlined pointer-events-none align-middle card-icon"
42
+ [ngClass]="{
43
+ 'text-secondary opacity-100': currentlyActive
44
+ }"
45
+ >more_horiz</mat-icon
46
+ >
47
+ </button>
48
+ </div>
49
49
  </div>
50
50
  </div>
51
51
  </div>
@@ -8,11 +8,11 @@
8
8
  <div class="relative opacity-40">
9
9
  <mat-icon class="material-symbols-outlined face">face</mat-icon>
10
10
  <mat-icon class="material-symbols-outlined question-mark1"
11
- >question_mark</mat-icon
12
- >
11
+ >question_mark
12
+ </mat-icon>
13
13
  <mat-icon class="material-symbols-outlined question-mark2"
14
- >question_mark</mat-icon
15
- >
14
+ >question_mark
15
+ </mat-icon>
16
16
  </div>
17
17
  <div translate>search.error.couldNotReachApi</div>
18
18
  </div>
@@ -32,6 +32,15 @@
32
32
  <div translate>search.error.receivedError</div>
33
33
  <div *ngIf="error">{{ error }}</div>
34
34
  </div>
35
+ <div *ngIf="type === types.ORGANIZATION_HAS_NO_DATASET">
36
+ <div class="relative opacity-40">
37
+ <mat-icon class="material-symbols-outlined computer">computer</mat-icon>
38
+ <mat-icon class="material-symbols-outlined computer-question-mark"
39
+ >question_mark
40
+ </mat-icon>
41
+ </div>
42
+ <div translate>search.error.organizationHasNoDataset</div>
43
+ </div>
35
44
  <div
36
45
  *ngIf="type === types.RECORD_NOT_FOUND"
37
46
  data-test="record-not-found-error"
@@ -39,12 +48,27 @@
39
48
  <div class="relative opacity-40">
40
49
  <mat-icon class="material-symbols-outlined computer">computer</mat-icon>
41
50
  <mat-icon class="material-symbols-outlined computer-question-mark"
42
- >question_mark</mat-icon
43
- >
51
+ >question_mark
52
+ </mat-icon>
44
53
  </div>
45
54
  <div translate [translateParams]="{ id: recordId }">
46
55
  search.error.recordNotFound
47
56
  </div>
48
57
  <div *ngIf="error">{{ error }}</div>
49
58
  </div>
59
+ <div
60
+ *ngIf="type === types.ORGANIZATION_NOT_FOUND"
61
+ data-test="org-not-found-error"
62
+ >
63
+ <div class="relative opacity-40">
64
+ <mat-icon class="material-symbols-outlined computer">computer</mat-icon>
65
+ <mat-icon class="material-symbols-outlined computer-question-mark"
66
+ >question_mark
67
+ </mat-icon>
68
+ </div>
69
+ <div translate [translateParams]="{ id: recordId }">
70
+ search.error.organizationNotFound
71
+ </div>
72
+ <div *ngIf="error">{{ error }}</div>
73
+ </div>
50
74
  </div>
@@ -5,6 +5,8 @@ export enum ErrorType {
5
5
  RECEIVED_ERROR,
6
6
  RECORD_NOT_FOUND,
7
7
  DATASET_HAS_NO_LINK,
8
+ ORGANIZATION_HAS_NO_DATASET,
9
+ ORGANIZATION_NOT_FOUND,
8
10
  }
9
11
 
10
12
  @Component({
@@ -1,5 +1,5 @@
1
1
  <a
2
- class="w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]"
2
+ [class]="classList"
3
3
  [routerLink]="['/dataset', record.uniqueIdentifier]"
4
4
  target="_blank"
5
5
  >
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, Input } from '@angular/core'
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
2
2
  import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
3
3
 
4
4
  @Component({
@@ -8,5 +8,26 @@ import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/mode
8
8
  changeDetection: ChangeDetectionStrategy.OnPush,
9
9
  })
10
10
  export class RelatedRecordCardComponent {
11
+ private readonly baseClasses: string
12
+
11
13
  @Input() record: CatalogRecord
14
+ @Input() extraClass = ''
15
+
16
+ constructor() {
17
+ this.baseClasses = [
18
+ 'w-72',
19
+ 'h-96',
20
+ 'overflow-hidden',
21
+ 'rounded-lg',
22
+ 'bg-white',
23
+ 'cursor-pointer',
24
+ 'block',
25
+ 'hover:-translate-y-2 ',
26
+ 'duration-[180ms]',
27
+ ].join(' ')
28
+ }
29
+
30
+ get classList() {
31
+ return `${this.baseClasses} ${this.extraClass}`
32
+ }
12
33
  }
@@ -10,7 +10,7 @@ import { DownloadItemComponent } from './download-item/download-item.component'
10
10
  import { DownloadsListComponent } from './downloads-list/downloads-list.component'
11
11
  import { ApiCardComponent } from './api-card/api-card.component'
12
12
  import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
13
- import { UiLayoutModule } from '../../../../../libs/ui/layout/src'
13
+ import { MaxLinesComponent, UiLayoutModule } from '../../../../../libs/ui/layout/src'
14
14
  import { TranslateModule } from '@ngx-translate/core'
15
15
  import { RelatedRecordCardComponent } from './related-record-card/related-record-card.component'
16
16
  import { MetadataContactComponent } from './metadata-contact/metadata-contact.component'
@@ -26,7 +26,6 @@ import { AvatarComponent } from './avatar/avatar.component'
26
26
  import { UserPreviewComponent } from './user-preview/user-preview.component'
27
27
  import { GnUiLinkifyDirective } from './metadata-info/linkify.directive'
28
28
  import { PaginationButtonsComponent } from './pagination-buttons/pagination-buttons.component'
29
- import { MaxLinesComponent } from './max-lines/max-lines.component'
30
29
  import { RecordApiFormComponent } from './record-api-form/record-api-form.component'
31
30
  import { MarkdownParserComponent } from './markdown-parser/markdown-parser.component'
32
31
  import { ImageOverlayPreviewComponent } from './image-overlay-preview/image-overlay-preview.component'
@@ -50,6 +49,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
50
49
  ThumbnailComponent,
51
50
  TimeSincePipe,
52
51
  BadgeComponent,
52
+ MaxLinesComponent,
53
53
  ],
54
54
  declarations: [
55
55
  MetadataInfoComponent,
@@ -68,7 +68,6 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
68
68
  UserPreviewComponent,
69
69
  GnUiLinkifyDirective,
70
70
  PaginationButtonsComponent,
71
- MaxLinesComponent,
72
71
  RecordApiFormComponent,
73
72
  UserFeedbackItemComponent,
74
73
  ImageOverlayPreviewComponent,
@@ -90,7 +89,6 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
90
89
  AvatarComponent,
91
90
  UserPreviewComponent,
92
91
  PaginationButtonsComponent,
93
- MaxLinesComponent,
94
92
  RecordApiFormComponent,
95
93
  MarkdownParserComponent,
96
94
  UserFeedbackItemComponent,
@@ -3,6 +3,7 @@ export * from './lib/carousel/carousel.component'
3
3
  export * from './lib/expandable-panel-button/expandable-panel-button.component'
4
4
  export * from './lib/expandable-panel/expandable-panel.component'
5
5
  export * from './lib/form-field-wrapper/form-field-wrapper.component'
6
+ export * from './lib/max-lines/max-lines.component'
6
7
  export * from './lib/interactive-table/interactive-table-column/interactive-table-column.component'
7
8
  export * from './lib/interactive-table/interactive-table.component'
8
9
  export * from './lib/sticky-header/sticky-header.component'
@@ -14,6 +14,7 @@
14
14
  *ngIf="showToggleButton"
15
15
  (click)="toggleDisplay()"
16
16
  class="text-secondary cursor-pointer pt-2.5"
17
+ data-cy="readMoreButton"
17
18
  >
18
19
  {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}
19
20
  </div>
@@ -1,19 +1,23 @@
1
1
  import {
2
+ AfterViewInit,
3
+ ChangeDetectionStrategy,
4
+ ChangeDetectorRef,
2
5
  Component,
3
- Input,
4
6
  ElementRef,
5
- ChangeDetectionStrategy,
6
- AfterViewInit,
7
- ViewChild,
7
+ Input,
8
8
  OnDestroy,
9
- ChangeDetectorRef,
9
+ ViewChild,
10
10
  } from '@angular/core'
11
+ import { CommonModule } from '@angular/common'
12
+ import { TranslateModule } from '@ngx-translate/core'
11
13
 
12
14
  @Component({
13
15
  selector: 'gn-ui-max-lines',
14
16
  templateUrl: './max-lines.component.html',
15
17
  styleUrls: ['./max-lines.component.css'],
16
18
  changeDetection: ChangeDetectionStrategy.OnPush,
19
+ standalone: true,
20
+ imports: [CommonModule, TranslateModule],
17
21
  })
18
22
  export class MaxLinesComponent implements AfterViewInit, OnDestroy {
19
23
  @Input() maxLines = 6
@@ -6,7 +6,6 @@ import { StickyHeaderComponent } from './sticky-header/sticky-header.component'
6
6
  import { AnchorLinkDirective } from './anchor-link/anchor-link.directive'
7
7
  import { ExpandablePanelButtonComponent } from './expandable-panel-button/expandable-panel-button.component'
8
8
  import { MatIconModule } from '@angular/material/icon'
9
- import { CarouselComponent } from './carousel/carousel.component'
10
9
 
11
10
  @NgModule({
12
11
  imports: [CommonModule, MatIconModule, TranslateModule.forChild()],
@@ -2,7 +2,7 @@
2
2
  "Add Layer As": "",
3
3
  "button.login": "",
4
4
  "catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
5
- "catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
5
+ "catalog.figures.organizations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
6
6
  "chart.aggregation.average": "Durchschnitt",
7
7
  "chart.aggregation.count": "Anzahl",
8
8
  "chart.aggregation.max": "Maximum",
@@ -49,6 +49,8 @@
49
49
  "datafeeder.datasetValidation.submitButton": "OK, meine Daten sind korrekt",
50
50
  "datafeeder.datasetValidation.title": "Stellen Sie sicher, dass Ihre Daten korrekt sind",
51
51
  "datafeeder.datasetValidation.unknown": " - ",
52
+ "datafeeder.datasetValidationCsv.explicitLineNumbers": "",
53
+ "datafeeder.datasetValidationCsv.lineNumbers": "",
52
54
  "datafeeder.form.abstract": "Wie würden Sie Ihren Datensatz beschreiben?",
53
55
  "datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
54
56
  "datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
@@ -76,6 +78,7 @@
76
78
  "datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
77
79
  "datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
78
80
  "datafeeder.publishSuccess.mapViewer": "Kartenviewer",
81
+ "datafeeder.publishSuccess.ogcFeature": "",
79
82
  "datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
80
83
  "datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
81
84
  "datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
@@ -104,6 +107,15 @@
104
107
  "datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
105
108
  "datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
106
109
  "datafeeder.upload.uploadButton": "Hochladen",
110
+ "datafeeder.validation.csv.delimiter": "",
111
+ "datafeeder.validation.csv.delimiter.comma": "",
112
+ "datafeeder.validation.csv.delimiter.semicolon": "",
113
+ "datafeeder.validation.csv.lat.field": "",
114
+ "datafeeder.validation.csv.lng.field": "",
115
+ "datafeeder.validation.csv.quote.double": "",
116
+ "datafeeder.validation.csv.quote.none": "",
117
+ "datafeeder.validation.csv.quote.simple": "",
118
+ "datafeeder.validation.csv.quoteChar": "",
107
119
  "datafeeder.validation.encoding": "Codierung",
108
120
  "datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
109
121
  "datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
@@ -117,7 +129,7 @@
117
129
  "datahub.header.lastRecords": "Die neuesten",
118
130
  "datahub.header.myfavorites": "Meine Favoriten",
119
131
  "datahub.header.news": "Startseite",
120
- "datahub.header.organisations": "Organisationen",
132
+ "datahub.header.organizations": "Organisationen",
121
133
  "datahub.header.popularRecords": "Die beliebtesten",
122
134
  "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
123
135
  "datahub.news.contact.contactus": "Kontaktieren Sie uns",
@@ -153,6 +165,7 @@
153
165
  "downloads.format.unknown": "unbekannt",
154
166
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
155
167
  "dropFile": "Datei ablegen",
168
+ "editor.record.form.keywords": "Schlagwörter",
156
169
  "editor.record.form.license": "Lizenz",
157
170
  "editor.record.form.license.cc-by": "",
158
171
  "editor.record.form.license.cc-by-sa": "",
@@ -252,6 +265,10 @@
252
265
  "organisations.sortBy.nameDesc": "Name Z → A",
253
266
  "organisations.sortBy.recordCountAsc": "Veröffentlichungen 0 → 9",
254
267
  "organisations.sortBy.recordCountDesc": "Veröffentlichungen 9 → 0",
268
+ "organization.details.lastPublishedDatasets": "",
269
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
270
+ "organization.details.mailContact": "",
271
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
255
272
  "pagination.nextPage": "Nächste Seite",
256
273
  "pagination.page": "Seite",
257
274
  "pagination.pageOf": "von",
@@ -289,7 +306,7 @@
289
306
  "record.metadata.preview": "Vorschau",
290
307
  "record.metadata.producer": "Datenproduzent",
291
308
  "record.metadata.publication": "Veröffentlichungsdatum",
292
- "record.metadata.publications": "Veröffentlichungen",
309
+ "record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
293
310
  "record.metadata.quality": "Metadatenqualität",
294
311
  "record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
295
312
  "record.metadata.quality.contact.success": "Kontakt angegeben",
@@ -349,6 +366,8 @@
349
366
  "results.sortBy.relevancy": "Relevanz",
350
367
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
351
368
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
369
+ "search.error.organizationHasNoDataset": "",
370
+ "search.error.organizationNotFound": "",
352
371
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
353
372
  "search.error.recordHasnolink": "",
354
373
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
@@ -376,9 +395,11 @@
376
395
  "search.filters.minimize": "Minimieren",
377
396
  "search.filters.myRecords": "Nur meine Datensätze anzeigen",
378
397
  "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.",
398
+ "search.filters.organization": "",
379
399
  "search.filters.otherRecords": "Datensätze von einer anderen Person anzeigen",
400
+ "search.filters.producerOrg": "",
380
401
  "search.filters.publicationYear": "Veröffentlichungsjahr",
381
- "search.filters.publisher": "Organisationen",
402
+ "search.filters.publisherOrg": "",
382
403
  "search.filters.representationType": "Repräsentationstyp",
383
404
  "search.filters.resourceType": "Ressourcentyp",
384
405
  "search.filters.standard": "Standard",
@@ -2,7 +2,7 @@
2
2
  "Add Layer As": "",
3
3
  "button.login": "Log in",
4
4
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
5
- "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
5
+ "catalog.figures.organizations": "{count, plural, =0{organizations} one{organization} other{organizations}}",
6
6
  "chart.aggregation.average": "average",
7
7
  "chart.aggregation.count": "count",
8
8
  "chart.aggregation.max": "max",
@@ -49,6 +49,8 @@
49
49
  "datafeeder.datasetValidation.submitButton": "OK, my data are correct",
50
50
  "datafeeder.datasetValidation.title": "Make sure your data are correct",
51
51
  "datafeeder.datasetValidation.unknown": " - ",
52
+ "datafeeder.datasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
53
+ "datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
52
54
  "datafeeder.form.abstract": "How would you describe your dataset?",
53
55
  "datafeeder.form.datepicker": "Do you know when the dataset was created?",
54
56
  "datafeeder.form.description": "Finally, please describe the process that was used to create the dataset",
@@ -76,6 +78,7 @@
76
78
  "datafeeder.publishSuccess.geonetworkRecord": "Metadata record",
77
79
  "datafeeder.publishSuccess.illustration.title": "Done, all is good!",
78
80
  "datafeeder.publishSuccess.mapViewer": "Map viewer",
81
+ "datafeeder.publishSuccess.ogcFeature": "OGC API",
79
82
  "datafeeder.publishSuccess.subtitle": "View your data in:",
80
83
  "datafeeder.publishSuccess.title": "Congratulation! \n Your dataset has been published",
81
84
  "datafeeder.publishSuccess.uploadAnotherData": "Upload another dataset",
@@ -104,6 +107,15 @@
104
107
  "datafeeder.upload.maxFileSize": "Maximum file size is {size} MB",
105
108
  "datafeeder.upload.title": "Upload your dataset",
106
109
  "datafeeder.upload.uploadButton": "Upload",
110
+ "datafeeder.validation.csv.delimiter": "Delimiter",
111
+ "datafeeder.validation.csv.delimiter.comma": "Comma",
112
+ "datafeeder.validation.csv.delimiter.semicolon": "Semicolon",
113
+ "datafeeder.validation.csv.lat.field": "Latitude column",
114
+ "datafeeder.validation.csv.lng.field": "Longitude column",
115
+ "datafeeder.validation.csv.quote.double": "Double quote",
116
+ "datafeeder.validation.csv.quote.none": "None",
117
+ "datafeeder.validation.csv.quote.simple": "Simple quote",
118
+ "datafeeder.validation.csv.quoteChar": "Quote separator",
107
119
  "datafeeder.validation.encoding": "encoding",
108
120
  "datafeeder.validation.extent.title": "Here is the dataset extent",
109
121
  "datafeeder.validation.extent.title.unknown": "The projection system is unknown",
@@ -117,7 +129,7 @@
117
129
  "datahub.header.lastRecords": "The latest",
118
130
  "datahub.header.myfavorites": "My favorites",
119
131
  "datahub.header.news": "Home",
120
- "datahub.header.organisations": "Organisations",
132
+ "datahub.header.organizations": "Organizations",
121
133
  "datahub.header.popularRecords": "The most popular",
122
134
  "datahub.header.title.html": "<div class=\"text-white\">Discover open<br> data from my Organization</div>",
123
135
  "datahub.news.contact.contactus": "Contact us",
@@ -153,6 +165,7 @@
153
165
  "downloads.format.unknown": "unknown",
154
166
  "downloads.wfs.featuretype.not.found": "The layer was not found",
155
167
  "dropFile": "drop file",
168
+ "editor.record.form.keywords": "Keywords",
156
169
  "editor.record.form.license": "License",
157
170
  "editor.record.form.license.cc-by": "Creative Commons CC-BY",
158
171
  "editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
@@ -252,6 +265,10 @@
252
265
  "organisations.sortBy.nameDesc": "Name Z → A",
253
266
  "organisations.sortBy.recordCountAsc": "Publications 0 → 9",
254
267
  "organisations.sortBy.recordCountDesc": "Publications 9 → 0",
268
+ "organization.details.lastPublishedDatasets": "Last published datasets",
269
+ "organization.details.lastPublishedDatasets.searchAllButton": "Search all",
270
+ "organization.details.mailContact": "Contact by email",
271
+ "organization.header.recordCount": "{count, plural, =0{data} one{data} other{datas}}",
255
272
  "pagination.nextPage": "Next page",
256
273
  "pagination.page": "page",
257
274
  "pagination.pageOf": "of",
@@ -289,7 +306,7 @@
289
306
  "record.metadata.preview": "Preview",
290
307
  "record.metadata.producer": "Data producer",
291
308
  "record.metadata.publication": "Date of publication",
292
- "record.metadata.publications": "publications",
309
+ "record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
293
310
  "record.metadata.quality": "Metadata Quality",
294
311
  "record.metadata.quality.contact.failed": "Contact is not specified",
295
312
  "record.metadata.quality.contact.success": "Contact is specified",
@@ -349,6 +366,8 @@
349
366
  "results.sortBy.relevancy": "Relevancy",
350
367
  "search.autocomplete.error": "Suggestions could not be fetched:",
351
368
  "search.error.couldNotReachApi": "The API could not be reached",
369
+ "search.error.organizationHasNoDataset": "This organization has no dataset yet.",
370
+ "search.error.organizationNotFound": "This organization could not be found.",
352
371
  "search.error.receivedError": "An error was received",
353
372
  "search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
354
373
  "search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
@@ -376,9 +395,11 @@
376
395
  "search.filters.minimize": "Minimize",
377
396
  "search.filters.myRecords": "Show only my records",
378
397
  "search.filters.myRecordsHelp": "When this is enabled, records only created by myself are shown; records created by others will not show up.",
398
+ "search.filters.organization": "Organization",
379
399
  "search.filters.otherRecords": "Showing records from another person",
400
+ "search.filters.producerOrg": "Producer",
380
401
  "search.filters.publicationYear": "Publication year",
381
- "search.filters.publisher": "Organizations",
402
+ "search.filters.publisherOrg": "Publisher",
382
403
  "search.filters.representationType": "Representation type",
383
404
  "search.filters.resourceType": "Resource type",
384
405
  "search.filters.standard": "Standard",
@@ -2,7 +2,7 @@
2
2
  "Add Layer As": "",
3
3
  "button.login": "",
4
4
  "catalog.figures.datasets": "conjuntos de datos",
5
- "catalog.figures.organisations": "organizaciones",
5
+ "catalog.figures.organizations": "organizaciones",
6
6
  "chart.aggregation.average": "promedio",
7
7
  "chart.aggregation.count": "conteo",
8
8
  "chart.aggregation.max": "máximo",
@@ -49,6 +49,8 @@
49
49
  "datafeeder.datasetValidation.submitButton": "",
50
50
  "datafeeder.datasetValidation.title": "",
51
51
  "datafeeder.datasetValidation.unknown": "",
52
+ "datafeeder.datasetValidationCsv.explicitLineNumbers": "",
53
+ "datafeeder.datasetValidationCsv.lineNumbers": "",
52
54
  "datafeeder.form.abstract": "",
53
55
  "datafeeder.form.datepicker": "",
54
56
  "datafeeder.form.description": "",
@@ -76,6 +78,7 @@
76
78
  "datafeeder.publishSuccess.geonetworkRecord": "",
77
79
  "datafeeder.publishSuccess.illustration.title": "",
78
80
  "datafeeder.publishSuccess.mapViewer": "",
81
+ "datafeeder.publishSuccess.ogcFeature": "",
79
82
  "datafeeder.publishSuccess.subtitle": "",
80
83
  "datafeeder.publishSuccess.title": "",
81
84
  "datafeeder.publishSuccess.uploadAnotherData": "",
@@ -104,6 +107,15 @@
104
107
  "datafeeder.upload.maxFileSize": "",
105
108
  "datafeeder.upload.title": "",
106
109
  "datafeeder.upload.uploadButton": "",
110
+ "datafeeder.validation.csv.delimiter": "",
111
+ "datafeeder.validation.csv.delimiter.comma": "Coma",
112
+ "datafeeder.validation.csv.delimiter.semicolon": "Punto y coma",
113
+ "datafeeder.validation.csv.lat.field": "",
114
+ "datafeeder.validation.csv.lng.field": "",
115
+ "datafeeder.validation.csv.quote.double": "Comillas dobles",
116
+ "datafeeder.validation.csv.quote.none": "Ninguno",
117
+ "datafeeder.validation.csv.quote.simple": "Comillas simples",
118
+ "datafeeder.validation.csv.quoteChar": "",
107
119
  "datafeeder.validation.encoding": "",
108
120
  "datafeeder.validation.extent.title": "",
109
121
  "datafeeder.validation.extent.title.unknown": "",
@@ -117,7 +129,7 @@
117
129
  "datahub.header.lastRecords": "",
118
130
  "datahub.header.myfavorites": "",
119
131
  "datahub.header.news": "",
120
- "datahub.header.organisations": "",
132
+ "datahub.header.organizations": "",
121
133
  "datahub.header.popularRecords": "",
122
134
  "datahub.header.title.html": "",
123
135
  "datahub.news.contact.contactus": "",
@@ -153,6 +165,7 @@
153
165
  "downloads.format.unknown": "",
154
166
  "downloads.wfs.featuretype.not.found": "",
155
167
  "dropFile": "",
168
+ "editor.record.form.keywords": "",
156
169
  "editor.record.form.license": "",
157
170
  "editor.record.form.license.cc-by": "",
158
171
  "editor.record.form.license.cc-by-sa": "",
@@ -252,6 +265,10 @@
252
265
  "organisations.sortBy.nameDesc": "",
253
266
  "organisations.sortBy.recordCountAsc": "",
254
267
  "organisations.sortBy.recordCountDesc": "",
268
+ "organization.details.lastPublishedDatasets": "",
269
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
270
+ "organization.details.mailContact": "",
271
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
255
272
  "pagination.nextPage": "",
256
273
  "pagination.page": "",
257
274
  "pagination.pageOf": "",
@@ -289,7 +306,7 @@
289
306
  "record.metadata.preview": "",
290
307
  "record.metadata.producer": "",
291
308
  "record.metadata.publication": "",
292
- "record.metadata.publications": "",
309
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
293
310
  "record.metadata.quality": "",
294
311
  "record.metadata.quality.contact.failed": "",
295
312
  "record.metadata.quality.contact.success": "",
@@ -349,6 +366,8 @@
349
366
  "results.sortBy.relevancy": "",
350
367
  "search.autocomplete.error": "",
351
368
  "search.error.couldNotReachApi": "",
369
+ "search.error.organizationHasNoDataset": "",
370
+ "search.error.organizationNotFound": "",
352
371
  "search.error.receivedError": "",
353
372
  "search.error.recordHasnolink": "",
354
373
  "search.error.recordNotFound": "",
@@ -376,9 +395,11 @@
376
395
  "search.filters.minimize": "",
377
396
  "search.filters.myRecords": "",
378
397
  "search.filters.myRecordsHelp": "",
398
+ "search.filters.organization": "",
379
399
  "search.filters.otherRecords": "",
400
+ "search.filters.producerOrg": "",
380
401
  "search.filters.publicationYear": "",
381
- "search.filters.publisher": "",
402
+ "search.filters.publisherOrg": "",
382
403
  "search.filters.representationType": "",
383
404
  "search.filters.resourceType": "",
384
405
  "search.filters.standard": "",