Commit 0258c397 authored by Kolokolnikova's avatar Kolokolnikova
Browse files

-refactoring

-local api data (buildinginformation) can be loaded
parent 2c28ad89
......@@ -110,174 +110,182 @@ function processData() {
fetchDataJSON().then(data => {
console.log(data);
document.getElementById("cesiumContainer").style.opacity = "1";
document.getElementById("loader").style.visibility = "hidden"
console.log("....received data")
calculateData(data);
}).catch(() => {
console.log("wird nix")
fetch("/3dclient4simstadtapi/public/test/APIdata/buildingInformation.json")
.then(response => response.text())
.then(text => calculateData( JSON.parse(text)))
})
}
var buildingsMAP = new Map()
data.buildings.forEach(bu => {
var partsArray = []
var surefacesArray = []
function calculateData(data){
console.log(data);
document.getElementById("cesiumContainer").style.opacity = "1";
document.getElementById("loader").style.visibility = "hidden"
console.log("....received data")
bu.parts.forEach(p =>
p.surfaces.forEach(s =>
surefacesArray.push(new Surface(s.id,
s.attributes.uValue,
s.attributes.totalSurfaceArea))))
var buildingsMAP = new Map()
bu.parts.forEach(p => partsArray.push(new Part(p.id,
surefacesArray,
p.attributes.volume,
p.attributes.height,
p.attributes.heatedVolume,
p.attributes.yearOfConstruction,
p.attributes.buildingFunction,
p.attributes.monthlyHeating,
p.attributes.monthlyCooling,
p.attributes.roofType)))
data.buildings.forEach(bu => {
buildingsMAP.set(bu.id, new Building(bu.id, partsArray)) //puts buildings with parts and surfaces in a map
var partsArray = []
var surefacesArray = []
})
bu.parts.forEach(p =>
p.surfaces.forEach(s =>
surefacesArray.push(new Surface(s.id,
s.attributes.uValue,
s.attributes.totalSurfaceArea))))
var partHeightMAP = new Map()
var partVolumeMAP = new Map()
var partHeatedVolumeMAP = new Map()
var partConstructionYearMAP = new Map()
var partBuildingTypeMAP = new Map()
var partMonthlyHeatingMAP = new Map()
var partMonthlyCoolingMAP = new Map()
var surfaceUValueMAP = new Map()
var partRoofTypeMAP = new Map()
var surfaceTotalSurfaceAreaMAP = new Map()
//fill height, heated volume and construction year map
buildingsMAP.forEach(b => {
b.parts.forEach(part => {
if (part.height !== undefined) {
partHeightMAP.set(part.id, part.height)
}
if (part.volume !== undefined) {
partVolumeMAP.set(part.id, part.volume)
}
if (part.heatedVolume !== undefined) {
partHeatedVolumeMAP.set(part.id, part.heatedVolume)
}
if (part.yearOfConstruction !== undefined && part.yearOfConstruction <= "2020") {
partConstructionYearMAP.set(part.id, part.yearOfConstruction)
}
if (part.buildingFunction !== undefined) {
partBuildingTypeMAP.set(part.id, part.buildingFunction)
}
if (part.monthlyHeating !== undefined) {
partMonthlyHeatingMAP.set(part.id, part.monthlyHeating)
}
if (part.monthlyCooling !== undefined) {
partMonthlyCoolingMAP.set(part.id, part.monthlyCooling)
}
if (part.roofType !== undefined) {
partRoofTypeMAP.set(part.id, part.roofType)
bu.parts.forEach(p => partsArray.push(new Part(p.id,
surefacesArray,
p.attributes.volume,
p.attributes.height,
p.attributes.heatedVolume,
p.attributes.yearOfConstruction,
p.attributes.buildingFunction,
p.attributes.monthlyHeating,
p.attributes.monthlyCooling,
p.attributes.roofType)))
buildingsMAP.set(bu.id, new Building(bu.id, partsArray)) //puts buildings with parts and surfaces in a map
})
var partHeightMAP = new Map()
var partVolumeMAP = new Map()
var partHeatedVolumeMAP = new Map()
var partConstructionYearMAP = new Map()
var partBuildingTypeMAP = new Map()
var partMonthlyHeatingMAP = new Map()
var partMonthlyCoolingMAP = new Map()
var surfaceUValueMAP = new Map()
var partRoofTypeMAP = new Map()
var surfaceTotalSurfaceAreaMAP = new Map()
//fill height, heated volume and construction year map
buildingsMAP.forEach(b => {
b.parts.forEach(part => {
if (part.height !== undefined) {
partHeightMAP.set(part.id, part.height)
}
if (part.volume !== undefined) {
partVolumeMAP.set(part.id, part.volume)
}
if (part.heatedVolume !== undefined) {
partHeatedVolumeMAP.set(part.id, part.heatedVolume)
}
if (part.yearOfConstruction !== undefined && part.yearOfConstruction <= "2020") {
partConstructionYearMAP.set(part.id, part.yearOfConstruction)
}
if (part.buildingFunction !== undefined) {
partBuildingTypeMAP.set(part.id, part.buildingFunction)
}
if (part.monthlyHeating !== undefined) {
partMonthlyHeatingMAP.set(part.id, part.monthlyHeating)
}
if (part.monthlyCooling !== undefined) {
partMonthlyCoolingMAP.set(part.id, part.monthlyCooling)
}
if (part.roofType !== undefined) {
partRoofTypeMAP.set(part.id, part.roofType)
}
part.surfaces.forEach(s => {
if (s.uValue !== undefined) {
surfaceUValueMAP.set(s.id, s.uValue)
}
part.surfaces.forEach(s => {
if (s.uValue !== undefined) {
surfaceUValueMAP.set(s.id, s.uValue)
}
})
//totalSurfaceArea
surfaceTotalSurfaceAreaMAP.set(part.id, part.surfaces)
})
//totalSurfaceArea
surfaceTotalSurfaceAreaMAP.set(part.id, part.surfaces)
})
})
//sort maps
const heightSort = new Map([...partHeightMAP.entries()].sort((a, b) => b[1] - a[1]));
const heatedVolumeSort = new Map([...partHeatedVolumeMAP.entries()].sort((a, b) => b[1] - a[1]));
const constructionYearSort = new Map([...partConstructionYearMAP.entries()].sort((a, b) => a[1] - b[1]));
const uValueSort = new Map([...surfaceUValueMAP.entries()].sort((a, b) => b[1] - a[1]));
//for Properties Single Buildings
buildingFunctionSortPick = new Map([...partBuildingTypeMAP.entries()].sort((a, b) => b[1] - a[1]));
constructionYearSortPick = new Map([...partConstructionYearMAP.entries()].sort((a, b) => a[1] - b[1]));
heightSortPick = new Map([...partHeightMAP.entries()].sort((a, b) => b[1] - a[1]));
heatedVolumeSortPick = new Map([...partHeatedVolumeMAP.entries()].sort((a, b) => b[1] - a[1]));
totalSurfaceAreaSortPick = new Map([...surfaceTotalSurfaceAreaMAP.entries()].sort((a, b) => b[1] - a[1]));
roofTypeSortPick = new Map([...partRoofTypeMAP.entries()].sort((a, b) => b[1] - a[1]));
uValueSortPick = new Map([...surfaceUValueMAP.entries()].sort((a, b) => b[1] - a[1]));
//fill arrays needed for charts
heightSort.forEach((value, key) => addHeightInfosToArrays(key, value))
heatedVolumeSort.forEach((value, key) => addHeatedVolumeInfosToArrays(key, value))
constructionYearSort.forEach((value) => yearOfConstructionValues.push(value))
partBuildingTypeMAP.forEach((value) => buildingTypeValues.push(value))
partMonthlyHeatingMAP.forEach((valueArray, key) => yearlyHeatingDemand(key, valueArray))
partMonthlyCoolingMAP.forEach((valueArray, key) => yearlyCoolingDemand(key, valueArray))
uValueSort.forEach((value, key) => {
uValueSurfaces(key, value)
uValuesAll.push(value)
})
//sort maps
const heightSort = new Map([...partHeightMAP.entries()].sort((a, b) => b[1] - a[1]));
const heatedVolumeSort = new Map([...partHeatedVolumeMAP.entries()].sort((a, b) => b[1] - a[1]));
const constructionYearSort = new Map([...partConstructionYearMAP.entries()].sort((a, b) => a[1] - b[1]));
const uValueSort = new Map([...surfaceUValueMAP.entries()].sort((a, b) => b[1] - a[1]));
//for Properties Single Buildings
buildingFunctionSortPick = new Map([...partBuildingTypeMAP.entries()].sort((a, b) => b[1] - a[1]));
constructionYearSortPick = new Map([...partConstructionYearMAP.entries()].sort((a, b) => a[1] - b[1]));
heightSortPick = new Map([...partHeightMAP.entries()].sort((a, b) => b[1] - a[1]));
heatedVolumeSortPick = new Map([...partHeatedVolumeMAP.entries()].sort((a, b) => b[1] - a[1]));
totalSurfaceAreaSortPick = new Map([...surfaceTotalSurfaceAreaMAP.entries()].sort((a, b) => b[1] - a[1]));
roofTypeSortPick = new Map([...partRoofTypeMAP.entries()].sort((a, b) => b[1] - a[1]));
uValueSortPick = new Map([...surfaceUValueMAP.entries()].sort((a, b) => b[1] - a[1]));
//fill arrays needed for charts
heightSort.forEach((value, key) => addHeightInfosToArrays(key, value))
heatedVolumeSort.forEach((value, key) => addHeatedVolumeInfosToArrays(key, value))
constructionYearSort.forEach((value) => yearOfConstructionValues.push(value))
partBuildingTypeMAP.forEach((value) => buildingTypeValues.push(value))
partMonthlyHeatingMAP.forEach((valueArray, key) => yearlyHeatingDemand(key, valueArray))
partMonthlyCoolingMAP.forEach((valueArray, key) => yearlyCoolingDemand(key, valueArray))
uValueSort.forEach((value, key) => {
uValueSurfaces(key, value)
uValuesAll.push(value)
})
partMonthlyHeatingMAP.forEach((value, key) => addmonthlyHeatingInfosToArrays(key, value))
partMonthlyCoolingMAP.forEach((value, key) => addmonthlyCoolingInfosToArrays(key, value))
partVolumeMAP.forEach((value, key) => addVolumeValues(key, value))
//calculates year of construction frequency
yearFrequency()
//calculates building type frequency
buildingTypeFrequency()
//calculates uValue frequency
uValueFrequency()
//sorts yearly heating & cooling demand for charts
sortMap()
//disables attributes in chart without values
availableAttributes()
//color buildings with heating demand
document.getElementById("checkbox2").addEventListener("change", function () {
if (this.checked) {
tileContent.forEach(t => {
let tileID = t.getProperty("gml_parent_id")
let tileColor = heatingIDColorMAP.get(tileID)
if (tileColor !== undefined) {
t.color = Cesium.Color.fromCssColorString(tileColor)
} else {
t.color = new Cesium.Color(1, 1, 1, 1)
}
})
console.log("colored")
} else {
tileContent.forEach(t => t.color = new Cesium.Color(1, 1, 1, 1))
console.log("not colored")
}
})
partMonthlyHeatingMAP.forEach((value, key) => addmonthlyHeatingInfosToArrays(key, value))
partMonthlyCoolingMAP.forEach((value, key) => addmonthlyCoolingInfosToArrays(key, value))
partVolumeMAP.forEach((value, key) => addVolumeValues(key, value))
//color surfaces with uValue
document.getElementById("checkbox1").addEventListener("change", function () {
if (this.checked) {
tileContent.forEach(t => {
let tileID = t.getProperty("gml_id")
let tileColor = surfaceIDColorMAP.get(tileID)
if (tileColor !== undefined) {
t.color = Cesium.Color.fromCssColorString(tileColor)
} else {
t.color = new Cesium.Color(1, 1, 1, 1)
}
})
console.log("colored")
} else {
tileContent.forEach(t => t.color = new Cesium.Color(1, 1, 1, 1))
console.log("not colored")
}
})
//calculates year of construction frequency
yearFrequency()
//calculates building type frequency
buildingTypeFrequency()
//calculates uValue frequency
uValueFrequency()
}).catch((err) => {
console.log(err)
//sorts yearly heating & cooling demand for charts
sortMap()
//disables attributes in chart without values
availableAttributes()
//color buildings with heating demand
document.getElementById("checkbox2").addEventListener("change", function () {
if (this.checked) {
tileContent.forEach(t => {
let tileID = t.getProperty("gml_parent_id")
let tileColor = heatingIDColorMAP.get(tileID)
if (tileColor !== undefined) {
t.color = Cesium.Color.fromCssColorString(tileColor)
} else {
t.color = new Cesium.Color(1, 1, 1, 1)
}
})
console.log("colored")
} else {
tileContent.forEach(t => t.color = new Cesium.Color(1, 1, 1, 1))
console.log("not colored")
}
})
//color surfaces with uValue
document.getElementById("checkbox1").addEventListener("change", function () {
if (this.checked) {
tileContent.forEach(t => {
let tileID = t.getProperty("gml_id")
let tileColor = surfaceIDColorMAP.get(tileID)
if (tileColor !== undefined) {
t.color = Cesium.Color.fromCssColorString(tileColor)
} else {
t.color = new Cesium.Color(1, 1, 1, 1)
}
})
console.log("colored")
} else {
tileContent.forEach(t => t.color = new Cesium.Color(1, 1, 1, 1))
console.log("not colored")
}
})
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment