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

amelioration de la logique de lancemnt, supprime l'index sur le nom de fichier...

amelioration de la logique de lancemnt, supprime l'index sur le nom de fichier (IK = pas de fichier donc doublons de NULL possible)
parent 01d33ad1
<?xml version='1.0' encoding='utf-8'?>
<widget id="fr.caprel.doliscan" version="1.0.15" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="fr.caprel.doliscan" version="1.0.16" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>doliscan</name>
<description>
A simple app for french people looking for a free and self hosting "notes de frais/expenses report" solution.
......@@ -57,7 +57,7 @@
<edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryAddUsageDescription">
<string>Please pick a pictures of your invoice / receipt</string>
</edit-config>
<preference name="OverrideUserAgent" value="Mozilla/5.0 OpenNDF/1.0.15 Android" />
<preference name="OverrideUserAgent" value="Mozilla/5.0 OpenNDF/1.0.16 Android" />
<plugin name="cordova-plugin-inappbrowser" spec="^3.0.0" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.4" />
</widget>
......@@ -56,4 +56,4 @@
"android"
]
}
}
}
\ No newline at end of file
......@@ -408,11 +408,12 @@
location: 'default',
androidDatabaseProvider: 'system'
}, function () {
// myDebug("SQL : ouverture OK, creation des tables");
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('CREATE UNIQUE INDEX IF NOT EXISTS localFileName on ldfsToSync (localFileName);');
globalDB.executeSql('DROP INDEX IF EXISTS localFileName;');
myDebug("SQL : create/drop index on ldfsToSync ok");
globalDB.executeSql('DELETE FROM ldfsToSync WHERE localFileName IS NULL;');
// myDebug("SQL : clean up ldfsToSync ok");
......@@ -423,9 +424,10 @@
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");
myDebug("SQL : fin de création des tables");
globalDB.readTransaction(function (t) {
myDebug("SQL : select ...");
t.executeSql('SELECT * FROM config WHERE value IS NOT NULL;', [],
function (tx, rs) {
let nbRes = rs.rows.length;
......@@ -437,32 +439,47 @@
//Mise a jour uniquement si non vide
if (v != null && v != "") {
localStorage.setItem(k, v);
// myDebug(' (c) SQL select localStorage ' + k + ' -> ' + v);
myDebug(' (c) SQL select localStorage ' + k + ' -> ' + v);
}
else {
// myDebug(' (c) SQL select localStorage ' + k + ' -> null on ne fait donc pas le localStorage :-)');
myDebug(' (c) SQL select localStorage ' + k + ' -> null on ne fait donc pas le localStorage :-)');
}
}
}, function () {
//le SQL s'est déroulé ...
myDebug("SQL : read OK");
// myDebug("SELECT * FROM config ERROR");
if (localGetData("api_server") != null) {
gotoLoginPage = false;
//Au lancement on regarde si on a pas déjà ces infos de la dernière fois ...
// switchServer('#server', localGetData("name_server"), localGetData("api_server"));
//Et on essaye de reprendre la session !
myDebug("Login with API token...");
loginWithAPIToken();
}
if (gotoLoginPage) {
// myDebug("carouselLogin 7");
carouselLogin();
}
}, function (tx, error) {
myDebug(" SQL Error " + error.message);
});
});
// myDebug("SQL : end config ok");
if (localGetData("api_server") != null) {
gotoLoginPage = false;
//Au lancement on regarde si on a pas déjà ces infos de la dernière fois ...
// switchServer('#server', localGetData("name_server"), localGetData("api_server"));
//Et on essaye de reprendre la session !
loginWithAPIToken();
}
if (gotoLoginPage) {
// myDebug("carouselLogin 7");
carouselLogin();
}
});
}
else {
//duplication de code mais sinon la requete sql ne se déroule pas ...
if (localGetData("api_server") != null) {
gotoLoginPage = false;
//Au lancement on regarde si on a pas déjà ces infos de la dernière fois ...
// switchServer('#server', localGetData("name_server"), localGetData("api_server"));
//Et on essaye de reprendre la session !
loginWithAPIToken();
}
if (gotoLoginPage) {
// myDebug("carouselLogin 7");
carouselLogin();
}
// myDebug("SQL : end 2 config ok");
}
......
......@@ -2,7 +2,7 @@
* (c) Éric Seigne <eric.seigne@cap-rel.fr> - 2019-2020 - GNU AGPLv3
* full source code in src/ subfolder, this file is minifyed
*/
var globalDevMode=false;var globalMyCamera;var globalpictureSource;var globaldestinationType;var globalNetworkResponse=Date.now();var globalCurrentPage="";var globalCurrentTitle="";var globalDB=null;var globalTenMinuts=60*10*1000;var globalCompatibleWithAPIVersion=4;var globalDoliScanDomain="";var globalLastInsertId="";var globalSyncInProgress=false;var globalAppVersion="1.0.15";var dataLDF="";var globalResumable;var globalProgressBar;var globalTypeFrais="";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','official_app_message','mode_simple'];function readFromFile(fileName,formdata,subject){var pathToFile=cordova.file.documentsDirectory+fileName;window.resolveLocalFileSystemURL(fileName,function(fileEntry){fileEntry.file(function(file){var reader=new FileReader();var fileSize=file.size;reader.onloadend=function(e){var fileContent=new Uint8Array(reader.result);formdata.append("afile",fileContent);formdata.append("afilesize",fileSize);var today=new Date();var destFilename=today.getFullYear().toString()+('0'+(today.getMonth()+1)).slice(-2)+('0'+today.getDate()).slice(-2)+"_"
var globalDevMode=false;var globalMyCamera;var globalpictureSource;var globaldestinationType;var globalNetworkResponse=Date.now();var globalCurrentPage="";var globalCurrentTitle="";var globalDB=null;var globalTenMinuts=60*10*1000;var globalCompatibleWithAPIVersion=4;var globalDoliScanDomain="";var globalLastInsertId="";var globalSyncInProgress=false;var globalAppVersion="1.0.16";var dataLDF="";var globalResumable;var globalProgressBar;var globalTypeFrais="";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','official_app_message','mode_simple'];function readFromFile(fileName,formdata,subject){var pathToFile=cordova.file.documentsDirectory+fileName;window.resolveLocalFileSystemURL(fileName,function(fileEntry){fileEntry.file(function(file){var reader=new FileReader();var fileSize=file.size;reader.onloadend=function(e){var fileContent=new Uint8Array(reader.result);formdata.append("afile",fileContent);formdata.append("afilesize",fileSize);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);var newFileUri=cordova.file.documentsDirectory;moveFile(fileName,destFilename);endSendForm(formdata,destFilename);};reader.readAsArrayBuffer(file);},errorHandler.bind(null,fileName));},errorHandler.bind(null,fileName));}
function distanceAutomatique(depart,arrivee){showWait();$.ajaxSetup({timeout:5000,});$.ajax({type:"GET",timeout:5000,url:"https://geo.doliscan.fr/api/geo/"+depart+"/"+arrivee,beforeSend:function(xhr){xhr.setRequestHeader('Authorization','Bearer '+localGetData("api_token"));},success:function(result){if(result!='undefined'){hideWait();updateDistanceFromServer(result);}
else{hideWait();ons.notification.alert("Saisie manuelle nécessaire, cette distance n'est pas connue sur nos serveurs",{title:"Erreur"});}},error:function(result){hideWait();ons.notification.alert("Saisie manuelle nécessaire, cette distance n'est pas connue sur nos serveurs",{title:"Erreur"});}});}
......@@ -47,6 +47,8 @@ if(document.getElementById('feedVehiculesPerso')){$("#feedVehiculesPerso").appen
if(document.getElementById('feedVehiculesPro')){$("#feedVehiculesPro").append(feedVehicules("vehiculesPro"));}
if(device.platform=="iOS"){$('input[type="number"]').attr('pattern','[0-9]*');$('input[type="number"]').attr('decimal','true');$('input[type="number"]').prop('type','text');}}
function newResumable(ajaxURL,result,filename){myDebug("creation de l'objet globalResumable pour "+filename+" a envoyer vers "+ajaxURL);if(typeof globalProgressBar!=='undefined'){globalResumable.cancel();}
if(typeof filename==='undefined'||filename==""){if(globalDB!=null){myDebug("globalLastInsertId : "+globalLastInsertId);if(globalLastInsertId>0){myDebug(" ldfsToSync SQL DELETE FROM ldfsToSync WHERE ID="+globalLastInsertId);globalDB.executeSql('DELETE FROM ldfsToSync WHERE ID=?;',[globalLastInsertId]);myDebug(" ldfsToSync SQL DELETE FROM ... : ok");globalLastInsertId="";}}
gotoPage('messageDone.html',false);return;}
let tChunks=false;if(window.cordova.platformId=="android"){tChunks=true;}
globalResumable=new Resumable({chunkSize:1*512*1024,simultaneousUploads:4,testChunks:tChunks,throttleProgressCallbacks:1,chunkRetryInterval:500,maxChunkRetries:4,xhrTimeout:40000,target:ajaxURL,headers:{ldfFileName:result.fileName,Authorization:'Bearer '+localGetData("api_token"),}});if(typeof globalProgressBar==='undefined'){myDebug("resumable : creation de globalProgressBar ");globalProgressBar=new ProgressBar($('#upload-progress'));}
globalResumable.on('fileAdded',function(file,event){myDebug("resumable : fileAdded ");globalProgressBar.fileAdded();myDebug("Apres progressBar.fileAdded, on essaye de lancer l'upload");globalResumable.upload();});globalResumable.on('fileSuccess',function(file,message){myDebug("resumable : fileSuccess ");globalProgressBar.finish();if(globalDB!=null){myDebug("globalLastInsertId : "+globalLastInsertId);if(globalLastInsertId>0){myDebug(" ldfsToSync SQL DELETE FROM ldfsToSync WHERE ID="+globalLastInsertId);globalDB.executeSql('DELETE FROM ldfsToSync WHERE ID=?;',[globalLastInsertId]);myDebug(" ldfsToSync SQL DELETE FROM ... : ok");globalLastInsertId="";}}
......
......@@ -17,7 +17,7 @@ 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.15"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
var globalAppVersion = "1.0.16"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
// **********************************************************************
var dataLDF = "";
var globalResumable;
......
......@@ -357,6 +357,21 @@ function newResumable(ajaxURL, result, filename) {
globalResumable.cancel();
}
//Si on a pas de nom de fichier c'est qu'on est peut-être sur des IK donc on short-return
if (typeof filename === 'undefined' || filename == "") {
if (globalDB != null) {
myDebug("globalLastInsertId : " + globalLastInsertId);
if (globalLastInsertId > 0) {
myDebug(" ldfsToSync SQL DELETE FROM ldfsToSync WHERE ID=" + globalLastInsertId);
globalDB.executeSql('DELETE FROM ldfsToSync WHERE ID=?;', [globalLastInsertId]);
myDebug(" ldfsToSync SQL DELETE FROM ... : ok");
globalLastInsertId = "";
}
}
gotoPage('messageDone.html', false);
return;
}
//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") {
......
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