Files
FE_Charts/mobile/www/js/database.js
dario-cfpt 5748263678 Add image of character in the comparator list
Changed the colors of the network graph to match the color of the
differents houses (the color will probably be in the database in the
future).

Reactivate the panel swipe (there are still some problems but it's
better to keep the swipe for the user).

Added various comments and fixed the missing logo in the about page when
using the phone app.
2020-03-17 13:40:50 +01:00

88 lines
2.5 KiB
JavaScript

/*
File name : database.js
Description : Communicates with the server to ensure that the data is up to date.
*/
const BASE_URL = "http://localhost/";
let feData = JSON.parse(localStorage.getItem("feData"));
function isOnline() {
// Check that navigator.connection is not undefined to avoid error
// Necessary when the app run on the browser
const networkState = (navigator.connection) ? navigator.connection.type : null;
if (networkState != null && networkState != "none") {
return true;
}
return false;
}
// Get the data from the server or update the data in the localstorage if needed
function getOrUpdateData() {
if (feData != null) {
let body = new FormData();
body.append('version', feData.version);
fetch(BASE_URL + "update", {
method: "POST",
body: body,
})
.then(res => {
if (res.ok) {
return res.json();
} else {
console.log(res);
}
})
.then(data => {
updateData(data);
})
.catch(err => {
console.log(err);
});
} else {
// Import the data if none was found
fetch(BASE_URL + "all")
.then(res => {
if (res.ok) {
return res.json();
} else {
console.log(res);
}
})
.then(data => {
updateData(data);
})
.catch(err => {
console.log(err);
});
}
}
// Update the data in the localstorage
function updateData(data) {
// If the data received from the server are not empty then we can save them in the local storage
if (data != null && Object.keys(data).length > 0) {
localStorage.setItem("feData", JSON.stringify(data));
feData = data;
}
// End of the update process, we can now display the data
displayCharacters();
}
// Doesn't try to get or update the data if the user is not connected to the internet
if (isOnline()) {
getOrUpdateData();
} else {
// If the user is not connected to internet but the data are already present in the app, then we display them
if (feData != null) {
displayCharacters();
} else {
alert("Please connect to the internet to download the data");
}
// Create an event to get/update the data when the user goes online
document.addEventListener("online", getOrUpdateData, false);
}