Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
iCity
EnergyDashboard
Commits
d144b3ea
Commit
d144b3ea
authored
Jul 09, 2021
by
Pithon Kabiro
Browse files
New function: observations from multiple datastreams
parent
896da742
Changes
2
Hide whitespace changes
Inline
Side-by-side
public/js/appCesium.js
View file @
d144b3ea
...
...
@@ -13,7 +13,7 @@ import {
}
from
"
./appChart.js
"
;
// Constants
import
{
BASE_URL
,
PARAM_OBJ
}
from
"
./appChart.js
"
;
import
{
BASE_URL
,
QUERY_PARAMS_COMBINED
}
from
"
./appChart.js
"
;
Cesium
.
Ion
.
defaultAccessToken
=
"
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyODgxYzJlNi1kNDZiLTQ3ZmQtYmUxYy0yMWI0OGM3NDA5MzAiLCJpZCI6NDczOSwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU0MTUyMzU0MX0.shj2hM3pvsvcmE_wMb2aBDuk_cKWmFmbolltInGImwU
"
;
...
...
@@ -160,9 +160,9 @@ const loadDetailedBuilding225 = function () {
// Default case: load only 3dTiles
// Alternative case: load 3dTiles + glTF
!
LOAD_DETAILED_BLDG225
?
load
Non
DetailedBuilding225
()
:
loadDetailedBuilding225
();
LOAD_DETAILED_BLDG225
?
loadDetailedBuilding225
()
:
load
Non
DetailedBuilding225
();
/**
* Activate feature picking for the displayed 3DTiles
...
...
@@ -307,7 +307,7 @@ const activate3DTileFeaturePicking = function () {
// Get "ALL" the Observations that satisfy our query
getCombinedObservationsFromAllNextLinks
(
axiosGetRequest
(
URL_OBSERVATIONS
,
PARAM_OBJ
)
axiosGetRequest
(
URL_OBSERVATIONS
,
QUERY_PARAMS_COMBINED
)
)
.
then
((
observationArr
)
=>
{
drawHeatMapHC
(
formatSTAResponseForHeatMap
(
observationArr
));
...
...
public/js/appChart.js
View file @
d144b3ea
...
...
@@ -106,15 +106,18 @@ const createTemporalFilterString = function (dateStart, dateStop) {
};
// const BASE_URL_OBSERVATIONS = getObservationsUrl(80);
const
PARAM_RESULT_FORMAT
=
"
dataArray
"
;
const
PARAM_ORDER_BY
=
"
phenomenonTime asc
"
;
const
PARAM_FILTER
=
createTemporalFilterString
(
"
2020-01-01
"
,
"
2021-01-01
"
);
const
PARAM_SELECT
=
"
result,phenomenonTime
"
;
export
const
PARAM_OBJ
=
{
"
$resultFormat
"
:
PARAM_RESULT_FORMAT
,
"
$orderBy
"
:
PARAM_ORDER_BY
,
"
$filter
"
:
PARAM_FILTER
,
"
$select
"
:
PARAM_SELECT
,
const
QUERY_PARAM_RESULT_FORMAT
=
"
dataArray
"
;
const
QUERY_PARAM_ORDER_BY
=
"
phenomenonTime asc
"
;
const
QUERY_PARAM_FILTER
=
createTemporalFilterString
(
"
2020-01-01
"
,
"
2021-01-01
"
);
const
QUERY_PARAM_SELECT
=
"
result,phenomenonTime
"
;
export
const
QUERY_PARAMS_COMBINED
=
{
"
$resultFormat
"
:
QUERY_PARAM_RESULT_FORMAT
,
"
$orderBy
"
:
QUERY_PARAM_ORDER_BY
,
"
$filter
"
:
QUERY_PARAM_FILTER
,
"
$select
"
:
QUERY_PARAM_SELECT
,
};
/**
...
...
@@ -338,13 +341,13 @@ const followNextLink = function (responsePromise) {
/**
* Retrieve all the Observations from a Datastream after traversing all the "@iot.nextLink" links
* @async
* @param {Promise}
g
etRequestPromise Promise object resulting from an Axios GET request
* @returns {Promise} A promise that contains an array of
o
bservations when fulfilled
* @param {Promise}
httpG
etRequestPromise Promise object resulting from an Axios GET request
* @returns {Promise} A promise that contains an array of
O
bservations
from a single Datastream
when fulfilled
*/
export
const
getCombinedObservationsFromAllNextLinks
=
function
(
g
etRequestPromise
httpG
etRequestPromise
)
{
return
followNextLink
(
g
etRequestPromise
)
return
followNextLink
(
httpG
etRequestPromise
)
.
then
((
success
)
=>
{
const
successValue
=
success
.
data
.
value
;
// Array that will hold the combined observations
...
...
@@ -363,3 +366,114 @@ export const getCombinedObservationsFromAllNextLinks = function (
console
.
log
(
err
);
});
};
// Datastreams IDs
const
building101_DatastreamId_RL
=
getDatastreamIdFromBuildingNumber
(
"
101
"
,
"
rl
"
,
"
60min
"
);
const
building102_DatastreamId_RL
=
getDatastreamIdFromBuildingNumber
(
"
102
"
,
"
rl
"
,
"
60min
"
);
const
building107_DatastreamId_RL
=
getDatastreamIdFromBuildingNumber
(
"
107
"
,
"
rl
"
,
"
60min
"
);
const
building112_DatastreamId_RL
=
getDatastreamIdFromBuildingNumber
(
"
112, 118
"
,
"
rl
"
,
"
60min
"
);
const
building125_DatastreamId_RL
=
getDatastreamIdFromBuildingNumber
(
"
125
"
,
"
rl
"
,
"
60min
"
);
const
building225_DatastreamId_RL
=
getDatastreamIdFromBuildingNumber
(
"
225
"
,
"
rl
"
,
"
60min
"
);
// Datastream URLs
const
urlObservationsBuilding101_RL
=
getObservationsUrl
(
BASE_URL
,
building101_DatastreamId_RL
);
const
urlObservationsBuilding102_RL
=
getObservationsUrl
(
BASE_URL
,
building102_DatastreamId_RL
);
const
urlObservationsBuilding107_RL
=
getObservationsUrl
(
BASE_URL
,
building107_DatastreamId_RL
);
const
urlObservationsBuilding112_RL
=
getObservationsUrl
(
BASE_URL
,
building112_DatastreamId_RL
);
const
urlObservationsBuilding125_RL
=
getObservationsUrl
(
BASE_URL
,
building125_DatastreamId_RL
);
const
urlObservationsBuilding225_RL
=
getObservationsUrl
(
BASE_URL
,
building225_DatastreamId_RL
);
// Promise objects - Observations / RL
const
observationsPromise101_RL
=
getCombinedObservationsFromAllNextLinks
(
axiosGetRequest
(
urlObservationsBuilding101_RL
,
QUERY_PARAMS_COMBINED
)
);
const
observationsPromise102_RL
=
getCombinedObservationsFromAllNextLinks
(
axiosGetRequest
(
urlObservationsBuilding102_RL
,
QUERY_PARAMS_COMBINED
)
);
const
observationsPromise107_RL
=
getCombinedObservationsFromAllNextLinks
(
axiosGetRequest
(
urlObservationsBuilding107_RL
,
QUERY_PARAMS_COMBINED
)
);
const
observationsPromise112_RL
=
getCombinedObservationsFromAllNextLinks
(
axiosGetRequest
(
urlObservationsBuilding112_RL
,
QUERY_PARAMS_COMBINED
)
);
const
observationsPromise125_RL
=
getCombinedObservationsFromAllNextLinks
(
axiosGetRequest
(
urlObservationsBuilding125_RL
,
QUERY_PARAMS_COMBINED
)
);
const
observationsPromise225_RL
=
getCombinedObservationsFromAllNextLinks
(
axiosGetRequest
(
urlObservationsBuilding225_RL
,
QUERY_PARAMS_COMBINED
)
);
const
observationsPromiseCombined225_RL
=
[
observationsPromise101_RL
,
observationsPromise102_RL
,
observationsPromise107_RL
,
observationsPromise112_RL
,
observationsPromise125_RL
,
observationsPromise225_RL
,
];
/**
* Retrieve all the Observations from an array of Observations promises
* @async
* @param {Promise} observationPromiseArray A promise that contains an array of observations when fulfilled
* @returns {Promise} A promise that contains an array of Observations from multiple Datastreams when fulfilled
*/
const
getObservationsFromMultipleDatastreams
=
async
function
(
observationPromiseArray
)
{
// Array to store our final result
const
observationsAllDatastreamsArr
=
[];
// Use for/of loop - we need to maintain the order of execution of the async operations
for
(
const
observationPromise
of
observationPromiseArray
)
{
try
{
// Observations from a single Datastream
const
observations
=
await
observationPromise
;
observationsAllDatastreamsArr
.
push
(
observations
);
}
catch
(
err
)
{
console
.
log
(
err
);
}
}
return
observationsAllDatastreamsArr
;
};
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment