Skip to content

Commit 714a113

Browse files
authored
feat(cli): Add disabled flag for the create pr cli, and bug fixes. (#2745)
* Support disabled flag and replacing the layer for reprocessed imagery * remove the check for zoom layer and always add new layers at bottom of category * Add Event Category and add new rural above first urban * Update the disabled flag description * Some refinements * Set default config * Revert comment out code * wip * Update the default setting as record. * Set default config after check existing layer.
1 parent 1b34d9a commit 714a113

File tree

2 files changed

+69
-30
lines changed

2 files changed

+69
-30
lines changed

packages/cli/src/cli/cogify/action.make.cog.pr.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
import { ConfigLayer } from '@basemaps/config';
22
import { fsa, LogConfig } from '@basemaps/shared';
3-
import { CommandLineAction, CommandLineStringParameter } from '@rushstack/ts-command-line';
3+
import { CommandLineAction, CommandLineFlagParameter, CommandLineStringParameter } from '@rushstack/ts-command-line';
44
import { owner, repo } from '../github/github.js';
55
import { MakeCogGithub } from '../github/make.cog.pr.js';
66

77
export enum Category {
88
Urban = 'Urban Aerial Photos',
99
Rural = 'Rural Aerial Photos',
1010
Satellite = 'Satellite Imagery',
11+
Event = 'Event',
1112
Other = 'New Aerial Photos',
1213
}
1314

15+
export interface CategorySetting {
16+
minZoom?: number;
17+
disabled?: boolean;
18+
}
19+
20+
export const DefaultCategorySetting: Record<Category, CategorySetting> = {
21+
[Category.Urban]: { minZoom: 14 },
22+
[Category.Rural]: { minZoom: 13 },
23+
[Category.Satellite]: { minZoom: 5 },
24+
[Category.Event]: { disabled: true },
25+
[Category.Other]: { disabled: true },
26+
};
27+
1428
export function parseCategory(category: string): Category {
1529
const c = category.toLocaleLowerCase();
1630
if (c.includes('urban')) return Category.Urban;
@@ -24,6 +38,7 @@ export class CommandCogPullRequest extends CommandLineAction {
2438
private output: CommandLineStringParameter;
2539
private jira: CommandLineStringParameter;
2640
private category: CommandLineStringParameter;
41+
private disabled: CommandLineFlagParameter;
2742

2843
public constructor() {
2944
super({
@@ -58,6 +73,11 @@ export class CommandCogPullRequest extends CommandLineAction {
5873
description: 'New Imagery Category, like Rural Aerial Photos, Urban Aerial Photos, Satellite Imagery',
5974
required: false,
6075
});
76+
this.disabled = this.defineFlagParameter({
77+
parameterLongName: '--disabled',
78+
description: 'Disable the layer in the config',
79+
required: false,
80+
});
6181
}
6282

6383
async onExecute(): Promise<void> {
@@ -73,6 +93,7 @@ export class CommandCogPullRequest extends CommandLineAction {
7393
}
7494

7595
const git = new MakeCogGithub(layer.name, logger);
96+
if (this.disabled.value) layer.disabled = true;
7697
const prNumber = await git.createTileSetPullRequest(layer, this.jira.value, category);
7798

7899
const output = this.output.value;

packages/cli/src/cli/github/make.cog.pr.ts

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ConfigLayer, ConfigTileSetRaster } from '@basemaps/config';
22
import { LogType } from '@basemaps/shared';
3-
import { Category } from '../cogify/action.make.cog.pr.js';
3+
import { Category, DefaultCategorySetting } from '../cogify/action.make.cog.pr.js';
44
import { Github, owner, repo } from './github.js';
55

66
export class MakeCogGithub extends Github {
@@ -60,6 +60,36 @@ export class MakeCogGithub extends Github {
6060
return prNumber;
6161
}
6262

63+
/**
64+
* Set the default setting for the category
65+
*/
66+
setDefaultConfig(layer: ConfigLayer, category: Category): ConfigLayer {
67+
layer.category = category;
68+
const defaultSetting = DefaultCategorySetting[category];
69+
if (defaultSetting) {
70+
if (defaultSetting.minZoom != null && layer.minZoom != null) layer.minZoom = defaultSetting.minZoom;
71+
if (defaultSetting.minZoom != null && layer.minZoom != null) layer.disabled = defaultSetting.disabled;
72+
}
73+
74+
return layer;
75+
}
76+
77+
/**
78+
* Add new layer at the bottom of related category
79+
*/
80+
addLayer(layer: ConfigLayer, tileSet: ConfigTileSetRaster, category: Category): ConfigTileSetRaster {
81+
this.setDefaultConfig(layer, category);
82+
for (let i = tileSet.layers.length - 1; i >= 0; i--) {
83+
// Add new layer at the end of category
84+
if (tileSet.layers[i].category === category) {
85+
// Find first valid category and insert new record above that.
86+
tileSet.layers.splice(i + 1, 0, layer);
87+
break;
88+
}
89+
}
90+
return tileSet;
91+
}
92+
6393
/**
6494
* Prepare aerial tileSet config json
6595
*/
@@ -68,44 +98,32 @@ export class MakeCogGithub extends Github {
6898
tileSet: ConfigTileSetRaster,
6999
category: Category,
70100
): Promise<ConfigTileSetRaster | undefined> {
101+
// Reprocess existing layer
102+
for (let i = 0; i < tileSet.layers.length; i++) {
103+
if (tileSet.layers[i].name === layer.name) {
104+
tileSet.layers[i] = layer;
105+
return tileSet;
106+
}
107+
}
108+
109+
// Set default Config if not existing layer
110+
this.setDefaultConfig(layer, category);
111+
71112
// Set layer zoom level and add to latest order
72113
if (category === Category.Rural) {
73-
layer.minZoom = 13;
74-
layer.category = Category.Rural;
75114
for (let i = 0; i < tileSet.layers.length; i++) {
76-
// Add new layer at the end of rural
77-
if (tileSet.layers[i].category === Category.Rural && tileSet.layers[i].minZoom === 14) {
115+
// Add new layer above the first Urban
116+
if (tileSet.layers[i].category === Category.Urban) {
78117
// Find first valid Urban and insert new record above that.
79118
tileSet.layers.splice(i, 0, layer);
80119
break;
81120
}
82121
}
83-
} else if (category === Category.Urban) {
84-
layer.minZoom = 14;
85-
layer.category = Category.Urban;
86-
// Add new layer at the end of urban
87-
for (let i = tileSet.layers.length - 1; i >= 0; i--) {
88-
if (tileSet.layers[i].category === Category.Urban && tileSet.minZoom === 14) {
89-
// Find first Urban from the bottom up and insert the record below that.
90-
tileSet.layers.splice(i + 1, 0, layer);
91-
break;
92-
}
93-
}
94-
} else if (category === Category.Satellite) {
95-
layer.minZoom = 5;
96-
layer.category = Category.Satellite;
97-
// Add new layer at the end of satellite
98-
for (let i = tileSet.layers.length - 1; i >= 0; i--) {
99-
// Find first Satellite imagery from bottom up and insert the record below that.
100-
if (tileSet.layers[i].category === Category.Satellite) {
101-
tileSet.layers.splice(i + 1, 0, layer);
102-
break;
103-
}
104-
}
105-
} else {
122+
} else if (category === Category.Other) {
106123
// Add new layer at the bottom
107-
layer.category = Category.Other;
108124
tileSet.layers.push(layer);
125+
} else {
126+
this.addLayer(layer, tileSet, category);
109127
}
110128

111129
return tileSet;

0 commit comments

Comments
 (0)