"use strict"; import { BASE_URL, QUERY_PARAMS_COMBINED } from "./src_modules/createUrl.js"; import { formatSensorThingsApiResponseForLineChart, drawLineChartHighcharts, } from "./src_modules/chartLine.js"; import { formatSensorThingsApiResponseForHeatMap, drawHeatMapHighcharts, } from "./src_modules/chartHeatmap.js"; import { formatSensorThingsApiResponseForScatterPlot, drawScatterPlotHighcharts, } from "./src_modules/chartScatterPlot.js"; import { formatDatastreamMetadataForChart, getMetadataPlusObservationsFromSingleOrMultipleDatastreams, calculateVorlaufMinusRuecklaufTemperature, } from "./src_modules/fetchData.js"; import { calculateSumOfObservationValuesWithinDatesInterval, calculateSumOfObservationValuesWithinMonthInterval, extractUniqueCalendarDatesFromTimestamp, extractUniqueCalendarMonthsFromCalendarDates, } from "./src_modules/aggregate.js"; /** * Test plotting of temp difference (dT) using heatmap */ const drawHeatmapHCUsingTempDifference = async function () { const [tempDifferenceObsArrBau225, tempDifferenceMetadataBau225] = await calculateVorlaufMinusRuecklaufTemperature( BASE_URL, QUERY_PARAMS_COMBINED, "225", "60min" ); drawHeatMapHighcharts( formatSensorThingsApiResponseForHeatMap(tempDifferenceObsArrBau225), formatDatastreamMetadataForChart(tempDifferenceMetadataBau225) ); }; /** * Test drawing of scatter plot chart */ const drawScatterPlotHCTest2 = async function () { const sensorsOfInterestArr = [ ["225", "vl", "60min"], // ["125", "rl", "60min"], ["weather_station_521", "outside_temp", "60min"], ]; const observationsPlusMetadata = await getMetadataPlusObservationsFromSingleOrMultipleDatastreams( BASE_URL, QUERY_PARAMS_COMBINED, sensorsOfInterestArr ); // Extract the combined arrays for observations and metadata const [observationsArr, metadataArr] = observationsPlusMetadata; // Create formatted array(s) for observations // This function expects two arguments, these are unpacked using the spread operator const formattedObsScatterPlotArr = formatSensorThingsApiResponseForScatterPlot(...observationsArr); // Create formatted array(s) for metadata const formattedMetadataArr = metadataArr.map((metadata) => formatDatastreamMetadataForChart(metadata) ); // This function expects three arguments, the second and third are unpacked using the spread operator drawScatterPlotHighcharts( formattedObsScatterPlotArr, ...formattedMetadataArr ); }; /** * Test drawing of line chart with multiple series */ const testLineChartMultipleSeries = async function () { const sensorsOfInterestArr = [ ["225", "vl", "60min"], ["125", "rl", "60min"], ["weather_station_521", "outside_temp", "60min"], ]; const observationsPlusMetadata = await getMetadataPlusObservationsFromSingleOrMultipleDatastreams( BASE_URL, QUERY_PARAMS_COMBINED, sensorsOfInterestArr ); // Extract the observations and metadata arrays const [observationsArr, metadataArr] = observationsPlusMetadata; // Format the observations and metadata const formattedObservationsArr = observationsArr.map((observations) => formatSensorThingsApiResponseForLineChart(observations) ); const formattedMetadataArr = metadataArr.map((metadata) => formatDatastreamMetadataForChart(metadata) ); drawLineChartHighcharts(formattedObservationsArr, formattedMetadataArr); }; /** * Test aggregation of observations from a single datastream */ const testAggregationSum = async function () { const sensorOfInterestNestedArr = [["225", "vl", "60min"]]; const observationsPlusMetadata = await getMetadataPlusObservationsFromSingleOrMultipleDatastreams( BASE_URL, QUERY_PARAMS_COMBINED, sensorOfInterestNestedArr ); // Extract the observations and metadata for each sensor // Array elements in same order as input array const [[obsSensorOneArr], [metadataSensorOne]] = observationsPlusMetadata; // Unique calendar dates const uniqueCalendarDates = extractUniqueCalendarDatesFromTimestamp(obsSensorOneArr); // Unique calendar months const uniqueCalendarMonths = extractUniqueCalendarMonthsFromCalendarDates(uniqueCalendarDates); // Calculate sum of values of observations - daily const observationsBau225VLSumDaily = uniqueCalendarDates.map((calendarDate) => calculateSumOfObservationValuesWithinDatesInterval( obsSensorOneArr, "60 min", calendarDate, calendarDate ) ); // Calculate sum of values of observations - monthly const observationsBau225VLSumMonthly = uniqueCalendarMonths.map( (calendarMonth) => calculateSumOfObservationValuesWithinMonthInterval( obsSensorOneArr, "60 min", calendarMonth ) ); console.log(observationsBau225VLSumDaily); console.log(observationsBau225VLSumMonthly); }; // drawScatterPlotHCTest2(); // drawHeatmapHCUsingTempDifference(); // testLineChartMultipleSeries() // testAggregationSum();