
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.
88 lines
2.5 KiB
JavaScript
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);
|
|
}
|