Signed-off-by: Johannes Theiner <j.theiner@live.de> #SPM-22: add work 4h development
79 lines
2.1 KiB
JavaScript
79 lines
2.1 KiB
JavaScript
$(document).ready(function () {
|
|
let dataset = $('#dataset');
|
|
request('files').then(results => {
|
|
dataset.empty();
|
|
for (const result of results) {
|
|
dataset.append($("<option></option>")
|
|
.attr("value", result.uuid)
|
|
.text(result.name + " (" + result.date.date.day + "." + result.date.date.month + " "
|
|
+ result.date.time.hour + ":" + result.date.time.minute + ")"));
|
|
}
|
|
dataset.formSelect();
|
|
});
|
|
updateCache();
|
|
});
|
|
|
|
/**
|
|
* update all charts with correct values for dataset
|
|
*/
|
|
function updateCache() {
|
|
let dataset = $('#dataset');
|
|
let selected = $('#dataset :selected');
|
|
if (typeof selected !== 'undefined' && selected.index() !== -1) {
|
|
updateAll(selected.val());
|
|
} else {
|
|
//requesting files, getting values from html does not work...
|
|
//if no selection is provided, select newest file
|
|
request('files').then(results => {
|
|
let uuid = results[results.length - 1].uuid;
|
|
dataset.val(uuid);
|
|
updateAll(uuid);
|
|
dataset.formSelect();
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
function updateAll(uuid) {
|
|
updateWeekOverviewChart(uuid);
|
|
updateShoppingTimesChart(uuid);
|
|
updateTopFlopChart(uuid);
|
|
//add new charts here.
|
|
}
|
|
|
|
/**
|
|
* request json data
|
|
* @param url base url
|
|
* @param id dataset id
|
|
* @returns {Promise<result>}
|
|
*/
|
|
function request(url, id) {
|
|
return new Promise(((resolve) => {
|
|
if (typeof id !== 'undefined') {
|
|
requestInternal(url + '?id=' + id).then(function (data) {
|
|
resolve(data);
|
|
});
|
|
} else {
|
|
requestInternal(url).then(function (data) {
|
|
resolve(data);
|
|
});
|
|
}
|
|
}));
|
|
}
|
|
|
|
/**
|
|
* only for use inside this file, javascript has no better way
|
|
* @param url url
|
|
* @returns {Promise<result>}
|
|
*/
|
|
function requestInternal(url) {
|
|
return new Promise(((resolve) => {
|
|
$.ajax({
|
|
url: url,
|
|
dataType: 'json'
|
|
}).done(function (results) {
|
|
resolve(results);
|
|
});
|
|
}));
|
|
|
|
} |