Skip to content

Commit 3caa9e2

Browse files
committed
tile editing: band, z-index; error handling, listing of new tile
1 parent 820c281 commit 3caa9e2

File tree

5 files changed

+140
-101
lines changed

5 files changed

+140
-101
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

projects/common/src/lib/datasets/datasets.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ export class DatasetsService {
156156
});
157157
}
158158

159-
async addDatasetTiles(datasetName: string, tiles: Array<AddDatasetTile>): Promise<void> {
159+
async addDatasetTiles(datasetName: string, tiles: Array<AddDatasetTile>): Promise<string[]> {
160160
const datasetApi = await firstValueFrom(this.datasetApi);
161161

162162
return datasetApi.addDatasetTilesHandler({

projects/manager/src/app/datasets/loading-info/gdal-multiband/gdal-multiband.component.html

Lines changed: 57 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -44,36 +44,42 @@
4444
</div>
4545

4646
<mat-divider></mat-divider>
47+
</form>
4748

49+
<form [formGroup]="tileForm">
4850
<div class="container">
4951
<div class="left">
50-
@switch (editMode) {
51-
@case (EditMode.created) {
52-
<button mat-stroked-button class="browseButton" (click)="backToAllTiles()">
53-
<mat-icon>chevron_left</mat-icon>Back to all datasets
54-
</button>
55-
}
56-
@case (EditMode.update) {
57-
<button mat-raised-button color="primary" class="add-dataset" (click)="addTile()"><mat-icon>add</mat-icon></button>
58-
<cdk-virtual-scroll-viewport [itemSize]="itemSizePx" (scrolledIndexChange)="onScrolledIndexChange($event)">
59-
<mat-nav-list>
60-
<ng-container *cdkVirtualFor="let item of source; trackBy: trackById">
61-
<mat-list-item [class.selected]="(selectedTileId$ | async) === item.id" (click)="select(item)">
62-
<h4 matListItemTitle>{{ tileTitle(item) }}</h4>
63-
<p matListItemLine>{{ item.id }}</p>
64-
</mat-list-item>
65-
</ng-container>
66-
</mat-nav-list>
67-
68-
@if (source?.loading$ | async) {
69-
<mat-spinner [diameter]="loadingSpinnerDiameterPx"></mat-spinner>
70-
}
71-
</cdk-virtual-scroll-viewport>
72-
}
52+
@if (editMode === EditMode.created) {
53+
<button mat-stroked-button class="browseButton" (click)="backToAllTiles()">
54+
<mat-icon>chevron_left</mat-icon>Back to all datasets
55+
</button>
56+
<mat-nav-list>
57+
<mat-list-item class="selected">
58+
<h4 matListItemTitle>{{ createdTileName }}</h4>
59+
<p matListItemLine>{{ createdTileId }}</p>
60+
</mat-list-item></mat-nav-list
61+
>
62+
}
63+
@if (editMode === EditMode.update || editMode === EditMode.create) {
64+
<button mat-raised-button color="primary" class="add-dataset" (click)="addTile()"><mat-icon>add</mat-icon></button>
65+
<cdk-virtual-scroll-viewport [itemSize]="itemSizePx" (scrolledIndexChange)="onScrolledIndexChange($event)">
66+
<mat-nav-list>
67+
<ng-container *cdkVirtualFor="let item of source; trackBy: trackById">
68+
<mat-list-item [class.selected]="(selectedTileId$ | async) === item.id" (click)="select(item)">
69+
<h4 matListItemTitle>{{ tileTitle(item.params.filePath) }}</h4>
70+
<p matListItemLine>{{ item.id }}</p>
71+
</mat-list-item>
72+
</ng-container>
73+
</mat-nav-list>
74+
75+
@if (source?.loading$ | async) {
76+
<mat-spinner [diameter]="loadingSpinnerDiameterPx"></mat-spinner>
77+
}
78+
</cdk-virtual-scroll-viewport>
7379
}
7480
</div>
7581

76-
<div class="time-slice" [formGroup]="tileForm.controls.bbox">
82+
<div class="tile-editor">
7783
@switch (editMode) {
7884
@case (EditMode.create) {
7985
<h2>Create New Tile</h2>
@@ -90,8 +96,12 @@ <h2>Edit Tile {{ selectedTileId$ | async }}</h2>
9096
<button mat-raised-button class="analyze" (click)="suggestTileProperties()">Analyze file and suggest properties</button>
9197
</div>
9298

99+
<mat-divider></mat-divider>
100+
101+
<h2>Tile Metadata</h2>
102+
93103
<h3 class="mat-subtitle-1">Bounding Box</h3>
94-
<div class="bbox-fields">
104+
<div formGroupName="bbox" class="bbox-fields">
95105
<mat-form-field appearance="fill">
96106
<mat-label>min X</mat-label>
97107
<input matInput type="number" formControlName="bboxMinX" />
@@ -116,6 +126,28 @@ <h3 class="mat-subtitle-1">Bounding Box</h3>
116126

117127
<mat-divider></mat-divider>
118128

129+
<mat-form-field appearance="fill">
130+
<mat-label>Raster Band</mat-label>
131+
<mat-select formControlName="band">
132+
@for (i of bandIndices; track i) {
133+
<mat-option [value]="i">
134+
{{ form.controls.rasterResultDescriptor.controls.bands.value[i].name || 'Band ' + i }}
135+
</mat-option>
136+
}
137+
</mat-select>
138+
</mat-form-field>
139+
140+
<mat-divider></mat-divider>
141+
142+
<mat-form-field appearance="fill">
143+
<mat-label>Z-Index (higher value means more priority when overlapping with other tiles)</mat-label>
144+
<input matInput type="number" formControlName="zIndex" />
145+
</mat-form-field>
146+
147+
<mat-divider></mat-divider>
148+
149+
<h2>File Loading Parameters</h2>
150+
119151
<geoengine-manager-gdal-dataset-parameters
120152
[form]="tileForm.controls.gdalParameters"
121153
[dataPath]="dataPath"

projects/manager/src/app/datasets/loading-info/gdal-multiband/gdal-multiband.component.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
overflow: hidden;
1414
}
1515

16-
.time-slice {
16+
.tile-editor {
1717
width: calc(75% - 1rem);
1818
margin: 1rem;
1919
}

0 commit comments

Comments
 (0)