From 67b20afeea1de2ace750fcaebd50bb1772f29089 Mon Sep 17 00:00:00 2001 From: "raphael.wcosta@gmail.com" Date: Tue, 18 Oct 2022 12:26:22 -0300 Subject: [PATCH] :bug: Fix grid creation step (close #122) --- CHANGES.md | 5 ++ data-cube-manager/package-lock.json | 2 +- data-cube-manager/package.json | 2 +- .../pages/check-cube/check-cube.component.ts | 8 ++- .../steps/grid/grid.component.html | 66 ++++++++++++------- .../create-cube/steps/grid/grid.component.ts | 45 ++++++++++--- data-cube-manager/src/app/app.reducer.ts | 2 +- .../src/app/services/cube-builder.ts | 2 +- 8 files changed, 94 insertions(+), 38 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index f2393e2..b136ecb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,11 @@ # Changes +## Version 0.6.2 (2022-10-18) + +- Fix grid creation on create cube page [`#122`](https://github.com/brazil-data-cube/dc-manager/issues/122) + + ## Version 0.6.1 (2022-10-04) - Add support to customize data cube name of IDT/Temporal Composed [`#119`](https://github.com/brazil-data-cube/dc-manager/issues/119) diff --git a/data-cube-manager/package-lock.json b/data-cube-manager/package-lock.json index 0fd4b71..92e1d22 100644 --- a/data-cube-manager/package-lock.json +++ b/data-cube-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "data-cube-manager", - "version": "0.6.1", + "version": "0.6.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/data-cube-manager/package.json b/data-cube-manager/package.json index f1bfcc3..514d324 100644 --- a/data-cube-manager/package.json +++ b/data-cube-manager/package.json @@ -1,6 +1,6 @@ { "name": "data-cube-manager", - "version": "0.6.1", + "version": "0.6.2", "license": "GPLv3", "scripts": { "ng": "ng", diff --git a/data-cube-manager/src/app/admin/pages/check-cube/check-cube.component.ts b/data-cube-manager/src/app/admin/pages/check-cube/check-cube.component.ts index aaae0f5..1941b7f 100644 --- a/data-cube-manager/src/app/admin/pages/check-cube/check-cube.component.ts +++ b/data-cube-manager/src/app/admin/pages/check-cube/check-cube.component.ts @@ -267,6 +267,8 @@ export class CheckCubeComponent implements OnInit { try { this.store.dispatch(showLoading()); + const tileId = item.tile_id || this.currentTab; + const cubeName = this.cube.name; let start = item.start_date; let end = item.end_date; @@ -276,7 +278,7 @@ export class CheckCubeComponent implements OnInit { end = moment(start).endOf('month').format('YYYY-MM-DD'); } - const response = await this.cbs.listMerges(this.cube.id, start, end, item.tile_id); + const response = await this.cbs.listMerges(this.cube.id, start, end, tileId); const dialogRef = this.dialog.open(SceneDetailsComponent, { width: '600px', height: '90%', @@ -285,7 +287,7 @@ export class CheckCubeComponent implements OnInit { cube: this.cube.name, merges: response, itemDate: item.start_date, - tileId: item.tile_id, + tileId, itemId: item.name } }) @@ -310,7 +312,7 @@ export class CheckCubeComponent implements OnInit { grid: this.cube.grid, datacube: this.cube.name, datacube_version: this.cube.version, - tiles: [item.tile_id], + tiles: [this.currentTab], editable: false, start_date: item.start_date, end_date: item.end_date, diff --git a/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.html b/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.html index cf8929a..42f4055 100644 --- a/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.html +++ b/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.html @@ -46,9 +46,9 @@

Name - + - + @@ -58,27 +58,47 @@

- - Meridian - - - - - - - Width (in graus) - - - - - - - Height (in graus) - - - - - +
+
+ + Meridian + + + + + +
+ +
+ + Custom SRID + + + + + +
+ +
+ + Cell Shape (Row,Col) + + + + + +
+ +
+ + Tile Resolution Factor (in meters) + + + + + +
+
diff --git a/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.ts b/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.ts index 30c3fd7..1e6d574 100644 --- a/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.ts +++ b/data-cube-manager/src/app/admin/pages/create-cube/steps/grid/grid.component.ts @@ -38,11 +38,12 @@ export class CreateCubeGridComponent implements OnInit { private fb: FormBuilder, private ref: ChangeDetectorRef) { this.formCreateGrid = this.fb.group({ - name: ['', [Validators.required]], + names: ['', [Validators.required]], description: ['', [Validators.required]], meridian: [null, [Validators.required]], - degreesx: [{value: 1.5}, [Validators.required]], - degreesy: [{value: 1}, [Validators.required]] + shape: [null, [Validators.required]], + tile_factor: [null, [Validators.required]], + srid: [null, [Validators.required]], }); } @@ -67,11 +68,12 @@ export class CreateCubeGridComponent implements OnInit { crs: '' } this.formCreateGrid.setValue({ - name: '', + names: '', description: '', meridian: null, - degreesx: 1.5, - degreesy: 1 + shape: null, + tile_factor: null, + srid: null, }) } @@ -153,6 +155,34 @@ export class CreateCubeGridComponent implements OnInit { projection: 'aea', bbox: this.formatBBox(this.bbox) } + // Transform into list + data['tile_factor'] = [data['tile_factor']] + data['names'] = data['names'].split(','); + data['shape'] = data['shape'].split(',').map(value => parseInt(value)) + + if (data['tile_factor'][0].includes(';')) { + data['tile_factor'] = data['tile_factor'][0].split(';') + } + + let tileFactorList = []; + for (let tileFactor of data['tile_factor']) { + const [pixelX, pixelY] = tileFactor.split(',') + tileFactorList.push([parseInt(pixelX), parseInt(pixelY)]); + } + + if (tileFactorList.length !== data['names'].length) { + this.snackBar.open(`The grids ${data['names']} not match with ${tileFactorList}. It must have same dimension.`, '', { + duration: 4000, + verticalPosition: 'top', + panelClass: 'app_snack-bar-error' + }); + return; + } + + if (tileFactorList.length > 0) { + data['tile_factor'] = tileFactorList; + } + const response = await this.cbs.createGrid(data) this.action = 'select' this.getGrids() @@ -185,8 +215,7 @@ export class CreateCubeGridComponent implements OnInit { } private formatBBox(bbox) { - const parts = bbox.split(',') - return `${parts[0]},${parts[3]},${parts[2]},${parts[1]}` + return bbox.split(',').map(value => parseFloat(value)); } /** diff --git a/data-cube-manager/src/app/app.reducer.ts b/data-cube-manager/src/app/app.reducer.ts index e6c0d8a..28198a5 100644 --- a/data-cube-manager/src/app/app.reducer.ts +++ b/data-cube-manager/src/app/app.reducer.ts @@ -11,7 +11,7 @@ import { AppState } from './app.state'; /** initial values to App State */ const initialState: AppState = { loading: false, - token: localStorage.getItem('DC_MANAGER_api_token') || '', + token: localStorage.getItem('DC_MANAGER_api_token'), urlService: localStorage.getItem('DC_MANAGER_url_service') || '' }; diff --git a/data-cube-manager/src/app/services/cube-builder.ts b/data-cube-manager/src/app/services/cube-builder.ts index 94662aa..247aabe 100644 --- a/data-cube-manager/src/app/services/cube-builder.ts +++ b/data-cube-manager/src/app/services/cube-builder.ts @@ -169,7 +169,7 @@ export class CubeBuilderService { * create grid (grs_schema) */ public async createGrid(infos): Promise { - const urlSuffix = `/create-grs`; + const urlSuffix = `/create-grids`; const { data } = await api.post(`${this.urlCubeBuilder}${urlSuffix}`, infos); return data; }