geonetwork-ui 2.11.0-dev.a2881de31 → 2.11.0-dev.a63e6e32a

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 (108) hide show
  1. package/fesm2022/geonetwork-ui.mjs +1667 -991
  2. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  3. package/index.d.ts +300 -129
  4. package/index.d.ts.map +1 -1
  5. package/package.json +12 -11
  6. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +5 -5
  7. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -5
  8. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +43 -13
  9. package/src/libs/api/metadata-converter/src/lib/gn4/types/elasticsearch.model.ts +13 -1
  10. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
  11. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +9 -5
  12. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/association-type.mapper.ts +12 -0
  13. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +2 -2
  14. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +130 -37
  15. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +40 -16
  16. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +40 -2
  17. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +20 -1
  18. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +1 -5
  19. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +2 -2
  20. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +3 -2
  21. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +2 -1
  22. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -22
  23. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-associated-records/form-field-associated-records.component.html +33 -0
  24. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-associated-records/form-field-associated-records.component.ts +94 -0
  25. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.html +16 -12
  26. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +6 -0
  27. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +6 -0
  28. package/src/libs/feature/editor/src/lib/fields.config.ts +5 -0
  29. package/src/libs/feature/map/src/index.ts +0 -1
  30. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +1 -0
  31. package/src/libs/feature/map/src/lib/feature-map.module.ts +1 -8
  32. package/src/libs/feature/notifications/src/lib/notifications.service.ts +6 -4
  33. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +4 -8
  34. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +7 -16
  35. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +1 -3
  36. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +4 -9
  37. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +2 -7
  38. package/src/libs/feature/router/src/lib/default/router.service.ts +1 -1
  39. package/src/libs/feature/router/src/lib/default/state/query-params.utils.ts +1 -1
  40. package/src/libs/feature/search/src/index.ts +2 -0
  41. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.html +12 -4
  42. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +58 -19
  43. package/src/libs/feature/{map/src/lib → search/src/lib/geocoding}/geocoding.service.ts +5 -1
  44. package/src/libs/feature/search/src/lib/location-search/location-search.component.html +8 -0
  45. package/src/libs/feature/search/src/lib/location-search/location-search.component.ts +40 -0
  46. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +18 -8
  47. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +1 -1
  48. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +9 -1
  49. package/src/libs/feature/search/src/lib/utils/service/fields.ts +61 -2
  50. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -7
  51. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +31 -19
  52. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +2 -2
  53. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +2 -1
  54. package/src/libs/ui/inputs/src/index.ts +2 -0
  55. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +10 -1
  56. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +8 -0
  57. package/src/libs/ui/inputs/src/lib/date-adapter.providers.ts +30 -0
  58. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +3 -24
  59. package/src/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.css +37 -3
  60. package/src/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.html +135 -16
  61. package/src/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.ts +166 -29
  62. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +3 -7
  63. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.css +1 -0
  64. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +20 -7
  65. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +46 -5
  66. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +7 -4
  67. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +12 -9
  68. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.model.ts +2 -2
  69. package/src/libs/ui/inputs/src/lib/spatial-extent-dropdown/spatial-extent-dropdown.component.css +0 -0
  70. package/src/libs/ui/inputs/src/lib/spatial-extent-dropdown/spatial-extent-dropdown.component.html +111 -0
  71. package/src/libs/ui/inputs/src/lib/spatial-extent-dropdown/spatial-extent-dropdown.component.ts +215 -0
  72. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +6 -5
  73. package/src/libs/util/app-config/src/lib/app-config.ts +3 -0
  74. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  75. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +19 -22
  76. package/src/libs/util/data-fetcher/src/lib/engine/duckdb.ts +185 -0
  77. package/src/libs/util/data-fetcher/src/lib/engine/results.ts +63 -0
  78. package/src/libs/util/data-fetcher/src/lib/{sql-utils.ts → engine/sql-utils.ts} +28 -13
  79. package/src/libs/util/data-fetcher/src/lib/model.ts +2 -1
  80. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +53 -38
  81. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +11 -0
  82. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +9 -47
  83. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +27 -27
  84. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +5 -24
  85. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +5 -49
  86. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +5 -23
  87. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +184 -128
  88. package/src/libs/util/data-fetcher/src/lib/utils.ts +0 -143
  89. package/src/libs/util/shared/src/index.ts +1 -0
  90. package/src/libs/util/shared/src/lib/autofocus.directive.ts +26 -0
  91. package/src/libs/util/shared/src/lib/links/link-utils.ts +19 -10
  92. package/src/libs/util/shared/src/lib/services/date.service.ts +3 -3
  93. package/src/libs/util/shared/src/lib/utils/file.ts +15 -0
  94. package/src/libs/util/shared/src/lib/utils/geojson.ts +8 -0
  95. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  96. package/tailwind.base.css +5 -0
  97. package/translations/de.json +30 -4
  98. package/translations/en.json +29 -3
  99. package/translations/es.json +27 -1
  100. package/translations/fr.json +30 -4
  101. package/translations/it.json +28 -2
  102. package/translations/nl.json +27 -1
  103. package/translations/pt.json +27 -1
  104. package/translations/sk.json +28 -2
  105. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +0 -41
  106. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +0 -112
  107. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +0 -14
  108. /package/src/libs/feature/{map/src/lib/geocoding/geocoding.component.css → editor/src/lib/components/record-form/form-field/form-field-associated-records/form-field-associated-records.component.css} +0 -0
@@ -65,6 +65,7 @@
65
65
  "dataset.error.restrictedAccess": "",
66
66
  "dataset.error.unknown": "",
67
67
  "dataset.error.unsupportedType": "",
68
+ "daterange.filter.datePlaceholder": "dd/mm/aaaa",
68
69
  "daterange.filter.from": "",
69
70
  "daterange.filter.period": "",
70
71
  "daterange.filter.to": "",
@@ -89,6 +90,15 @@
89
90
  "domain.contact.role.stakeholder": "",
90
91
  "domain.contact.role.unspecified": "",
91
92
  "domain.contact.role.user": "",
93
+ "domain.record.associationType.collectiveTitle": "",
94
+ "domain.record.associationType.crossReference": "",
95
+ "domain.record.associationType.dependency": "",
96
+ "domain.record.associationType.isComposedOf": "",
97
+ "domain.record.associationType.largerWorkCitation": "",
98
+ "domain.record.associationType.partOfSeamlessDatabase": "",
99
+ "domain.record.associationType.revisionOf": "",
100
+ "domain.record.associationType.series": "",
101
+ "domain.record.associationType.stereoMate": "",
92
102
  "domain.record.keywordType.other": "",
93
103
  "domain.record.keywordType.place": "",
94
104
  "domain.record.keywordType.temporal": "",
@@ -212,6 +222,9 @@
212
222
  "editor.record.form.field.organisation": "",
213
223
  "editor.record.form.field.otherConstraints": "",
214
224
  "editor.record.form.field.overviews": "",
225
+ "editor.record.form.field.parentIdentifier": "",
226
+ "editor.record.form.field.parentLink": "",
227
+ "editor.record.form.field.parentType": "",
215
228
  "editor.record.form.field.recordUpdated": "",
216
229
  "editor.record.form.field.resourceCreated": "",
217
230
  "editor.record.form.field.resourceIdentifier": "",
@@ -412,7 +425,6 @@
412
425
  "map.add.layer.wms": "",
413
426
  "map.addFromFile.placeholder": "",
414
427
  "map.dropdown.placeholder": "",
415
- "map.geocoding.placeholder": "",
416
428
  "map.help.addFromFile": "",
417
429
  "map.layer.add": "",
418
430
  "map.layers.available": "",
@@ -538,6 +550,7 @@
538
550
  "record.metadata.languages": "",
539
551
  "record.metadata.link.postgis.table": "",
540
552
  "record.metadata.link.postgis.tooltip": "",
553
+ "record.metadata.linked.associatedRecords": "",
541
554
  "record.metadata.linked.datasets": "",
542
555
  "record.metadata.linked.records": "",
543
556
  "record.metadata.linked.reuses": "",
@@ -676,9 +689,22 @@
676
689
  "search.filters.recordKind.reuse": "",
677
690
  "search.filters.recordKind.service": "",
678
691
  "search.filters.representationType": "",
692
+ "search.filters.resourceCreationRevisionDate": "",
679
693
  "search.filters.resourceType": "",
694
+ "search.filters.spatialExtent": "",
695
+ "search.filters.spatialExtent.bboxFromFile": "",
696
+ "search.filters.spatialExtent.bboxFromFileDelete": "",
697
+ "search.filters.spatialExtent.bboxInitial": "",
698
+ "search.filters.spatialExtent.bboxInitialDelete": "",
699
+ "search.filters.spatialExtent.error.fileTooLarge": "",
700
+ "search.filters.spatialExtent.error.invalidFormat": "",
701
+ "search.filters.spatialExtent.error.noGeometry": "",
702
+ "search.filters.spatialExtent.error.title": "",
703
+ "search.filters.spatialExtent.helpText": "",
704
+ "search.filters.spatialExtent.import": "",
680
705
  "search.filters.standard": "",
681
706
  "search.filters.summaryLabel.changeDate": "",
707
+ "search.filters.summaryLabel.resourceCreationRevisionDate": "",
682
708
  "search.filters.summaryLabel.user": "",
683
709
  "search.filters.title": "",
684
710
  "search.filters.topic": "",
@@ -65,6 +65,7 @@
65
65
  "dataset.error.restrictedAccess": "",
66
66
  "dataset.error.unknown": "Dáta nie je možné zobraziť: \"{ info }\"",
67
67
  "dataset.error.unsupportedType": "Nepodporovaný typ obsahu: \"{ info }\"",
68
+ "daterange.filter.datePlaceholder": "d. m. rrrr",
68
69
  "daterange.filter.from": "",
69
70
  "daterange.filter.period": "",
70
71
  "daterange.filter.to": "",
@@ -89,6 +90,15 @@
89
90
  "domain.contact.role.stakeholder": "",
90
91
  "domain.contact.role.unspecified": "",
91
92
  "domain.contact.role.user": "",
93
+ "domain.record.associationType.collectiveTitle": "",
94
+ "domain.record.associationType.crossReference": "",
95
+ "domain.record.associationType.dependency": "",
96
+ "domain.record.associationType.isComposedOf": "",
97
+ "domain.record.associationType.largerWorkCitation": "",
98
+ "domain.record.associationType.partOfSeamlessDatabase": "",
99
+ "domain.record.associationType.revisionOf": "",
100
+ "domain.record.associationType.series": "",
101
+ "domain.record.associationType.stereoMate": "",
92
102
  "domain.record.keywordType.other": "Kľúčové slová",
93
103
  "domain.record.keywordType.place": "Miesto",
94
104
  "domain.record.keywordType.temporal": "Časový",
@@ -212,6 +222,9 @@
212
222
  "editor.record.form.field.organisation": "",
213
223
  "editor.record.form.field.otherConstraints": "",
214
224
  "editor.record.form.field.overviews": "",
225
+ "editor.record.form.field.parentIdentifier": "",
226
+ "editor.record.form.field.parentLink": "",
227
+ "editor.record.form.field.parentType": "",
215
228
  "editor.record.form.field.recordUpdated": "",
216
229
  "editor.record.form.field.resourceCreated": "",
217
230
  "editor.record.form.field.resourceIdentifier": "",
@@ -412,7 +425,6 @@
412
425
  "map.add.layer.wms": "Z WMS",
413
426
  "map.addFromFile.placeholder": "Kliknite na tlačidlo alebo sem vložte súbor",
414
427
  "map.dropdown.placeholder": "",
415
- "map.geocoding.placeholder": "Nájsť miesto",
416
428
  "map.help.addFromFile": "Kliknite na tlačidlo alebo sem vložte súbor, ktorý chcete pridať do mapy (v súčasnosti podporuje iba formát GeoJSON).",
417
429
  "map.layer.add": "Pridať",
418
430
  "map.layers.available": "Dostupné vrsty",
@@ -533,11 +545,12 @@
533
545
  "record.metadata.download": "Sťahovania",
534
546
  "record.metadata.feature.catalog": "",
535
547
  "record.metadata.formats": "Formáty",
536
- "record.metadata.isGeographical": "Súbor geografických údajov",
548
+ "record.metadata.isGeographical": "geo",
537
549
  "record.metadata.keywords": "Kľúčové slová",
538
550
  "record.metadata.languages": "",
539
551
  "record.metadata.link.postgis.table": "",
540
552
  "record.metadata.link.postgis.tooltip": "",
553
+ "record.metadata.linked.associatedRecords": "",
541
554
  "record.metadata.linked.datasets": "",
542
555
  "record.metadata.linked.records": "",
543
556
  "record.metadata.linked.reuses": "",
@@ -676,9 +689,22 @@
676
689
  "search.filters.recordKind.reuse": "",
677
690
  "search.filters.recordKind.service": "",
678
691
  "search.filters.representationType": "Typ reprezentácie",
692
+ "search.filters.resourceCreationRevisionDate": "",
679
693
  "search.filters.resourceType": "Typ zdroja",
694
+ "search.filters.spatialExtent": "",
695
+ "search.filters.spatialExtent.bboxFromFile": "",
696
+ "search.filters.spatialExtent.bboxFromFileDelete": "",
697
+ "search.filters.spatialExtent.bboxInitial": "",
698
+ "search.filters.spatialExtent.bboxInitialDelete": "",
699
+ "search.filters.spatialExtent.error.fileTooLarge": "",
700
+ "search.filters.spatialExtent.error.invalidFormat": "",
701
+ "search.filters.spatialExtent.error.noGeometry": "",
702
+ "search.filters.spatialExtent.error.title": "",
703
+ "search.filters.spatialExtent.helpText": "",
704
+ "search.filters.spatialExtent.import": "",
680
705
  "search.filters.standard": "Štandard",
681
706
  "search.filters.summaryLabel.changeDate": "",
707
+ "search.filters.summaryLabel.resourceCreationRevisionDate": "",
682
708
  "search.filters.summaryLabel.user": "",
683
709
  "search.filters.title": "Filtrovanie výsledkov",
684
710
  "search.filters.topic": "Témy",
@@ -1,41 +0,0 @@
1
- <gn-ui-search-input
2
- [(value)]="searchText"
3
- (valueChange)="onSearchChange($event)"
4
- (keyup.enter)="onEnterPress()"
5
- [placeholder]="'map.geocoding.placeholder' | translate"
6
- >
7
- </gn-ui-search-input>
8
- @if (results && results.length) {
9
- <ul
10
- class="bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg"
11
- >
12
- @for (result of results; track result) {
13
- <li
14
- (click)="zoomToLocation(result)"
15
- class="flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out"
16
- >
17
- <svg
18
- class="stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3"
19
- xmlns="http://www.w3.org/2000/svg"
20
- fill="none"
21
- viewBox="0 0 24 24"
22
- stroke="currentColor"
23
- >
24
- <path
25
- stroke-linecap="round"
26
- stroke-linejoin="round"
27
- stroke-width="2"
28
- d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"
29
- />
30
- <path
31
- stroke-linecap="round"
32
- stroke-linejoin="round"
33
- stroke-width="2"
34
- d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"
35
- />
36
- </svg>
37
- <span class="font-sans font-semibold ml-4">{{ result.label }}</span>
38
- </li>
39
- }
40
- </ul>
41
- }
@@ -1,112 +0,0 @@
1
- import { Component, OnDestroy, inject } from '@angular/core'
2
- import { catchError, firstValueFrom, from, Subject, takeUntil } from 'rxjs'
3
- import { debounceTime, switchMap } from 'rxjs/operators'
4
- import { GeocodingService } from '../geocoding.service'
5
- import { MapFacade } from '../+state/map.facade'
6
-
7
- import { SearchInputComponent } from '../../../../../../libs/ui/inputs/src'
8
- import { TranslatePipe } from '@ngx-translate/core'
9
- import { MapContextView } from '@geospatial-sdk/core'
10
-
11
- @Component({
12
- selector: 'gn-ui-geocoding',
13
- templateUrl: './geocoding.component.html',
14
- styleUrls: ['./geocoding.component.css'],
15
- standalone: true,
16
- imports: [SearchInputComponent, TranslatePipe],
17
- })
18
- export class GeocodingComponent implements OnDestroy {
19
- private mapFacade = inject(MapFacade)
20
- private geocodingService = inject(GeocodingService)
21
-
22
- searchText = ''
23
- results: any[] = []
24
- searchTextChanged = new Subject<string>()
25
- destroy$ = new Subject<void>()
26
- errorMessage: string | null = null
27
-
28
- constructor() {
29
- this.searchTextChanged
30
- .pipe(
31
- debounceTime(300),
32
- switchMap((searchText) => {
33
- return from(this.geocodingService.query(searchText)).pipe(
34
- catchError((error) => {
35
- this.errorMessage =
36
- 'An error occurred while searching. Please try again.'
37
- console.error(error)
38
- return []
39
- })
40
- )
41
- }),
42
- takeUntil(this.destroy$)
43
- )
44
- .subscribe((results) => {
45
- this.results = results
46
- })
47
- }
48
-
49
- ngOnDestroy() {
50
- this.destroy$.next()
51
- this.destroy$.complete()
52
- }
53
-
54
- onSearchChange(searchText: string) {
55
- if (!searchText) {
56
- this.clearSearch()
57
- return
58
- } else {
59
- this.searchTextChanged.next(searchText)
60
- }
61
- }
62
-
63
- clearSearch() {
64
- this.searchText = ''
65
- this.results = []
66
- this.errorMessage = null
67
- }
68
-
69
- async zoomToLocation(result: any) {
70
- const geometry = result.geom
71
-
72
- if (geometry.type === 'Point') {
73
- await this.zoomToPoint(geometry.coordinates)
74
- } else if (geometry.type === 'Polygon') {
75
- await this.zoomToPolygon(geometry.coordinates)
76
- } else {
77
- console.error(`Unsupported geometry type: ${geometry.type}`)
78
- }
79
- }
80
-
81
- async zoomToPoint(pointCoords: [number, number]) {
82
- const context = await firstValueFrom(this.mapFacade.context$)
83
- const view: MapContextView = {
84
- center: pointCoords,
85
- zoom: 10,
86
- }
87
- this.mapFacade.applyContext({
88
- ...context,
89
- view,
90
- })
91
- }
92
-
93
- async zoomToPolygon(polygonCoords: [[number, number][]]) {
94
- const context = await firstValueFrom(this.mapFacade.context$)
95
- const view: MapContextView = {
96
- geometry: {
97
- type: 'Polygon',
98
- coordinates: polygonCoords,
99
- },
100
- }
101
- this.mapFacade.applyContext({
102
- ...context,
103
- view,
104
- })
105
- }
106
-
107
- onEnterPress() {
108
- if (this.results && this.results.length > 0) {
109
- this.zoomToLocation(this.results[0])
110
- }
111
- }
112
- }
@@ -1,14 +0,0 @@
1
- import { BaseReader } from './base'
2
-
3
- export abstract class BaseCacheReader extends BaseReader {
4
- constructor(
5
- protected url: string,
6
- protected cacheActive = true
7
- ) {
8
- super(url)
9
- }
10
-
11
- setCacheActive(value: boolean) {
12
- this.cacheActive = value
13
- }
14
- }