geonetwork-ui 2.5.0-dev.77e75b46a → 2.5.0-dev.b51c2cb0f

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 (85) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +17 -5
  2. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +2 -2
  3. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +18 -16
  4. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +12 -17
  5. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  6. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  7. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  8. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  9. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  10. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  11. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  12. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  13. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  14. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +20 -2
  15. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +3 -3
  16. package/esm2022/translations/de.json +7 -0
  17. package/esm2022/translations/en.json +7 -0
  18. package/esm2022/translations/es.json +7 -0
  19. package/esm2022/translations/fr.json +7 -0
  20. package/esm2022/translations/it.json +7 -0
  21. package/esm2022/translations/nl.json +7 -0
  22. package/esm2022/translations/pt.json +7 -0
  23. package/fesm2022/geonetwork-ui.mjs +369 -116
  24. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  25. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +2 -1
  26. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  27. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  28. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  29. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  30. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -6
  31. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  32. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  33. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  34. package/libs/ui/dataviz/src/index.d.ts +2 -2
  35. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  36. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  37. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  38. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  39. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  40. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  41. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  42. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  43. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  44. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  45. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  46. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  47. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  48. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  49. package/package.json +1 -1
  50. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +19 -5
  51. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +1 -5
  52. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  53. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  54. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  55. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +9 -18
  56. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -1
  57. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  58. package/src/libs/ui/dataviz/src/index.ts +2 -2
  59. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  60. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  61. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  62. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  63. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  64. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  65. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  66. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  67. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +23 -1
  68. package/src/libs/util/data-fetcher/src/lib/utils.ts +2 -2
  69. package/translations/de.json +7 -0
  70. package/translations/en.json +7 -0
  71. package/translations/es.json +7 -0
  72. package/translations/fr.json +7 -0
  73. package/translations/it.json +7 -0
  74. package/translations/nl.json +7 -0
  75. package/translations/pt.json +7 -0
  76. package/translations/sk.json +7 -0
  77. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  78. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  79. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  80. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  81. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  82. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  83. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  84. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  85. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
@@ -16,7 +16,7 @@ import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-comp
16
16
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
17
17
  import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, first as first$1, share, pairwise, delay, defaultIfEmpty, toArray } from 'rxjs/operators';
18
18
  import * as i1$2 from '@angular/common';
19
- import { CommonModule, NgOptimizedImage, DatePipe, NgIf, NgForOf } from '@angular/common';
19
+ import { CommonModule, NgOptimizedImage, DatePipe, NgIf } from '@angular/common';
20
20
  import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, timer, takeUntil, EMPTY, mergeMap as mergeMap$1, startWith as startWith$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
21
21
  import { lt, valid, coerce, satisfies, ltr } from 'semver';
22
22
  import chroma from 'chroma-js';
@@ -59,7 +59,7 @@ import * as i1$b from '@angular/material/dialog';
59
59
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
60
60
  import * as i2$3 from '@angular/material/tabs';
61
61
  import { MatTabsModule } from '@angular/material/tabs';
62
- import * as i1$f from '@angular/router';
62
+ import * as i1$e from '@angular/router';
63
63
  import { RouterLink, RouterModule, RouteReuseStrategy } from '@angular/router';
64
64
  import { marked } from 'marked';
65
65
  import Duration from 'duration-relativetimeformat';
@@ -89,16 +89,16 @@ import { parseISO } from 'date-fns/parseISO';
89
89
  import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
90
90
  import { tablerFolderOpen } from '@ng-icons/tabler-icons';
91
91
  import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
92
- import * as i4 from '@angular/cdk/scrolling';
93
92
  import { ScrollingModule } from '@angular/cdk/scrolling';
94
- import * as i2$4 from '@angular/material/sort';
93
+ import * as i3$1 from '@angular/material/sort';
95
94
  import { MatSort, MatSortModule } from '@angular/material/sort';
96
- import * as i1$d from '@angular/material/table';
95
+ import * as i2$4 from '@angular/material/table';
97
96
  import { MatTableModule } from '@angular/material/table';
98
- import * as i3$1 from 'ng-table-virtual-scroll';
99
- import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
97
+ import * as i4 from '@angular/material/paginator';
98
+ import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
99
+ import { LetDirective } from '@ngrx/component';
100
100
  import axios from 'axios';
101
- import * as i1$e from '@angular/platform-browser';
101
+ import * as i1$d from '@angular/platform-browser';
102
102
  import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
103
103
  import { Polygon } from 'ol/geom';
104
104
  import * as i4$1 from '@angular/material/radio';
@@ -19190,6 +19190,12 @@ var de = {
19190
19190
  "share.tab.webComponent": "Integrieren",
19191
19191
  "table.loading.data": "Daten werden geladen...",
19192
19192
  "table.object.count": "Objekte in diesem Datensatz",
19193
+ "table.paginator.firstPage": "Erste Seite",
19194
+ "table.paginator.itemsPerPage": "Elemente pro Seite",
19195
+ "table.paginator.lastPage": "Letzte Seite",
19196
+ "table.paginator.nextPage": "Nächste Seite",
19197
+ "table.paginator.previousPage": "Vorherige Seite",
19198
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} von {length}",
19193
19199
  "table.select.data": "Datenquelle",
19194
19200
  "tooltip.html.copy": "HTML kopieren",
19195
19201
  "tooltip.id.copy": "Eindeutige Kennung kopieren",
@@ -19197,6 +19203,7 @@ var de = {
19197
19203
  "tooltip.url.open": "URL öffnen",
19198
19204
  "ui.readLess": "Weniger lesen",
19199
19205
  "ui.readMore": "Weiterlesen",
19206
+ "wfs.aggregations.notsupported": "",
19200
19207
  "wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
19201
19208
  "wfs.featuretype.notfound": "Kein passender Feature-Typ wurde im Dienst gefunden",
19202
19209
  "wfs.geojsongml.notsupported": "Dieser Dienst unterstützt das GeoJSON- oder GML-Format nicht",
@@ -19800,6 +19807,12 @@ var en = {
19800
19807
  "share.tab.webComponent": "Integrate",
19801
19808
  "table.loading.data": "Loading data...",
19802
19809
  "table.object.count": "Objects in this dataset",
19810
+ "table.paginator.firstPage": "First page",
19811
+ "table.paginator.itemsPerPage": "Items per page",
19812
+ "table.paginator.lastPage": "Last page",
19813
+ "table.paginator.nextPage": "Next page",
19814
+ "table.paginator.previousPage": "Previous page",
19815
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} of {length}",
19803
19816
  "table.select.data": "Data source",
19804
19817
  "tooltip.html.copy": "Copy HTML",
19805
19818
  "tooltip.id.copy": "Copy unique identifier",
@@ -19807,6 +19820,7 @@ var en = {
19807
19820
  "tooltip.url.open": "Open URL",
19808
19821
  "ui.readLess": "Read less",
19809
19822
  "ui.readMore": "Read more",
19823
+ "wfs.aggregations.notsupported": "Aggregations are currently not supported for WFS services",
19810
19824
  "wfs.feature.limit": "Too many features to display the WFS layer!",
19811
19825
  "wfs.featuretype.notfound": "No matching feature type was found in the service",
19812
19826
  "wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
@@ -20410,6 +20424,12 @@ var es = {
20410
20424
  "share.tab.webComponent": "",
20411
20425
  "table.loading.data": "",
20412
20426
  "table.object.count": "",
20427
+ "table.paginator.firstPage": "Primera página",
20428
+ "table.paginator.itemsPerPage": "Elementos por página",
20429
+ "table.paginator.lastPage": "Última página",
20430
+ "table.paginator.nextPage": "Página siguiente",
20431
+ "table.paginator.previousPage": "Página anterior",
20432
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} de {length}",
20413
20433
  "table.select.data": "",
20414
20434
  "tooltip.html.copy": "",
20415
20435
  "tooltip.id.copy": "",
@@ -20417,6 +20437,7 @@ var es = {
20417
20437
  "tooltip.url.open": "",
20418
20438
  "ui.readLess": "",
20419
20439
  "ui.readMore": "",
20440
+ "wfs.aggregations.notsupported": "",
20420
20441
  "wfs.feature.limit": "",
20421
20442
  "wfs.featuretype.notfound": "",
20422
20443
  "wfs.geojsongml.notsupported": "",
@@ -21020,6 +21041,12 @@ var fr = {
21020
21041
  "share.tab.webComponent": "Intégrer",
21021
21042
  "table.loading.data": "Chargement des données...",
21022
21043
  "table.object.count": "enregistrements dans ces données",
21044
+ "table.paginator.firstPage": "Première page",
21045
+ "table.paginator.itemsPerPage": "Éléments par page",
21046
+ "table.paginator.lastPage": "Dernière page",
21047
+ "table.paginator.nextPage": "Page suivante",
21048
+ "table.paginator.previousPage": "Page précédente",
21049
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} sur {length}",
21023
21050
  "table.select.data": "Source de données",
21024
21051
  "tooltip.html.copy": "Copier le HTML",
21025
21052
  "tooltip.id.copy": "Copier l'identifiant unique",
@@ -21027,6 +21054,7 @@ var fr = {
21027
21054
  "tooltip.url.open": "Ouvrir l'URL",
21028
21055
  "ui.readLess": "Réduire",
21029
21056
  "ui.readMore": "Lire la suite",
21057
+ "wfs.aggregations.notsupported": "Agrégations non supportées pour les services WFS",
21030
21058
  "wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
21031
21059
  "wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
21032
21060
  "wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
@@ -21630,6 +21658,12 @@ var it = {
21630
21658
  "share.tab.webComponent": "Incorporare",
21631
21659
  "table.loading.data": "Caricamento dei dati...",
21632
21660
  "table.object.count": "record in questi dati",
21661
+ "table.paginator.firstPage": "Prima pagina",
21662
+ "table.paginator.itemsPerPage": "Elementi per pagina",
21663
+ "table.paginator.lastPage": "Ultima pagina",
21664
+ "table.paginator.nextPage": "Pagina successiva",
21665
+ "table.paginator.previousPage": "Pagina precedente",
21666
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} di {total}",
21633
21667
  "table.select.data": "Sorgente dati",
21634
21668
  "tooltip.html.copy": "Copiare il HTML",
21635
21669
  "tooltip.id.copy": "Copiare l'identificatore unico",
@@ -21637,6 +21671,7 @@ var it = {
21637
21671
  "tooltip.url.open": "Aprire l'URL",
21638
21672
  "ui.readLess": "Ridurre",
21639
21673
  "ui.readMore": "Leggere di più",
21674
+ "wfs.aggregations.notsupported": "",
21640
21675
  "wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
21641
21676
  "wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
21642
21677
  "wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
@@ -22240,6 +22275,12 @@ var nl = {
22240
22275
  "share.tab.webComponent": "",
22241
22276
  "table.loading.data": "",
22242
22277
  "table.object.count": "",
22278
+ "table.paginator.firstPage": "",
22279
+ "table.paginator.itemsPerPage": "",
22280
+ "table.paginator.lastPage": "",
22281
+ "table.paginator.nextPage": "",
22282
+ "table.paginator.previousPage": "",
22283
+ "table.paginator.rangeLabel": "",
22243
22284
  "table.select.data": "",
22244
22285
  "tooltip.html.copy": "",
22245
22286
  "tooltip.id.copy": "",
@@ -22247,6 +22288,7 @@ var nl = {
22247
22288
  "tooltip.url.open": "",
22248
22289
  "ui.readLess": "",
22249
22290
  "ui.readMore": "",
22291
+ "wfs.aggregations.notsupported": "",
22250
22292
  "wfs.feature.limit": "",
22251
22293
  "wfs.featuretype.notfound": "",
22252
22294
  "wfs.geojsongml.notsupported": "",
@@ -22850,6 +22892,12 @@ var pt = {
22850
22892
  "share.tab.webComponent": "",
22851
22893
  "table.loading.data": "",
22852
22894
  "table.object.count": "",
22895
+ "table.paginator.firstPage": "",
22896
+ "table.paginator.itemsPerPage": "",
22897
+ "table.paginator.lastPage": "",
22898
+ "table.paginator.nextPage": "",
22899
+ "table.paginator.previousPage": "",
22900
+ "table.paginator.rangeLabel": "",
22853
22901
  "table.select.data": "",
22854
22902
  "tooltip.html.copy": "",
22855
22903
  "tooltip.id.copy": "",
@@ -22857,6 +22905,7 @@ var pt = {
22857
22905
  "tooltip.url.open": "",
22858
22906
  "ui.readLess": "",
22859
22907
  "ui.readMore": "",
22908
+ "wfs.aggregations.notsupported": "",
22860
22909
  "wfs.feature.limit": "",
22861
22910
  "wfs.featuretype.notfound": "",
22862
22911
  "wfs.geojsongml.notsupported": "",
@@ -23428,7 +23477,7 @@ class ElasticsearchService {
23428
23477
  },
23429
23478
  };
23430
23479
  }
23431
- getRelatedRecordPayload(title, uuid, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
23480
+ getRelatedRecordPayload(record, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
23432
23481
  return {
23433
23482
  query: {
23434
23483
  bool: {
@@ -23438,9 +23487,21 @@ class ElasticsearchService {
23438
23487
  fields: [
23439
23488
  'resourceTitleObject.default',
23440
23489
  'resourceAbstractObject.default',
23441
- 'tag.raw',
23490
+ 'allKeywords',
23491
+ ],
23492
+ like: [
23493
+ {
23494
+ doc: {
23495
+ resourceTitleObject: {
23496
+ default: record.title,
23497
+ },
23498
+ resourceAbstractObject: {
23499
+ default: record.abstract,
23500
+ },
23501
+ allKeywords: record.keywords.map((keyword) => keyword.label),
23502
+ },
23503
+ },
23442
23504
  ],
23443
- like: title,
23444
23505
  min_term_freq: 1,
23445
23506
  max_query_terms: 12,
23446
23507
  },
@@ -23456,7 +23517,7 @@ class ElasticsearchService {
23456
23517
  },
23457
23518
  },
23458
23519
  ],
23459
- must_not: [{ wildcard: { uuid: uuid } }],
23520
+ must_not: [{ wildcard: { uuid: record.uniqueIdentifier } }],
23460
23521
  },
23461
23522
  },
23462
23523
  size,
@@ -23877,7 +23938,7 @@ class Gn4Repository {
23877
23938
  }
23878
23939
  getSimilarRecords(similarTo) {
23879
23940
  return this.gn4SearchApi
23880
- .search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo.title, similarTo.uniqueIdentifier, 3)))
23941
+ .search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo, 3)))
23881
23942
  .pipe(switchMap((results) => this.gn4Mapper.readRecords(results.hits.hits)));
23882
23943
  }
23883
23944
  aggregate(params) {
@@ -35137,8 +35198,12 @@ class FetchError {
35137
35198
  this.stack = null;
35138
35199
  this.message = `An error happened in the data fetcher, type: ${type}, info: ${info}`;
35139
35200
  }
35140
- static http(code) {
35141
- return new FetchError('http', '', code);
35201
+ static http(code, body) {
35202
+ const info = body
35203
+ ? `Error ${code}
35204
+ ${body}`
35205
+ : `${code}`;
35206
+ return new FetchError('http', info, code);
35142
35207
  }
35143
35208
  static corsOrNetwork(message) {
35144
35209
  return new FetchError('network', message, 0);
@@ -35246,7 +35311,7 @@ function fetchDataAsText(url) {
35246
35311
  })
35247
35312
  .then(async (response) => {
35248
35313
  if (!response.ok) {
35249
- throw FetchError.http(response.status);
35314
+ throw FetchError.http(response.status, await response.text());
35250
35315
  }
35251
35316
  return response.text();
35252
35317
  }), url, 'asText');
@@ -35258,7 +35323,7 @@ function fetchDataAsArrayBuffer(url) {
35258
35323
  })
35259
35324
  .then(async (response) => {
35260
35325
  if (!response.ok) {
35261
- throw FetchError.http(response.status);
35326
+ throw FetchError.http(response.status, await response.text());
35262
35327
  }
35263
35328
  // convert to a numeric array so that we can store the response in cache
35264
35329
  return Array.from(new Uint8Array(await response.arrayBuffer()));
@@ -35730,7 +35795,19 @@ class WfsReader extends BaseReader {
35730
35795
  this.version = this.endpoint.getVersion();
35731
35796
  }
35732
35797
  get properties() {
35733
- return this.getData().then((result) => result.properties);
35798
+ return this.endpoint
35799
+ .getFeatureTypeFull(this.featureTypeName)
35800
+ .then((featureType) => Object.keys(featureType.properties).map((prop) => {
35801
+ const originalType = featureType.properties[prop];
35802
+ const type = originalType === 'float' || originalType === 'integer'
35803
+ ? 'number'
35804
+ : originalType; // FIXME: ogc-client typing is incorrect, should be a string union
35805
+ return {
35806
+ name: prop,
35807
+ label: prop,
35808
+ type,
35809
+ };
35810
+ }));
35734
35811
  }
35735
35812
  get info() {
35736
35813
  return this.endpoint.getFeatureTypeFull(this.featureTypeName).then((result) => ({
@@ -35768,12 +35845,17 @@ class WfsReader extends BaseReader {
35768
35845
  }
35769
35846
  }
35770
35847
  getData() {
35848
+ if (this.aggregations || this.groupedBy) {
35849
+ throw new Error(marker('wfs.aggregations.notsupported'));
35850
+ }
35771
35851
  const asJson = this.endpoint.supportsJson(this.featureTypeName);
35852
+ const attributes = this.selected ?? undefined;
35772
35853
  let url = this.endpoint.getFeatureUrl(this.featureTypeName, {
35773
35854
  ...(this.startIndex !== null && { startIndex: this.startIndex }),
35774
35855
  ...(this.count !== null && { maxFeatures: this.count }),
35775
35856
  asJson,
35776
35857
  outputCrs: 'EPSG:4326',
35858
+ attributes,
35777
35859
  // sortBy: this.sort // TODO: no sort in ogc-client?
35778
35860
  });
35779
35861
  if (Array.isArray(this.sort) && this.sort.length > 0) {
@@ -36265,22 +36347,136 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36265
36347
  args: ['chartCanvas']
36266
36348
  }] } });
36267
36349
 
36268
- const rowIdPrefix = 'table-item-';
36269
- class TableComponent {
36270
- set data(value) {
36271
- this.dataSource = new TableVirtualScrollDataSource(value);
36272
- this.dataSource.sort = this.sort;
36273
- this.properties =
36274
- Array.isArray(value) && value.length ? Object.keys(value[0]) : [];
36275
- this.count = value.length;
36350
+ class DataTableDataSource {
36351
+ constructor() {
36352
+ this.dataItems$ = new BehaviorSubject([]);
36353
+ }
36354
+ connect() {
36355
+ return this.dataItems$.asObservable().pipe(map$1((items) => items.map((item) => ({
36356
+ id: item.id,
36357
+ ...item.properties,
36358
+ }))));
36359
+ }
36360
+ disconnect() {
36361
+ this.dataItems$.complete();
36362
+ }
36363
+ async showData(itemsPromise) {
36364
+ const items = await itemsPromise;
36365
+ this.dataItems$.next(items);
36366
+ }
36367
+ clearData() {
36368
+ this.dataItems$.next([]);
36276
36369
  }
36277
- constructor(eltRef) {
36370
+ }
36371
+
36372
+ class CustomMatPaginatorIntl extends MatPaginatorIntl {
36373
+ constructor(translate) {
36374
+ super();
36375
+ this.translate = translate;
36376
+ this.changes = new Subject();
36377
+ this.setLabels();
36378
+ this.translate.onLangChange.subscribe(() => {
36379
+ this.setLabels();
36380
+ this.changes.next();
36381
+ });
36382
+ }
36383
+ setLabels() {
36384
+ this.itemsPerPageLabel = this.translate.instant('table.paginator.itemsPerPage');
36385
+ this.nextPageLabel = this.translate.instant('table.paginator.nextPage');
36386
+ this.previousPageLabel = this.translate.instant('table.paginator.previousPage');
36387
+ this.firstPageLabel = this.translate.instant('table.paginator.firstPage');
36388
+ this.lastPageLabel = this.translate.instant('table.paginator.lastPage');
36389
+ this.getRangeLabel = this.getRangeLabelIntl;
36390
+ this.changes.next();
36391
+ }
36392
+ getRangeLabelIntl(page, pageSize, length) {
36393
+ if (length === 0 || pageSize === 0) {
36394
+ return this.translate.instant('table.paginator.rangeLabel', {
36395
+ startIndex: 0,
36396
+ endIndex: 0,
36397
+ length,
36398
+ });
36399
+ }
36400
+ const startIndex = page * pageSize;
36401
+ const endIndex = startIndex < length
36402
+ ? Math.min(startIndex + pageSize, length)
36403
+ : startIndex + pageSize;
36404
+ return this.translate.instant('table.paginator.rangeLabel', {
36405
+ startIndex: startIndex + 1,
36406
+ endIndex,
36407
+ length,
36408
+ });
36409
+ }
36410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
36411
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl }); }
36412
+ }
36413
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl, decorators: [{
36414
+ type: Injectable
36415
+ }], ctorParameters: () => [{ type: i1$1.TranslateService }] });
36416
+
36417
+ const rowIdPrefix = 'table-item-';
36418
+ class DataTableComponent {
36419
+ set dataset(value) {
36420
+ this.properties$.next(null);
36421
+ this.dataset_ = value;
36422
+ this.dataset_.load();
36423
+ this.dataset_.properties.then((properties) => this.properties$.next(properties.map((p) => p.name)));
36424
+ this.dataset_.info.then((info) => (this.count = info.itemsCount));
36425
+ }
36426
+ constructor(eltRef, cdr, translateService) {
36278
36427
  this.eltRef = eltRef;
36428
+ this.cdr = cdr;
36429
+ this.translateService = translateService;
36279
36430
  this.selected = new EventEmitter();
36431
+ this.properties$ = new BehaviorSubject(null);
36432
+ this.loading$ = new BehaviorSubject(false);
36433
+ this.error = null;
36434
+ }
36435
+ ngOnInit() {
36436
+ this.dataSource = new DataTableDataSource();
36280
36437
  }
36281
36438
  ngAfterViewInit() {
36282
36439
  this.headerHeight =
36283
36440
  this.eltRef.nativeElement.querySelector('thead').offsetHeight;
36441
+ this.setPagination();
36442
+ this.cdr.detectChanges();
36443
+ }
36444
+ ngOnChanges() {
36445
+ this.setPagination();
36446
+ }
36447
+ setSort(sort) {
36448
+ if (!this.dataset_)
36449
+ return;
36450
+ if (!sort.active) {
36451
+ this.dataset_.orderBy();
36452
+ }
36453
+ else {
36454
+ this.dataset_.orderBy([sort.direction || 'asc', sort.active]);
36455
+ }
36456
+ this.readData();
36457
+ }
36458
+ setPagination() {
36459
+ if (!this.paginator)
36460
+ return;
36461
+ if (!this.dataset_)
36462
+ return;
36463
+ this.dataset_.limit(this.paginator.pageIndex * this.paginator.pageSize, this.paginator.pageSize);
36464
+ this.readData();
36465
+ }
36466
+ async readData() {
36467
+ this.loading$.next(true);
36468
+ // wait for properties to be read
36469
+ const properties = await firstValueFrom(this.properties$.pipe(filter$1((p) => !!p)));
36470
+ const propsWithoutGeom = properties.filter((p) => !p.toLowerCase().startsWith('geom'));
36471
+ this.dataset_.select(...propsWithoutGeom);
36472
+ try {
36473
+ await this.dataSource.showData(this.dataset_.read());
36474
+ this.error = null;
36475
+ }
36476
+ catch (error) {
36477
+ this.handleError(error);
36478
+ }
36479
+ this.loading$.next(false);
36284
36480
  }
36285
36481
  scrollToItem(itemId) {
36286
36482
  const row = this.eltRef.nativeElement.querySelector(`#${this.getRowEltId(itemId)}`);
@@ -36289,20 +36485,36 @@ class TableComponent {
36289
36485
  getRowEltId(id) {
36290
36486
  return rowIdPrefix + id;
36291
36487
  }
36292
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
36293
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$d.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$d.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$d.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$d.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1$d.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$d.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$d.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$d.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$d.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$d.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$1.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36488
+ handleError(error) {
36489
+ this.dataSource.clearData();
36490
+ if (error instanceof FetchError) {
36491
+ this.error = this.translateService.instant(`dataset.error.${error.type}`, {
36492
+ info: error.info,
36493
+ });
36494
+ console.warn(error.message);
36495
+ }
36496
+ else {
36497
+ this.error = this.translateService.instant(error.message);
36498
+ console.warn(error.stack || error);
36499
+ }
36500
+ }
36501
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
36502
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36294
36503
  }
36295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
36504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
36296
36505
  type: Component,
36297
36506
  args: [{ standalone: true, imports: [
36298
36507
  MatTableModule,
36299
36508
  MatSortModule,
36300
- TableVirtualScrollModule,
36509
+ MatPaginatorModule,
36301
36510
  ScrollingModule,
36302
- NgForOf,
36303
36511
  TranslateModule,
36304
- ], selector: 'gn-ui-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"] }]
36305
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { data: [{
36512
+ CommonModule,
36513
+ LoadingMaskComponent,
36514
+ PopupAlertComponent,
36515
+ LetDirective,
36516
+ ], providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], selector: 'gn-ui-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"] }]
36517
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { dataset: [{
36306
36518
  type: Input
36307
36519
  }], activeId: [{
36308
36520
  type: Input
@@ -36310,48 +36522,93 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36310
36522
  type: Output
36311
36523
  }], sort: [{
36312
36524
  type: ViewChild,
36313
- args: [MatSort, { static: true }]
36525
+ args: [MatSort]
36526
+ }], paginator: [{
36527
+ type: ViewChild,
36528
+ args: [MatPaginator]
36314
36529
  }] } });
36315
36530
 
36316
- const tableItemFixture = () => [
36317
- {
36318
- name: 'name 1',
36319
- id: 'id 1',
36320
- age: 15,
36321
- },
36322
- {
36323
- name: 'name 2',
36324
- id: 'id 2',
36325
- age: 10,
36326
- },
36327
- {
36328
- name: 'name 3',
36329
- id: 'id 3',
36330
- age: 55,
36331
- },
36332
- ];
36333
- const someHabTableItemFixture = () => [
36334
- {
36335
- name: 'France',
36336
- id: '1',
36337
- pop: 50500000,
36338
- },
36339
- {
36340
- name: 'Italy',
36341
- id: '2',
36342
- pop: 155878789655,
36343
- },
36344
- {
36345
- name: 'UK',
36346
- id: '3',
36347
- pop: 31522456,
36348
- },
36349
- {
36350
- name: 'US',
36351
- id: '4',
36352
- pop: 3215448888,
36353
- },
36354
- ];
36531
+ const tableItemsFixture = {
36532
+ items: [
36533
+ {
36534
+ type: 'Feature',
36535
+ geometry: null,
36536
+ properties: {
36537
+ id: '0001',
36538
+ firstName: 'John',
36539
+ lastName: 'Lennon',
36540
+ },
36541
+ },
36542
+ {
36543
+ type: 'Feature',
36544
+ geometry: null,
36545
+ properties: {
36546
+ id: '0002',
36547
+ firstName: 'Ozzy',
36548
+ lastName: 'Osbourne',
36549
+ },
36550
+ },
36551
+ {
36552
+ type: 'Feature',
36553
+ geometry: null,
36554
+ properties: {
36555
+ id: '0003',
36556
+ firstName: 'Claude',
36557
+ lastName: 'François',
36558
+ },
36559
+ },
36560
+ ],
36561
+ properties: [
36562
+ { name: 'id', label: 'id', type: 'string' },
36563
+ { name: 'firstName', label: 'Firstname', type: 'string' },
36564
+ { name: 'lastName', label: 'Lastname', type: 'string' },
36565
+ ],
36566
+ };
36567
+ const someHabTableItemFixture = {
36568
+ items: [
36569
+ {
36570
+ type: 'Feature',
36571
+ geometry: null,
36572
+ properties: {
36573
+ id: '1',
36574
+ name: 'France',
36575
+ pop: 50500000,
36576
+ },
36577
+ },
36578
+ {
36579
+ type: 'Feature',
36580
+ geometry: null,
36581
+ properties: {
36582
+ id: '2',
36583
+ name: 'Italy',
36584
+ pop: 155878789655,
36585
+ },
36586
+ },
36587
+ {
36588
+ type: 'Feature',
36589
+ geometry: null,
36590
+ properties: {
36591
+ id: '3',
36592
+ name: 'UK',
36593
+ pop: 31522456,
36594
+ },
36595
+ },
36596
+ {
36597
+ type: 'Feature',
36598
+ geometry: null,
36599
+ properties: {
36600
+ id: '4',
36601
+ name: 'US',
36602
+ pop: 3215448888,
36603
+ },
36604
+ },
36605
+ ],
36606
+ properties: [
36607
+ { name: 'id', label: 'ID', type: 'string' },
36608
+ { name: 'name', label: 'Name', type: 'string' },
36609
+ { name: 'pop', label: 'Population', type: 'number' },
36610
+ ],
36611
+ };
36355
36612
 
36356
36613
  marker('chart.type.bar');
36357
36614
  marker('chart.type.barHorizontal');
@@ -36593,22 +36850,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36593
36850
  }] } });
36594
36851
 
36595
36852
  class GeoTableViewComponent {
36596
- get features() {
36597
- return this.data.features;
36598
- }
36599
36853
  constructor(changeRef) {
36600
36854
  this.changeRef = changeRef;
36601
- this.data = { type: 'FeatureCollection', features: [] };
36602
36855
  this.subscription = new Subscription();
36603
36856
  }
36604
- ngOnInit() {
36605
- this.tableData = this.geojsonToTableData(this.data);
36606
- this.mapContext = this.initMapContext();
36857
+ async ngOnInit() {
36858
+ this.mapContext = await this.initMapContext();
36607
36859
  }
36608
36860
  onTableSelect(tableEntry) {
36609
36861
  const { id } = tableEntry;
36610
36862
  this.selectionId = id;
36611
- this.selection = this.getFeatureFromId(id);
36863
+ // this.selection = this.getFeatureFromId(id)
36612
36864
  if (this.selection) {
36613
36865
  this.animateToFeature(this.selection);
36614
36866
  }
@@ -36629,7 +36881,8 @@ class GeoTableViewComponent {
36629
36881
  ...f.properties,
36630
36882
  }));
36631
36883
  }
36632
- initMapContext() {
36884
+ async initMapContext() {
36885
+ this.dataset.selectAll();
36633
36886
  return {
36634
36887
  layers: [
36635
36888
  {
@@ -36638,7 +36891,11 @@ class GeoTableViewComponent {
36638
36891
  },
36639
36892
  {
36640
36893
  type: 'geojson',
36641
- data: this.data,
36894
+ data: {
36895
+ type: 'FeatureCollection',
36896
+ // FIXME: we're not getting geojson here
36897
+ features: await this.dataset.read(),
36898
+ },
36642
36899
  },
36643
36900
  ],
36644
36901
  view: {
@@ -36662,18 +36919,19 @@ class GeoTableViewComponent {
36662
36919
  // })
36663
36920
  }
36664
36921
  getFeatureFromId(id) {
36665
- return this.features.find((feature) => feature.id === id);
36922
+ // FIXME: restore this once we need it?
36923
+ // return this.features.find((feature) => feature.id === id)
36666
36924
  }
36667
36925
  ngOnDestroy() {
36668
36926
  this.subscription.unsubscribe();
36669
36927
  }
36670
36928
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
36671
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { data: "data" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-table\n #table\n class=\"w-1/2 overflow-auto\"\n [data]=\"tableData\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: TableComponent, selector: "gn-ui-table", inputs: ["data", "activeId"], outputs: ["selected"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36929
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36672
36930
  }
36673
36931
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, decorators: [{
36674
36932
  type: Component,
36675
- args: [{ selector: 'gn-ui-geo-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [TableComponent, MapContainerComponent, FeatureDetailComponent], standalone: true, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-table\n #table\n class=\"w-1/2 overflow-auto\"\n [data]=\"tableData\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n" }]
36676
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { data: [{
36933
+ args: [{ selector: 'gn-ui-geo-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MapContainerComponent, FeatureDetailComponent, DataTableComponent], standalone: true, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n" }]
36934
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { dataset: [{
36677
36935
  type: Input
36678
36936
  }], uiTable: [{
36679
36937
  type: ViewChild,
@@ -36696,23 +36954,18 @@ class TableViewComponent {
36696
36954
  this.tableData$ = this.currentLink$.pipe(switchMap$1((link) => {
36697
36955
  this.error = null;
36698
36956
  if (!link)
36699
- return of([]);
36957
+ return of(undefined);
36700
36958
  this.loading = true;
36701
- return this.fetchData(link).pipe(map$1((items) => items.map((item) => ({
36702
- id: item.id,
36703
- ...item.properties,
36704
- }))), catchError((error) => {
36959
+ return this.getDatasetReader(link).pipe(catchError((error) => {
36705
36960
  this.handleError(error);
36706
- return of([]);
36961
+ return of(undefined);
36707
36962
  }), finalize(() => {
36708
36963
  this.loading = false;
36709
36964
  }));
36710
- }), startWith([]), shareReplay(1));
36965
+ }), startWith(undefined), shareReplay(1));
36711
36966
  }
36712
- fetchData(link) {
36713
- return this.dataService
36714
- .getDataset(link)
36715
- .pipe(switchMap$1((dataset) => dataset.read()));
36967
+ getDatasetReader(link) {
36968
+ return this.dataService.getDataset(link);
36716
36969
  }
36717
36970
  onTableSelect(event) {
36718
36971
  console.log(event);
@@ -36735,17 +36988,17 @@ class TableViewComponent {
36735
36988
  this.loading = false;
36736
36989
  }
36737
36990
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
36738
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: TableComponent, selector: "gn-ui-table", inputs: ["data", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36991
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36739
36992
  }
36740
36993
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
36741
36994
  type: Component,
36742
36995
  args: [{ selector: 'gn-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
36743
36996
  CommonModule,
36744
- TableComponent,
36997
+ DataTableComponent,
36745
36998
  LoadingMaskComponent,
36746
36999
  PopupAlertComponent,
36747
37000
  TranslateModule,
36748
- ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
37001
+ ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
36749
37002
  }], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { link: [{
36750
37003
  type: Input
36751
37004
  }] } });
@@ -37323,7 +37576,7 @@ class FeatureRecordModule {
37323
37576
  MatTabsModule,
37324
37577
  UiWidgetsModule,
37325
37578
  TranslateModule,
37326
- TableComponent,
37579
+ DataTableComponent,
37327
37580
  NgIconsModule,
37328
37581
  DropdownSelectorComponent] }); }
37329
37582
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureRecordModule, providers: [
@@ -37342,7 +37595,7 @@ class FeatureRecordModule {
37342
37595
  MatTabsModule,
37343
37596
  UiWidgetsModule,
37344
37597
  TranslateModule,
37345
- TableComponent,
37598
+ DataTableComponent,
37346
37599
  NgIconsModule,
37347
37600
  DropdownSelectorComponent] }); }
37348
37601
  }
@@ -37361,7 +37614,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37361
37614
  MatTabsModule,
37362
37615
  UiWidgetsModule,
37363
37616
  TranslateModule,
37364
- TableComponent,
37617
+ DataTableComponent,
37365
37618
  NgIconsModule,
37366
37619
  DropdownSelectorComponent,
37367
37620
  ],
@@ -37477,7 +37730,7 @@ class DataViewComponent {
37477
37730
  this.selectedLink$.next(link);
37478
37731
  }
37479
37732
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
37480
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37733
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37481
37734
  }
37482
37735
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
37483
37736
  type: Component,
@@ -37487,7 +37740,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37487
37740
  TableViewComponent,
37488
37741
  TranslateModule,
37489
37742
  ChartViewComponent,
37490
- ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
37743
+ ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
37491
37744
  }], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
37492
37745
  type: Input
37493
37746
  }], displaySource: [{
@@ -38034,7 +38287,7 @@ class RecordMetaComponent {
38034
38287
  this.meta.removeTag('property="og:url"');
38035
38288
  this.meta.removeTag('property="og:title"');
38036
38289
  }
38037
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$e.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
38290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$d.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
38038
38291
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordMetaComponent, isStandalone: true, selector: "gn-ui-record-meta", inputs: { metadata: "metadata" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38039
38292
  }
38040
38293
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
@@ -38045,7 +38298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
38045
38298
  changeDetection: ChangeDetectionStrategy.OnPush,
38046
38299
  standalone: true,
38047
38300
  }]
38048
- }], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
38301
+ }], ctorParameters: () => [{ type: i1$d.Meta }], propDecorators: { metadata: [{
38049
38302
  type: Input
38050
38303
  }] } });
38051
38304
 
@@ -39109,7 +39362,7 @@ class ImportRecordComponent {
39109
39362
  },
39110
39363
  });
39111
39364
  }
39112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$f.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
39365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$e.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
39113
39366
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImportRecordComponent, isStandalone: true, selector: "gn-ui-import-record", outputs: { closeImportMenu: "closeImportMenu" }, providers: [
39114
39367
  provideIcons({
39115
39368
  iconoirImport,
@@ -39140,7 +39393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39140
39393
  size: '1.5em',
39141
39394
  }),
39142
39395
  ], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n" }]
39143
- }], ctorParameters: () => [{ type: i1$f.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
39396
+ }], ctorParameters: () => [{ type: i1$e.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
39144
39397
  type: Output
39145
39398
  }] } });
39146
39399
 
@@ -41140,7 +41393,7 @@ class RouterService {
41140
41393
  getOrganizationPageRoute() {
41141
41394
  return ROUTER_ROUTE_ORGANIZATION;
41142
41395
  }
41143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$f.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
41396
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$e.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
41144
41397
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
41145
41398
  }
41146
41399
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
@@ -41151,7 +41404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41151
41404
  }], ctorParameters: () => [{ type: undefined, decorators: [{
41152
41405
  type: Inject,
41153
41406
  args: [ROUTER_CONFIG]
41154
- }] }, { type: i1$f.Router }] });
41407
+ }] }, { type: i1$e.Router }] });
41155
41408
 
41156
41409
  const goAction = createAction('[Router] Go', props());
41157
41410
  const backAction = createAction('[Router] Back');
@@ -41456,12 +41709,12 @@ class RouterEffects {
41456
41709
  this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
41457
41710
  this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
41458
41711
  }
41459
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$f.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
41712
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$e.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
41460
41713
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
41461
41714
  }
41462
41715
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
41463
41716
  type: Injectable
41464
- }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$f.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
41717
+ }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$e.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
41465
41718
  type: Inject,
41466
41719
  args: [ROUTER_CONFIG]
41467
41720
  }] }, { type: FieldsService }] });
@@ -41521,5 +41774,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41521
41774
  * Generated bundle index. Do not edit.
41522
41775
  */
41523
41776
 
41524
- export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
41777
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
41525
41778
  //# sourceMappingURL=geonetwork-ui.mjs.map