Softwareprojektmanagement/src/main/webapp/js/cache.js

74 lines
2.0 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) {
updateWeekOverviewChart(selected.val());
updateShoppingTimesChart(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);
updateWeekOverviewChart(uuid);
updateShoppingTimesChart(uuid);
dataset.formSelect();
});
}
}
/**
* 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);
});
}));
}