geonetwork-ui 2.3.0-dev.6083baae → 2.3.0-dev.61774f7d

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 (124) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -3
  2. package/esm2022/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.mjs +1 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/auth/gravatar.service.mjs +12 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +36 -3
  5. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +19 -7
  6. package/esm2022/libs/common/domain/src/lib/model/record/index.mjs +2 -1
  7. package/esm2022/libs/common/domain/src/lib/model/record/user-feedbacks.model.mjs +2 -0
  8. package/esm2022/libs/common/domain/src/lib/model/user/index.mjs +2 -0
  9. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  10. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +3 -3
  11. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +24 -10
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -13
  13. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
  14. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +1 -1
  15. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
  16. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
  17. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +4 -4
  18. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +22 -4
  19. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +37 -10
  20. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +22 -7
  21. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +52 -17
  22. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +18 -3
  23. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +2 -2
  24. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +2 -2
  25. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +1 -1
  26. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -2
  27. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +59 -0
  28. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +62 -0
  29. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +27 -4
  30. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +19 -3
  31. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
  32. package/esm2022/translations/de.json +15 -0
  33. package/esm2022/translations/en.json +15 -0
  34. package/esm2022/translations/es.json +15 -0
  35. package/esm2022/translations/fr.json +15 -0
  36. package/esm2022/translations/it.json +15 -0
  37. package/esm2022/translations/nl.json +15 -0
  38. package/esm2022/translations/pt.json +15 -0
  39. package/fesm2022/geonetwork-ui.mjs +505 -79
  40. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  41. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts +1 -0
  42. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts.map +1 -1
  43. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts +1 -0
  44. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts.map +1 -1
  45. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +6 -2
  46. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  47. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -6
  48. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  49. package/libs/common/domain/src/lib/model/record/index.d.ts +1 -0
  50. package/libs/common/domain/src/lib/model/record/index.d.ts.map +1 -1
  51. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts +15 -0
  52. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts.map +1 -0
  53. package/libs/common/domain/src/lib/model/user/index.d.ts +2 -0
  54. package/libs/common/domain/src/lib/model/user/index.d.ts.map +1 -0
  55. package/libs/common/domain/src/lib/platform.service.interface.d.ts +3 -0
  56. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  57. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +5 -1
  58. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  59. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  60. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  61. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +40 -6
  62. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  63. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +24 -4
  64. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  65. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +14 -4
  66. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  67. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +8 -5
  68. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  69. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +12 -9
  70. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  71. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +16 -14
  72. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  73. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +11 -0
  74. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +1 -0
  75. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +22 -0
  76. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -0
  77. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +7 -1
  78. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  79. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +4 -1
  80. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  81. package/package.json +1 -1
  82. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -2
  83. package/src/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.ts +1 -0
  84. package/src/libs/api/repository/src/lib/gn4/auth/gravatar.service.ts +12 -1
  85. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +51 -1
  86. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +34 -7
  87. package/src/libs/common/domain/src/lib/model/record/index.ts +1 -0
  88. package/src/libs/common/domain/src/lib/model/record/user-feedbacks.model.ts +15 -0
  89. package/src/libs/common/domain/src/lib/platform.service.interface.ts +3 -0
  90. package/src/libs/common/fixtures/src/index.ts +8 -6
  91. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +1 -1
  92. package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +83 -0
  93. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.css +0 -5
  94. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +1 -1
  95. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +24 -0
  96. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +19 -4
  97. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -21
  98. package/src/libs/feature/record/src/lib/feature-record.module.ts +5 -2
  99. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +51 -6
  100. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +82 -7
  101. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +49 -8
  102. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +81 -24
  103. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +40 -10
  104. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +2 -2
  105. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +5 -0
  106. package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +54 -0
  107. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.css +0 -0
  108. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +75 -0
  109. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +63 -0
  110. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +2 -1
  111. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +29 -0
  112. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -1
  113. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +16 -1
  114. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.css +0 -5
  115. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
  116. package/tailwind.base.css +7 -0
  117. package/translations/de.json +15 -0
  118. package/translations/en.json +15 -0
  119. package/translations/es.json +15 -0
  120. package/translations/fr.json +15 -0
  121. package/translations/it.json +15 -0
  122. package/translations/nl.json +15 -0
  123. package/translations/pt.json +15 -0
  124. package/translations/sk.json +15 -0
@@ -0,0 +1,75 @@
1
+ <div
2
+ *ngIf="userFeedbackParent.published"
3
+ class="flex flex-col bg-white rounded w-full"
4
+ [ngClass]="[isAnAnswer ? 'ps-4 ' : 'p-4']"
5
+ >
6
+ <div class="flex flex-row">
7
+ <div class="avatar">
8
+ <img
9
+ class="rounded-full"
10
+ [src]="userFeedbackParent.avatarUrl"
11
+ alt="avatar"
12
+ />
13
+ </div>
14
+ <div class="p-4 flex flex-col">
15
+ <span>{{ userFeedbackParent.authorName }}</span>
16
+ <span> {{ userFeedbackParent.date | timeSince }}</span>
17
+ </div>
18
+ </div>
19
+ <div data-cy="commentText" class="mt-4 whitespace-pre-line">
20
+ {{ userFeedbackParent.comment }}
21
+ </div>
22
+ <div
23
+ class="w-full"
24
+ *ngFor="let userFeedBacksAnswer of userFeedBacksAnswers; let last = last"
25
+ >
26
+ <hr class="-mx-4 my-6" />
27
+ <gn-ui-user-feedback-item
28
+ [userFeedbackParent]="userFeedBacksAnswer"
29
+ [isLastComment]="last"
30
+ ></gn-ui-user-feedback-item>
31
+ </div>
32
+
33
+ <div *ngIf="isActiveUserEditor" class="mt-2 flex flex-col">
34
+ <hr class="-mx-4 my-4" />
35
+ <div
36
+ id="new-comment-buttons"
37
+ class="flex flex-row gap-2 items-center justify-end"
38
+ >
39
+ <gn-ui-text-area
40
+ [disabled]="isAddUserFeedbackLoading"
41
+ [(value)]="newAnswer"
42
+ (valueChange)="onNewAnswerValueChange()"
43
+ (keyup.control.enter)="publishNewAnswer()"
44
+ [placeholder]="
45
+ 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate
46
+ "
47
+ class="grow"
48
+ extraClass="bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9"
49
+ ></gn-ui-text-area>
50
+ <div *ngIf="!isAnswerEmpty" class="flex flex-row justify-end">
51
+ <gn-ui-button
52
+ [disabled]="isAddUserFeedbackLoading"
53
+ [type]="'outline'"
54
+ (buttonClick)="publishNewAnswer()"
55
+ [title]="
56
+ 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate
57
+ "
58
+ extraClass="!p-[0.5em] text-primary-darker border-primary-darker h-9"
59
+ >
60
+ <mat-icon
61
+ class="material-symbols-outlined"
62
+ *ngIf="!isAddUserFeedbackLoading"
63
+ >
64
+ send
65
+ </mat-icon>
66
+ <ng-container *ngIf="isAddUserFeedbackLoading">
67
+ <div class="flex justify-center w-full">
68
+ <gn-ui-spinning-loader></gn-ui-spinning-loader>
69
+ </div>
70
+ </ng-container>
71
+ </gn-ui-button>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
@@ -0,0 +1,63 @@
1
+ import {
2
+ ChangeDetectionStrategy,
3
+ Component,
4
+ EventEmitter,
5
+ Input,
6
+ OnInit,
7
+ Output,
8
+ } from '@angular/core'
9
+ import {
10
+ UserFeedback,
11
+ UserFeedbackViewModel,
12
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
13
+ import { UserModel } from '../../../../../../libs/common/domain/src/lib/model/user'
14
+
15
+ @Component({
16
+ selector: 'gn-ui-user-feedback-item',
17
+ templateUrl: './user-feedback-item.component.html',
18
+ styleUrls: ['./user-feedback-item.component.css'],
19
+ changeDetection: ChangeDetectionStrategy.OnPush,
20
+ })
21
+ export class UserFeedbackItemComponent implements OnInit {
22
+ @Input() userFeedbackParent: UserFeedbackViewModel
23
+ @Input() userFeedBacksAnswers: UserFeedbackViewModel[]
24
+ @Input() isActiveUserEditor: boolean
25
+ @Input() activeUser: UserModel
26
+ @Input() isLastComment: boolean
27
+ @Input() isAddUserFeedbackLoading: boolean
28
+
29
+ @Output() newUserFeedbackAnswer = new EventEmitter<UserFeedback>()
30
+
31
+ isAnAnswer = false
32
+ newAnswer = ''
33
+ isAnswerEmpty = true
34
+
35
+ ngOnInit(): void {
36
+ this.isAnAnswer = !!this.userFeedbackParent.parentUuid
37
+ }
38
+
39
+ onNewAnswerValueChange() {
40
+ this.isAnswerEmpty = this.newAnswer.length === 0
41
+ }
42
+
43
+ publishNewAnswer() {
44
+ if (this.newAnswer.trim() === '') return
45
+
46
+ const newAnswer: UserFeedback = {
47
+ ...this.userFeedbackParent,
48
+ uuid: undefined,
49
+ published: true,
50
+ comment: this.newAnswer,
51
+ parentUuid: this.userFeedbackParent.uuid,
52
+ authorUserId: this.activeUser?.id,
53
+ authorEmail: this.activeUser?.email,
54
+ date: new Date(),
55
+ authorName: `${this.activeUser?.name} ${this.activeUser?.surname}`,
56
+ }
57
+
58
+ this.newUserFeedbackAnswer.emit(newAnswer)
59
+
60
+ this.newAnswer = ''
61
+ this.onNewAnswerValueChange()
62
+ }
63
+ }
@@ -2,11 +2,12 @@
2
2
  <textarea
3
3
  #input
4
4
  name="textArea"
5
+ [disabled]="disabled"
5
6
  [placeholder]="placeholder"
6
7
  [value]="value"
7
8
  (change)="handleChange($event)"
8
9
  (input)="handleChange($event)"
9
- class="w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary"
10
+ [class]="classList"
10
11
  [attr.required]="required || null"
11
12
  ></textarea>
12
13
  </div>
@@ -15,7 +15,12 @@ import { distinctUntilChanged } from 'rxjs/operators'
15
15
  standalone: true,
16
16
  })
17
17
  export class TextAreaComponent implements AfterViewInit {
18
+ private readonly baseClasses: string
19
+ private readonly disabledClasses: string
20
+
18
21
  @Input() value = ''
22
+ @Input() disabled = false
23
+ @Input() extraClass = ''
19
24
  @Input() placeholder: string
20
25
  @Input() required = false
21
26
 
@@ -24,6 +29,30 @@ export class TextAreaComponent implements AfterViewInit {
24
29
 
25
30
  @ViewChild('input') input
26
31
 
32
+ constructor() {
33
+ this.baseClasses = [
34
+ 'w-full',
35
+ 'pt-2',
36
+ 'pl-2',
37
+ 'resize-none',
38
+ 'border',
39
+ 'border-gray-800',
40
+ 'rounded italic',
41
+ 'leading-tight',
42
+ 'focus:outline-none',
43
+ 'focus:bg-background',
44
+ 'focus:border-primary',
45
+ ].join(' ')
46
+
47
+ this.disabledClasses = ['cursor-not-allowed'].join(' ')
48
+ }
49
+
50
+ get classList() {
51
+ return `${this.baseClasses} ${this.extraClass} ${
52
+ this.disabled ? this.disabledClasses : ''
53
+ }`
54
+ }
55
+
27
56
  ngAfterViewInit() {
28
57
  this.checkRequired(this.input.nativeElement.value)
29
58
  }
@@ -1,6 +1,6 @@
1
1
  <input
2
2
  #input
3
- class="appearance-none border border-gray-300 rounded w-full p-2 text-gray-700 leading-tight focus:outline-none focus:border-primary"
3
+ [class]="classList"
4
4
  type="text"
5
5
  [value]="value"
6
6
  (change)="handleChange($event)"
@@ -14,14 +14,29 @@ import { Subject } from 'rxjs'
14
14
  styleUrls: ['./text-input.component.css'],
15
15
  })
16
16
  export class TextInputComponent implements AfterViewInit {
17
+ private readonly baseClass = [
18
+ 'appearance-none',
19
+ 'border border-gray-300',
20
+ 'rounded w-full',
21
+ 'p-2',
22
+ 'text-gray-700',
23
+ 'leading-tight',
24
+ 'focus:outline-none',
25
+ 'focus:border-primary',
26
+ ].join(' ')
27
+
17
28
  @Input() value = ''
29
+ @Input() extraClass = ''
18
30
  @Input() hint: string
19
31
  @Input() required = false
20
32
  rawChange = new Subject<string>()
21
33
  @Output() valueChange = this.rawChange.pipe(distinctUntilChanged())
22
-
23
34
  @ViewChild('input') input
24
35
 
36
+ get classList() {
37
+ return `${this.baseClass} ${this.extraClass}`
38
+ }
39
+
25
40
  ngAfterViewInit() {
26
41
  this.checkRequired(this.input.nativeElement.value)
27
42
  }
@@ -1,5 +0,0 @@
1
- .icon-small {
2
- font-size: 16px;
3
- height: 16px;
4
- width: 16px;
5
- }
@@ -4,7 +4,7 @@
4
4
  <div class="flex-1 flex justify-end items-center">
5
5
  <ng-content select="[form-field-interaction]"></ng-content>
6
6
  <span
7
- class="material-symbols-outlined m-2 icon-small"
7
+ class="material-symbols-outlined m-2 gn-ui-icon-small"
8
8
  [matTooltip]="hint"
9
9
  matTooltipPosition="above"
10
10
  >
package/tailwind.base.css CHANGED
@@ -9,6 +9,13 @@
9
9
  @apply shadow-xl hover:shadow-xl-hover transition-shadow;
10
10
  }
11
11
 
12
+ /* ICON CLASSES */
13
+ .gn-ui-icon-small {
14
+ font-size: 16px;
15
+ width: 16px;
16
+ height: 16px;
17
+ }
18
+
12
19
  /* LINK CLASSES */
13
20
  .gn-ui-link {
14
21
  @apply text-blue-600 hover:text-blue-700 hover:underline;
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "",
2
3
  "catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
3
4
  "catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
4
5
  "chart.aggregation.average": "Durchschnitt",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
279
280
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
280
281
  "record.metadata.related": "Ähnliche Datensätze",
282
+ "record.metadata.userFeedbacks": "",
283
+ "record.metadata.userFeedbacks.anonymousUser": "",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
281
290
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
282
291
  "record.metadata.status": "Status",
283
292
  "record.metadata.technical": "Technische Informationen",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "Daten werden geladen...",
352
361
  "table.object.count": "Objekte in diesem Datensatz",
353
362
  "table.select.data": "Datenquelle",
363
+ "timeSincePipe.lessThanAMinute": "",
364
+ "timeSincePipe.minutesAgo": "",
365
+ "timeSincePipe.hoursAgo": "",
366
+ "timeSincePipe.daysAgo": "",
367
+ "timeSincePipe.monthsAgo": "",
368
+ "timeSincePipe.yearsAgo": "",
354
369
  "tooltip.html.copy": "HTML kopieren",
355
370
  "tooltip.id.copy": "Eindeutige Kennung kopieren",
356
371
  "tooltip.url.copy": "URL kopieren",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "Log in",
2
3
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
3
4
  "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
4
5
  "chart.aggregation.average": "average",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
279
280
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
280
281
  "record.metadata.related": "Related records",
282
+ "record.metadata.userFeedbacks": "Questions / Answers",
283
+ "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
281
290
  "record.metadata.sheet": "Original metadata",
282
291
  "record.metadata.status": "Status",
283
292
  "record.metadata.technical": "Technical information",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "Loading data...",
352
361
  "table.object.count": "objects in this dataset",
353
362
  "table.select.data": "Data source",
363
+ "timeSincePipe.lessThanAMinute": "Less than a minute ago",
364
+ "timeSincePipe.minutesAgo": "{value} minute{s} ago",
365
+ "timeSincePipe.hoursAgo": "{value} hour{s} ago",
366
+ "timeSincePipe.daysAgo": "{value} day{s} ago",
367
+ "timeSincePipe.monthsAgo": "{value} month{s} ago",
368
+ "timeSincePipe.yearsAgo": "{value} year{s} ago",
354
369
  "tooltip.html.copy": "Copy HTML",
355
370
  "tooltip.id.copy": "Copy unique identifier",
356
371
  "tooltip.url.copy": "Copy URL",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "",
2
3
  "catalog.figures.datasets": "conjuntos de datos",
3
4
  "catalog.figures.organisations": "organizaciones",
4
5
  "chart.aggregation.average": "promedio",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "",
279
280
  "record.metadata.quality.updateFrequency.success": "",
280
281
  "record.metadata.related": "",
282
+ "record.metadata.userFeedbacks": "",
283
+ "record.metadata.userFeedbacks.anonymousUser": "",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
281
290
  "record.metadata.sheet": "",
282
291
  "record.metadata.status": "",
283
292
  "record.metadata.technical": "",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "",
352
361
  "table.object.count": "",
353
362
  "table.select.data": "",
363
+ "timeSincePipe.lessThanAMinute": "",
364
+ "timeSincePipe.minutesAgo": "",
365
+ "timeSincePipe.hoursAgo": "",
366
+ "timeSincePipe.daysAgo": "",
367
+ "timeSincePipe.monthsAgo": "",
368
+ "timeSincePipe.yearsAgo": "",
354
369
  "tooltip.html.copy": "",
355
370
  "tooltip.id.copy": "",
356
371
  "tooltip.url.copy": "",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "Se connecter",
2
3
  "catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
3
4
  "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
4
5
  "chart.aggregation.average": "moyenne",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
279
280
  "record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
280
281
  "record.metadata.related": "Voir aussi",
282
+ "record.metadata.userFeedbacks": "Questions / Réponses",
283
+ "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
281
290
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
282
291
  "record.metadata.status": "Statut",
283
292
  "record.metadata.technical": "Informations techniques",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "Chargement des données...",
352
361
  "table.object.count": "enregistrements dans ces données",
353
362
  "table.select.data": "Source de données",
363
+ "timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
364
+ "timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
365
+ "timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
366
+ "timeSincePipe.daysAgo": "Il y a {value} jour{s}",
367
+ "timeSincePipe.monthsAgo": "Il y a {value} mois",
368
+ "timeSincePipe.yearsAgo": "Il y a {value} an{s}",
354
369
  "tooltip.html.copy": "Copier le HTML",
355
370
  "tooltip.id.copy": "Copier l'identifiant unique",
356
371
  "tooltip.url.copy": "Copier l'URL",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "",
2
3
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
3
4
  "catalog.figures.organisations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
4
5
  "chart.aggregation.average": "media",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
279
280
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
280
281
  "record.metadata.related": "Vedi anche",
282
+ "record.metadata.userFeedbacks": "",
283
+ "record.metadata.userFeedbacks.anonymousUser": "",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
281
290
  "record.metadata.sheet": "Origine del metadata",
282
291
  "record.metadata.status": "Stato",
283
292
  "record.metadata.technical": "Informazioni tecniche",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "Caricamento dei dati...",
352
361
  "table.object.count": "record in questi dati",
353
362
  "table.select.data": "Sorgente dati",
363
+ "timeSincePipe.lessThanAMinute": "",
364
+ "timeSincePipe.minutesAgo": "",
365
+ "timeSincePipe.hoursAgo": "",
366
+ "timeSincePipe.daysAgo": "",
367
+ "timeSincePipe.monthsAgo": "",
368
+ "timeSincePipe.yearsAgo": "",
354
369
  "tooltip.html.copy": "Copiare il HTML",
355
370
  "tooltip.id.copy": "Copiare l'identificatore unico",
356
371
  "tooltip.url.copy": "Copiare l'URL",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "",
2
3
  "catalog.figures.datasets": "datasets",
3
4
  "catalog.figures.organisations": "organisaties",
4
5
  "chart.aggregation.average": "gemiddelde",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "",
279
280
  "record.metadata.quality.updateFrequency.success": "",
280
281
  "record.metadata.related": "",
282
+ "record.metadata.userFeedbacks": "",
283
+ "record.metadata.userFeedbacks.anonymousUser": "",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
281
290
  "record.metadata.sheet": "",
282
291
  "record.metadata.status": "",
283
292
  "record.metadata.technical": "",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "",
352
361
  "table.object.count": "",
353
362
  "table.select.data": "",
363
+ "timeSincePipe.lessThanAMinute": "",
364
+ "timeSincePipe.minutesAgo": "",
365
+ "timeSincePipe.hoursAgo": "",
366
+ "timeSincePipe.daysAgo": "",
367
+ "timeSincePipe.monthsAgo": "",
368
+ "timeSincePipe.yearsAgo": "",
354
369
  "tooltip.html.copy": "",
355
370
  "tooltip.id.copy": "",
356
371
  "tooltip.url.copy": "",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "",
2
3
  "catalog.figures.datasets": "conjuntos de dados",
3
4
  "catalog.figures.organisations": "organizações",
4
5
  "chart.aggregation.average": "média",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "",
279
280
  "record.metadata.quality.updateFrequency.success": "",
280
281
  "record.metadata.related": "",
282
+ "record.metadata.userFeedbacks": "",
283
+ "record.metadata.userFeedbacks.anonymousUser": "",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
281
290
  "record.metadata.sheet": "",
282
291
  "record.metadata.status": "",
283
292
  "record.metadata.technical": "",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "",
352
361
  "table.object.count": "",
353
362
  "table.select.data": "",
363
+ "timeSincePipe.lessThanAMinute": "",
364
+ "timeSincePipe.minutesAgo": "",
365
+ "timeSincePipe.hoursAgo": "",
366
+ "timeSincePipe.daysAgo": "",
367
+ "timeSincePipe.monthsAgo": "",
368
+ "timeSincePipe.yearsAgo": "",
354
369
  "tooltip.html.copy": "",
355
370
  "tooltip.id.copy": "",
356
371
  "tooltip.url.copy": "",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "button.login": "",
2
3
  "catalog.figures.datasets": "{count, plural, =0{datasety} one{dataset} other{datasety}}",
3
4
  "catalog.figures.organisations": "{count, plural, =0{organizácie} one{organizácia} other{organizácie}}",
4
5
  "chart.aggregation.average": "priemer",
@@ -278,6 +279,14 @@
278
279
  "record.metadata.quality.updateFrequency.failed": "Frekvencia aktualizácie nie je určená",
279
280
  "record.metadata.quality.updateFrequency.success": "Frekvencia aktualizácie je určená",
280
281
  "record.metadata.related": "Súvisiace záznamy",
282
+ "record.metadata.userFeedbacks": "",
283
+ "record.metadata.userFeedbacks.anonymousUser": "",
284
+ "record.metadata.userFeedbacks.sortSelector.label": "",
285
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
286
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
287
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
288
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
289
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
281
290
  "record.metadata.sheet": "Ďalšie metadáta sú k dispozícii na:",
282
291
  "record.metadata.status": "Stav",
283
292
  "record.metadata.technical": "",
@@ -351,6 +360,12 @@
351
360
  "table.loading.data": "Načítanie údajov...",
352
361
  "table.object.count": "objekty v tomto súbore údajov",
353
362
  "table.select.data": "Zdroj údajov",
363
+ "timeSincePipe.lessThanAMinute": "",
364
+ "timeSincePipe.minutesAgo": "",
365
+ "timeSincePipe.hoursAgo": "",
366
+ "timeSincePipe.daysAgo": "",
367
+ "timeSincePipe.monthsAgo": "",
368
+ "timeSincePipe.yearsAgo": "",
354
369
  "tooltip.html.copy": "Kopírovať HTML",
355
370
  "tooltip.id.copy": "Kopírovať jedinečný identifikátor",
356
371
  "tooltip.url.copy": "Kopírovať URL",