diff --git a/package-lock.json b/package-lock.json index e4e0f060f..e6c9b4eed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "@codemirror/state": "~6.5.2", "@codemirror/view": "~6.38.1", "@egjs/hammerjs": "^2.0.17", - "@geoengine/openapi-client": "github:geo-engine/openapi-client#ogc_apis_fix", + "@geoengine/openapi-client": "github:geo-engine/openapi-client#tile_management", "d3": "~7.9.0", "dagre": "~0.8.5", "dagre-d3": "~0.6.4", @@ -3436,7 +3436,7 @@ }, "node_modules/@geoengine/openapi-client": { "name": "@geoengine/openapi-client-dev", - "resolved": "git+ssh://git@github.com/geo-engine/openapi-client.git#5de34f95c356e91d45f9855a5a4508c1789b70d8", + "resolved": "git+ssh://git@github.com/geo-engine/openapi-client.git#59146f76e6cee57556f3a6a3befe555ee0052e08", "workspaces": [ "typescript" ] diff --git a/package.json b/package.json index e2de834bb..4278110f1 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@codemirror/state": "~6.5.2", "@codemirror/view": "~6.38.1", "@egjs/hammerjs": "^2.0.17", - "@geoengine/openapi-client": "github:geo-engine/openapi-client#ogc_apis_fix", + "@geoengine/openapi-client": "github:geo-engine/openapi-client#tile_management", "d3": "~7.9.0", "dagre": "~0.8.5", "dagre-d3": "~0.6.4", diff --git a/projects/common/src/lib/datasets/datasets.service.ts b/projects/common/src/lib/datasets/datasets.service.ts index e918c63c2..d41476d2f 100644 --- a/projects/common/src/lib/datasets/datasets.service.ts +++ b/projects/common/src/lib/datasets/datasets.service.ts @@ -1,10 +1,12 @@ import {Injectable, inject} from '@angular/core'; import { + AddDatasetTile, DataPath, Dataset, DatasetDefinition, DatasetListing, DatasetsApi, + DatasetTile, MetaDataDefinition, MetaDataSuggestion, OrderBy, @@ -12,6 +14,7 @@ import { SuggestMetaDataHandlerRequest, Symbology, UpdateDataset, + UpdateDatasetTile, Volume, VolumeFileLayersResponse, } from '@geoengine/openapi-client'; @@ -132,4 +135,44 @@ export class DatasetsService { return uploadsApi.listVolumeFileLayersHandler({volumeName, fileName}); } + + async getDatasetTiles(datasetName: string, offset = 0, limit = 100): Promise { + const datasetApi = await firstValueFrom(this.datasetApi); + + return datasetApi.getDatasetTilesHandler({ + dataset: datasetName, + offset, + limit, + }); + } + + async updateDatasetTile(datasetName: string, tileId: string, update: UpdateDatasetTile): Promise { + const datasetApi = await firstValueFrom(this.datasetApi); + + return datasetApi.updateDatasetTileHandler({ + dataset: datasetName, + tile: tileId, + updateDatasetTile: update, + }); + } + + async addDatasetTiles(datasetName: string, tiles: Array): Promise { + const datasetApi = await firstValueFrom(this.datasetApi); + + return datasetApi.addDatasetTilesHandler({ + dataset: datasetName, + addDatasetTile: tiles, + }); + } + + async deleteDatasetTile(datasetName: string, tileIds: Array): Promise { + const datasetApi = await firstValueFrom(this.datasetApi); + + return datasetApi.deleteDatasetTilesHandler({ + dataset: datasetName, + deleteDatasetTiles: { + tileIds, + }, + }); + } } diff --git a/projects/common/src/lib/measurement/measurement.component.html b/projects/common/src/lib/measurement/measurement.component.html index cbd003c97..918537faf 100644 --- a/projects/common/src/lib/measurement/measurement.component.html +++ b/projects/common/src/lib/measurement/measurement.component.html @@ -1,5 +1,7 @@
- Output Measurement: + @if (showOutputMeasurementLabel()) { + Output Measurement: + } Measurement +
diff --git a/projects/common/src/lib/measurement/measurement.component.ts b/projects/common/src/lib/measurement/measurement.component.ts index 63e4f6306..08e760262 100644 --- a/projects/common/src/lib/measurement/measurement.component.ts +++ b/projects/common/src/lib/measurement/measurement.component.ts @@ -1,4 +1,4 @@ -import {Component, Input, output} from '@angular/core'; +import {Component, input, Input, output} from '@angular/core'; import {FormControl, FormGroup, Validators, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {ClassificationMeasurement, ContinuousMeasurement, Measurement, UnitlessMeasurement} from '@geoengine/openapi-client'; import {MatButtonToggleGroup, MatButtonToggle} from '@angular/material/button-toggle'; @@ -40,6 +40,8 @@ export class MeasurementComponent { readonly measurementChange = output(); + showOutputMeasurementLabel = input(true); + MeasurementType = MeasurementType; classificationMeasurement?: ClassificationMeasurement; diff --git a/projects/common/src/lib/time/time-interval-input/time-interval-input.component.ts b/projects/common/src/lib/time/time-interval-input/time-interval-input.component.ts index 2026aafdb..a40630c0a 100644 --- a/projects/common/src/lib/time/time-interval-input/time-interval-input.component.ts +++ b/projects/common/src/lib/time/time-interval-input/time-interval-input.component.ts @@ -20,6 +20,7 @@ import {Time, TimeStepDuration} from '../time.model'; import {TimeInputComponent} from '../time-input/time-input.component'; import {FxLayoutDirective, FxLayoutAlignDirective} from '../../util/directives/flexbox-legacy.directive'; import {MatSlideToggle} from '@angular/material/slide-toggle'; +import {TimeInterval as TimeIntervalDict} from '@geoengine/openapi-client'; const startBeforeEndValidator = (control: AbstractControl): ValidationErrors | null => { if (!(control instanceof UntypedFormGroup)) { @@ -49,6 +50,21 @@ export interface TimeInterval { end: Moment; } +export function time_interval_from_dict(dict: TimeIntervalDict): TimeInterval { + return { + start: moment.utc(dict.start), + timeAsPoint: dict.start == dict.end, + end: moment.utc(dict.end), + }; +} + +export function time_interval_to_dict(interval: TimeInterval): TimeIntervalDict { + return { + start: interval.start.valueOf(), + end: interval.timeAsPoint ? interval.start.valueOf() : interval.end.valueOf(), + }; +} + @Component({ selector: 'geoengine-time-interval-input', templateUrl: './time-interval-input.component.html', diff --git a/projects/common/src/lib/util/conversions.ts b/projects/common/src/lib/util/conversions.ts index 1d75ab8ae..84e75041d 100644 --- a/projects/common/src/lib/util/conversions.ts +++ b/projects/common/src/lib/util/conversions.ts @@ -4,7 +4,14 @@ import OlFormatGeoJson from 'ol/format/GeoJSON'; import OlGeometry from 'ol/geom/Geometry'; import {Extent as OlExtent} from 'ol/extent'; import {Observable, ReplaySubject} from 'rxjs'; -import {BoundingBox2D as BBoxDict, ResponseError} from '@geoengine/openapi-client'; +import { + BoundingBox2D as BBoxDict, + GdalDatasetParameters, + GeoTransform, + ResponseError, + SpatialGridDefinition, + SpatialPartition2D, +} from '@geoengine/openapi-client'; import {Time} from '../time/time.model'; /** @@ -144,3 +151,59 @@ export function estimateTimeFormat(timeSteps: Array