@igo2/geo 18.0.2 → 18.0.4
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.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +4 -4
- package/esm2022/lib/catalog/catalog.module.mjs +4 -4
- package/esm2022/lib/catalog/shared/catalog.service.mjs +3 -3
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +3 -3
- package/esm2022/lib/datasource/shared/datasource.service.mjs +3 -3
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +3 -3
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +3 -3
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +3 -3
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +3 -3
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +3 -3
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +3 -3
- package/esm2022/lib/directions/directions.component.mjs +3 -3
- package/esm2022/lib/directions/directions.module.mjs +4 -4
- package/esm2022/lib/directions/shared/directions.service.mjs +3 -3
- package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
- package/esm2022/lib/download/download.module.mjs +4 -4
- package/esm2022/lib/download/shared/download.service.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw.module.mjs +4 -4
- package/esm2022/lib/draw/drawingTool.module.mjs +4 -4
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +3 -3
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +3 -3
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +4 -4
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +4 -4
- package/esm2022/lib/feature/feature.module.mjs +4 -4
- package/esm2022/lib/filter/filter.module.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +3 -3
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +3 -3
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +3 -3
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +3 -3
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +3 -3
- package/esm2022/lib/filter/shared/time-filter.service.mjs +3 -3
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +3 -3
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +3 -3
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +3 -3
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
- package/esm2022/lib/geo.module.mjs +4 -4
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +3 -3
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +3 -3
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +4 -4
- package/esm2022/lib/geometry/geometry.module.mjs +4 -4
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +3 -3
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +3 -3
- package/esm2022/lib/import-export/import-export.module.mjs +4 -4
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +3 -3
- package/esm2022/lib/import-export/shared/export.service.mjs +3 -3
- package/esm2022/lib/import-export/shared/import.service.mjs +3 -3
- package/esm2022/lib/import-export/shared/import.utils.mjs +2 -2
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +3 -3
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +3 -3
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +3 -3
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +3 -3
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +3 -3
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +3 -3
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +3 -3
- package/esm2022/lib/layer/layer.module.mjs +4 -4
- package/esm2022/lib/layer/shared/layer.service.mjs +13 -17
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +127 -217
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +3 -3
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +3 -3
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +3 -3
- package/esm2022/lib/map/info-section/info-section.component.mjs +3 -3
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +3 -3
- package/esm2022/lib/map/map-center/map-center.component.mjs +3 -3
- package/esm2022/lib/map/map.module.mjs +4 -4
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +3 -3
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +3 -3
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +3 -3
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +3 -3
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +3 -3
- package/esm2022/lib/map/shared/map.service.mjs +3 -3
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +3 -3
- package/esm2022/lib/map/shared/projection.service.mjs +3 -3
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +3 -3
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +3 -3
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +3 -3
- package/esm2022/lib/measure/measure.module.mjs +4 -4
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer.module.mjs +4 -4
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -6
- package/esm2022/lib/metadata/metadata.module.mjs +4 -4
- package/esm2022/lib/metadata/shared/metadata.service.mjs +3 -3
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +20 -22
- package/esm2022/lib/offline/geoDB/geoDB.mjs +146 -0
- package/esm2022/lib/offline/geoDB/index.mjs +2 -2
- package/esm2022/lib/offline/layerDB/index.mjs +2 -2
- package/esm2022/lib/offline/layerDB/layerDB.mjs +64 -0
- package/esm2022/lib/offline/offline.provider.mjs +18 -41
- package/esm2022/lib/offline/shared/geo-network.service.mjs +10 -14
- package/esm2022/lib/offline/shared/indexed-db.interface.mjs +2 -0
- package/esm2022/lib/offline/shared/indexed-db.utils.mjs +20 -0
- package/esm2022/lib/print/print/print.component.mjs +3 -3
- package/esm2022/lib/print/print-form/print-form.component.mjs +3 -3
- package/esm2022/lib/print/print.module.mjs +4 -4
- package/esm2022/lib/print/shared/print.service.mjs +3 -3
- package/esm2022/lib/query/query.module.mjs +4 -4
- package/esm2022/lib/query/shared/query-search-source.mjs +3 -3
- package/esm2022/lib/query/shared/query.directive.mjs +3 -3
- package/esm2022/lib/query/shared/query.service.mjs +3 -3
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +3 -3
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results.module.mjs +4 -4
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +4 -4
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +3 -3
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +4 -4
- package/esm2022/lib/search/search.module.mjs +4 -4
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +3 -3
- package/esm2022/lib/search/shared/search.service.mjs +3 -3
- package/esm2022/lib/search/shared/sources/cadastre.mjs +3 -3
- package/esm2022/lib/search/shared/sources/coordinates.mjs +6 -6
- package/esm2022/lib/search/shared/sources/icherche.mjs +9 -9
- package/esm2022/lib/search/shared/sources/ilayer.mjs +6 -6
- package/esm2022/lib/search/shared/sources/nominatim.mjs +3 -3
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +6 -6
- package/esm2022/lib/search/shared/sources/workspace.mjs +3 -3
- package/esm2022/lib/style/style-list/style-list.module.mjs +4 -4
- package/esm2022/lib/style/style-list/style-list.service.mjs +3 -3
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +3 -3
- package/esm2022/lib/style/style-service/draw-style.service.mjs +3 -3
- package/esm2022/lib/style/style-service/style.service.mjs +3 -3
- package/esm2022/lib/style/style.module.mjs +4 -4
- package/esm2022/lib/toast/toast.component.mjs +3 -3
- package/esm2022/lib/toast/toast.module.mjs +4 -4
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +3 -3
- package/esm2022/lib/wkt/shared/wkt.service.mjs +3 -3
- package/esm2022/lib/wkt/wkt.module.mjs +4 -4
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +4 -4
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +6 -6
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +7 -4
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +7 -4
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +6 -6
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -1
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +4 -4
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +4 -4
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +3 -3
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +4 -4
- package/esm2022/lib/workspace/workspace.module.mjs +4 -4
- package/fesm2022/igo2-geo.mjs +1098 -1234
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/layer/shared/layer.service.d.ts +2 -4
- package/lib/layer/shared/layers/vector-layer.d.ts +4 -15
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +3 -2
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +2 -4
- package/lib/offline/geoDB/geoDB.d.ts +36 -0
- package/lib/offline/geoDB/index.d.ts +1 -1
- package/lib/offline/layerDB/index.d.ts +1 -1
- package/lib/offline/layerDB/{layerDB.service.d.ts → layerDB.d.ts} +9 -11
- package/lib/offline/offline.provider.d.ts +2 -0
- package/lib/offline/shared/geo-network.service.d.ts +2 -4
- package/lib/offline/shared/indexed-db.interface.d.ts +16 -0
- package/lib/offline/shared/indexed-db.utils.d.ts +4 -0
- package/package.json +6 -6
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +0 -172
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +0 -83
- package/lib/offline/geoDB/geoDB.service.d.ts +0 -36
|
@@ -4,7 +4,6 @@ import { MessageService } from '@igo2/core/message';
|
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
import { DataSourceService } from '../../datasource/shared/datasource.service';
|
|
6
6
|
import { AnyDataSourceOptions, AnyDataSourceOptionsWithParams, ArcGISRestDataSourceOptions, WMTSDataSourceOptions } from '../../datasource/shared/datasources';
|
|
7
|
-
import { LayerDBService } from '../../offline/layerDB/layerDB.service';
|
|
8
7
|
import { GeoNetworkService } from '../../offline/shared/geo-network.service';
|
|
9
8
|
import { StyleService } from '../../style/style-service/style.service';
|
|
10
9
|
import { AnyLayer, AnyLayerItemOptions, AnyLayerOptions, Layer, LayerGroupOptions } from './layers';
|
|
@@ -16,10 +15,9 @@ export declare class LayerService {
|
|
|
16
15
|
private dataSourceService;
|
|
17
16
|
private messageService;
|
|
18
17
|
private geoNetworkService?;
|
|
19
|
-
private layerDBService?;
|
|
20
18
|
private authInterceptor?;
|
|
21
19
|
unavailableLayers: AnyLayerItemOptions[];
|
|
22
|
-
constructor(http: HttpClient, styleService: StyleService, dataSourceService: DataSourceService, messageService: MessageService, geoNetworkService?: GeoNetworkService,
|
|
20
|
+
constructor(http: HttpClient, styleService: StyleService, dataSourceService: DataSourceService, messageService: MessageService, geoNetworkService?: GeoNetworkService, authInterceptor?: AuthInterceptor);
|
|
23
21
|
createLayers(layersOption: AnyLayerOptions[], contextUri?: string): Observable<(AnyLayer | undefined)[]>;
|
|
24
22
|
createLayer(layerOptions: AnyLayerItemOptions): Layer;
|
|
25
23
|
createAsyncLayer(options: AnyLayerItemOptions, detailedContextUri?: string): Observable<Layer | undefined>;
|
|
@@ -37,6 +35,6 @@ export declare class LayerService {
|
|
|
37
35
|
deleteUnavailableLayers(anyLayerOptions: AnyLayerItemOptions): void;
|
|
38
36
|
sourceOptionsWithParams(sourceOptions: AnyDataSourceOptions): sourceOptions is AnyDataSourceOptionsWithParams;
|
|
39
37
|
sourceOptionsWithLayer(sourceOptions: AnyDataSourceOptions): sourceOptions is ArcGISRestDataSourceOptions | WMTSDataSourceOptions;
|
|
40
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LayerService, [null, null, null, null, { optional: true; }, { optional: true; }
|
|
38
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LayerService, [null, null, null, null, { optional: true; }, { optional: true; }]>;
|
|
41
39
|
static ɵprov: i0.ɵɵInjectableDeclaration<LayerService>;
|
|
42
40
|
}
|
|
@@ -13,8 +13,6 @@ import { WFSDataSource } from '../../../datasource/shared/datasources/wfs-dataso
|
|
|
13
13
|
import { WFSDataSourceOptions } from '../../../datasource/shared/datasources/wfs-datasource.interface';
|
|
14
14
|
import type { MapBase } from '../../../map/shared/map.abstract';
|
|
15
15
|
import { MapExtent } from '../../../map/shared/map.interface';
|
|
16
|
-
import { GeoDBService } from '../../../offline/geoDB/geoDB.service';
|
|
17
|
-
import { LayerDBService } from '../../../offline/layerDB/layerDB.service';
|
|
18
16
|
import { GeoNetworkService } from '../../../offline/shared/geo-network.service';
|
|
19
17
|
import { Layer } from './layer';
|
|
20
18
|
import { LayerType } from './layer.interface';
|
|
@@ -23,8 +21,6 @@ export declare class VectorLayer extends Layer {
|
|
|
23
21
|
messageService?: MessageService;
|
|
24
22
|
authInterceptor?: AuthInterceptor;
|
|
25
23
|
private geoNetworkService?;
|
|
26
|
-
geoDBService?: GeoDBService;
|
|
27
|
-
layerDBService?: LayerDBService;
|
|
28
24
|
type: LayerType;
|
|
29
25
|
private previousLoadExtent;
|
|
30
26
|
private previousLoadResolution;
|
|
@@ -37,8 +33,10 @@ export declare class VectorLayer extends Layer {
|
|
|
37
33
|
private trackFeatureListenerId;
|
|
38
34
|
get browsable(): boolean;
|
|
39
35
|
get exportable(): boolean;
|
|
40
|
-
constructor(options: VectorLayerOptions, messageService?: MessageService, authInterceptor?: AuthInterceptor, geoNetworkService?: GeoNetworkService
|
|
36
|
+
constructor(options: VectorLayerOptions, messageService?: MessageService, authInterceptor?: AuthInterceptor, geoNetworkService?: GeoNetworkService);
|
|
41
37
|
protected createOlLayer(): olLayerVector<olSourceVector>;
|
|
38
|
+
private handleIdbStorage;
|
|
39
|
+
private handlePreload;
|
|
42
40
|
remove(): void;
|
|
43
41
|
private removeLayerFromIDB;
|
|
44
42
|
private maintainOptionsInIdb;
|
|
@@ -78,6 +76,7 @@ export declare class VectorLayer extends Layer {
|
|
|
78
76
|
* @param failure failure callback
|
|
79
77
|
*/
|
|
80
78
|
private getFeatures;
|
|
79
|
+
private handleOnLoad;
|
|
81
80
|
/**
|
|
82
81
|
* Custom loader for vector layer.
|
|
83
82
|
* @internal
|
|
@@ -88,14 +87,4 @@ export declare class VectorLayer extends Layer {
|
|
|
88
87
|
* @param projection the projection to retrieve the data
|
|
89
88
|
*/
|
|
90
89
|
private customLoader;
|
|
91
|
-
/**
|
|
92
|
-
* Custom loader for vector layer.
|
|
93
|
-
* @internal
|
|
94
|
-
* @param vectorSource the vector source to be created
|
|
95
|
-
* @param layerID the url string or function to retrieve the data
|
|
96
|
-
* @param extent the extent of the requested data
|
|
97
|
-
* @param resolution the current resolution
|
|
98
|
-
* @param projection the projection to retrieve the data
|
|
99
|
-
*/
|
|
100
|
-
private customIDBLoader;
|
|
101
90
|
}
|
|
@@ -32,8 +32,9 @@ export interface VectorLayerOptions extends LayerOptions {
|
|
|
32
32
|
}
|
|
33
33
|
export interface IdbInfo {
|
|
34
34
|
storeToIdb: boolean;
|
|
35
|
-
contextUri
|
|
36
|
-
|
|
35
|
+
contextUri?: string;
|
|
36
|
+
/** Interface restricted for system usage. You don't need to set a value */
|
|
37
|
+
firstLoad?: boolean;
|
|
37
38
|
}
|
|
38
39
|
export interface VectorAnimation {
|
|
39
40
|
duration?: number;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { MessageService } from '@igo2/core/message';
|
|
3
|
-
import { GeoDBService } from './geoDB.service';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class ConfigFileToGeoDBService {
|
|
6
5
|
private http;
|
|
7
|
-
private geoDBService;
|
|
8
6
|
private messageService;
|
|
9
|
-
constructor(http: HttpClient,
|
|
10
|
-
load(
|
|
7
|
+
constructor(http: HttpClient, messageService: MessageService);
|
|
8
|
+
load(urlFile: string): void;
|
|
11
9
|
private isZip;
|
|
12
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConfigFileToGeoDBService, never>;
|
|
13
11
|
static ɵprov: i0.ɵɵInjectableDeclaration<ConfigFileToGeoDBService>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { InsertSourceInsertDBEnum } from './geoDB.enums';
|
|
3
|
+
import { GeoDBData } from './geoDB.interface';
|
|
4
|
+
export declare class GeoDB {
|
|
5
|
+
private db$;
|
|
6
|
+
private compression;
|
|
7
|
+
collisionsMap: Map<string | number, string[]>;
|
|
8
|
+
_newData: number;
|
|
9
|
+
private revertObservablesSubscription;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Only blob can be compressed
|
|
13
|
+
* @param url
|
|
14
|
+
* @param regionID
|
|
15
|
+
* @param object object to handle
|
|
16
|
+
* @param insertSource type of event user or system
|
|
17
|
+
* @param insertEvent Name of the event where the insert has been triggered
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
update(url: string, regionID: number | string, object: object | Blob, insertSource: InsertSourceInsertDBEnum, insertEvent: string): Observable<GeoDBData>;
|
|
21
|
+
private customUpdate;
|
|
22
|
+
add(geoDBData: GeoDBData): Observable<GeoDBData>;
|
|
23
|
+
put(geoDBData: GeoDBData): Observable<GeoDBData>;
|
|
24
|
+
getGeoDBData(url: string): Observable<GeoDBData>;
|
|
25
|
+
get(url: string): Observable<object | Blob>;
|
|
26
|
+
delete(key: string): Observable<object>;
|
|
27
|
+
/** @deprecated Use delete method instead*/
|
|
28
|
+
deleteByKey(key: string): Observable<object>;
|
|
29
|
+
getRegionCountByID(id: number): Observable<number>;
|
|
30
|
+
getRegionByID(id: number): Observable<GeoDBData[]>;
|
|
31
|
+
deleteByRegionID(id: number): Observable<void[]>;
|
|
32
|
+
resetCounters(): void;
|
|
33
|
+
resetCollisionsMap(): void;
|
|
34
|
+
revertCollisions(): void;
|
|
35
|
+
get newData(): number;
|
|
36
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './layerDB.interface';
|
|
2
|
-
export * from './layerDB
|
|
2
|
+
export * from './layerDB';
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { NgxIndexedDBService } from 'ngx-indexed-db';
|
|
2
1
|
import { Observable } from 'rxjs';
|
|
3
2
|
import { LayerDBData } from './layerDB.interface';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
readonly dbName: string;
|
|
8
|
-
constructor(ngxIndexedDBService: NgxIndexedDBService);
|
|
3
|
+
export declare class LayerDB {
|
|
4
|
+
private db$;
|
|
5
|
+
constructor();
|
|
9
6
|
/**
|
|
10
7
|
* This method allow to update the stored layer into the indexeddb (layerData)
|
|
11
8
|
* @param layerDBData
|
|
12
9
|
* @returns
|
|
13
10
|
*/
|
|
14
|
-
update(layerDBData: LayerDBData): Observable<
|
|
11
|
+
update(layerDBData: LayerDBData): Observable<LayerDBData>;
|
|
15
12
|
private customUpdate;
|
|
13
|
+
add(layerDBData: LayerDBData): Observable<LayerDBData>;
|
|
16
14
|
/**
|
|
17
15
|
* This method retrieve an idb layer definition
|
|
18
16
|
* @param layerId
|
|
@@ -21,16 +19,16 @@ export declare class LayerDBService {
|
|
|
21
19
|
getByID(layerId: string): Observable<LayerDBData>;
|
|
22
20
|
/**
|
|
23
21
|
* This method delete an idb layer definition
|
|
24
|
-
* @param
|
|
22
|
+
* @param key
|
|
25
23
|
* @returns
|
|
26
24
|
*/
|
|
27
|
-
|
|
25
|
+
delete(key: string): Observable<object>;
|
|
26
|
+
/** @deprecated Use delete method instead*/
|
|
27
|
+
deleteByKey(key: string): Observable<object>;
|
|
28
28
|
/**
|
|
29
29
|
* This method retrive all idb layer definition
|
|
30
30
|
* @param layerId
|
|
31
31
|
* @returns
|
|
32
32
|
*/
|
|
33
33
|
getAll(): Observable<LayerDBData[]>;
|
|
34
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LayerDBService, [{ optional: true; }]>;
|
|
35
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<LayerDBService>;
|
|
36
34
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { EnvironmentProviders } from '@angular/core';
|
|
2
2
|
import { IOfflineOptions } from './offline.interface';
|
|
3
|
+
/** Ensure to create the indexDB on app initialisation and provide
|
|
4
|
+
* GeoNetworkService, ConfigFileToGeoDBService */
|
|
3
5
|
export declare function provideOffline(options: IOfflineOptions): EnvironmentProviders;
|
|
@@ -2,7 +2,6 @@ import { HttpClient } from '@angular/common/http';
|
|
|
2
2
|
import { NetworkService } from '@igo2/core/network';
|
|
3
3
|
import { Type } from 'ol/format/Feature';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
|
-
import { GeoDBService } from '../geoDB/geoDB.service';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
export declare enum ResponseType {
|
|
8
7
|
Arraybuffer = "arraybuffer",
|
|
@@ -17,13 +16,12 @@ export interface SimpleGetOptions {
|
|
|
17
16
|
export declare class GeoNetworkService {
|
|
18
17
|
private http;
|
|
19
18
|
private networkService;
|
|
20
|
-
geoDBService?: GeoDBService;
|
|
21
19
|
private networkOnline;
|
|
22
|
-
constructor(http: HttpClient, networkService: NetworkService
|
|
20
|
+
constructor(http: HttpClient, networkService: NetworkService);
|
|
23
21
|
get(url: string, simpleGetOptions: SimpleGetOptions): Observable<any>;
|
|
24
22
|
private getOnline;
|
|
25
23
|
private getOffline;
|
|
26
24
|
isOnline(): boolean;
|
|
27
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<GeoNetworkService,
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GeoNetworkService, never>;
|
|
28
26
|
static ɵprov: i0.ɵɵInjectableDeclaration<GeoNetworkService>;
|
|
29
27
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DBSchema } from 'idb';
|
|
2
|
+
import { GeoDBData } from '../geoDB/geoDB.interface';
|
|
3
|
+
import { LayerDBData } from '../layerDB/layerDB.interface';
|
|
4
|
+
export interface IgoDBSchema extends DBSchema {
|
|
5
|
+
geoData: {
|
|
6
|
+
value: GeoDBData;
|
|
7
|
+
key: string;
|
|
8
|
+
indexes: {
|
|
9
|
+
'regionID-idx': string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
layerData: {
|
|
13
|
+
value: LayerDBData;
|
|
14
|
+
key: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@igo2/geo",
|
|
3
|
-
"version": "18.0.
|
|
3
|
+
"version": "18.0.4",
|
|
4
4
|
"description": "IGO Library",
|
|
5
5
|
"author": "IGO Community",
|
|
6
6
|
"keywords": [
|
|
@@ -50,19 +50,19 @@
|
|
|
50
50
|
"@angular/material": "^18.0.0",
|
|
51
51
|
"@angular/material-moment-adapter": "^18.0.0",
|
|
52
52
|
"@angular/platform-browser": "^18.0.0",
|
|
53
|
-
"@igo2/auth": "^18.0.
|
|
54
|
-
"@igo2/common": "^18.0.
|
|
55
|
-
"@igo2/core": "^18.0.
|
|
56
|
-
"@igo2/utils": "^18.0.
|
|
53
|
+
"@igo2/auth": "^18.0.4",
|
|
54
|
+
"@igo2/common": "^18.0.4",
|
|
55
|
+
"@igo2/core": "^18.0.4",
|
|
56
|
+
"@igo2/utils": "^18.0.4",
|
|
57
57
|
"@mat-datetimepicker/core": "~14.0.0",
|
|
58
58
|
"file-saver": "^2.0.2",
|
|
59
59
|
"flexsearch": "0.7.21",
|
|
60
60
|
"html2canvas": "^1.4.1",
|
|
61
|
+
"idb": "^8.0.3",
|
|
61
62
|
"jspdf": "^3.0.0",
|
|
62
63
|
"jspdf-autotable": "^5.0.0",
|
|
63
64
|
"jszip": "^3.10.1",
|
|
64
65
|
"moment": "^2.30.0",
|
|
65
|
-
"ngx-indexed-db": "^19.0.0",
|
|
66
66
|
"ol": "9.1.0",
|
|
67
67
|
"ol-mapbox-style": "^12.0.0",
|
|
68
68
|
"proj4": "^2.12.0",
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { Compression } from '@igo2/utils';
|
|
3
|
-
import { DBMode, NgxIndexedDBService } from 'ngx-indexed-db';
|
|
4
|
-
import { Subject, of } from 'rxjs';
|
|
5
|
-
import { concatMap, first, map, take } from 'rxjs/operators';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "ngx-indexed-db";
|
|
8
|
-
export class GeoDBService {
|
|
9
|
-
ngxIndexedDBService;
|
|
10
|
-
dbName = 'geoData';
|
|
11
|
-
collisionsMap = new Map();
|
|
12
|
-
_newData = 0;
|
|
13
|
-
compression = new Compression();
|
|
14
|
-
constructor(ngxIndexedDBService) {
|
|
15
|
-
this.ngxIndexedDBService = ngxIndexedDBService;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Only blob can be compressed
|
|
19
|
-
* @param url
|
|
20
|
-
* @param regionID
|
|
21
|
-
* @param object object to handle
|
|
22
|
-
* @param insertSource type of event user or system
|
|
23
|
-
* @param insertEvent Name of the event where the insert has been triggered
|
|
24
|
-
* @returns
|
|
25
|
-
*/
|
|
26
|
-
update(url, regionID, object, insertSource, insertEvent) {
|
|
27
|
-
if (!object) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
let compress = false;
|
|
31
|
-
const subject = new Subject();
|
|
32
|
-
let object$ = of(object);
|
|
33
|
-
if (object instanceof Blob) {
|
|
34
|
-
object$ = this.compression.compressBlob(object);
|
|
35
|
-
compress = true;
|
|
36
|
-
}
|
|
37
|
-
let geoDBData;
|
|
38
|
-
object$
|
|
39
|
-
.pipe(first(), concatMap((object) => {
|
|
40
|
-
geoDBData = {
|
|
41
|
-
url,
|
|
42
|
-
regionID,
|
|
43
|
-
object: object,
|
|
44
|
-
compressed: compress,
|
|
45
|
-
insertSource,
|
|
46
|
-
insertEvent
|
|
47
|
-
};
|
|
48
|
-
return this.ngxIndexedDBService?.getByID(this.dbName, url);
|
|
49
|
-
}), concatMap((dbObject) => {
|
|
50
|
-
if (!dbObject) {
|
|
51
|
-
this._newData++;
|
|
52
|
-
return this.ngxIndexedDBService?.add(this.dbName, geoDBData);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
const currentRegionID = dbObject.regionID;
|
|
56
|
-
if (currentRegionID !== regionID) {
|
|
57
|
-
const collisions = this.collisionsMap.get(currentRegionID);
|
|
58
|
-
if (collisions !== undefined) {
|
|
59
|
-
collisions.push(dbObject.url);
|
|
60
|
-
this.collisionsMap.set(currentRegionID, collisions);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
this.collisionsMap.set(currentRegionID, [dbObject.url]);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return this.customUpdate(geoDBData);
|
|
67
|
-
}
|
|
68
|
-
}))
|
|
69
|
-
.subscribe((response) => {
|
|
70
|
-
subject.next(response);
|
|
71
|
-
subject.complete();
|
|
72
|
-
});
|
|
73
|
-
return subject;
|
|
74
|
-
}
|
|
75
|
-
customUpdate(geoDBData) {
|
|
76
|
-
const subject = new Subject();
|
|
77
|
-
const deleteRequest = this.ngxIndexedDBService?.deleteByKey(this.dbName, geoDBData.url);
|
|
78
|
-
deleteRequest
|
|
79
|
-
.pipe(concatMap((isDeleted) => isDeleted
|
|
80
|
-
? this.ngxIndexedDBService?.add(this.dbName, geoDBData)
|
|
81
|
-
: of(undefined)))
|
|
82
|
-
.subscribe((object) => {
|
|
83
|
-
if (object) {
|
|
84
|
-
subject.next(object);
|
|
85
|
-
}
|
|
86
|
-
subject.complete();
|
|
87
|
-
});
|
|
88
|
-
return subject;
|
|
89
|
-
}
|
|
90
|
-
get(url) {
|
|
91
|
-
return this.ngxIndexedDBService?.getByID(this.dbName, url).pipe(map((data) => {
|
|
92
|
-
if (data) {
|
|
93
|
-
const object = data.object;
|
|
94
|
-
if (!data.compressed) {
|
|
95
|
-
return object;
|
|
96
|
-
}
|
|
97
|
-
return this.compression.decompressBlob(object);
|
|
98
|
-
}
|
|
99
|
-
}));
|
|
100
|
-
}
|
|
101
|
-
getByID(url) {
|
|
102
|
-
return this.ngxIndexedDBService?.getByID(this.dbName, url);
|
|
103
|
-
}
|
|
104
|
-
deleteByKey(url) {
|
|
105
|
-
return this.ngxIndexedDBService?.deleteByKey(this.dbName, url);
|
|
106
|
-
}
|
|
107
|
-
getRegionCountByID(id) {
|
|
108
|
-
const subject = new Subject();
|
|
109
|
-
this.getRegionByID(id).subscribe((datas) => {
|
|
110
|
-
subject.next(datas.length);
|
|
111
|
-
subject.complete();
|
|
112
|
-
});
|
|
113
|
-
return subject;
|
|
114
|
-
}
|
|
115
|
-
getRegionByID(id) {
|
|
116
|
-
if (!id) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const IDBKey = IDBKeyRange.only(id);
|
|
120
|
-
const dbRequest = this.ngxIndexedDBService?.getAllByIndex(this.dbName, 'regionID', IDBKey);
|
|
121
|
-
return dbRequest;
|
|
122
|
-
}
|
|
123
|
-
deleteByRegionID(id) {
|
|
124
|
-
if (!id) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const IDBKey = IDBKeyRange.only(id);
|
|
128
|
-
const dbRequest = this.ngxIndexedDBService?.getAllByIndex(this.dbName, 'regionID', IDBKey);
|
|
129
|
-
dbRequest.subscribe((datas) => {
|
|
130
|
-
datas.forEach((data) => {
|
|
131
|
-
this.ngxIndexedDBService?.deleteByKey(this.dbName, data.url);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
return dbRequest;
|
|
135
|
-
}
|
|
136
|
-
openCursor(keyRange = IDBKeyRange.lowerBound(0), mode = DBMode.readonly) {
|
|
137
|
-
const request = this.ngxIndexedDBService?.openCursorByIndex(this.dbName, 'regionID', keyRange, undefined, mode);
|
|
138
|
-
return request;
|
|
139
|
-
}
|
|
140
|
-
resetCounters() {
|
|
141
|
-
this.resetCollisionsMap();
|
|
142
|
-
this._newData = 0;
|
|
143
|
-
}
|
|
144
|
-
resetCollisionsMap() {
|
|
145
|
-
this.collisionsMap = new Map();
|
|
146
|
-
}
|
|
147
|
-
revertCollisions() {
|
|
148
|
-
for (const [regionID, collisions] of this.collisionsMap) {
|
|
149
|
-
for (const url of collisions) {
|
|
150
|
-
this.ngxIndexedDBService
|
|
151
|
-
?.getByKey(this.dbName, url)
|
|
152
|
-
.pipe(take(1))
|
|
153
|
-
.subscribe((dbObject) => {
|
|
154
|
-
const updatedObject = dbObject;
|
|
155
|
-
updatedObject.regionID = regionID;
|
|
156
|
-
this.customUpdate(dbObject);
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
get newData() {
|
|
162
|
-
return this._newData;
|
|
163
|
-
}
|
|
164
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoDBService, deps: [{ token: i1.NgxIndexedDBService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
165
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoDBService });
|
|
166
|
-
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoDBService, decorators: [{
|
|
168
|
-
type: Injectable
|
|
169
|
-
}], ctorParameters: () => [{ type: i1.NgxIndexedDBService, decorators: [{
|
|
170
|
-
type: Optional
|
|
171
|
-
}] }] });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvREIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL29mZmxpbmUvZ2VvREIvZ2VvREIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQWMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03RCxNQUFNLE9BQU8sWUFBWTtJQVFiO0lBUEQsTUFBTSxHQUFXLFNBQVMsQ0FBQztJQUM3QixhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7SUFDNUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNaLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBRXhDLFlBRVUsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7SUFDL0MsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUNKLEdBQVcsRUFDWCxRQUFhLEVBQ2IsTUFBVyxFQUNYLFlBQXNDLEVBQ3RDLFdBQW1CO1FBRW5CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXJCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFhLENBQUM7UUFDekMsSUFBSSxPQUFPLEdBQW9CLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxJ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QUNSLFNBQVMsRUFDVCxJQUFJLENBQ0wsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLG1CQUFtQjtvQkFDdEIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7cUJBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2IsU0FBUyxDQUFDLENBQUMsUUFBbUIsRUFBRSxFQUFFO29CQUNqQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7b0JBQy9CLGFBQWEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO29CQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO3dHQTlNVSxZQUFZOzRHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBRHhCLFVBQVU7OzBCQVFOLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21wcmVzc2lvbiB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgREJNb2RlLCBOZ3hJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnbmd4LWluZGV4ZWQtZGInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZmlyc3QsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSW5zZXJ0U291cmNlSW5zZXJ0REJFbnVtIH0gZnJvbSAnLi9nZW9EQi5lbnVtcyc7XG5pbXBvcnQgeyBHZW9EQkRhdGEgfSBmcm9tICcuL2dlb0RCLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHZW9EQlNlcnZpY2Uge1xuICByZWFkb25seSBkYk5hbWU6IHN0cmluZyA9ICdnZW9EYXRhJztcbiAgcHVibGljIGNvbGxpc2lvbnNNYXAgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nW10+KCk7XG4gIHB1YmxpYyBfbmV3RGF0YSA9IDA7XG4gIHByaXZhdGUgY29tcHJlc3Npb24gPSBuZXcgQ29tcHJlc3Npb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgbmd4SW5kZXhlZERCU2VydmljZTogTmd4SW5kZXhlZERCU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIE9ubHkgYmxvYiBjYW4gYmUgY29tcHJlc3NlZFxuICAgKiBAcGFyYW0gdXJsXG4gICAqIEBwYXJhbSByZWdpb25JRFxuICAgKiBAcGFyYW0gb2JqZWN0IG9iamVjdCB0byBoYW5kbGVcbiAgICogQHBhcmFtIGluc2VydFNvdXJjZSB0eXBlIG9mIGV2ZW50IHVzZXIgb3Igc3lzdGVtXG4gICAqIEBwYXJhbSBpbnNlcnRFdmVudCBOYW1lIG9mIHRoZSBldmVudCB3aGVyZSB0aGUgaW5zZXJ0IGhhcyBiZWVuIHRyaWdnZXJlZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdXBkYXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHJlZ2lvbklEOiBhbnksXG4gICAgb2JqZWN0OiBhbnksXG4gICAgaW5zZXJ0U291cmNlOiBJbnNlcnRTb3VyY2VJbnNlcnREQkVudW0sXG4gICAgaW5zZXJ0RXZlbnQ6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBjb21wcmVzcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEdlb0RCRGF0YT4oKTtcbiAgICBsZXQgb2JqZWN0JDogT2JzZXJ2YWJsZTxhbnk+ID0gb2Yob2JqZWN0KTtcbiAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgb2JqZWN0JCA9IHRoaXMuY29tcHJlc3Npb24uY29tcHJlc3NCbG9iKG9iamVjdCk7XG4gICAgICBjb21wcmVzcyA9IHRydWU7XG4gICAgfVxuICAgIGxldCBnZW9EQkRhdGE6IEdlb0RCRGF0YTtcbiAgICBvYmplY3QkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgY29uY2F0TWFwKChvYmplY3QpID0+IHtcbiAgICAgICAgICBnZW9EQkRhdGEgPSB7XG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICByZWdpb25JRCxcbiAgICAgICAgICAgIG9iamVjdDogb2JqZWN0LFxuICAgICAgICAgICAgY29tcHJlc3NlZDogY29tcHJlc3MsXG4gICAgICAgICAgICBpbnNlcnRTb3VyY2UsXG4gICAgICAgICAgICBpbnNlcnRFdmVudFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHRoaXMubmd4SW5kZXhlZERCU2VydmljZT8uZ2V0QnlJRCh0aGlzLmRiTmFtZSwgdXJsKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNvbmNhdE1hcCgoZGJPYmplY3Q6IEdlb0RCRGF0YSkgPT4ge1xuICAgICAgICAgIGlmICghZGJPYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuX25ld0RhdGErKztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2U/LmFkZCh0aGlzLmRiTmFtZSwgZ2VvREJEYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFJlZ2lvbklEID0gZGJPYmplY3QucmVnaW9uSUQ7XG4gICAgICAgICAgICBpZiAoY3VycmVudFJlZ2lvbklEICE9PSByZWdpb25JRCkge1xuICAgICAgICAgICAgICBjb25zdCBjb2xsaXNpb25zID0gdGhpcy5jb2xsaXNpb25zTWFwLmdldChjdXJyZW50UmVnaW9uSUQpO1xuICAgICAgICAgICAgICBpZiAoY29sbGlzaW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29sbGlzaW9ucy5wdXNoKGRiT2JqZWN0LnVybCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsaXNpb25zTWFwLnNldChjdXJyZW50UmVnaW9uSUQsIGNvbGxpc2lvbnMpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sbGlzaW9uc01hcC5zZXQoY3VycmVudFJlZ2lvbklELCBbZGJPYmplY3QudXJsXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVVwZGF0ZShnZW9EQkRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHN1YmplY3QubmV4dChyZXNwb25zZSk7XG4gICAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBzdWJqZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21VcGRhdGUoZ2VvREJEYXRhOiBHZW9EQkRhdGEpOiBPYnNlcnZhYmxlPEdlb0RCRGF0YT4ge1xuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDxHZW9EQkRhdGE+KCk7XG4gICAgY29uc3QgZGVsZXRlUmVxdWVzdCA9IHRoaXMubmd4SW5kZXhlZERCU2VydmljZT8uZGVsZXRlQnlLZXkoXG4gICAgICB0aGlzLmRiTmFtZSxcbiAgICAgIGdlb0RCRGF0YS51cmxcbiAgICApO1xuICAgIGRlbGV0ZVJlcXVlc3RcbiAgICAgIC5waXBlKFxuICAgICAgICBjb25jYXRNYXAoKGlzRGVsZXRlZCkgPT5cbiAgICAgICAgICBpc0RlbGV0ZWRcbiAgICAgICAgICAgID8gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlPy5hZGQodGhpcy5kYk5hbWUsIGdlb0RCRGF0YSlcbiAgICAgICAgICAgIDogb2YodW5kZWZpbmVkKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChvYmplY3QpID0+IHtcbiAgICAgICAgaWYgKG9iamVjdCkge1xuICAgICAgICAgIHN1YmplY3QubmV4dChvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlPy5nZXRCeUlEKHRoaXMuZGJOYW1lLCB1cmwpLnBpcGUoXG4gICAgICBtYXAoKGRhdGE6IEdlb0RCRGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgIGNvbnN0IG9iamVjdCA9IGRhdGEub2JqZWN0O1xuICAgICAgICAgIGlmICghZGF0YS5jb21wcmVzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21wcmVzc2lvbi5kZWNvbXByZXNzQmxvYihvYmplY3QpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRCeUlEKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlPy5nZXRCeUlEKHRoaXMuZGJOYW1lLCB1cmwpO1xuICB9XG5cbiAgZGVsZXRlQnlLZXkodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2U/LmRlbGV0ZUJ5S2V5KHRoaXMuZGJOYW1lLCB1cmwpO1xuICB9XG5cbiAgZ2V0UmVnaW9uQ291bnRCeUlEKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgdGhpcy5nZXRSZWdpb25CeUlEKGlkKS5zdWJzY3JpYmUoKGRhdGFzKSA9PiB7XG4gICAgICBzdWJqZWN0Lm5leHQoZGF0YXMubGVuZ3RoKTtcbiAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3ViamVjdDtcbiAgfVxuXG4gIGdldFJlZ2lvbkJ5SUQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgSURCS2V5OiBJREJLZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoaWQpO1xuICAgIGNvbnN0IGRiUmVxdWVzdCA9IHRoaXMubmd4SW5kZXhlZERCU2VydmljZT8uZ2V0QWxsQnlJbmRleChcbiAgICAgIHRoaXMuZGJOYW1lLFxuICAgICAgJ3JlZ2lvbklEJyxcbiAgICAgIElEQktleVxuICAgICk7XG4gICAgcmV0dXJuIGRiUmVxdWVzdDtcbiAgfVxuXG4gIGRlbGV0ZUJ5UmVnaW9uSUQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IElEQktleTogSURCS2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KGlkKTtcbiAgICBjb25zdCBkYlJlcXVlc3QgPSB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2U/LmdldEFsbEJ5SW5kZXgoXG4gICAgICB0aGlzLmRiTmFtZSxcbiAgICAgICdyZWdpb25JRCcsXG4gICAgICBJREJLZXlcbiAgICApO1xuICAgIGRiUmVxdWVzdC5zdWJzY3JpYmUoKGRhdGFzOiBHZW9EQkRhdGFbXSkgPT4ge1xuICAgICAgZGF0YXMuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2U/LmRlbGV0ZUJ5S2V5KHRoaXMuZGJOYW1lLCBkYXRhLnVybCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGJSZXF1ZXN0O1xuICB9XG5cbiAgb3BlbkN1cnNvcihcbiAgICBrZXlSYW5nZTogSURCS2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApLFxuICAgIG1vZGU6IERCTW9kZSA9IERCTW9kZS5yZWFkb25seVxuICApIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlPy5vcGVuQ3Vyc29yQnlJbmRleChcbiAgICAgIHRoaXMuZGJOYW1lLFxuICAgICAgJ3JlZ2lvbklEJyxcbiAgICAgIGtleVJhbmdlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgbW9kZVxuICAgICk7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICByZXNldENvdW50ZXJzKCkge1xuICAgIHRoaXMucmVzZXRDb2xsaXNpb25zTWFwKCk7XG4gICAgdGhpcy5fbmV3RGF0YSA9IDA7XG4gIH1cblxuICByZXNldENvbGxpc2lvbnNNYXAoKSB7XG4gICAgdGhpcy5jb2xsaXNpb25zTWFwID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgcmV2ZXJ0Q29sbGlzaW9ucygpIHtcbiAgICBmb3IgKGNvbnN0IFtyZWdpb25JRCwgY29sbGlzaW9uc10gb2YgdGhpcy5jb2xsaXNpb25zTWFwKSB7XG4gICAgICBmb3IgKGNvbnN0IHVybCBvZiBjb2xsaXNpb25zKSB7XG4gICAgICAgIHRoaXMubmd4SW5kZXhlZERCU2VydmljZVxuICAgICAgICAgID8uZ2V0QnlLZXkodGhpcy5kYk5hbWUsIHVybClcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRiT2JqZWN0OiBHZW9EQkRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRPYmplY3QgPSBkYk9iamVjdDtcbiAgICAgICAgICAgIHVwZGF0ZWRPYmplY3QucmVnaW9uSUQgPSByZWdpb25JRDtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVXBkYXRlKGRiT2JqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgbmV3RGF0YSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9uZXdEYXRhO1xuICB9XG59XG4iXX0=
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { NgxIndexedDBService } from 'ngx-indexed-db';
|
|
3
|
-
import { Subject, of } from 'rxjs';
|
|
4
|
-
import { concatMap, first } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "ngx-indexed-db";
|
|
7
|
-
export class LayerDBService {
|
|
8
|
-
ngxIndexedDBService;
|
|
9
|
-
dbName = 'layerData';
|
|
10
|
-
constructor(ngxIndexedDBService) {
|
|
11
|
-
this.ngxIndexedDBService = ngxIndexedDBService;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* This method allow to update the stored layer into the indexeddb (layerData)
|
|
15
|
-
* @param layerDBData
|
|
16
|
-
* @returns
|
|
17
|
-
*/
|
|
18
|
-
update(layerDBData) {
|
|
19
|
-
const subject = new Subject();
|
|
20
|
-
this.ngxIndexedDBService
|
|
21
|
-
?.getByID(this.dbName, layerDBData.layerId)
|
|
22
|
-
.pipe(first(), concatMap((dbObject) => {
|
|
23
|
-
if (!dbObject) {
|
|
24
|
-
return this.ngxIndexedDBService?.add(this.dbName, layerDBData);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
return this.customUpdate(layerDBData);
|
|
28
|
-
}
|
|
29
|
-
}))
|
|
30
|
-
.subscribe((response) => {
|
|
31
|
-
subject.next(response);
|
|
32
|
-
subject.complete();
|
|
33
|
-
});
|
|
34
|
-
return subject;
|
|
35
|
-
}
|
|
36
|
-
customUpdate(layerDBData) {
|
|
37
|
-
const subject = new Subject();
|
|
38
|
-
const deleteRequest = this.ngxIndexedDBService?.deleteByKey(this.dbName, layerDBData.layerId);
|
|
39
|
-
deleteRequest
|
|
40
|
-
.pipe(concatMap((isDeleted) => isDeleted
|
|
41
|
-
? this.ngxIndexedDBService?.add(this.dbName, layerDBData)
|
|
42
|
-
: of(undefined)))
|
|
43
|
-
.subscribe((object) => {
|
|
44
|
-
if (object) {
|
|
45
|
-
subject.next(object);
|
|
46
|
-
}
|
|
47
|
-
subject.complete();
|
|
48
|
-
});
|
|
49
|
-
return subject;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* This method retrieve an idb layer definition
|
|
53
|
-
* @param layerId
|
|
54
|
-
* @returns
|
|
55
|
-
*/
|
|
56
|
-
getByID(layerId) {
|
|
57
|
-
return this.ngxIndexedDBService?.getByID(this.dbName, layerId);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* This method delete an idb layer definition
|
|
61
|
-
* @param layerId
|
|
62
|
-
* @returns
|
|
63
|
-
*/
|
|
64
|
-
deleteByKey(layerId) {
|
|
65
|
-
return this.ngxIndexedDBService?.deleteByKey(this.dbName, layerId);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* This method retrive all idb layer definition
|
|
69
|
-
* @param layerId
|
|
70
|
-
* @returns
|
|
71
|
-
*/
|
|
72
|
-
getAll() {
|
|
73
|
-
return this.ngxIndexedDBService?.getAll(this.dbName);
|
|
74
|
-
}
|
|
75
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerDBService, deps: [{ token: i1.NgxIndexedDBService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
76
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerDBService });
|
|
77
|
-
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerDBService, decorators: [{
|
|
79
|
-
type: Injectable
|
|
80
|
-
}], ctorParameters: () => [{ type: i1.NgxIndexedDBService, decorators: [{
|
|
81
|
-
type: Optional
|
|
82
|
-
}] }] });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJEQi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvb2ZmbGluZS9sYXllckRCL2xheWVyREIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQWMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLbEQsTUFBTSxPQUFPLGNBQWM7SUFHTztJQUZ2QixNQUFNLEdBQVcsV0FBVyxDQUFDO0lBRXRDLFlBQWdDLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUcsQ0FBQztJQUU1RTs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFdBQXdCO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDM0MsSUFBSSxDQUFDLG1CQUFtQjtZQUN0QixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUM7YUFDMUMsSUFBSSxDQUNILEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxDQUFDLFFBQXFCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDakUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNMLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxZQUFZLENBQUMsV0FBd0I7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUN6RCxJQUFJLENBQUMsTUFBTSxFQUNYLFdBQVcsQ0FBQyxPQUFPLENBQ3BCLENBQUM7UUFDRixhQUFhO2FBQ1YsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ3RCLFNBQVM7WUFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztZQUN6RCxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUNsQixDQUNGO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDO3dHQS9FVSxjQUFjOzRHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQUlJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3hJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnbmd4LWluZGV4ZWQtZGInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExheWVyREJEYXRhIH0gZnJvbSAnLi9sYXllckRCLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMYXllckRCU2VydmljZSB7XG4gIHJlYWRvbmx5IGRiTmFtZTogc3RyaW5nID0gJ2xheWVyRGF0YSc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBuZ3hJbmRleGVkREJTZXJ2aWNlOiBOZ3hJbmRleGVkREJTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBhbGxvdyB0byB1cGRhdGUgdGhlIHN0b3JlZCBsYXllciBpbnRvIHRoZSBpbmRleGVkZGIgKGxheWVyRGF0YSlcbiAgICogQHBhcmFtIGxheWVyREJEYXRhXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB1cGRhdGUobGF5ZXJEQkRhdGE6IExheWVyREJEYXRhKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8TGF5ZXJEQkRhdGE+KCk7XG4gICAgdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlXG4gICAgICA/LmdldEJ5SUQodGhpcy5kYk5hbWUsIGxheWVyREJEYXRhLmxheWVySWQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgY29uY2F0TWFwKChkYk9iamVjdDogTGF5ZXJEQkRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoIWRiT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlPy5hZGQodGhpcy5kYk5hbWUsIGxheWVyREJEYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tVXBkYXRlKGxheWVyREJEYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBzdWJqZWN0Lm5leHQocmVzcG9uc2UpO1xuICAgICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gc3ViamVjdDtcbiAgfVxuXG4gIHByaXZhdGUgY3VzdG9tVXBkYXRlKGxheWVyREJEYXRhOiBMYXllckRCRGF0YSk6IE9ic2VydmFibGU8TGF5ZXJEQkRhdGE+IHtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8TGF5ZXJEQkRhdGE+KCk7XG4gICAgY29uc3QgZGVsZXRlUmVxdWVzdCA9IHRoaXMubmd4SW5kZXhlZERCU2VydmljZT8uZGVsZXRlQnlLZXkoXG4gICAgICB0aGlzLmRiTmFtZSxcbiAgICAgIGxheWVyREJEYXRhLmxheWVySWRcbiAgICApO1xuICAgIGRlbGV0ZVJlcXVlc3RcbiAgICAgIC5waXBlKFxuICAgICAgICBjb25jYXRNYXAoKGlzRGVsZXRlZCkgPT5cbiAgICAgICAgICBpc0RlbGV0ZWRcbiAgICAgICAgICAgID8gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlPy5hZGQodGhpcy5kYk5hbWUsIGxheWVyREJEYXRhKVxuICAgICAgICAgICAgOiBvZih1bmRlZmluZWQpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG9iamVjdCkgPT4ge1xuICAgICAgICBpZiAob2JqZWN0KSB7XG4gICAgICAgICAgc3ViamVjdC5uZXh0KG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgcmV0cmlldmUgYW4gaWRiIGxheWVyIGRlZmluaXRpb25cbiAgICogQHBhcmFtIGxheWVySWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldEJ5SUQobGF5ZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxMYXllckRCRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2U/LmdldEJ5SUQodGhpcy5kYk5hbWUsIGxheWVySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGRlbGV0ZSBhbiBpZGIgbGF5ZXIgZGVmaW5pdGlvblxuICAgKiBAcGFyYW0gbGF5ZXJJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZGVsZXRlQnlLZXkobGF5ZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubmd4SW5kZXhlZERCU2VydmljZT8uZGVsZXRlQnlLZXkodGhpcy5kYk5hbWUsIGxheWVySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHJldHJpdmUgYWxsIGlkYiBsYXllciBkZWZpbml0aW9uXG4gICAqIEBwYXJhbSBsYXllcklkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRBbGwoKTogT2JzZXJ2YWJsZTxMYXllckRCRGF0YVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubmd4SW5kZXhlZERCU2VydmljZT8uZ2V0QWxsKHRoaXMuZGJOYW1lKTtcbiAgfVxufVxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { DBMode, NgxIndexedDBService } from 'ngx-indexed-db';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { InsertSourceInsertDBEnum } from './geoDB.enums';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class GeoDBService {
|
|
6
|
-
private ngxIndexedDBService;
|
|
7
|
-
readonly dbName: string;
|
|
8
|
-
collisionsMap: Map<number, string[]>;
|
|
9
|
-
_newData: number;
|
|
10
|
-
private compression;
|
|
11
|
-
constructor(ngxIndexedDBService: NgxIndexedDBService);
|
|
12
|
-
/**
|
|
13
|
-
* Only blob can be compressed
|
|
14
|
-
* @param url
|
|
15
|
-
* @param regionID
|
|
16
|
-
* @param object object to handle
|
|
17
|
-
* @param insertSource type of event user or system
|
|
18
|
-
* @param insertEvent Name of the event where the insert has been triggered
|
|
19
|
-
* @returns
|
|
20
|
-
*/
|
|
21
|
-
update(url: string, regionID: any, object: any, insertSource: InsertSourceInsertDBEnum, insertEvent: string): Observable<any>;
|
|
22
|
-
private customUpdate;
|
|
23
|
-
get(url: string): Observable<any>;
|
|
24
|
-
getByID(url: string): Observable<any>;
|
|
25
|
-
deleteByKey(url: string): Observable<any>;
|
|
26
|
-
getRegionCountByID(id: number): Observable<number>;
|
|
27
|
-
getRegionByID(id: number): Observable<any[]>;
|
|
28
|
-
deleteByRegionID(id: number): Observable<any>;
|
|
29
|
-
openCursor(keyRange?: IDBKeyRange, mode?: DBMode): Observable<Event>;
|
|
30
|
-
resetCounters(): void;
|
|
31
|
-
resetCollisionsMap(): void;
|
|
32
|
-
revertCollisions(): void;
|
|
33
|
-
get newData(): number;
|
|
34
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<GeoDBService, [{ optional: true; }]>;
|
|
35
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<GeoDBService>;
|
|
36
|
-
}
|