Commit dd0fbc6d authored by Sven Schneider's avatar Sven Schneider
Browse files

continued but not finished working on getting data from several buildings

parent 01d1be71
"use strict";
// Functions
import {
aggregateResponse,
......@@ -29,6 +30,7 @@ import {
} from "./appChart.js";
var ALLDATA = [];
var bld = 0;
Cesium.Ion.defaultAccessToken =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyODgxYzJlNi1kNDZiLTQ3ZmQtYmUxYy0yMWI0OGM3NDA5MzAiLCJpZCI6NDczOSwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU0MTUyMzU0MX0.shj2hM3pvsvcmE_wMb2aBDuk_cKWmFmbolltInGImwU";
......@@ -251,6 +253,8 @@ const activate3DTileFeaturePicking = function() {
selected.feature.color = selected.originalColor;
selected.feature = undefined;
}
ALLDATA = [];
cnt = 0;
// Pick a new feature
const pickedFeature = viewer.scene.pick(movement.position);
if (!Cesium.defined(pickedFeature)) {
......@@ -324,7 +328,8 @@ const activate3DTileFeaturePicking = function() {
const BUILDING_STREAM_ID = [75, 76, 77, 78, 79, 80];
const BUILDING_ID = ["101", "102", "107", "112, 118", "125", "225"];
// ALLDATA = [];
var bld = 0;
var cnt = 0;
for (bld = 0; bld < BUILDING_STREAM_ID.length; bld++) {
......@@ -353,9 +358,9 @@ const activate3DTileFeaturePicking = function() {
combinedObservations.push(...dataArrays);
});
// DEBUG: Check total number of observations
console.log(combinedObservations.length);
// console.log(combinedObservations.length);
// DEBUG: Print the array of observations
console.log(combinedObservations);
// console.log(combinedObservations);
return combinedObservations;
})
......@@ -366,31 +371,34 @@ const activate3DTileFeaturePicking = function() {
.then((observationArr) => {
var agg = aggregateResponse(observationArr, 0, 'mean');
var tmpObj = {
id: BUILDING_ID[bld],
streamID: BUILDING_STREAM_ID[bld],
BldID: BUILDING_ID[cnt],
streamID: BUILDING_STREAM_ID[cnt],
timestamp: agg.aggDates,
data: agg.aggVals,
};
ALLDATA.push(tmpObj);
// console.log(agg);
drawHeatMapHC(formatSTAResponseForHeatMap(agg.originalFormat));
drawLineChartHC(formatSTAResponseForLineChart(agg.originalFormat));
console.log(ALLDATA.length);
var selectedDate = document.getElementById("DateSelected").innerHTML;
var date = new Date(
Date.parse(
switchDayMonth_inDate(selectedDate)
)
);
if (ALLDATA.length == 6) {
var selectedDate = document.getElementById("DateSelected").innerHTML;
var p = whereIsDateInArray(ALLDATA[0].timestamp, date);
if (p == -1)
console.log('date not found in date array');
else
console.log('date found at position' + p);
var date = new Date(
Date.parse(
switchDayMonth_inDate(selectedDate)
)
);
console.log(date);
var p = whereIsDateInArray(ALLDATA[0].timestamp, date);
const DATA = getDataForAllBuildingsPerDate(p);
colorBlds(DATA);
console.log(date);
}
console.log(ALLDATA.length);
cnt++
// alert('waiting...');
});
......@@ -399,8 +407,135 @@ const activate3DTileFeaturePicking = function() {
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
};
activate3DTileFeaturePicking();
\ No newline at end of file
activate3DTileFeaturePicking();
function goon(ALLDATA) {
if (ALLDATA.length > 0) {
var selectedDate = document.getElementById("DateSelected").innerHTML;
var date = new Date(
Date.parse(
switchDayMonth_inDate(selectedDate)
)
);
var p = whereIsDateInArray(ALLDATA[0].timestamp, date);
const DATA = getDataForAllBuildingsPerDate(p);
colorBlds(DATA);
console.log(date);
}
}
// /**
// *
// * @param {Number} datePos
// */
export const getDataForAllBuildingsPerDate = function(datePos) {
var dataObjPerBld = [];
var dataArray = [];
for (var i = 0; i < ALLDATA.length; i++) {
var tmp = {
BldId: ALLDATA[i].BldID,
dateVal: ALLDATA[i].timestamp[datePos],
dataVal: ALLDATA[i].data[datePos]
};
dataArray.push(tmp.dataVal);
dataObjPerBld.push(tmp);
}
return {
dataPerBld: dataObjPerBld,
dataArray: dataArray
};
}
export const colorBlds = function(bldInfo) {
// see: https://github.com/PimpTrizkit/PJs/wiki/12.-Shade,-Blend-and-Convert-a-Web-Color-(pSBC.js)
const RGB_Linear_Blend = (p, c0, c1) => {
var i = parseInt,
r = Math.round,
P = 1 - p,
[a, b, c, d] = c0.split(","),
[e, f, g, h] = c1.split(","),
x = d || h,
j = x ? "," + (!d ? h : !h ? d : r((parseFloat(d) * P + parseFloat(h) * p) * 1000) / 1000 + ")") : ")";
return "rgb" + (x ? "a(" : "(") + r(i(a[3] == "a" ? a.slice(5) : a.slice(4)) * P + i(e[3] == "a" ? e.slice(5) : e.slice(4)) * p) + "," + r(i(b) * P + i(f) * p) + "," + r(i(c) * P + i(g) * p) + d;
}
// get the gradient colors between the two defined colors;
const c1 = "rgb(255,64,0)";
const c2 = "rgb(63,131,163)";
var L = bldInfo.dataArray.length;
var offset = 1 / (L - 1);
var colorsForBld = [];
var p = 0;
for (var i = 0; i < L; i++) {
var cnew = RGB_Linear_Blend(p, c1, c2);
cnew = cnew.replace('undefined', ')');
colorsForBld.push(cnew);
p += offset;
console.log(p);
}
var numbers = bldInfo.dataArray,
ma = numbers.reduce(function(a, b) { return Math.max(a, b); }),
mi = numbers.reduce(function(a, b) { return Math.min(a, b); }),
dif = ma - mi,
l = numbers.length,
i;
for (i = 0; i < l; i++) {
numbers[i] = (numbers[i] - mi) / dif;
}
function sortWithIndeces(toSort) {
for (var i = 0; i < toSort.length; i++) {
toSort[i] = [toSort[i], i];
}
toSort.sort(function(left, right) {
return left[0] < right[0] ? -1 : 1;
});
toSort.sortIndices = [];
for (var j = 0; j < toSort.length; j++) {
toSort.sortIndices.push(toSort[j][1]);
toSort[j] = toSort[j][0];
}
return toSort;
}
sortWithIndeces(numbers);
// alert(numbers.sortIndices.join(","));
var sortedIndices = numbers.sortIndices;
// convert object to array
var i = 0,
arr = [];
for (var ob in inputObj)
arr[i++] = ob;
// numbers = (6)[0.37684400819550146, 0, 0.5862015830883935, 1, 0.444816858861194, 0.9179110359561272],
console.log(numbers);
// assign the color to the buildings based on their id
// var sortedValues = bldInfo.dataArray.sort
// if (!Cesium.defined(name)) {
// name = pickedFeature.getProperty("id");
// }
}
\ No newline at end of file
Markdown is supported
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