Add data_visualization/js/dataHandler.js
This commit is contained in:
parent
b99d16330e
commit
3dfa8d1208
1 changed files with 66 additions and 0 deletions
66
data_visualization/js/dataHandler.js
Normal file
66
data_visualization/js/dataHandler.js
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/**
|
||||
* Modul: dataHandler
|
||||
* Rolle: data_processing
|
||||
* Beschreibung: Transformiert rohe API-Daten und wendet Filter an.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Formatiert die rohen API-Daten in ein diagrammkompatibles Format.
|
||||
*
|
||||
* @param {Array<Object>} apiData - Array der Messdatensätze von der API
|
||||
* @returns {Array<Object>} - Transformiertes Datenarray: [{ time, temperature, humidity, brightness }]
|
||||
*/
|
||||
export function processData(apiData = []) {
|
||||
if (!Array.isArray(apiData)) return [];
|
||||
|
||||
return apiData.map(entry => {
|
||||
const { timestamp, temperature, humidity, brightness } = entry;
|
||||
|
||||
// Sicherstellung der Typkonsistenz
|
||||
const parsedTime = new Date(timestamp);
|
||||
return {
|
||||
time: isNaN(parsedTime.getTime()) ? null : parsedTime,
|
||||
temperature: typeof temperature === 'number' ? temperature : null,
|
||||
humidity: typeof humidity === 'number' ? humidity : null,
|
||||
brightness: typeof brightness === 'number' ? brightness : null
|
||||
};
|
||||
}).filter(item => item.time !== null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filtert die prozessierten Daten anhand von Benutzerkriterien.
|
||||
*
|
||||
* @param {Array<Object>} data - Die zuvor verarbeiteten Daten (von processData)
|
||||
* @param {Object} filters - Filterparameter, z.B. { startTime, endTime, iso, exposureTime }
|
||||
* @returns {Array<Object>} - Gefilterte Daten
|
||||
*/
|
||||
export function applyFilters(data = [], filters = {}) {
|
||||
if (!Array.isArray(data)) return [];
|
||||
|
||||
const { startTime, endTime, iso, exposureTime } = filters;
|
||||
|
||||
return data.filter(entry => {
|
||||
let include = true;
|
||||
|
||||
if (startTime && entry.time && entry.time < new Date(startTime)) {
|
||||
include = false;
|
||||
}
|
||||
|
||||
if (endTime && entry.time && entry.time > new Date(endTime)) {
|
||||
include = false;
|
||||
}
|
||||
|
||||
// Anmerkung: ISO und exposureTime liegen evtl. nicht im prozessierten Objekt vor,
|
||||
// sollen aber ggf. im Originaldatensatz überprüft werden, falls Datenstruktur angepasst wird.
|
||||
|
||||
if (iso && entry.iso && entry.iso !== iso) {
|
||||
include = false;
|
||||
}
|
||||
|
||||
if (exposureTime && entry.exposureTime && entry.exposureTime !== exposureTime) {
|
||||
include = false;
|
||||
}
|
||||
|
||||
return include;
|
||||
});
|
||||
}
|
||||
Loading…
Reference in a new issue