Update openapi, fixing display of map basestyle with static_url
All checks were successful
/ build (push) Successful in 30s

This commit is contained in:
phil 2024-12-22 02:45:41 +01:00
parent f7629e36e0
commit 8edcf1c9f4
6 changed files with 1360 additions and 1438 deletions

View file

@ -94,4 +94,4 @@
<gisaf-mgl-control position="bottom-left">
<div #featureInfo class='featureInfoInner'></div>
</gisaf-mgl-control>
</mgl-map>
</mgl-map>

File diff suppressed because it is too large Load diff

View file

@ -8,130 +8,130 @@ import { MapControlService } from './map-control.service'
import { MapService, MapInitData, BaseMapWithStores, BaseStyle as OApiBaseStyle } from '../openapi'
export class BaseStyle {
constructor(
public name: string,
public style?: StyleSpecification,
) {}
constructor(
public name: string,
public style?: StyleSpecification,
) { }
}
@Injectable()
export class MapDataService {
constructor(
// private apollo: Apollo,
protected mapControlService: MapControlService,
public mapService: MapService,
) {
// Get the data on init, as it is (most probably) immutable
this.getMapInitData().subscribe(
data => {
this.mapInitDataLoaded.next(true)
this.mapInitDataLoaded.complete()
}
)
}
constructor(
// private apollo: Apollo,
protected mapControlService: MapControlService,
public mapService: MapService,
) {
// Get the data on init, as it is (most probably) immutable
this.getMapInitData().subscribe(
data => {
this.mapInitDataLoaded.next(true)
this.mapInitDataLoaded.complete()
}
)
}
public mapInitDataLoaded = new BehaviorSubject<boolean>(false)
mapInitDataLoaded$ = this.mapInitDataLoaded.asObservable()
public mapInitDataLoaded = new BehaviorSubject<boolean>(false)
mapInitDataLoaded$ = this.mapInitDataLoaded.asObservable()
mapInitData: MapInitData = {}
mapInitData: MapInitData = {}
getMapInitData(): Observable<MapInitData> {
return this.mapService.getInitDataApiMapInitDataGet().pipe(map(
data => this.mapInitData = data
))
}
getMapInitData(): Observable<MapInitData> {
return this.mapService.getInitDataApiMapInitDataGet().pipe(map(
data => this.mapInitData = data
))
}
// getBaseMaps(): Observable<BaseMap[]> {
// return this.apollo.query({
// query: baseMapQuery,
// }).pipe(map(
// res => {
// let bms: object = res['data']['baseMap']
// return bms['map'](
// (bm: object) => new BaseMap(
// bm['name'],
// bm['stores'].map(
// (store: object) => new Store(store['name'])
// )
// )
// )
// }
// ))
// }
// getBaseMaps(): Observable<BaseMap[]> {
// return this.apollo.query({
// query: baseMapQuery,
// }).pipe(map(
// res => {
// let bms: object = res['data']['baseMap']
// return bms['map'](
// (bm: object) => new BaseMap(
// bm['name'],
// bm['stores'].map(
// (store: object) => new Store(store['name'])
// )
// )
// )
// }
// ))
// }
public createBaseMap(baseMapName: string, stores: string[]): Observable<BaseMapWithStores> {
console.log('TODO: Migrate Graphql createBaseMap')
return of({name: '', stores:[]})
// return this.apollo.mutate({
// mutation: createBaseMapQuery,
// variables: {
// baseMapName: baseMapName,
// stores: stores
// }
// }).pipe(map(
// res => {
// let bm: object = res['data']['createBaseMap']['baseMap']
// return new BaseMap(
// bm['name'],
// bm['stores'].map((store: object) => new Store(store['name']))
// )
// }
// ))
}
// XXX: unused
// getBaseStyleList(): Observable<BaseStyle[]> {
// return this.apollo.query({query: baseStyleListQuery}).pipe(map(
// data => data['data']['base_style_list'].map(
// (baseStyle: string) => new BaseStyle(baseStyle['name'])
public createBaseMap(baseMapName: string, stores: string[]): Observable<BaseMapWithStores> {
console.log('TODO: Migrate Graphql createBaseMap')
return of({ name: '', stores: [] })
// return this.apollo.mutate({
// mutation: createBaseMapQuery,
// variables: {
// baseMapName: baseMapName,
// stores: stores
// }
// }).pipe(map(
// res => {
// let bm: object = res['data']['createBaseMap']['baseMap']
// return new BaseMap(
// bm['name'],
// bm['stores'].map((store: object) => new Store(store['name']))
// )
// ))
// }
// }
// ))
}
getBaseStyle(styleName: string): Observable<BaseStyle> {
return this.mapService.getBaseStyleApiMapBaseStyleNameGet({name: styleName}).pipe(map(
data => new BaseStyle(data.name, <any>data.style)
))
}
// XXX: unused
// getBaseStyleList(): Observable<BaseStyle[]> {
// return this.apollo.query({query: baseStyleListQuery}).pipe(map(
// data => data['data']['base_style_list'].map(
// (baseStyle: string) => new BaseStyle(baseStyle['name'])
// )
// ))
// }
// getStores(): Observable<LayerNode[]> {
// return this.apollo.query({
// query: storeQuery,
// }).pipe(map(
// res => res['data']['stores'].map(
// (layer: Object) => new LayerNode(
// layer['name'],
// layer['group'],
// layer['icon'],
// layer['symbol'] || gisTypeSymbolMap[layer['gisType']],
// layer['store'],
// layer['rawSurveyStore'],
// layer['type'],
// layer['gisType'],
// layer['style'],
// layer['zIndex'],
// layer['count'],
// layer['description'],
// layer['live'],
// layer['custom'],
// layer['tagPlugins'],
// layer['viewableRole']
// )
// )
// ))
// }
getBaseStyle(styleName: string): Observable<BaseStyle> {
return this.mapService.getBaseStyleApiMapBaseStyleNameGet({ name: styleName }).pipe(map(
(data: OApiBaseStyle) => new BaseStyle(data.name, <any>data.style)
))
}
// getPrimaryGroups(): Observable<PrimaryGroupNode[]> {
// return this.apollo.query({
// query: geomGroupQuery,
// }).pipe(map(
// res => res['data']['geomGroup'] && res['data']['geomGroup'].map(
// (gg: Object) => new PrimaryGroupNode(
// gg['name'],
// gg['title'],
// gg['description']
// )
// )
// ))
// }
}
// getStores(): Observable<LayerNode[]> {
// return this.apollo.query({
// query: storeQuery,
// }).pipe(map(
// res => res['data']['stores'].map(
// (layer: Object) => new LayerNode(
// layer['name'],
// layer['group'],
// layer['icon'],
// layer['symbol'] || gisTypeSymbolMap[layer['gisType']],
// layer['store'],
// layer['rawSurveyStore'],
// layer['type'],
// layer['gisType'],
// layer['style'],
// layer['zIndex'],
// layer['count'],
// layer['description'],
// layer['live'],
// layer['custom'],
// layer['tagPlugins'],
// layer['viewableRole']
// )
// )
// ))
// }
// getPrimaryGroups(): Observable<PrimaryGroupNode[]> {
// return this.apollo.query({
// query: geomGroupQuery,
// }).pipe(map(
// res => res['data']['geomGroup'] && res['data']['geomGroup'].map(
// (gg: Object) => new PrimaryGroupNode(
// gg['name'],
// gg['title'],
// gg['description']
// )
// )
// ))
// }
}

View file

@ -47,7 +47,7 @@ export const OpenAPI: OpenAPIConfig = {
PASSWORD: undefined,
TOKEN: undefined,
USERNAME: undefined,
VERSION: '0.1.dev85+g41e92fa.d20240509',
VERSION: '0.6.0a0',
WITH_CREDENTIALS: false,
interceptors: {
response: new Interceptors(),

View file

@ -259,12 +259,26 @@ export const $BaseStyle = {
title: 'Style'
},
mbtiles: {
type: 'string',
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Mbtiles'
},
static_tiles_url: {
type: 'string',
title: 'Static Tiles Url'
static_url: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Static Url'
},
enabled: {
type: 'boolean',
@ -273,7 +287,7 @@ export const $BaseStyle = {
}
},
type: 'object',
required: ['name', 'style', 'mbtiles', 'static_tiles_url'],
required: ['name'],
title: 'BaseStyle'
} as const;
@ -311,7 +325,6 @@ export const $BasketDefault = {
title: 'Store'
}
},
additionalProperties: false,
type: 'object',
title: 'BasketDefault'
} as const;
@ -514,52 +527,43 @@ export const $BootstrapData = {
version: {
type: 'string',
title: 'Version',
default: '0.1.dev85+g41e92fa.d20240509'
default: '0.6.0a0'
},
title: {
type: 'string',
title: 'Title',
default: 'Auroville Geomatics Studio (Me)'
default: 'Gisaf'
},
windowTitle: {
type: 'string',
title: 'Windowtitle',
default: 'AV Geomatics Studio (Me)'
default: 'Gisaf'
},
map: {
allOf: [
{
'$ref': '#/components/schemas/Map'
}
],
'$ref': '#/components/schemas/Map',
default: {
attribution: '© Auroville CSR Geomatics',
bearing: 0,
defaultStatus: ['E'],
lat: 12.007,
lng: 79.8098,
opacity: 0.4,
pitch: 0,
status: ['E', 'F', 'D'],
style: 'No base map',
tagKeys: ['source'],
tileServer: {
baseDir: '/home/phil/gisaf_misc/map',
openMapTilesKey: 'cS3lrAfYXoM4MDooT6aS',
spriteBaseDir: '/home/phil/gisaf_misc/map/sprite',
spriteBaseUrl: 'https://gis.auroville.org.in',
baseDir: '/home/phil/.local/share/gisaf/mbtiles_files_dir',
spriteBaseDir: '/home/phil/.local/share/gisaf/mbtiles_sprites_dir',
spriteBaseUrl: 'https://gisaf.example.org',
spriteUrl: '/tiles/sprite/sprite',
useRequestUrl: true
useRequestUrl: false
},
zoom: 14
zoom: 14,
pitch: 45,
lat: 12,
lng: 79.8106,
bearing: 0,
style: 'OpenFreeMap',
opacity: 1,
attribution: '',
status: ['E', 'F', 'D'],
defaultStatus: ['E'],
tagKeys: ['source']
}
},
geo: {
allOf: [
{
'$ref': '#/components/schemas/Geo'
}
],
'$ref': '#/components/schemas/Geo',
default: {
raw_survey: {
spatial_sys_ref: {
@ -584,19 +588,13 @@ export const $BootstrapData = {
}
},
measures: {
allOf: [
{
'$ref': '#/components/schemas/Measures'
}
],
default: {
defaultStore: 'avsm_water.well'
}
'$ref': '#/components/schemas/Measures',
default: {}
},
redirect: {
type: 'string',
title: 'Redirect',
default: 'http://gis.auroville.org.in'
default: ''
},
user: {
anyOf: [
@ -1442,11 +1440,7 @@ export const $FormFieldInput = {
export const $Geo = {
properties: {
raw_survey: {
allOf: [
{
'$ref': '#/components/schemas/RawSurvey'
}
],
'$ref': '#/components/schemas/RawSurvey',
default: {
spatial_sys_ref: {
author: 'AVSM',
@ -1485,7 +1479,6 @@ export const $Geo = {
default: 32644
}
},
additionalProperties: false,
type: 'object',
title: 'Geo'
} as const;
@ -1568,17 +1561,13 @@ export const $LegendItem = {
export const $Map = {
properties: {
tileServer: {
allOf: [
{
'$ref': '#/components/schemas/TileServer'
}
],
'$ref': '#/components/schemas/TileServer',
default: {
baseDir: '/path/to/mbtiles_files_dir',
spriteBaseDir: '/path/to/mbtiles_sprites_dir',
spriteBaseUrl: 'https://gisaf.example.org',
baseDir: '/home/phil/.local/share/gisaf/mbtiles_files_dir',
useRequestUrl: false,
spriteBaseDir: '/home/phil/.local/share/gisaf/mbtiles_sprites_dir',
spriteUrl: '/tiles/sprite/sprite',
useRequestUrl: false
spriteBaseUrl: 'https://gisaf.example.org'
}
},
zoom: {
@ -1609,7 +1598,7 @@ export const $Map = {
style: {
type: 'string',
title: 'Style',
default: 'OSM (vector)'
default: 'OpenFreeMap'
},
opacity: {
type: 'number',
@ -1646,7 +1635,6 @@ export const $Map = {
default: ['source']
}
},
additionalProperties: false,
type: 'object',
title: 'Map'
} as const;
@ -1790,7 +1778,6 @@ export const $Measures = {
title: 'Defaultstore'
}
},
additionalProperties: false,
type: 'object',
title: 'Measures'
} as const;
@ -2109,11 +2096,7 @@ export const $Project = {
export const $RawSurvey = {
properties: {
spatial_sys_ref: {
allOf: [
{
'$ref': '#/components/schemas/SpatialSysRef'
}
],
'$ref': '#/components/schemas/SpatialSysRef',
default: {
author: 'AVSM',
ellps: 'WGS84',
@ -2134,7 +2117,6 @@ export const $RawSurvey = {
default: 910001
}
},
additionalProperties: false,
type: 'object',
title: 'RawSurvey'
} as const;
@ -2237,7 +2219,6 @@ export const $SpatialSysRef = {
default: 1328608.994
}
},
additionalProperties: false,
type: 'object',
title: 'SpatialSysRef'
} as const;
@ -2386,11 +2367,12 @@ export const $Store = {
},
z_index: {
type: 'integer',
title: 'Z Index'
title: 'Z Index',
default: 500
}
},
type: 'object',
required: ['name', 'auto_import', 'custom', 'description', 'gis_type', 'group', 'in_menu', 'is_db', 'is_line_work', 'is_live', 'long_name', 'type', 'minor_group_1', 'minor_group_2', 'status', 'style', 'symbol', 'title', 'viewable_role', 'z_index'],
required: ['name', 'auto_import', 'custom', 'description', 'gis_type', 'group', 'in_menu', 'is_db', 'is_line_work', 'is_live', 'long_name', 'type', 'minor_group_1', 'minor_group_2', 'status', 'style', 'symbol', 'title'],
title: 'Store'
} as const;
@ -2648,8 +2630,9 @@ export const $TileServer = {
properties: {
baseDir: {
type: 'string',
format: 'path',
title: 'Basedir',
default: '/path/to/mbtiles_files_dir'
default: '/home/phil/.local/share/gisaf/mbtiles_files_dir'
},
useRequestUrl: {
type: 'boolean',
@ -2658,8 +2641,9 @@ export const $TileServer = {
},
spriteBaseDir: {
type: 'string',
format: 'path',
title: 'Spritebasedir',
default: '/path/to/mbtiles_sprites_dir'
default: '/home/phil/.local/share/gisaf/mbtiles_sprites_dir'
},
spriteUrl: {
type: 'string',
@ -2683,7 +2667,6 @@ export const $TileServer = {
title: 'Openmaptileskey'
}
},
additionalProperties: false,
type: 'object',
title: 'TileServer'
} as const;

View file

@ -54,11 +54,11 @@ export type BaseMapWithStores = {
export type BaseStyle = {
id?: number | null;
name: string;
style: {
style?: {
[key: string]: unknown;
} | null;
mbtiles: string;
static_tiles_url: string;
mbtiles?: string | null;
static_url?: string | null;
enabled?: boolean;
};
@ -457,8 +457,8 @@ export type Store = {
style: string | null;
symbol: string | null;
title: string;
viewable_role: string | null;
z_index: number;
viewable_role?: string | null;
z_index?: number;
};
export type StoreNameOnly = {
@ -751,9 +751,7 @@ export type $OpenApiTs = {
};
'/api/token': {
post: {
req: {
formData: Body_login_for_access_token_api_token_post;
};
req: LoginForAccessTokenApiTokenPostData;
res: {
/**
* Successful Response
@ -870,9 +868,7 @@ export type $OpenApiTs = {
};
'/api/data-provider/{store}': {
get: {
req: {
store: string;
};
req: GetModelListApiDataProviderStoreGetData;
res: {
/**
* Successful Response
@ -891,12 +887,7 @@ export type $OpenApiTs = {
};
'/api/{store_name}/values/{value}': {
get: {
req: {
resample?: string | null;
storeName: string;
value: string;
where: string;
};
req: GetModelValuesApiStoreNameValuesValueGetData;
res: {
/**
* Successful Response
@ -957,10 +948,7 @@ export type $OpenApiTs = {
};
'/api/feature-info/{store}/{id}': {
get: {
req: {
id: string;
store: string;
};
req: GetFeatureInfoApiFeatureInfoStoreIdGetData;
res: {
/**
* Successful Response
@ -979,9 +967,7 @@ export type $OpenApiTs = {
};
'/api/model-info/{store}': {
get: {
req: {
store: string;
};
req: GetModelInfoApiModelInfoStoreGetData;
res: {
/**
* Successful Response
@ -1000,11 +986,7 @@ export type $OpenApiTs = {
};
'/api/plot-params/{store}': {
get: {
req: {
id: string;
store: string;
value: string;
};
req: GetPlotParamsApiPlotParamsStoreGetData;
res: {
/**
* Successful Response
@ -1037,9 +1019,7 @@ export type $OpenApiTs = {
};
'/api/execTagActions': {
post: {
req: {
requestBody: Body_execute_tag_action_api_execTagActions_post;
};
req: ExecuteTagActionApiExecTagActionsPostData;
res: {
/**
* Successful Response
@ -1058,12 +1038,7 @@ export type $OpenApiTs = {
};
'/api/gj/{store_name}': {
get: {
req: {
ifNoneMatch?: string | null;
preserveTopology?: boolean | null;
simplify?: number | null;
storeName: unknown;
};
req: GetGeojsonApiGjStoreNameGetData;
res: {
/**
* Successful Response
@ -1096,9 +1071,7 @@ export type $OpenApiTs = {
};
'/api/admin/basket/{name}': {
get: {
req: {
name: string;
};
req: GetBasketApiAdminBasketNameGetData;
res: {
/**
* Successful Response
@ -1117,14 +1090,7 @@ export type $OpenApiTs = {
};
'/api/admin/basket/upload/{name}': {
post: {
req: {
autoImport?: boolean;
equipmentId?: number | null;
formData: Body_upload_basket_file_api_admin_basket_upload__name__post;
name: string;
projectId?: number | null;
surveyorId?: number | null;
};
req: UploadBasketFileApiAdminBasketUploadNamePostData;
res: {
/**
* Successful Response
@ -1143,11 +1109,7 @@ export type $OpenApiTs = {
};
'/api/admin/basket/download/{name}/{file_id}/{file_name}': {
get: {
req: {
fileId: number;
fileName: string;
name: string;
};
req: DownloadBasketFileApiAdminBasketDownloadNameFileIdFileNameGetData;
res: {
/**
* Successful Response
@ -1166,11 +1128,7 @@ export type $OpenApiTs = {
};
'/api/admin/basket/import/{basket}/{file_id}': {
get: {
req: {
basket: string;
dryRun?: boolean;
fileId: number;
};
req: ImportBasketFileApiAdminBasketImportBasketFileIdGetData;
res: {
/**
* Successful Response
@ -1189,10 +1147,7 @@ export type $OpenApiTs = {
};
'/api/admin/basket/delete/{basket}/{file_id}': {
get: {
req: {
basket: string;
fileId: number;
};
req: DeleteBasketFileApiAdminBasketDeleteBasketFileIdGetData;
res: {
/**
* Successful Response
@ -1239,10 +1194,7 @@ export type $OpenApiTs = {
};
'/api/dashboard/page/{group}/{name}': {
get: {
req: {
group: string;
name: string;
};
req: GetDashboardPageApiDashboardPageGroupNameGetData;
res: {
/**
* Successful Response
@ -1271,9 +1223,7 @@ export type $OpenApiTs = {
};
'/api/map/base_style/{name}': {
get: {
req: {
name: string;
};
req: GetBaseStyleApiMapBaseStyleNameGetData;
res: {
/**
* Successful Response
@ -1288,9 +1238,7 @@ export type $OpenApiTs = {
};
'/api/map/layer_style/{store}': {
get: {
req: {
store: string;
};
req: GetLayerStyleApiMapLayerStyleStoreGetData;
res: {
/**
* Successful Response
@ -1305,12 +1253,7 @@ export type $OpenApiTs = {
};
'/api/download/csv/{store}/{model_id}/{value}/{resample}': {
get: {
req: {
modelId: number;
resample: string;
store: string;
value: string;
};
req: DownloadCsvApiDownloadCsvStoreModelIdValueResampleGetData;
res: {
/**
* Successful Response
@ -1329,11 +1272,7 @@ export type $OpenApiTs = {
};
'/api/download/geodata/{stores}': {
get: {
req: {
format?: string;
reproject?: boolean;
stores: string;
};
req: DownloadGeodataApiDownloadGeodataStoresGetData;
res: {
/**
* Successful Response
@ -1352,11 +1291,7 @@ export type $OpenApiTs = {
};
'/api/download/plugin/{name}/{store}/{id}': {
get: {
req: {
id: number;
name: string;
store: string;
};
req: ExecuteActionApiDownloadPluginNameStoreIdGetData;
res: {
/**
* Successful Response