{"version":3,"sources":["webpack:///./node_modules/@abaco/map-web-module/src/modules/map-web-module/services/WpsLegendBuilder.ts"],"names":["WpsLegendBuilder","http","ssoStore","this","layer","calcFunctionPromise","getCalcFunctionHeightmap","layer_id","layer_key","layerInfoPromise","getLayerInfo","csurl","layer_name","Promise","all","calcFunction","layerInfo","getHcmObj","hcmObj","mapLegend","getHmapObj","linear_gradient_colors","map","ml","color","join","undefined","getRealValues","data","numField","Number","HEIGHT_COLOR_MAP_INFO","HEIGHT_COLOR_MAP","FIELD_COUNT","_text","hMap","i","getColorsFromBGR","COLORS","push","HEIGHTS","val","R","B","G","RGB","result","exec","parseInt","substring","getRealValue","value","responses","c","length","xml","JSON","parse","convert","xml2json","compact","ignoreDeclaration","url","params","lang","user","locale","wms_id","wms_layer_id","get","res","services","entities","calc_function","wpsUrl","wpsSource","VERSION","SERVICE","REQUEST","Identifier","RawDataOutput","DataInputs","split","convertToJson","Info","DataStore","Style","_attributes","hcm","hcmId","dataInputs","code"],"mappings":"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","file":"js/chunk-2d0b5e06.460ebc8e.js","sourcesContent":["import SsoVuexModule from \"@abaco/sso-web-module/src/abaco-module/state\";\nimport { HTTPClient } from \"@abaco/web-common/src/HTTP\";\nimport convert from \"xml-js\";\nimport { LegendLayer } from \"../models/Layer\";\n\ninterface Color {\n B: number;\n G: number;\n R: number;\n RGB: string;\n val: number;\n}\n\nexport interface HMap {\n B: number;\n G: number;\n R: number;\n color: string;\n val: number;\n value: number | string;\n}\n\nexport default class WpsLegendBuilder {\n\n private http!: HTTPClient;\n private ssoStore!: SsoVuexModule;\n\n constructor(http: HTTPClient, ssoStore: SsoVuexModule) {\n this.http = http;\n this.ssoStore = ssoStore;\n }\n\n async buildWpsLegend(layer: LegendLayer) {\n const calcFunctionPromise = this.getCalcFunctionHeightmap(\n layer.layer_id,\n layer.layer_key\n );\n const layerInfoPromise = this.getLayerInfo(layer.csurl, layer.layer_name);\n\n const [calcFunction, layerInfo] = await Promise.all([calcFunctionPromise, layerInfoPromise]);\n\n const hcmObj = await this.getHcmObj(layer.csurl, layerInfo);\n const mapLegend = this.getHmapObj(hcmObj);\n\n const linear_gradient_colors = mapLegend.map(ml => ml.color).join(\",\");\n\n if (calcFunction != undefined && calcFunction != null) {\n await this.getRealValues(calcFunction, mapLegend)\n }\n\n return { mapLegend, linear_gradient_colors }\n }\n\n private getHmapObj(data: any): HMap[] {\n const numField = Number(data.HEIGHT_COLOR_MAP_INFO.HEIGHT_COLOR_MAP.FIELD_COUNT._text);\n const hMap: HMap[] = [];\n for (let i = 0; i < numField; i++) {\n const color = this.getColorsFromBGR(data.HEIGHT_COLOR_MAP_INFO.HEIGHT_COLOR_MAP.COLORS[\"C\" + i]._text);\n if (color) {\n hMap.push(\n {\n 'value': Number(data.HEIGHT_COLOR_MAP_INFO.HEIGHT_COLOR_MAP.HEIGHTS[\"H\" + i]._text),\n 'val': color.val,\n 'R': color.R,\n 'B': color.B,\n 'G': color.G,\n 'color': color.RGB\n });\n }\n }\n return hMap;\n }\n\n private getColorsFromBGR(color: any): Color | null {\n const result = /^0x?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(color);\n return result ?\n {\n B: parseInt(result[1], 16),\n G: parseInt(result[2], 16),\n R: parseInt(result[3], 16),\n RGB: \"#\" + color.substring(6, 8) + color.substring(4, 6) + color.substring(2, 4),\n val: parseInt(result[1], 16) + 256 * parseInt(result[2], 16) + 65536 * parseInt(result[3], 16)\n } : null;\n }\n\n private async getRealValues(calcFunction: string, mapLegend: HMap[]) {\n const responses = await Promise.all(mapLegend.map((ml) => this.getRealValue(calcFunction, ml.value)))\n\n for (let c = 0; c < mapLegend.length; c++) {\n mapLegend[c].value = responses[c];\n }\n }\n\n private convertToJson(xml: string) {\n return JSON.parse((convert.xml2json(xml, {\n compact: true,\n ignoreDeclaration: true\n })))\n }\n\n // API\n\n private async getCalcFunctionHeightmap(layer_id: number, layer_key: number) {\n const url = \"/siticatasto/dbgis-servlet/tl_data?svccode=portal/get_calc_function_heightmap\"\n const params = {\n lang: this.ssoStore.user?.locale,\n wms_id: layer_id,\n wms_layer_id: layer_key\n }\n\n const res = await this.http.get(url, { params });\n return res.data.services[0].entities.length > 0 ? res.data.services[0].calc_function : null;\n }\n\n private async getLayerInfo(wpsUrl: string, wpsSource?: string) {\n const url = wpsUrl;\n const params = {\n VERSION: \"1.0.0\",\n SERVICE: \"WPS\",\n REQUEST: \"Execute\",\n Identifier: \"GetLayerInfo\",\n RawDataOutput: \"XMLOutput\",\n DataInputs: `source=${wpsSource?.split(\";\")[0]}`\n }\n\n const res = await this.http.get(url, { params });\n\n const result = this.convertToJson(res.data);\n return result.Info.DataStore?.Style?._attributes?.hcm;\n }\n\n private async getHcmObj(wpsUrl: string, hcmId?: string) {\n const url = wpsUrl;\n let dataInputs = `msg=DownloadConf algoId=GetMap`;\n if (hcmId) {\n dataInputs += \" id=\" + hcmId;\n }\n const params = {\n VERSION: \"1.0.0\",\n SERVICE: \"WPS\",\n REQUEST: \"Execute\",\n Identifier: \"Administrate\",\n RawDataOutput: \"XMLOutput\",\n DataInputs: dataInputs\n }\n\n const res = await this.http.get(url, { params });\n\n const result = this.convertToJson(res.data);\n return result;\n }\n\n private async getRealValue(calc_function: string, code: number | string): Promise {\n const url = \"/siticatasto/dbgis-servlet/tl_data?svccode=portal/get_meteo_val_from_code\"\n const params = {\n calc_function,\n code\n }\n\n const res = await this.http.get(url, { params });\n return res.data.services[0].entities[0].val;\n }\n}\n"],"sourceRoot":""}