diff --git a/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.html b/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.html index 25a766fe650679193721e4212965ad9f86f05e09..c8cc1bf38de9f56e0ebe53e24ca02d19a9023984 100644 --- a/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.html +++ b/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.html @@ -25,11 +25,20 @@ <button style="left:10px" id="erase_run_btn" (click)="erase_run();">Erase</button> <button style="left:10px" id="show_run_btn" (click)="printPnts();">Show</button> </div> + <div class="row" style="top:60px;position:absolute;left:30px"> + New GeoJSON: <select id="newgeojson_combo" style="width:250px"></select> + <button style="left:10px" id="show_newgeojson" (click)="printNewGeoJSON();">Show</button> + </div> </div> <div class="control_box button_box" id="control_help" style='width:300px;'> - <button (click)="openInstructions()"> Help</button> - <button id="update_runs_btn" (click)="update_runs();">Update</button> + <!-- + <div class="row" style="padding-left:15px"> + <button style="width:139px" (click)="openInstructions()"> Help</button> + <button style="width:139px" id="update_runs_btn" (click)="update_runs();">Update</button> + </div>--> + <button (click)="openInstructions()"> Help</button> + <button id="update_runs_btn" (click)="update_runs();">Update</button> <button id="upload_geojson_btn" (click)="upload_geojson();">Upload GEOJSON to Storage</button> <button id="download_run_btn" (click)="downloadPnts();">Download</button> </div> @@ -141,4 +150,26 @@ </div> </div> </div> +</div> + +<div class="modal" id="newNewGeoJSONModal" style='display:none;z-index:2000'> + <div class="modal-content" style="width:80%;height:170px"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close" (click)="closenewNewGeoJSONModal();"> + <span aria-hidden="true">×</span> + </button> + <div class="modal-header"> + + </div> + <div class="modal-body" style="width:100%;height:100%"> + <div class="form-title text-center mb-2" style="width:100%;height:95%"> + <div id='top-right' style='height:100%;width:100%;margin-top:5px'> + <div class="row" id="loginModalTitle2"><strong>Process New GeoJSON:</strong></div> + <div class="row" id="nameNGJ">name</div> + </div> + </div> + </div> + <div style="position:absolute;bottom:10px;"> + <button (click)="process_newgeojson();">Submit</button> + </div> + </div> </div> \ No newline at end of file diff --git a/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.ts b/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.ts index 305ff4299d1d0a80099d96186795f01e9e42f6e2..714012e6979705adf67a5a3f043c42cde5dc3c78 100644 --- a/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.ts +++ b/src/app/pages/tecnalia-module/noise-comp/noise-comp.component.ts @@ -60,6 +60,8 @@ export class NoiseCompComponent implements OnInit { public filename:String; public trafficFilename:String; public map_names = []; + public newgeojson_names = []; + public newgeojsons = []; public model_names = []; public traffic_names = []; public static newSquareLayer; @@ -286,6 +288,27 @@ export class NoiseCompComponent implements OnInit { //document.getElementById("mapasCB").value = -1; } + getNewGeoJSONS0(data,ttype){ + var select = document.getElementById("newgeojson_combo"); + select.innerHTML = ""; + console.log('getNewGeoJSONS0::: data='+JSON.stringify(data)); + this.newgeojson_names = []; + for(var i = 0; i < data.length; i++) { + console.log("getNewGeoJSONS0::: data["+i+"]="+JSON.stringify(data[i])); + var opt = data[i]; + var el = document.createElement("option"); + el.textContent = i+": "+opt["name"]; + this.newgeojson_names.push(opt["name"]); + this.newgeojsons.push(opt); + el.value = i+""; + console.log("getNewGeoJSONS0::: value="+el.value); + select.appendChild(el); + }; + if ( ttype === 1 ){ + this.getMapsFromDB(ttype); + } + console.log("getNewGeoJSONS0::: success data="+JSON.stringify(data)); + } getModelsFromDB0(data, ttype){ console.log('getModelsFromDB0='+JSON.stringify(data)); @@ -482,6 +505,66 @@ export class NoiseCompComponent implements OnInit { } } + printNewGeoJSON(){ + let sel = document.getElementById('newgeojson_combo') as HTMLSelectElement; + console.log('printNewGeoJSON::: value =\t'+sel.value); + console.log('printNewGeoJSON::: valueI=\t'+parseInt(sel.value)); + if ( parseInt(sel.value) !== -1 ){ + let ps = this.pnts[this.gidx]; + let vl = this.vals63[this.gidx]; + + if ( ps != null ){ + console.log('printPnts::: ps.length='+ps.length); + } + if ( vl != null ){ + console.log('printPnts::: vl.length='+vl.length); + } + let max = this.getMax(vl); + console.log('printPnts::: max(vl)='+max); + let qs = this.getQuantiles(vl); + console.log('db.js.printPnts::: qs='+qs); + for(let j=0;j<this.marks.length;j++){ + this.map.removeLayer(this.marks[j]); + } + if ( this.legend instanceof L.Control ){ + let ddiv = document.getElementById('legend_div'); + ddiv.parentNode.removeChild(ddiv); + ddiv.innerHTML = ''; + this.legend.remove; + } + this.marks =[]; + if ( ps != null ){ + for(let j=0;j<ps.length;j++){ + let mark = L.circle(ps[j], {radius: 2, color: this.getClr2(vl,j,qs), opacity:.5}).addTo(this.map); + this.marks.push(mark); + } + } + this.legend = new L.Control({position: 'bottomleft'}); + this.legend.onAdd = function (map) { + var div = L.DomUtil.create('div', 'info legend'); + div.id = 'legend_div'; + div.style.background = '#C0C0C0DD'; + div.style.width = '150px'; + div.style.paddingTop = '10px'; + div.style.paddingBottom = '20px'; + let labels = []; + div.innerHTML += + labels.push('<div style="width:25px;height:12px;padding-left:10px;white-space:nowrap;"><div style="width:25px;height:20px;background:#303030"></div><label style="position:absolute;left:45px;top:12px"> ≤ '+qs[0].toFixed(2)+'</label></div>'); + for (let i = 0; i < qs.length-1; i++) { + let vv = qs[i].toFixed(2) + ' ↔ ' + qs[i+1].toFixed(2); + div.innerHTML += + labels.push('<div style="width:25px;height:12px;padding-left:10px;white-space:nowrap;"><div style="width:25px;height:20px;background:' + NoiseCompComponent.colors[i] + '"></div><label style="position:absolute;left:45px;top:' + (12 + 30 * (i+1)) + 'px">' + vv + '</label></div>'); + } + let i = qs.length-1; + div.innerHTML += + labels.push('<div style="width:25px;height:12px;padding-left:10px;white-space:nowrap;"><div style="width:25px;height:20px;background:' + NoiseCompComponent.colors[i] + '"></div><label style="position:absolute;left:45px;top:' + (12 + 30 * (i+1)) + 'px"> ≥ '+qs[i].toFixed(2)+'</label></div>'); + div.innerHTML = labels.join('<br>'); + return div; + }; + this.legend.addTo(this.map); + } + } + getModelsFromDB(ttype){ this.getNoiseComputationService.getModels().subscribe(res => this.getModelsFromDB0(res,ttype), err => console.log("getModelsFromDB::: ERROR: err="+err)); } @@ -494,6 +577,10 @@ export class NoiseCompComponent implements OnInit { this.getNoiseComputationService.getMaps().subscribe(res => this.getMapsFromDB0(res,ttype), err => console.log("getMapsFromDB::: ERROR: err="+err)); } + getNewGeoJSONsFromDB(ttype){ + this.getNoiseComputationService.getNewGeoJSONs().subscribe(res => this.getNewGeoJSONS0(res,ttype), err => console.log("getMapsFromDB::: ERROR: err="+err)); + } + new_map(){ document.getElementById('newMapModal').style.display = 'block'; let ele1 = document.getElementById('map_combo') as HTMLSelectElement; @@ -508,7 +595,8 @@ export class NoiseCompComponent implements OnInit { let bbox = JSON.parse(ele1.options[ele1.selectedIndex].value.split('#')[1]); let sw = []; sw.push(bbox[1]); - sw.push(bbox[0]); + sw.push(bbox + [0]); let ne = []; ne.push(bbox[3]); ne.push(bbox[2]); @@ -543,7 +631,7 @@ export class NoiseCompComponent implements OnInit { } update_runs(){ - this.getMapsFromDB(1); + this.getNewGeoJSONsFromDB(1); } closeNewMapModal(){ @@ -640,10 +728,21 @@ export class NoiseCompComponent implements OnInit { let name = "noise_computation_"+sel.value+"_"+dt.getTime(); console.log("upload_geojson::: name="+name); this.putGeoJSONService.putGeoJSON(geojson,name,this.city).subscribe( - res => {alert('geojson '+name+' added to storage.'); console.log("putGeoJSONService: SUCESS::: res="+JSON.stringify(res))}, + res => { + document.getElementById('nameNGJ').innerHTML = name; + document.getElementById('newNewGeoJSONModal').style.display = "block"; + /* + alert("\<html\>\<body\>\<h1\>this is alert heading\</h1\>\</html\>\</body\>"); + alert("geojson "+name+" added to storage.\n"+ + "<button id='process_geojson_btn' (click)='process_geojson();'>Process GEOJSON</button>" + ); + console.log("putGeoJSONService: SUCESS::: res="+JSON.stringify(res)) + */ + }, err => {alert('ERROR!!!\ngeojson '+name+' NOT added to storage.');console.log("putGeoJSONService: ERROR::: err="+JSON.stringify(err));} ); } + clear_newmap(){ if ( NoiseCompComponent.newSquareLayer != null ){ NoiseCompComponent.newmap.removeLayer(NoiseCompComponent.newSquareLayer); @@ -652,4 +751,14 @@ export class NoiseCompComponent implements OnInit { let ele:HTMLInputElement = document.getElementById("newMapName") as HTMLInputElement; ele.value =""; } + + process_newgeojson(){ + let filename = document.getElementById('nameNGJ').innerHTML; + console.log("process_newgeojson::: filename="+filename); + console.log("process_newgeojson::: should call to end point"); + } + + closenewNewGeoJSONModal(){ + document.getElementById("newNewGeoJSONModal").style.display = "none"; + } } diff --git a/src/app/pages/tecnalia-module/services/get-noisecomputation.service.ts b/src/app/pages/tecnalia-module/services/get-noisecomputation.service.ts index 0db1710cba4b2f55149a7b8a758214264de61e31..f0b542c343891cba4e3636aa4172fba5780842af 100644 --- a/src/app/pages/tecnalia-module/services/get-noisecomputation.service.ts +++ b/src/app/pages/tecnalia-module/services/get-noisecomputation.service.ts @@ -20,6 +20,10 @@ export class GetNoiseComputationService{ return this.http.get<any>(`${this.apiURL}/webresources/getData/getMaps`); } + getNewGeoJSONs(): Observable<any> { + return this.http.get<any>(`${this.apiURL}/webresources/getData/getNewGeoJSONs`); + } + getTraffics(): Observable<any> { return this.http.get<any>(`${this.apiURL}/webresources/getData/getTraffics`); } @@ -44,6 +48,7 @@ export class GetNoiseComputationService{ let content = JSON.stringify(input); return this.http.put<any>(`${this.apiURL}/webresources/putCommands/createModel`,content); } + eraseModel(input:any): Observable<any> { let content = JSON.stringify(input); return this.http.put<any>(`${this.apiURL}/webresources/putCommands/eraseModel`,content);