geonetwork-ui 2.3.0-dev.ff2a9db7 → 2.3.1

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 (98) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +2 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +9 -7
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +22 -7
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +14 -3
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +14 -2
  7. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
  8. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +30 -10
  9. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +7 -3
  10. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +14 -7
  11. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +27 -5
  12. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +1 -3
  13. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
  14. package/esm2022/libs/ui/elements/src/index.mjs +2 -2
  15. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +30 -0
  16. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +6 -7
  17. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -6
  18. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  19. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  20. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  21. package/esm2022/translations/de.json +1 -0
  22. package/esm2022/translations/en.json +1 -0
  23. package/esm2022/translations/es.json +1 -0
  24. package/esm2022/translations/fr.json +1 -0
  25. package/esm2022/translations/it.json +1 -0
  26. package/esm2022/translations/nl.json +1 -0
  27. package/esm2022/translations/pt.json +1 -0
  28. package/fesm2022/geonetwork-ui.mjs +384 -287
  29. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  30. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +2 -2
  31. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  32. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +1 -1
  33. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  34. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +4 -1
  35. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  36. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +2 -1
  37. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  38. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +3 -3
  39. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  40. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
  41. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  42. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +6 -0
  43. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  44. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -1
  45. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  46. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  47. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -2
  48. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  49. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +5 -2
  50. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  51. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  52. package/libs/ui/elements/src/index.d.ts +1 -1
  53. package/libs/ui/elements/src/index.d.ts.map +1 -1
  54. package/libs/ui/elements/src/lib/error/error.component.d.ts +16 -0
  55. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -0
  56. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  57. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -2
  58. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  59. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  60. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  61. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  62. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  63. package/package.json +2 -2
  64. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +9 -1
  65. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +3 -3
  66. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +35 -31
  67. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +67 -15
  68. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +71 -13
  69. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -3
  70. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +16 -0
  71. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +15 -1
  72. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +6 -0
  73. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +31 -9
  74. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +6 -2
  75. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +15 -8
  76. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +47 -3
  77. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +0 -2
  78. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +4 -4
  79. package/src/libs/ui/elements/src/index.ts +1 -1
  80. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.html → error/error.component.html} +18 -3
  81. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.ts → error/error.component.ts} +5 -4
  82. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +7 -8
  83. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -4
  84. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  85. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  86. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  87. package/translations/de.json +1 -0
  88. package/translations/en.json +1 -0
  89. package/translations/es.json +1 -0
  90. package/translations/fr.json +1 -0
  91. package/translations/it.json +1 -0
  92. package/translations/nl.json +1 -0
  93. package/translations/pt.json +1 -0
  94. package/translations/sk.json +1 -0
  95. package/esm2022/libs/ui/elements/src/lib/search-results-error/search-results-error.component.mjs +0 -29
  96. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts +0 -15
  97. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts.map +0 -1
  98. /package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.css → error/error.component.css} +0 -0
@@ -1,6 +1,14 @@
1
1
  import { Injectable } from '@angular/core'
2
2
  import { select, Store } from '@ngrx/store'
3
- import { filter, map } from 'rxjs/operators'
3
+ import {
4
+ defaultIfEmpty,
5
+ filter,
6
+ map,
7
+ mergeMap,
8
+ scan,
9
+ switchMap,
10
+ toArray,
11
+ } from 'rxjs/operators'
4
12
  import * as MdViewActions from './mdview.actions'
5
13
  import * as MdViewSelectors from './mdview.selectors'
6
14
  import { LinkClassifierService, LinkUsage } from '../../../../../../libs/util/shared/src'
@@ -10,6 +18,9 @@ import {
10
18
  UserFeedback,
11
19
  } from '../../../../../../libs/common/domain/src/lib/model/record'
12
20
  import { AvatarServiceInterface } from '../../../../../../libs/api/repository/src'
21
+ import { OgcApiRecord } from '@camptocamp/ogc-client'
22
+ import { from, of } from 'rxjs'
23
+ import { DataService } from '../../../../../../libs/feature/dataviz/src'
13
24
 
14
25
  @Injectable()
15
26
  /**
@@ -21,8 +32,9 @@ import { AvatarServiceInterface } from '../../../../../../libs/api/repository/sr
21
32
  export class MdViewFacade {
22
33
  constructor(
23
34
  private store: Store,
24
- private linkClassifier: LinkClassifierService,
25
- private avatarService: AvatarServiceInterface
35
+ public linkClassifier: LinkClassifierService,
36
+ private avatarService: AvatarServiceInterface,
37
+ public dataService: DataService
26
38
  ) {}
27
39
 
28
40
  isPresent$ = this.store.pipe(
@@ -90,6 +102,38 @@ export class MdViewFacade {
90
102
  )
91
103
  )
92
104
 
105
+ geoDataLinksWithGeometry$ = this.allLinks$.pipe(
106
+ switchMap((links) =>
107
+ from(links).pipe(
108
+ mergeMap((link) => {
109
+ if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
110
+ if (
111
+ link.type === 'service' &&
112
+ link.accessServiceProtocol === 'ogcFeatures'
113
+ ) {
114
+ return from(
115
+ this.dataService.getItemsFromOgcApi(link.url.href)
116
+ ).pipe(
117
+ map((collectionRecords: OgcApiRecord) => {
118
+ return collectionRecords && collectionRecords.geometry
119
+ ? link
120
+ : null
121
+ }),
122
+ defaultIfEmpty(null)
123
+ )
124
+ } else {
125
+ return of(link)
126
+ }
127
+ } else {
128
+ return of(null)
129
+ }
130
+ }),
131
+ toArray(),
132
+ map((links) => links.filter((link) => link !== null))
133
+ )
134
+ )
135
+ )
136
+
93
137
  landingPageLinks$ = this.metadata$.pipe(
94
138
  map((record) => ('landingPage' in record ? [record.landingPage] : []))
95
139
  )
@@ -82,7 +82,6 @@ const metadataViewReducer = createReducer(
82
82
  */
83
83
  on(MetadataViewActions.loadUserFeedbacks, (state) => ({
84
84
  ...state,
85
- error: null,
86
85
  allUserFeedbacksLoading: true,
87
86
  })),
88
87
  on(MetadataViewActions.addUserFeedback, (state) => ({
@@ -93,7 +92,6 @@ const metadataViewReducer = createReducer(
93
92
  MetadataViewActions.loadUserFeedbacksSuccess,
94
93
  (state, { userFeedbacks }) => ({
95
94
  ...state,
96
- error: null,
97
95
  userFeedbacks: userFeedbacks,
98
96
  addUserFeedbackLoading: false,
99
97
  allUserFeedbacksLoading: false,
@@ -42,16 +42,16 @@
42
42
  </div>
43
43
 
44
44
  <div class="p-4 max-w-[600px] m-auto text-[13px]">
45
- <gn-ui-search-results-error
45
+ <gn-ui-error
46
46
  *ngIf="(errorCode$ | async) === 0"
47
47
  [type]="errorTypes.COULD_NOT_REACH_API"
48
48
  >
49
- </gn-ui-search-results-error>
50
- <gn-ui-search-results-error
49
+ </gn-ui-error>
50
+ <gn-ui-error
51
51
  *ngIf="(error$ | async) !== null && (errorCode$ | async) !== 0"
52
52
  [type]="errorTypes.RECEIVED_ERROR"
53
53
  [error]="errorMessage$ | async"
54
- ></gn-ui-search-results-error>
54
+ ></gn-ui-error>
55
55
  </div>
56
56
 
57
57
  <ng-template #favoriteToggle let-record>
@@ -17,7 +17,7 @@ export * from './lib/pagination-buttons/pagination-buttons.component'
17
17
  export * from './lib/pagination/pagination.component'
18
18
  export * from './lib/record-api-form/record-api-form.component'
19
19
  export * from './lib/related-record-card/related-record-card.component'
20
- export * from './lib/search-results-error/search-results-error.component'
20
+ export * from './lib/error/error.component'
21
21
  export * from './lib/thumbnail/thumbnail.component'
22
22
  export * from './lib/ui-elements.module'
23
23
  export * from './lib/user-preview/user-preview.component'
@@ -1,7 +1,10 @@
1
1
  <div
2
2
  class="p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg"
3
3
  >
4
- <div *ngIf="type === types.COULD_NOT_REACH_API">
4
+ <div
5
+ *ngIf="type === types.COULD_NOT_REACH_API"
6
+ data-test="could-not-reach-api-error"
7
+ >
5
8
  <div class="relative opacity-40">
6
9
  <mat-icon class="material-symbols-outlined face">face</mat-icon>
7
10
  <mat-icon class="material-symbols-outlined question-mark1"
@@ -13,14 +16,26 @@
13
16
  </div>
14
17
  <div translate>search.error.couldNotReachApi</div>
15
18
  </div>
16
- <div *ngIf="type === types.RECEIVED_ERROR">
19
+ <div
20
+ *ngIf="type === types.DATASET_HAS_NO_LINK"
21
+ data-test="dataset-has-no-link-error"
22
+ >
23
+ <div class="relative opacity-40">
24
+ <mat-icon class="material-symbols-outlined face">computer</mat-icon>
25
+ </div>
26
+ <div translate>search.error.recordHasnolink</div>
27
+ </div>
28
+ <div *ngIf="type === types.RECEIVED_ERROR" data-test="received-error-error">
17
29
  <div class="relative opacity-40">
18
30
  <mat-icon class="material-symbols-outlined face">mood_bad</mat-icon>
19
31
  </div>
20
32
  <div translate>search.error.receivedError</div>
21
33
  <div *ngIf="error">{{ error }}</div>
22
34
  </div>
23
- <div *ngIf="type === types.RECORD_NOT_FOUND">
35
+ <div
36
+ *ngIf="type === types.RECORD_NOT_FOUND"
37
+ data-test="record-not-found-error"
38
+ >
24
39
  <div class="relative opacity-40">
25
40
  <mat-icon class="material-symbols-outlined computer">computer</mat-icon>
26
41
  <mat-icon class="material-symbols-outlined computer-question-mark"
@@ -4,15 +4,16 @@ export enum ErrorType {
4
4
  COULD_NOT_REACH_API,
5
5
  RECEIVED_ERROR,
6
6
  RECORD_NOT_FOUND,
7
+ DATASET_HAS_NO_LINK,
7
8
  }
8
9
 
9
10
  @Component({
10
- selector: 'gn-ui-search-results-error',
11
- templateUrl: './search-results-error.component.html',
12
- styleUrls: ['./search-results-error.component.css'],
11
+ selector: 'gn-ui-error',
12
+ templateUrl: './error.component.html',
13
+ styleUrls: ['./error.component.css'],
13
14
  changeDetection: ChangeDetectionStrategy.OnPush,
14
15
  })
15
- export class SearchResultsErrorComponent {
16
+ export class ErrorComponent {
16
17
  @Input() type!: ErrorType
17
18
  @Input() error?: string
18
19
  @Input() recordId?: string
@@ -5,7 +5,7 @@ import {
5
5
  ServiceProtocol,
6
6
  } from '../../../../../../libs/common/domain/src/lib/model/record'
7
7
  import { mimeTypeToFormat } from '../../../../../../libs/util/shared/src'
8
- import { BehaviorSubject, combineLatest, map, switchMap } from 'rxjs'
8
+ import { BehaviorSubject, combineLatest, filter, map, switchMap } from 'rxjs'
9
9
 
10
10
  const DEFAULT_PARAMS = {
11
11
  OFFSET: '',
@@ -54,7 +54,8 @@ export class RecordApiFormComponent {
54
54
  this.offset$,
55
55
  this.limit$,
56
56
  this.format$,
57
- this.endpoint$,
57
+ // only compute the url if the endpoint was created
58
+ this.endpoint$.pipe(filter((endpoint) => !!endpoint)),
58
59
  ]).pipe(
59
60
  switchMap(([offset, limit, format]) =>
60
61
  this.generateApiQueryUrl(offset, limit, format)
@@ -121,11 +122,9 @@ export class RecordApiFormComponent {
121
122
  this.supportOffset = this.endpoint.supportsStartIndex()
122
123
  return this.endpoint.getServiceInfo() as OutputFormats
123
124
  } else {
124
- {
125
- return (await this.endpoint.getCollectionInfo(
126
- this.firstCollection
127
- )) as OutputFormats
128
- }
125
+ return (await this.endpoint.getCollectionInfo(
126
+ this.firstCollection
127
+ )) as OutputFormats
129
128
  }
130
129
  }
131
130
 
@@ -136,7 +135,7 @@ export class RecordApiFormComponent {
136
135
  await (this.endpoint as WfsEndpoint).isReady()
137
136
  } else {
138
137
  this.endpoint = new OgcApiEndpoint(this.apiBaseUrl)
139
- this.firstCollection = (await this.endpoint.featureCollections)[0]
138
+ this.firstCollection = (await this.endpoint.allCollections)[0].name
140
139
  }
141
140
  this.endpoint$.next(this.endpoint)
142
141
  }
@@ -12,13 +12,12 @@ import { ApiCardComponent } from './api-card/api-card.component'
12
12
  import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
13
13
  import { UiLayoutModule } from '../../../../../libs/ui/layout/src'
14
14
  import { TranslateModule } from '@ngx-translate/core'
15
- import { LinkCardComponent } from './link-card/link-card.component'
16
15
  import { RelatedRecordCardComponent } from './related-record-card/related-record-card.component'
17
16
  import { MetadataContactComponent } from './metadata-contact/metadata-contact.component'
18
17
  import { MetadataCatalogComponent } from './metadata-catalog/metadata-catalog.component'
19
18
  import { MetadataQualityComponent } from './metadata-quality/metadata-quality.component'
20
19
  import { MetadataQualityItemComponent } from './metadata-quality-item/metadata-quality-item.component'
21
- import { SearchResultsErrorComponent } from './search-results-error/search-results-error.component'
20
+ import { ErrorComponent } from './error/error.component'
22
21
  import { PaginationComponent } from './pagination/pagination.component'
23
22
  import { ThumbnailComponent } from './thumbnail/thumbnail.component'
24
23
  import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
@@ -62,7 +61,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
62
61
  MetadataCatalogComponent,
63
62
  MetadataQualityComponent,
64
63
  MetadataQualityItemComponent,
65
- SearchResultsErrorComponent,
64
+ ErrorComponent,
66
65
  PaginationComponent,
67
66
  AvatarComponent,
68
67
  UserPreviewComponent,
@@ -84,7 +83,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
84
83
  MetadataCatalogComponent,
85
84
  MetadataQualityComponent,
86
85
  MetadataQualityItemComponent,
87
- SearchResultsErrorComponent,
86
+ ErrorComponent,
88
87
  PaginationComponent,
89
88
  ThumbnailComponent,
90
89
  AvatarComponent,
@@ -144,6 +144,7 @@ export function loadAppConfig() {
144
144
  [],
145
145
  [
146
146
  'max_zoom',
147
+ 'do_not_tile_wms',
147
148
  'max_extent',
148
149
  'baselayer',
149
150
  'do_not_use_default_basemap',
@@ -158,6 +159,7 @@ export function loadAppConfig() {
158
159
  ? null
159
160
  : ({
160
161
  MAX_ZOOM: parsedMapSection.max_zoom,
162
+ DO_NOT_TILE_WMS: parsedMapSection.do_not_tile_wms,
161
163
  MAX_EXTENT: parsedMapSection.max_extent,
162
164
  EXTERNAL_VIEWER_URL_TEMPLATE:
163
165
  parsedMapSection.external_viewer_url_template,
@@ -81,6 +81,7 @@ export const MAP_CONFIG_FIXTURE: MapConfig = {
81
81
  MAX_ZOOM: 10,
82
82
  MAX_EXTENT: [-418263.418776, 5251529.591305, 961272.067714, 6706890.609855],
83
83
  DO_NOT_USE_DEFAULT_BASEMAP: false,
84
+ DO_NOT_TILE_WMS: false,
84
85
  EXTERNAL_VIEWER_URL_TEMPLATE:
85
86
  'https://example.com/myviewer/#/?actions=[{"type":"CATALOG:ADD_LAYERS_FROM_CATALOGS","layers":["${layer_name}"],"sources":[{"url":"${service_url}","type":"${service_type}"}]}]',
86
87
  EXTERNAL_VIEWER_OPEN_NEW_TAB: true,
@@ -20,6 +20,7 @@ export interface LayerConfig {
20
20
 
21
21
  export interface MapConfig {
22
22
  MAX_ZOOM?: number
23
+ DO_NOT_TILE_WMS: boolean
23
24
  MAX_EXTENT?: [number, number, number, number] // Expressed as [minx, miny, maxx, maxy]
24
25
  EXTERNAL_VIEWER_URL_TEMPLATE?: string
25
26
  EXTERNAL_VIEWER_OPEN_NEW_TAB?: boolean
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
336
336
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
337
337
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
338
+ "search.error.recordHasnolink": "",
338
339
  "search.field.any.placeholder": "Suche Datensätze ...",
339
340
  "search.field.sortBy": "Sortieren nach:",
340
341
  "search.filters.clear": "Zurücksetzen",
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "The API could not be reached",
336
336
  "search.error.receivedError": "An error was received",
337
337
  "search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
338
+ "search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
338
339
  "search.field.any.placeholder": "Search datasets ...",
339
340
  "search.field.sortBy": "Sort by:",
340
341
  "search.filters.clear": "Reset",
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "",
336
336
  "search.error.receivedError": "",
337
337
  "search.error.recordNotFound": "",
338
+ "search.error.recordHasnolink": "",
338
339
  "search.field.any.placeholder": "",
339
340
  "search.field.sortBy": "",
340
341
  "search.filters.clear": "",
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "Problème de connexion à l'API",
336
336
  "search.error.receivedError": "Erreur retournée",
337
337
  "search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
338
+ "search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
338
339
  "search.field.any.placeholder": "Rechercher une donnée...",
339
340
  "search.field.sortBy": "Trier par :",
340
341
  "search.filters.clear": "Réinitialiser",
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "Problema di connessione all'API",
336
336
  "search.error.receivedError": "Errore ricevuto",
337
337
  "search.error.recordNotFound": "Impossibile trovare questo dato",
338
+ "search.error.recordHasnolink": "",
338
339
  "search.field.any.placeholder": "Cerca un dato...",
339
340
  "search.field.sortBy": "Ordina per:",
340
341
  "search.filters.clear": "Ripristina",
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "",
336
336
  "search.error.receivedError": "",
337
337
  "search.error.recordNotFound": "",
338
+ "search.error.recordHasnolink": "",
338
339
  "search.field.any.placeholder": "",
339
340
  "search.field.sortBy": "",
340
341
  "search.filters.clear": "",
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "",
336
336
  "search.error.receivedError": "",
337
337
  "search.error.recordNotFound": "",
338
+ "search.error.recordHasnolink": "",
338
339
  "search.field.any.placeholder": "",
339
340
  "search.field.sortBy": "",
340
341
  "search.filters.clear": "",
@@ -335,6 +335,7 @@
335
335
  "search.error.couldNotReachApi": "K rozhraniu API sa nepodarilo pripojiť",
336
336
  "search.error.receivedError": "Bola zaznamenaná chyba",
337
337
  "search.error.recordNotFound": "Záznam s identifikátorom \"{ id }\" sa nepodarilo nájsť.",
338
+ "search.error.recordHasnolink": "",
338
339
  "search.field.any.placeholder": "Hľadať datasety ...",
339
340
  "search.field.sortBy": "Zoradiť podľa:",
340
341
  "search.filters.clear": "Obnoviť",
@@ -1,29 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/icon";
5
- import * as i3 from "@ngx-translate/core";
6
- export var ErrorType;
7
- (function (ErrorType) {
8
- ErrorType[ErrorType["COULD_NOT_REACH_API"] = 0] = "COULD_NOT_REACH_API";
9
- ErrorType[ErrorType["RECEIVED_ERROR"] = 1] = "RECEIVED_ERROR";
10
- ErrorType[ErrorType["RECORD_NOT_FOUND"] = 2] = "RECORD_NOT_FOUND";
11
- })(ErrorType || (ErrorType = {}));
12
- export class SearchResultsErrorComponent {
13
- constructor() {
14
- this.types = ErrorType;
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchResultsErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchResultsErrorComponent, selector: "gn-ui-search-results-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div *ngIf=\"type === types.COULD_NOT_REACH_API\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.RECORD_NOT_FOUND\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchResultsErrorComponent, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'gn-ui-search-results-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div *ngIf=\"type === types.COULD_NOT_REACH_API\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.RECORD_NOT_FOUND\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"] }]
22
- }], propDecorators: { type: [{
23
- type: Input
24
- }], error: [{
25
- type: Input
26
- }], recordId: [{
27
- type: Input
28
- }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMvbGliL3NlYXJjaC1yZXN1bHRzLWVycm9yL3NlYXJjaC1yZXN1bHRzLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9zZWFyY2gtcmVzdWx0cy1lcnJvci9zZWFyY2gtcmVzdWx0cy1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTs7Ozs7QUFFekUsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQix1RUFBbUIsQ0FBQTtJQUNuQiw2REFBYyxDQUFBO0lBQ2QsaUVBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUpXLFNBQVMsS0FBVCxTQUFTLFFBSXBCO0FBUUQsTUFBTSxPQUFPLDJCQUEyQjtJQU54QztRQVVFLFVBQUssR0FBRyxTQUFTLENBQUE7S0FDbEI7OEdBTFksMkJBQTJCO2tHQUEzQiwyQkFBMkIsa0lDZHhDLDJ5Q0FtQ0E7OzJGRHJCYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmV4cG9ydCBlbnVtIEVycm9yVHlwZSB7XG4gIENPVUxEX05PVF9SRUFDSF9BUEksXG4gIFJFQ0VJVkVEX0VSUk9SLFxuICBSRUNPUkRfTk9UX0ZPVU5ELFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1zZWFyY2gtcmVzdWx0cy1lcnJvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0cy1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLWVycm9yLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdHNFcnJvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHR5cGUhOiBFcnJvclR5cGVcbiAgQElucHV0KCkgZXJyb3I/OiBzdHJpbmdcbiAgQElucHV0KCkgcmVjb3JkSWQ/OiBzdHJpbmdcbiAgdHlwZXMgPSBFcnJvclR5cGVcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJwLVsxLjdlbV0gYmctcmVkLTUwIHRleHQtcmVkLTgwMCB0ZXh0LVsxLjVlbV0gdGV4dC1jZW50ZXIgcm91bmRlZC1sZ1wiXG4+XG4gIDxkaXYgKm5nSWY9XCJ0eXBlID09PSB0eXBlcy5DT1VMRF9OT1RfUkVBQ0hfQVBJXCI+XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIG9wYWNpdHktNDBcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmFjZVwiPmZhY2U8L21hdC1pY29uPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBxdWVzdGlvbi1tYXJrMVwiXG4gICAgICAgID5xdWVzdGlvbl9tYXJrPC9tYXQtaWNvblxuICAgICAgPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBxdWVzdGlvbi1tYXJrMlwiXG4gICAgICAgID5xdWVzdGlvbl9tYXJrPC9tYXQtaWNvblxuICAgICAgPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdHJhbnNsYXRlPnNlYXJjaC5lcnJvci5jb3VsZE5vdFJlYWNoQXBpPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gdHlwZXMuUkVDRUlWRURfRVJST1JcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgb3BhY2l0eS00MFwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmYWNlXCI+bW9vZF9iYWQ8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdHJhbnNsYXRlPnNlYXJjaC5lcnJvci5yZWNlaXZlZEVycm9yPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yXCI+e3sgZXJyb3IgfX08L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJ0eXBlID09PSB0eXBlcy5SRUNPUkRfTk9UX0ZPVU5EXCI+XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIG9wYWNpdHktNDBcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY29tcHV0ZXJcIj5jb21wdXRlcjwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNvbXB1dGVyLXF1ZXN0aW9uLW1hcmtcIlxuICAgICAgICA+cXVlc3Rpb25fbWFyazwvbWF0LWljb25cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHRyYW5zbGF0ZSBbdHJhbnNsYXRlUGFyYW1zXT1cInsgaWQ6IHJlY29yZElkIH1cIj5cbiAgICAgIHNlYXJjaC5lcnJvci5yZWNvcmROb3RGb3VuZFxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiPnt7IGVycm9yIH19PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,15 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare enum ErrorType {
3
- COULD_NOT_REACH_API = 0,
4
- RECEIVED_ERROR = 1,
5
- RECORD_NOT_FOUND = 2
6
- }
7
- export declare class SearchResultsErrorComponent {
8
- type: ErrorType;
9
- error?: string;
10
- recordId?: string;
11
- types: typeof ErrorType;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<SearchResultsErrorComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchResultsErrorComponent, "gn-ui-search-results-error", never, { "type": { "alias": "type"; "required": false; }; "error": { "alias": "error"; "required": false; }; "recordId": { "alias": "recordId"; "required": false; }; }, {}, never, never, false, never>;
14
- }
15
- //# sourceMappingURL=search-results-error.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-results-error.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/search-results-error/search-results-error.component.ts"],"names":[],"mappings":";AAEA,oBAAY,SAAS;IACnB,mBAAmB,IAAA;IACnB,cAAc,IAAA;IACd,gBAAgB,IAAA;CACjB;AAED,qBAMa,2BAA2B;IAC7B,IAAI,EAAG,SAAS,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,KAAK,mBAAY;yCAJN,2BAA2B;2CAA3B,2BAA2B;CAKvC"}