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

sauvegarde du fichier si upload KO + correctifs iPhone

parent 99928e3f
This diff is collapsed.
......@@ -17,11 +17,14 @@ var globalLastInsertId = ""; // Avant d'envoyer les données au serve
var globalSyncInProgress = false; // Pour savoir si on est en phase de synchronisation ou pas (gestion différente du "formulaire" d'upload)
// **********************************************************************
//Ne pas toucher, mis à jour automatiquement à partir du config.xml
var globalAppVersion = "1.0.14"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
var globalAppVersion = "1.0.15"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
// **********************************************************************
var dataLDF = "";
var globalResumable;
var globalProgressBar;
var globalTypeFrais = "";
//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'];
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'];
......@@ -36,13 +36,11 @@ function sendForm() {
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";
let typeFraisObj = document.getElementById('leform').typeFrais;
globalTypeFrais = "autre";
if (typeFraisObj != null) {
var typeFrais = typeFraisObj.value;
globalTypeFrais = typeFraisObj.value;
}
//On bypass pour resumable.min.js
//readFromFile(file, formdata, typeFrais);
......@@ -126,17 +124,10 @@ function endSendFormForUpdate(formdata) {
function endSendForm(formdata, filename) {
let subject = "";
myDebug('endSendForm ... avec fic = ' + filename);
//debug du formdata dans la console
// for (var pair of formdata.entries()) {
// myDebug(pair[0]+ ': ' + pair[1]);
// }
// method: "POST",
//contentType: false,
//mimeType: "multipart/form-data",
//enctype: 'multipart/form-data',
//Transformation du formdata en json pour stockage en sql
var objectTempToConvertFD = {};
formdata.forEach((value, key) => {
if (key == "afile") {
......@@ -156,6 +147,14 @@ function endSendForm(formdata, filename) {
});
var formDataInJSON = JSON.stringify(objectTempToConvertFD);
//debug du formdata dans la console
// for (var pair of formdata.entries()) {
// myDebug(pair[0] + ': ' + pair[1]);
// if (pair[0] == "label")
// subject = pair[1];
// }
//On sauvegarde dans la base pour pouvoir faire une synchro plus tard si jamais ca a foiré
//Bien entendu on ne fait pas ça si on est en cours de synchronisation :)
if (globalDB != null && globalSyncInProgress == false) {
......@@ -171,7 +170,7 @@ function endSendForm(formdata, filename) {
}
else {
if (globalSyncInProgress == true) {
myDebug(" endSendForm on evite de sauvegarder les donnees avant upload car on est en synchronisation...");
myDebug(" endSendForm on evite de sauvegarder les donnees en BDD avant upload car on est en synchronisation...");
}
}
......@@ -217,6 +216,8 @@ function endSendForm(formdata, filename) {
},
error: function (request, textStatus, errorThrown) {
hideWait();
uploadErrorSaveFile(filename);
myDebug("Request finished (error signal) : " + textStatus);
if (textStatus == 'timeout') {
ons.notification.alert("Erreur de transfert avec le serveur. Votre document est enregistré sur votre téléphone, pensez à le synchroniser avec le serveur dès que vous retrouverez une bonne connexion (utilisez le menu synchronisation à ce moment là).", { title: "Réseau lent" });
......@@ -230,14 +231,13 @@ function endSendForm(formdata, filename) {
return;
}
if (request.status == 500) {
//TODO message a faire
ons.notification.alert("Le serveur n'est pas accessible. Votre document est enregistré sur votre téléphone, pensez à le synchroniser avec le serveur dès que vous retrouverez une bonne connexion (utilisez le menu synchronisation à ce moment là).", { title: "Réseau lent" });
gotoPage('menu.html', false);
} else {
//TODO message a faire
ons.notification.alert("Le serveur n'est pas accessible. Votre document est enregistré sur votre téléphone, pensez à le synchroniser avec le serveur dès que vous retrouverez une bonne connexion (utilisez le menu synchronisation à ce moment là).", { title: "Réseau lent" });
gotoPage('menu.html', false);
}
}
// complete: function (request, textStatus, errorThrown) {
// hideWait();
......@@ -357,14 +357,15 @@ function newResumable(ajaxURL, result, filename) {
globalResumable.cancel();
}
//L'option testChunks est super mais pour l'instant provoque un bug sur iPhone donc on l'active que pour Android
let tChunks = false;
if (window.cordova.platformId == "android") {
//avec android ca passe :-)
tChunks = true;
}
//Note/WARNING : ne pas passer en dessous de 40.000 ms de xhrTimeout sinon ça déconne complet
//tests 4G eric@garage ...
let tChunks = false;
if (window.cordova.platformId == "android") {
//avec android ca passe :-)
tChunks = true;
}
globalResumable = new Resumable({
// Use chunk size that is smaller than your maximum limit due a resumable issue
// https://github.com/23/resumable.js/issues/51
......@@ -413,7 +414,8 @@ function newResumable(ajaxURL, result, filename) {
});
globalResumable.on('fileError', function (file, message) {
myDebug("resumable : fileError ");
myDebug("resumable : fileError on essaye de sauvegarder le fichier en espace permanent ...");
uploadErrorSaveFile(filename);
ons.notification.alert("Erreur de transfert du fichier, réessayez plus tard depuis le menu Synchronisation. Assurez-vous d'avoir une bonne couverture 4G/Data ou d'utiliser une connexion internet rapide via WiFi.", { title: "Attention" });
gotoPage('menu.html', false);
});
......@@ -451,15 +453,6 @@ function newResumable(ajaxURL, result, filename) {
myDebug("pushFileResumeable : addFile sur globalResumable");
globalResumable.addFile(myBlob);
// -------------------------------------------------
//On sauvegarde le Fichier sous un nom qui sera plus facile a gerer par la suite
// var today = new Date();
// var destFilename = today.getFullYear().toString() + ('0' + (today.getMonth() + 1)).slice(-2) + ('0' + today.getDate()).slice(-2) + "_"
// + today.getHours().toString() + today.getMinutes().toString() + "-" + subject + "-" + basename(fileName);
// moveFile(fileName, destFilename);
// -------------------------------------------------
};
reader.readAsArrayBuffer(file);
......@@ -468,3 +461,17 @@ function newResumable(ajaxURL, result, filename) {
}
function uploadErrorSaveFile(filename) {
// -------------------------------------------------
//Erreur d'upload il est donc important de stocker le fichier en espace permanent
// mais si on est en mode sync alors il est déjà dans un espace permanent ...
if (globalSyncInProgress == false) {
//On sauvegarde le Fichier sous un nom qui sera plus facile a gerer par la suite et stocké en espace persistant
var today = new Date();
var destFilename = today.getFullYear().toString() + ('0' + (today.getMonth() + 1)).slice(-2) + ('0' + today.getDate()).slice(-2) + "_"
+ today.getHours().toString() + today.getMinutes().toString() + "-" + globalTypeFrais + "-" + basename(filename);
moveFile(filename, destFilename);
myDebug('endSendForm ... avec fic permanent sur = ' + filename);
}
// -------------------------------------------------
}
......@@ -176,8 +176,19 @@ function errorHandlerFileResumeable(title, message) {
/* *************************************
* Changement du nom du fichier OK
*************************************** */
function onSuccessRenameFile(evt) {
// myDebug("Changement du nom du fichier OK");
function onSuccessRenameFile(entry) {
myDebug("Changement du nom du fichier OK : avant / apres " + entry.fullPath);
if (globalDB != null) {
globalDB.executeSql('UPDATE ldfsToSync set localFileName = ? WHERE id = ?;', [entry.fullPath, globalLastInsertId],
function (results) {
myDebug(' ldfsToSync SQL UPDATE OK for fileRename ' + entry.fullPath);
},
function (error) {
myDebug(' ldfsToSync SQL UPDATE ERROR for: ' + entry.fullPath + " message: " + error.message);
});
}
}
/* *************************************
......
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