Commit cae1caa5 authored by Eric Seigne's avatar Eric Seigne
Browse files

update ne marche pas encore

parent 5c02cbd7
......@@ -458,6 +458,57 @@
//On nettoie l'historique au lancement de l'appli
cleanHistorique();
if (globalDB == null) {
myDebug("SQL : On essaye d'ouvrir la base de données ...");
globalDB = window.sqlitePlugin.openDatabase({
name: 'doliscan.db',
location: 'default',
androidDatabaseProvider: 'system'
}, function () {
myDebug("SQL : ouverture OK, creation des tables");
globalDB.executeSql('CREATE TABLE IF NOT EXISTS ldfsToSync (id Integer PRIMARY KEY AUTOINCREMENT, url Text, jsonData Text, localFileName Text);');
myDebug("SQL : create ldfsToSync ok");
globalDB.executeSql('CREATE UNIQUE INDEX IF NOT EXISTS localFileName on ldfsToSync (localFileName);');
myDebug("SQL : create index on ldfsToSync ok");
globalDB.executeSql('DELETE FROM ldfsToSync WHERE localFileName IS NULL;');
myDebug("SQL : clean up ldfsToSync ok");
globalDB.executeSql("DELETE FROM ldfsToSync WHERE localFileName='undefined';");
myDebug("SQL : clean up 2 ldfsToSync ok");
globalDB.executeSql('CREATE TABLE IF NOT EXISTS config (key Text, value Text);');
myDebug("SQL : create config ok");
globalDB.executeSql('CREATE UNIQUE INDEX IF NOT EXISTS key on config (key);');
myDebug("SQL : create index on config ok");
globalDB.readTransaction(function (t) {
t.executeSql('SELECT * FROM config WHERE value IS NOT NULL;', [],
function (tx, rs) {
let nbRes = rs.rows.length;
myDebug("SQL : select * from config -> " + nbRes);
let i = 0;
for (i = 0; i < nbRes; i++) {
let k = rs.rows.item(i).key;
let v = rs.rows.item(i).value;
//Mise a jour uniquement si non vide
if (v != null && v != "") {
localStorage.setItem(k, v);
myDebug(' (c) SQL select localStorage ' + k + ' -> ' + v);
}
else {
myDebug(' (c) SQL select localStorage ' + k + ' -> null on ne fait donc pas le localStorage :-)');
}
}
}, function () {
myDebug("SELECT * FROM config ERROR");
});
});
myDebug("SQL : end config ok");
});
myDebug("SQL : end 2 config ok");
}
let gotoLoginPage = true;
// $(document).ready(function () {
if (localGetData("email") != null) {
......
......@@ -19,6 +19,7 @@ var globalSyncInProgress = false; // Pour savoir si on est en phase de syn
//Ne pas toucher, mis à jour automatiquement à partir du config.xml
var globalAppVersion = "1.0.9"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
// **********************************************************************
var dataLDF = "";
//liste des donnees que le serveur peut eventuellement échanger avec nous (factorisation de code)
var globalSrvKeys = ['email', 'api_token', 'firstname', 'name', 'adresse', 'cp', 'ville', 'pays', 'send_copy_to', 'compta_email', 'compta_ik', 'compta_peage', 'compta_hotel', 'compta_train', 'compta_carburant', 'compta_taxi', 'compta_restauration', 'compta_divers', 'compta_compteperso', 'compta_tvadeductible', 'official_app_version', 'mode_simple'];
......@@ -247,13 +248,14 @@ function closeSession() {
//Ajoute une valeur dans la base de données - remplace celle qui existerait deja
function localStoreData(key, value) {
localStorage.setItem(key, value);
// myDebug('localStoreData : ' + key + ' et ' + value);
myDebug('localStoreData : ' + key + ' et ' + value);
//Pas la peine de stocker ça en SQL
if (key == 'history') {
return;
}
if (globalDB != null) {
myDebug('localStoreData on essaye de passer en stockage SQL pour : ' + key + ' et ' + value);
globalDB.transaction(function (tx) {
tx.executeSql('INSERT OR REPLACE INTO config VALUES (?,?);', [key, value]);
}, function (error) {
......@@ -263,7 +265,7 @@ function localStoreData(key, value) {
});
}
else {
myDebug(" localStoreData ERR: Accès à globalDB impossible ...");
myDebug(" localStoreData ERR: Accès à globalDB impossible pour stocker " + key + " val " + value);
}
}
......@@ -367,7 +369,7 @@ function updateLocalUserFromServer(result, callback) {
myDebug('updateLocalUserFromServer typeOf : ' + (typeof result.data));
myDebug("on essaye : " + key + " -> " + result.data[key]);
if ((typeof result.data[key] !== 'undefined') && (result.data[key] != null) && (result.data[key] != "")) {
myDebug(" JSON / valeur non nulle on la stocke : ");
myDebug(" JSON / valeur non nulle on la stocke : " + key + " = " + result.data[key]);
localStoreData(key, result.data[key]);
ret = true;
}
......@@ -375,7 +377,7 @@ function updateLocalUserFromServer(result, callback) {
else {
//Dans les retours de PUT on a droit aux donnees directement
if ((typeof result[key] !== 'undefined') && (result[key] != null) && (result[key] != "")) {
myDebug(" PUT / valeur non nulle on la stocke : ");
myDebug(" PUT / valeur non nulle on la stocke : " + key + " = " + result.data[key]);
localStoreData(key, result[key]);
ret = true;
}
......@@ -459,7 +461,6 @@ function updateServerUserFromLocal() {
});
}
ons.ready(function () {
document.addEventListener('deviceready', function () {
// on capture le bouton back de l'OS
......@@ -477,54 +478,10 @@ ons.ready(function () {
location: 'default',
androidDatabaseProvider: 'system'
}, function () {
myDebug("SQL : ouverture OK, creation des tables");
globalDB.executeSql('CREATE TABLE IF NOT EXISTS ldfsToSync (id Integer PRIMARY KEY AUTOINCREMENT, url Text, jsonData Text, localFileName Text);');
myDebug("SQL : create ldfsToSync ok");
globalDB.executeSql('CREATE UNIQUE INDEX IF NOT EXISTS localFileName on ldfsToSync (localFileName);');
myDebug("SQL : create index on ldfsToSync ok");
globalDB.executeSql('DELETE FROM ldfsToSync WHERE localFileName IS NULL;');
myDebug("SQL : clean up ldfsToSync ok");
globalDB.executeSql("DELETE FROM ldfsToSync WHERE localFileName='undefined';");
myDebug("SQL : clean up 2 ldfsToSync ok");
globalDB.executeSql('CREATE TABLE IF NOT EXISTS config (key Text, value Text);');
myDebug("SQL : create config ok");
globalDB.executeSql('CREATE UNIQUE INDEX IF NOT EXISTS key on config (key);');
myDebug("SQL : create index on config ok");
globalDB.readTransaction(function (t) {
t.executeSql('SELECT * FROM config WHERE value IS NOT NULL;', [],
function (tx, rs) {
let nbRes = rs.rows.length;
myDebug("SQL : select * from config -> " + nbRes);
let i = 0;
for (i = 0; i < nbRes; i++) {
let k = rs.rows.item(i).key;
let v = rs.rows.item(i).value;
//Mise a jour uniquement si non vide
if (v != null && v != "") {
localStorage.setItem(k, v);
myDebug(' (c) SQL select localStorage ' + k + ' -> ' + v);
}
else {
myDebug(' (c) SQL select localStorage ' + k + ' -> null on ne fait donc pas le localStorage :-)');
}
}
}, function () {
myDebug("SELECT * FROM config ERROR");
});
});
myDebug("SQL : end config ok");
myDebug("SQL : ouverture OK, les tables existent deja (page index)");
});
myDebug("SQL : end 2 config ok");
}
//Si on est sur l'index uniquement
if (window.location != "index.html") {
return;
}
});
});
......@@ -2,8 +2,6 @@
* (c) Éric Seigne <eric.seigne@cap-rel.fr> - 2019 - GNU AGPLv3
*/
var dataLDF = "";
// Wait for Cordova to connect with the device
//
document.addEventListener("deviceready", NDFonDeviceReady, false);
......@@ -303,41 +301,118 @@ function sendForm() {
//On sauvegarde la date pour la proposer par défaut au prochain scan
if (document.getElementById('ladate')) {
// myDebug("on a ladate : " + document.getElementById('ladate').value);
myDebug("on a ladate : " + document.getElementById('ladate').value);
localStoreData("ladate", document.getElementById('ladate').value);
}
var formdata = new FormData($("#leform")[0]);
myDebug("formdata tout neuf");
myDebug(formdata);
formdata.append('_token', localGetData("api_token"));
var hasImage = document.getElementById('smallImage');
if (hasImage != null) {
// myDebug('Une image est presente ...');
var file = document.getElementById('smallImage').getAttribute("src");
if (file != "") {
myDebug("sendForm fileImage : " + file);
var fileContent;
var fileSize;
//On part dans la fonction dont la lecture est async
var typeFraisObj = document.getElementById('leform').typeFrais;
var typeFrais = "autre";
if (typeFraisObj != null) {
var typeFrais = typeFraisObj.value;
myDebug(formdata);
//Si on est en UPDATE, pas besoin de l'image
if (document.getElementById('updateID').value == 0) {
var hasImage = document.getElementById('smallImage');
if (hasImage != null) {
// myDebug('Une image est presente ...');
var file = document.getElementById('smallImage').getAttribute("src");
if (file != "") {
// myDebug("sendForm fileImage : " + file);
var fileContent;
var fileSize;
//On part dans la fonction dont la lecture est async
var typeFraisObj = document.getElementById('leform').typeFrais;
var typeFrais = "autre";
if (typeFraisObj != null) {
var typeFrais = typeFraisObj.value;
}
readFromFile(file, formdata, typeFrais);
}
else {
myDebug('Image introuvable ...');
ons.notification.alert("Photo du justificatif introuvable !", { title: "Attention" });
hideWait();
}
readFromFile(file, formdata, typeFrais);
}
else {
myDebug('Image introuvable ...');
ons.notification.alert("Photo du justificatif introuvable !", { title: "Attention" });
hideWait();
// myDebug('pas d image ...');
endSendForm(formdata, "");
}
}
else {
// myDebug('pas d image ...');
endSendForm(formdata, "");
//en mode update
myDebug("On n'essaye pas de joindre le fichier on est en UPDATE")
myDebug(formdata);
endSendFormForUpdate(formdata);
}
}
//On ne fait qu'un update de la facturette ...
function endSendFormForUpdate(formdata) {
hideWait();
myDebug("Appel pour UPDATE avec formdata qui vaut : ")
myDebug(formdata);
var formdata = new FormData($("#leform")[0]);
myDebug("formdata tout neuf");
myDebug(formdata);
myDebug("ID a updater : " + $('#updateID').value);
formdata.append('_token', localGetData("api_token"));
myDebug(formdata);
let ajaxURL = localGetData("api_server") + "/api/ldfs/" + document.getElementById('updateID').value;
let ajaxTYPE = "PUT";
var object = {};
formdata.forEach((value, key) => {object[key] = value});
var json = JSON.stringify(object);
// var ajaxRequest = $.ajax({
// url: ajaxURL,
// timeout: 30000,
// type: ajaxTYPE,
// data: json,
// processData: false,
// cache: false,
// contentType: false,
// tryCount: 0,
// retryLimit: 3,
// beforeSend: function (xhr) {
// xhr.setRequestHeader('Authorization', 'Bearer ' + localGetData("api_token"));
// },
// success: function (result, textStatus, request) {
// globalNetworkResponse = Date.now();
// hideWait();
// myDebug("Request PUT finished (success signal) : " + textStatus + (result + '').length);
// myDebug("Request PUT status (success signal) : " + request.status);
// //Cote serveur on a un code 201 "special" dans ce cas
// if (request.status == "201") {
// gotoPage('messageDone.html', false);
// }
// else {
// gotoPage('messageError.html', false);
// }
// },
// error: function (request, textStatus, errorThrown) {
// hideWait();
// myDebug("Request finished (error signal) : " + textStatus);
// },
// complete: function (request, textStatus, errorThrown) {
// myDebug("Request PUT finished (complete signal) : " + textStatus);
// myDebug('Taille des donees envoyees sur le serveur : ' + request.getResponseHeader('Content-Length') + ' octets');
// if (request.status == "201") {
// gotoPage('messageDone.html', false);
// }
// else {
// gotoPage('messageError.html', false);
// }
// }
// });
}
function endSendForm(formdata, filename) {
myDebug('endSendForm ...');
//debug du formdata dans la console
......@@ -388,10 +463,13 @@ function endSendForm(formdata, filename) {
}
}
let ajaxURL = localGetData("api_server") + "/api/ldfs";
let ajaxTYPE = "POST";
var ajaxRequest = $.ajax({
url: localGetData("api_server") + "/api/ldfs",
url: ajaxURL,
timeout: 30000,
type: "POST",
type: ajaxTYPE,
data: formdata,
processData: false,
cache: false,
......@@ -531,7 +609,7 @@ function gotoPage(destination, saveHistory = true) {
});
//Si on est sur un formulaire on remplace le bouton menu par un bouton save
if (destination.indexOf("upload") >= 0) {
if (destination.indexOf("frais-") >= 0) {
$('#menuHautDroite').replaceWith('<div id="menuHautDroite" class="right"><ons-toolbar-button onclick="checkForm();"><ons-icon icon="md-check"></ons-icon></ons-toolbar-button></div>');
}
menu.close();
......@@ -540,8 +618,9 @@ function gotoPage(destination, saveHistory = true) {
//sera appellee lorsque la page sera bien chargee
function completePageAfterGoto(dataLDF) {
myDebug("completePageAfterGoto ...");
myDebug(dataLDF['id']);
document.getElementById("updateID").value = dataLDF['id'];
document.getElementById("photoFacturette").value = "UPDATE";
fieldsToValidate = ['nom', 'arrivee', 'depart', 'distance', 'label', 'ladate', 'ttc', 'typeFrais', 'moyenPaiement', 'photoFacturette'];
for (let i = 0; i < fieldsToValidate.length; i++) {
......@@ -554,6 +633,7 @@ function completePageAfterGoto(dataLDF) {
break;
case 'moyenPaiement':
//cas particulier car il faut attendre que feedPaiement soit chargé ...
//-> c'est la qu'on fera un unset de dataLDF
break;
default:
if (document.getElementById(field)) {
......@@ -619,18 +699,21 @@ function historique(page) {
function genericCheckForm() {
let probleme = "";
// myDebug("genericCheckForm");
fieldsToValidate = ['api_server', 'nom', 'arrivee', 'depart', 'distance', 'energievalue', 'label', 'ladate', 'email', 'password', 'puissancevalue', 'ttc', 'typeFrais', 'typevalue', 'photoFacturette'];
fieldsTexte = ["Version de l'application", "Nom", "Arrivée", "Départ", "Distance", "Type de carburant", "Label", "La date", "Courrier électronique", "Objet", "Mot de passe", "Puissance du véhicule", "Montant TTC", "Type de frais", "Type", "Photo de la facturette"];
//Les deux tableaux doivent etre synchro, en haut le code de l'objet en bas le message à afficher
fieldsToValidate = ['nom', 'arrivee', 'depart', 'distance', 'energievalue', 'label', 'ladate', 'email', 'password', 'puissancevalue', 'ttc', 'typeFrais', 'typevalue', 'photoFacturette'];
fieldsTexte = ["Nom", "Arrivée", "Départ", "Distance", "Type de carburant", "Label", "La date", "Courrier électronique", "Mot de passe", "Puissance du véhicule", "Montant TTC", "Type de frais", "Type", "Photo de la facturette"];
//Si le compte utilisateur est configuré sur le serveur pour etre en mode simple on exige alors que la photo ...
myDebug("mode d'utilisation pour cette personne : " + localGetData('mode_simple'));
if (localGetData('mode_simple') == 1) {
fieldsToValidate = ['photoFacturette'];
fieldsTexte = ["Photo de la facturette"];
}
for (let i = 0; i < fieldsToValidate.length; i++) {
field = fieldsToValidate[i];
//Si il existe mais qu'il est vide alors c'est un pb
if (document.getElementById(field)) {
// myDebug("cet element existe, " + field + " quelle est sa valeur ..." + document.getElementById(field).value);
myDebug("Cet element existe, " + field + "(" + i + ") quelle est sa valeur ..." + document.getElementById(field).value);
//Mais si on a un compte "special ou seule la photo est autorisee alors on laisse faire"
if (!document.getElementById(field).value) {
probleme += "<ul>" + fieldsTexte[i] + "</ul>";
......
......@@ -18,6 +18,9 @@
$('#menuHautDroite').replaceWith('<div id="menuHautDroite" class="right"><ons-toolbar-button onclick="fn.open()"><ons-icon icon="md-menu"></ons-icon></ons-toolbar-button></div>');
globalCurrentTitle = 'DoliSCAN';
//Un petit reset des données de mise à jour
dataLDF = "";
let availableVersion = localGetData('official_app_version');
if (availableVersion != 'undefined' && compareVersions(availableVersion, globalAppVersion) > 0) {
ons.notification.alert("Une nouvelle version de l'application est disponible, pensez à faire la mise à jour ...", { title: "Nouvelle version" });
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment