Commit 452396da authored by Eric Seigne's avatar Eric Seigne
Browse files

version 1.9.6

parent 60f4b71a
# 1.9.6
- changement de la lib pinch-zoom pour utiliser celle-ci https://github.com/GoogleChromeLabs/pinch-zoom
- corrige un bug de gestion des traductions (affichage des détails pour la configuration des véhicules)
- la modification d'un itinéraire est de nouveau possible
# 1.9.4
- retour d'une fonctionnalité perdue de la version 1.9.2 : la possibilité de modifier la date des indemnités kilométriques
- optimisation technique (évite de tenter le chargement de la css custom à chaque changement de page si ça n'a pas marché après l'ouverture de session)
-
# 1.9.2
- nouveau module de gestion des IK pour simplifier la saisie des itinéraires
......
<?xml version='1.0' encoding='utf-8'?>
<widget id="fr.caprel.doliscan" version="1.9.4" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="fr.caprel.doliscan" version="1.9.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>doliscan</name>
<description>DoliSCAN is a tiny app for french people looking for a free and self hosting "notes de frais/expenses report" solution.</description>
<author email="eric.seigne@cap-rel.fr" href="https://cap-rel.fr">Eric Seigne</author>
......@@ -24,7 +24,7 @@
<allow-intent href="market:*" />
<preference name="AndroidLaunchMode" value="singleTop" />
<preference name="android-minSdkVersion" value="22" />
<preference name="android-targetSdkVersion" value="29" />
<preference name="android-targetSdkVersion" value="30" />
<icon src="res/icon/android/icon-96-xhdpi.png" />
<icon density="ldpi" src="res/icon/android/icon-36-ldpi.png" />
<icon density="mdpi" src="res/icon/android/icon-48-mdpi.png" />
......@@ -122,5 +122,5 @@
<param name="ios-package" value="Calendar" />
</feature>
</platform>
<preference name="OverrideUserAgent" value="Mozilla/5.0 OpenNDF/1.9.4 Android" />
<preference name="OverrideUserAgent" value="Mozilla/5.0 OpenNDF/1.9.6 Android" />
</widget>
......@@ -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 globalAppVersion="1.9.4";var globalDevMode=false;var globalMyCamera;var globalpictureSource;var globaldestinationType;var globalNetworkResponse=Date.now();var globalCurrentPage="";var globalCurrentTitle="";var globalTenMinuts=60*10*1000;var globalCompatibleWithAPIVersion=4;var globalDoliScanDomain="";var globalLastInsertId="";var globalSyncInProgress=false;var globalPictureFileName="";var globalPicturesAvailable=[];var globalSyncObject=[];var globalIkToReuse=undefined;var globalCustomCSS=true;var nbEtape=1;var dataLDF="";var dataIK="";var globalMyNavigator=undefined;var globalResumable=undefined;var globalProgressBar=undefined;var globalTypeFrais="";var globalVehiculeEd=undefined;var loginAPIKeyErrorInProgress=false;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','compta_tva_tx1','compta_tva_tx2','compta_tva_tx3','compta_tva_tx4'];function errorHandlerCustomFile(title,message){myDebug('errorHandlerCustomFile : '+title+' -- message follow:');myDebug(message);globalCustomCSS=false;}
var globalAppVersion="1.9.6";var globalDevMode=false;var globalMyCamera;var globalpictureSource;var globaldestinationType;var globalNetworkResponse=Date.now();var globalCurrentPage="";var globalCurrentTitle="";var globalTenMinuts=60*10*1000;var globalCompatibleWithAPIVersion=4;var globalDoliScanDomain="";var globalLastInsertId="";var globalSyncInProgress=false;var globalPictureFileName="";var globalPicturesAvailable=[];var globalSyncObject=[];var globalIkToReuse=undefined;var globalCustomCSS=true;var nbEtape=1;var dataLDF="";var dataIK="";var globalMyNavigator=undefined;var globalResumable=undefined;var globalProgressBar=undefined;var globalTypeFrais="";var globalVehiculeEd=undefined;var loginAPIKeyErrorInProgress=false;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','compta_tva_tx1','compta_tva_tx2','compta_tva_tx3','compta_tva_tx4'];function errorHandlerCustomFile(title,message){myDebug('errorHandlerCustomFile : '+title+' -- message follow:');myDebug(message);globalCustomCSS=false;}
function loadCustomCSS(){if((typeof cordova=='undefined')||(cordova===null)||(cordova=="")){return;}
if((typeof cordova.file=='undefined')||(cordova.file===null)||(cordova.file=="")){return;}
if((typeof cordova.file.cacheDirectory=='undefined')||(cordova.file.cacheDirectory===null)||(cordova.file.cacheDirectory=="")){return;}
......@@ -309,13 +309,13 @@ else{console.log("pas de champ date sur cette page ...");}}
function feedObjets(objets){if((typeof objets!='undefined')&&(objets!==null)&&(objets!="")){for(var i=0;i<objets.length&&i<15;i++){$('#listeObjets').append('<div class=\"expandable-content list-item__expandable-content\"><a href="#" onclick="selectLabel(\''+objets[i]+'\');">'+objets[i]+'</a></div>');}}}
function selectLabel(objet){if((typeof objet!='undefined')&&(objet!==null)&&(objet!="")){$('#listeObjets').hide();$('#label').val(objet);$('#label').focus();document.querySelector('#listeObjets').hideExpansion();$('#listeObjets').show();}}
function setPageTitle(titre){myDebug("setPageTitle : "+titre);globalCurrentTitle=titre;$('#titreDoliScan').replaceWith('<div id="titreDoliScan" class="left" onclick="fn.back();"><i class="zmdi chevron-circle-left"></i> '+titre+'</div>');}
function completePageIKAfterGoto(dataIK){myDebug("completePageIKAfterGoto : "+JSON.stringify(dataIK));let date=new Date(decodeURIComponent(dataIK.ladate));$('#ladate').val(date.toDateInputValue());$('#label').val(decodeURIComponent(dataIK.label));$('#depart').val(decodeURIComponent(dataIK.depart));pattern=/.*:\s*([\w\s]*\(\d{0,2}\)*)/g;invites=decodeURIComponent(dataIK.invites);myDebug("Tentative d'analyse de invites="+invites);res=invites.split(pattern);nbEtape=1;for(let i=0;i<res.length;i++){let ville=res[i].trim();if(ville!=""){myDebug(" Ajout d'une etape="+ville);ikAjoutEtape('leformIK');$('#etape'+(nbEtape-1)).val(ville);}}
ikAjoutEtape('leformIK');$('#etape'+(nbEtape-1)).val(decodeURIComponent(dataIK.arrivee));callAllStep();dataIK="";}
function aSyncSearchVille(){return new Promise((resolve,reject)=>{setTimeout(()=>{searchVille('leformIK','depart','departSlug','departUID');resolve();},2500);});}
function completePageIKAfterGoto(dataIK){myDebug("completePageIKAfterGoto : "+JSON.stringify(dataIK));let date=new Date(decodeURIComponent(dataIK.ladate));$('#ladate').val(date.toDateInputValue());$('#label').val(decodeURIComponent(dataIK.label));$('#depart').val(decodeURIComponent(dataIK.depart));invites=decodeURIComponent(dataIK.invites);myDebug("Tentative d'analyse de invites="+invites);if(invites!==null&&invites!==undefined&&invites.toLowerCase().indexOf(':')>0){pattern=/.*:\s*([\w\s]*\(\d{0,2}\)*)/g;res=invites.split(pattern);nbEtape=1;for(let i=0;i<res.length;i++){let ville=res[i].trim();if(ville!=""){myDebug(" Ajout d'une etape="+ville);ikAjoutEtape('leformIK');$('#etape'+(nbEtape-1)).val(ville);}}}
ikAjoutEtape('leformIK');$('#etape'+(nbEtape-1)).val(decodeURIComponent(dataIK.arrivee));dataIK="";callAllStep();}
function aSyncSearchVille(){return new Promise((resolve,reject)=>{setTimeout(()=>{searchVille('leformIK','depart','departSlug','departUID');resolve();},500);});}
function aSyncDistanceAutomatiqueEtape(leform,etape,etapeNb){return new Promise((resolve,reject)=>{setTimeout(()=>{if(globalMyNavigator.topPage.id!="ONSChoixListe"){distanceAutomatiqueEtape(leform,etape,etapeNb);}
resolve();},2500);});}
async function callAllStep(){ons.notification.toast("Veuillez patienter le temps que le système recalcule votre itinéraire. Un message d'information sera affiché lorsque ce calcul sera terminé.",{timeout:2000,animation:'fall'});await aSyncSearchVille();for(let i=1;i<nbEtape;i++){console.log("Caller aSyncDistanceAutomatiqueEtape #"+i);if(globalMyNavigator.topPage.id!="ONSChoixListe"){console.log("Caller lancé !!!");await aSyncDistanceAutomatiqueEtape('leformIK','etape'+i,i);}
else{console.log("Caller disabled on est sur ONSChoixListe !!!");}}
resolve();},500);});}
async function callAllStep(){myDebug("callAllStep 1");await ons.notification.confirm({message:"Veuillez patienter le temps que le système recalcule votre itinéraire. Un message d'information sera affiché lorsque ce calcul sera terminé.",title:"Import et calcul",buttonLabels:['OK'],});myDebug("callAllStep 2");await aSyncSearchVille();for(let i=1;i<nbEtape;i++){myDebug("Caller aSyncDistanceAutomatiqueEtape #"+i);if(globalMyNavigator.topPage.id!="ONSChoixListe"){myDebug("Caller lancé !!!");await aSyncDistanceAutomatiqueEtape('leformIK','etape'+i,i);}
else{myDebug("Caller disabled on est sur ONSChoixListe !!!");}}
ons.notification.alert("Votre itinéraire a été importé.",{title:"Terminé !"});}
function completePageAfterGoto(dataLDF){myDebug("completePageAfterGoto ... : "+JSON.stringify(dataLDF));document.getElementById("updateID").value=dataLDF['sid'];document.getElementById("photoFacturette").value="UPDATE";let fieldsToValidate=['nom','arrivee','depart','distance','label','ladate','ttc','typeFrais','moyenPaiement','photoFacturette'];for(let i=0;i<fieldsToValidate.length;i++){let field=fieldsToValidate[i];switch(field){case 'photoFacturette':$("#smallImage").attr("src",dataLDF[field]);break;case 'moyenPaiement':break;default:if(document.getElementById(field)){document.getElementById(field).value=dataLDF[field];}}}
for(let i=1;i<5;i++){let fieldNameTx='tvaTx'+i;let fieldNameVal='tvaVal'+i;if(document.getElementById(fieldNameVal)){myDebug("On essaye de completer la TVA de "+fieldNameVal+" locale "+$("#"+fieldNameTx).val()+" par ce qu'on a du serveur "+dataLDF[fieldNameTx]+" val = "+dataLDF[fieldNameVal]);document.getElementById(fieldNameVal).value=dataLDF[fieldNameVal];}}}
......
......@@ -3,7 +3,7 @@
*/
// **********************************************************************
//Ne pas toucher, mis à jour automatiquement à partir du config.xml
var globalAppVersion = "1.9.4"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
var globalAppVersion = "1.9.6"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
// **********************************************************************
......
......@@ -363,46 +363,28 @@ function completePageIKAfterGoto(dataIK) {
$('#depart').val(decodeURIComponent(dataIK.depart));
//Decoupage du texte "Etapes : arcachon (33) -> Bordeaux (33) -> Agen (47) -> Arcachon (33)"
pattern = /.*:\s*([\w\s]*\(\d{0,2}\)*)/g;
invites = decodeURIComponent(dataIK.invites);
myDebug("Tentative d'analyse de invites=" + invites);
res = invites.split(pattern);
nbEtape = 1;
for (let i = 0; i < res.length; i++) {
let ville = res[i].trim();
if (ville != "") {
myDebug(" Ajout d'une etape=" + ville);
ikAjoutEtape('leformIK');
//la fonction ikAjoutEtape incremente nbEtape ...
$('#etape' + (nbEtape - 1)).val(ville);
if (invites !== null && invites !== undefined && invites.toLowerCase().indexOf(':') > 0) {
pattern = /.*:\s*([\w\s]*\(\d{0,2}\)*)/g;
res = invites.split(pattern);
nbEtape = 1;
for (let i = 0; i < res.length; i++) {
let ville = res[i].trim();
if (ville != "") {
myDebug(" Ajout d'une etape=" + ville);
ikAjoutEtape('leformIK');
//la fonction ikAjoutEtape incremente nbEtape ...
$('#etape' + (nbEtape - 1)).val(ville);
}
}
}
//Et la dernière étape : l'arrivée
ikAjoutEtape('leformIK');
$('#etape' + (nbEtape - 1)).val(decodeURIComponent(dataIK.arrivee));
callAllStep();
// //Async call :-(
// searchVille('leformIK', 'depart', 'departSlug', 'departUID');
// // distanceAutomatiqueEtape('leformIK', 'etape' + nbEtape, nbEtape);
// // distanceAutomatiqueEtape('leformIK', 'etape' + nbEtape, nbEtape);
// for (let i = 1; i <= nbEtape; i++) {
// var checksearchVille = setInterval(function () {
// if ($('#departSlug').length) {
// clearInterval(checksearchVille);
// // myDebug("departSlug exists, call distanceAutomatiqueEtape");
// distanceAutomatiqueEtape('leformIK', 'etape' + i, i);
// }
// }, 1500);
// }
//Reset l'objet pour eviter tout pb futur
dataIK = "";
callAllStep();
}
function aSyncSearchVille() {
......@@ -412,7 +394,7 @@ function aSyncSearchVille() {
// console.log("Hello from inside the aSyncSearchVille function");
searchVille('leformIK', 'depart', 'departSlug', 'departUID');
resolve();
}, 2500);
}, 500);
});
}
......@@ -423,25 +405,32 @@ function aSyncDistanceAutomatiqueEtape(leform, etape, etapeNb) {
// console.log("Hello from inside the aSyncDistanceAutomatiqueEtape function");
if (globalMyNavigator.topPage.id != "ONSChoixListe") {
distanceAutomatiqueEtape(leform, etape, etapeNb);
}
}
resolve();
}, 2500);
}, 500);
});
}
async function callAllStep() {
// console.log("Caller");
ons.notification.toast("Veuillez patienter le temps que le système recalcule votre itinéraire. Un message d'information sera affiché lorsque ce calcul sera terminé.", { timeout: 2000, animation: 'fall' });
myDebug("callAllStep 1");
await ons.notification.confirm(
{
message: "Veuillez patienter le temps que le système recalcule votre itinéraire. Un message d'information sera affiché lorsque ce calcul sera terminé.",
title: "Import et calcul",
buttonLabels: ['OK'],
}
);
myDebug("callAllStep 2");
await aSyncSearchVille();
for (let i = 1; i < nbEtape; i++) {
//Si jamais une résolution ne marche pas et propose des choix il ne faut surtout pas continuer la boucle sinon page blanche et bug global
console.log("Caller aSyncDistanceAutomatiqueEtape #" + i);
myDebug("Caller aSyncDistanceAutomatiqueEtape #" + i);
if (globalMyNavigator.topPage.id != "ONSChoixListe") {
console.log("Caller lancé !!!");
myDebug("Caller lancé !!!");
await aSyncDistanceAutomatiqueEtape('leformIK', 'etape' + i, i);
}
else {
console.log("Caller disabled on est sur ONSChoixListe !!!");
myDebug("Caller disabled on est sur ONSChoixListe !!!");
}
}
// console.log("After waiting");
......
Markdown is supported
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