Commit 0ff236ea authored by Eric Seigne's avatar Eric Seigne
Browse files

version 1.5.0

parent 410b2eab
# 1.5.0
- grosse modification de présentation générale
- menu principal réorganisé par thème
- menu latéral réorganisé par priorité des outils
- ajout d'une icone "nuage" sur les zones qui peuvent être activées pour aider à la saisie
(par exemple calcul automatique de TVA, gestion des distances pour les IK)
- mise à jour des outils de développement (invisible pour l'utilisateur)
- grosse modification du modèle de calcul des distances
- modification technique pour la saisie des montants à virgules (ios en particulier)
- ajouts de messages d'informations pour aider à trouver les erreurs en cas de problème
- pré-remplissage de certains champs (repas / hotel)
- début d'intégration du module QRCode (mise à jour serveur à venir)
# 1.4.0
- module indemnités kilométriques : prise en charge des homonymes (villes) et propositions de
......
<?xml version='1.0' encoding='utf-8'?>
<widget id="fr.caprel.doliscan" version="1.4.9" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="fr.caprel.doliscan" version="1.5.0" 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>
......@@ -145,5 +145,5 @@
</feature>
</platform>
<plugin name="cordova-plugin-calendar" />
<preference name="OverrideUserAgent" value="Mozilla/5.0 OpenNDF/1.4.9 Android" />
<preference name="OverrideUserAgent" value="Mozilla/5.0 OpenNDF/1.5.0 Android" />
</widget>
......@@ -44,7 +44,7 @@
</ons-splitter>
<template id="loading.html">
<ons-page>
<ons-page id="loadingPage">
<div style="text-align: right;">
<h1 style="font-family: Penna,sans-serif; font-size: 600%; padding: 0; margin-top: 100px;">DoliSCAN</h1>
</div>
......@@ -52,7 +52,8 @@
<p>
<ons-icon icon="md-spinner" size="45px" spin></ons-icon>
</p>
<p id="loadingmessage"> Chargement en cours ... <br /> </p>
<p id="loadingmessage"> Chargement en cours ... </p>
<p><i id="loadingStep"></i></p>
</div>
</ons-page>
</template>
......@@ -61,20 +62,28 @@
function switchLoginOrMenu() {
myDebug("switchLoginOrMenu ... do nothing, wait for ohers ons.ready ...");
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
$('#loadingmessage').append('Etape 5a<br />');
globalMyNavigator.resetToPage('login.html', { data: { title: 'avenir', name: "login.html" } });
}
else {
$('#loadingmessage').append('Etape 5b<br />');
}
$('#loadingPage').fadeOut(1000);
setTimeout(function () {
realLoginOrMenu();
}, 1150);
}
function realLoginOrMenu() {
if (compareVersions(localGetData("official_app_version"), globalAppVersion) > 0) {
myDebug("index.html : " + localGetData("official_app_message"));
ons.notification.alert(localGetData("official_app_message"), { title: "Nouvelle version" }).then(function () {
closePage(true);
});
}
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
// $('#loadingStep').text('Etape 9a');
globalMyNavigator.resetToPage('login.html', { data: { title: 'avenir', name: "login.html" } });
}
else {
$('#loadingStep').text('Etape 9b');
}
}
ons.ready(function () {
......@@ -83,7 +92,7 @@
globalCurrentPage = "index.html";
globalMyNavigator = document.getElementById('myNavigator');
$('#loadingmessage').append('Etape 1<br />');
$('#loadingStep').text('Etape 1');
// -----------------------------
// gestion du splitter ...
window.fn = {};
......@@ -109,7 +118,7 @@
let onsRightMenu = document.getElementById('rightmenu');
if (onsRightMenu != undefined)
onsRightMenu.close();
$('#loadingmessage').append('Etape 2<br />');
$('#loadingStep').text('Etape 2');
// var modal = document.querySelector('ons-modal');
......@@ -151,7 +160,7 @@
cleanHistorique();
if (globalDB == null) {
$('#loadingmessage').append('Etape 3a<br />');
$('#loadingStep').text('Etape 3a');
// myDebug("SQL : On essaye d'ouvrir la base de données ...");
if (typeof window.sqlitePlugin != 'undefined') {
globalDB = window.sqlitePlugin.openDatabase({
......@@ -159,7 +168,7 @@
location: 'default',
androidDatabaseProvider: 'system'
}, function () {
$('#loadingmessage').append('Etape 4<br />');
$('#loadingStep').text('Etape 4');
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");
......@@ -182,10 +191,10 @@
globalDB.executeSql('CREATE UNIQUE INDEX IF NOT EXISTS keyIndex on config (key);');
myDebug("SQL : fin de création des tables");
$('#loadingmessage').append('Etape 5<br />');
$('#loadingStep').text('Etape 5');
globalDB.readTransaction(function (t) {
$('#loadingmessage').append('Etape 6<br />');
$('#loadingStep').text('Etape 6');
myDebug("SQL : select ...");
t.executeSql('SELECT * FROM config WHERE value IS NOT NULL;', [],
function (tx, rs) {
......@@ -206,29 +215,29 @@
}
//le SQL s'est déroulé ...
myDebug("SQL : read OK");
$('#loadingmessage').append('Etape 7a<br />');
$('#loadingStep').text('Etape 7a');
switchLoginOrMenu();
}, function (tx, error) {
myDebug(" SQL Error " + error.message);
$('#loadingmessage').append('Etape 7b<br />');
$('#loadingStep').text('Etape 7b');
switchLoginOrMenu();
});
});
$('#loadingmessage').append('Etape 8<br />');
$('#loadingStep').text('Etape 8');
myDebug("SQL : end config ok");
switchLoginOrMenu();
});
}
else {
$('#loadingmessage').append('Etape 4b<br />');
$('#loadingStep').text('Etape 4b');
ons.notification.alert("Un élément nécessaire au bon fonctionnement de l'application n'est pas disponible ! (Erreur SQLite)", { title: "Erreur" }).then(function () {
closePage(true);
});
}
}
else {
$('#loadingmessage').append('Etape 3b<br />');
$('#loadingStep').text('Etape 3b');
switchLoginOrMenu();
}
myDebug("index.html : " + localGetData("official_app_message"));
......
......@@ -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 globalPictureFileName="";var globalAppVersion="1.4.9";var dataLDF="";var dataIK="";var globalMyNavigator=undefined;var globalResumable=undefined;var globalProgressBar=undefined;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 globalPictureFileName="";var globalAppVersion="1.5.0";var dataLDF="";var dataIK="";var globalMyNavigator=undefined;var globalResumable=undefined;var globalProgressBar=undefined;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,departSlug,arriveeSlug,situation){myDebug("distanceAutomatique : "+situation);let d=depart;let a=arrivee;if(situation=="depart"&&departSlug=="xxx")
return;if(departSlug&&departSlug!="xxx"){d=departSlug;}
......@@ -11,24 +11,29 @@ return;if(arriveeSlug&&arriveeSlug!="xxx"){a=arriveeSlug;}
if(situation=="depart"&&depart==""&&departSlug==""){ons.notification.alert("Merci de renseigner le point de départ (nom de ville ou code postal) !",{title:"Erreur #depart"});return;}
if(situation=="arrivee"&&arrivee==""&&arriveeSlug==""){ons.notification.alert("Merci de renseigner le point de d'arrivée (nom de ville ou code postal) !",{title:"Erreur #depart"});return;}
if(situation=="calcul"&&(depart==""||arrivee=="")){ons.notification.alert("Merci de renseigner le point de départ et d'arrivée...",{title:"Erreur #1"});return;}
showWait();$.ajaxSetup({timeout:5000,});result=undefined;if(ajaxDistance)
ajaxDistance.abort();var ajaxDistance=$.ajax({type:"GET",timeout:5000,url:"https://geo.doliscan.fr/api/geo/"+d+"/"+a,beforeSend:function(xhr){xhr.setRequestHeader('Authorization','Bearer '+localGetData("api_token"));},xhrFields:{withCredentials:true},success:function(result){myDebug('distanceAutomatique ajax ok1 / '+situation+" ::: "+JSON.stringify(result));if(result!=undefined){hideWait();if(result.departsNb==0&&result.arriveesNb==0){if(situation=='calcul'){updateDistanceFromServer(result);}
else{myDebug('distanceAutomatique ajax aucune réponse disponible ');ons.notification.alert("Aucune ville ne semble exister avec ce nom ou code postal dans notre base de données.\n\nLe calcul automatique de distance ne fonctionnera pas.\n\nVeuillez saisir la distance manuellement.",{title:"Erreur #1a"});}}
else{if(situation=="depart"){popupChoixDepart(result);}
if(depart=="")
d="null";if(arrivee=="")
a="null";showWait();$.ajaxSetup({timeout:5000,});result=undefined;if(ajaxDistance)
ajaxDistance.abort();var ajaxDistance=$.ajax({type:"GET",timeout:5000,url:"https://geo.doliscan.fr/api/geo/"+d+"/"+a,beforeSend:function(xhr){xhr.setRequestHeader('Authorization','Bearer '+localGetData("api_token"));},xhrFields:{withCredentials:true},success:function(result){myDebug('distanceAutomatique ajax ok1 / '+situation+" ::: "+JSON.stringify(result));console.log(result);if(result!=undefined){hideWait();if(situation=="depart"){popupChoixDepart(result);}
else if(situation=="arrivee"){popupChoixArrivee(result);}
else{popupChoixDepart(result).then(popupChoixArrivee(result));}}}
else{if(result.distanceKM>0){updateDistanceFromServer(result);}
else{myDebug('distanceAutomatique ajax aucune réponse disponible ');ons.notification.alert("Le calcul automatique de distance n'a rien trouvé.\n\nVeuillez saisir la distance manuellement.",{title:"Erreur #1a"});}}}
else{hideWait();ons.notification.alert("Saisie manuelle nécessaire, cet itinéraire n'est pas connue sur nos serveurs",{title:"Erreur #1"});}},error:function(result){myDebug('distanceAutomatique ajax erreur'+result);hideWait();ons.notification.alert("Saisie manuelle nécessaire, cet itinéraire n'est pas connue sur nos serveurs",{title:"Erreur #2"});}});}
function popupChoixDepart(result){myDebug('popupChoixDepart');return new Promise((resolve,reject)=>{if(result.departsNb!==undefined&&result.departsNb>=1){let btn=[];let btnNb=0;for(btnNb=0;btnNb<result.departsNb;btnNb++){btn.push({label:encodeHTMLEntities(result.depart[btnNb])+" ("+result.departCP[btnNb]+")",slug:result.departSlug[btnNb]});}
function popupChoixDepart(result){myDebug('popupChoixDepart');return new Promise((resolve,reject)=>{if(result.departsNb!==undefined){if(result.departsNb==1){functionChooseDepart2(encodeHTMLEntities(result.depart)+" ("+result.departCP+")",result.departSlug,true);}
else{let btn=[];let btnNb=0;for(btnNb=0;btnNb<result.departsNb;btnNb++){btn.push({label:encodeHTMLEntities(result.depart[btnNb])+" ("+result.departCP[btnNb]+")",slug:result.departSlug[btnNb]});}
if(globalMyNavigator===undefined)globalMyNavigator=document.getElementById('myNavigator');if(globalMyNavigator!==undefined){resolve(globalMyNavigator.pushPage("choix-liste.html",{data:{title:"Précisez la ville de départ",callFunction:'functionChooseDepart2',btn:btn,btnNb:btnNb,},}));}
else{myDebug('ERROR myNavigator does not exists !');reject(null);}}
else{myDebug('ERROR myNavigator does not exists !');reject(null);}}}
else{myDebug('Pas de solution !');resolve(popupChoixArrivee(result));}});}
function popupChoixArrivee(result){return new Promise((resolve,reject)=>{if(result.arriveesNb!==undefined&&result.arriveesNb>=1){let btn=[];let btnNb=0;for(btnNb=0;btnNb<result.arriveesNb;btnNb++){btn.push({label:encodeHTMLEntities(result.arrivee[btnNb])+" ("+result.arriveeCP[btnNb]+")",slug:result.arriveeSlug[btnNb]});}
function popupChoixArrivee(result){return new Promise((resolve,reject)=>{if(result.arriveesNb!==undefined){if(result.arriveesNb==1){functionChooseArrivee2(encodeHTMLEntities(result.arrivee)+" ("+result.arriveeCP+")",result.arriveeSlug,true);}
else{let btn=[];let btnNb=0;for(btnNb=0;btnNb<result.arriveesNb;btnNb++){btn.push({label:encodeHTMLEntities(result.arrivee[btnNb])+" ("+result.arriveeCP[btnNb]+")",slug:result.arriveeSlug[btnNb]});}
if(globalMyNavigator===undefined)globalMyNavigator=document.getElementById('myNavigator');if(globalMyNavigator!==undefined){resolve(globalMyNavigator.pushPage("choix-liste.html",{data:{title:"Précisez la ville d'arrivée",callFunction:'functionChooseArrivee2',btn:btn,btnNb:btnNb,},}));}
else{myDebug('ERROR myNavigator does not exists !');reject(null);}}});}
function functionChooseArrivee2(label,slug){if(slug!==undefined){$('#arrivee').val(decodeURIComponent(label));$('#arriveeSlug').val(slug);$('#btnCalculDistance').attr('style',"border-radius: 5px; border:#00FF00 2px solid;");$('#btnCalculDistanceArrivee').attr('style',"");if(globalMyNavigator===undefined)globalMyNavigator=document.getElementById('myNavigator');if(globalMyNavigator!==undefined){globalMyNavigator.popPage();}
else{myDebug('ERROR myNavigator does not exists !');reject(null);}}}});}
function functionChooseArrivee2(label,slug,single=false){if(slug!==undefined){$('#arrivee').val(decodeURIComponent(label));$('#arriveeSlug').val(slug);$('#btnCalculDistance').attr('style',"border-radius: 5px; border:#00FF00 2px solid;");$('#btnCalculDistanceArrivee').attr('style',"");if(globalMyNavigator===undefined)globalMyNavigator=document.getElementById('myNavigator');if(globalMyNavigator!==undefined){if(!single)
globalMyNavigator.popPage();}
blinkElement("#btnCalculDistance",3,800);}
else{myDebug("functionChooseArrivee2: slug is undef !")}}
function functionChooseDepart2(label,slug){if(slug!==undefined){$('#depart').val(decodeURIComponent(label));$('#departSlug').val(slug);$('#btnCalculDistanceArrivee').attr('style',"border-radius: 5px; border:#00FF00 2px solid;");if(globalMyNavigator===undefined)globalMyNavigator=document.getElementById('myNavigator');if(globalMyNavigator!==undefined){globalMyNavigator.popPage();}
function functionChooseDepart2(label,slug,single=false){if(slug!==undefined){$('#depart').val(decodeURIComponent(label));$('#departSlug').val(slug);$('#btnCalculDistanceArrivee').attr('style',"border-radius: 5px; border:#00FF00 2px solid;");if(globalMyNavigator===undefined)globalMyNavigator=document.getElementById('myNavigator');if(globalMyNavigator!==undefined){if(!single)
globalMyNavigator.popPage();}
blinkElement("#btnCalculDistanceArrivee",3,800);}
else{myDebug("functionChooseDepart2: slug is undef !")}}
function updateDistanceFromServer(result){$('#distance').val(result.distanceKM);$('#btnCalculDistance').attr('style',"");}
......@@ -284,8 +289,8 @@ function computeHT(taux,destination){let ttc=$('#ttc').val();let ttcVal=parseFlo
function computeHTAmount(taux,destination){let ttc=$('#ttc').val();let ttcVal=parseFloat(ttc.replace(",","."));let ht=(ttcVal/((taux/100)+1));let diff=ttcVal-ht;let arrondis=Math.round(diff*100)/100;$(destination).val(arrondis);}
function compareVersions(a,b){if(a==""||b==""){return-2;}
var pa=a.split('.');var pb=b.split('.');for(var i=0;i<3;i++){var na=Number(pa[i]);var nb=Number(pb[i]);if(na>nb)return 1;if(nb>na)return-1;if(!isNaN(na)&&isNaN(nb))return 1;if(isNaN(na)&&!isNaN(nb))return-1;}
return 0;};function showWait(){$("#sablier").show();setTimeout(function(){hideWait()},120000);}
function hideWait(){$("#sablier").hide();}
return 0;};function showWait(){$("#sablier").fadeIn(250);setTimeout(function(){hideWait()},120000);}
function hideWait(){$("#sablier").fadeOut(250);}
function faIcone(label,id){let icone="";icone=faIconeLabel(label);if(icone==""){icone=faIconeId(id);}
return icone;}
function faIconeLabel(label){if((typeof label!='undefined')&&(label!==null)&&(label!="")){let r="";let tabCorrespondance={"sandwich":"hamburger","hamburger":"hamburger","mcdo":"hamburger","café":"coffee","pizza":"pizza-slice","restaurant":"utensils","resto":"utensils","glace":"ice-cream","poisson":"fish","biscuit":"cookie","salade":"carrot","fruit":"apple-alt","bus":"bus","autobus":"bus","avion":"plane","métro":"subway","tram":"tram","train":"train","tgv":"train","ter":"train","taxi":"taxi","vtc":"shuttle-van","moto":"motorcycle","autoroute":"road","péage":"road","timbres":"mail-bulk","ups":"ups","dhl":"dhl","amazon":"amazon","airbnb":"airbnb","apple":"apple","aws":"aws","bitcoin":"bitcoin","dropbox":"dropbox","ebay":"ebay","facebook":"facebook","fedex":"fedex","google":"google","itunes":"itunes-note","linux":"linux","microsoft":"microsoft","paypal":"paypal","stripe":"stripe-s","uber":"uber","viadeo":"viadeo",};let keys=Object.keys(tabCorrespondance);for(let key of keys){let search=new RegExp(key,'iu');if(label.match(search)){r=tabCorrespondance[key];break;}}
......
......@@ -18,7 +18,7 @@ var globalSyncInProgress = false; // Pour savoir si on est en phase de syn
var globalPictureFileName = ""; // Le nom du fichier sans résolution (depuis ios wkbidule app:// ... on garde dans cette variable le path basique pour resumable & sync)
// **********************************************************************
//Ne pas toucher, mis à jour automatiquement à partir du config.xml
var globalAppVersion = "1.4.9"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
var globalAppVersion = "1.5.0"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
// **********************************************************************
var dataLDF = "";
var dataIK = "";
......
......@@ -54,6 +54,12 @@ function distanceAutomatique(depart, arrivee, departSlug, arriveeSlug, situation
return;
}
//Cas ou on demande uniquement une ville de départ ou uniquement une ville d'arrivée
if (depart == "")
d = "null";
if (arrivee == "")
a = "null";
showWait();
$.ajaxSetup({
timeout: 5000,
......@@ -76,28 +82,25 @@ function distanceAutomatique(depart, arrivee, departSlug, arriveeSlug, situation
},
success: function (result) {
myDebug('distanceAutomatique ajax ok1 / ' + situation + " ::: " + JSON.stringify(result));
console.log(result);
if (result != undefined) {
hideWait();
if (result.departsNb == 0 && result.arriveesNb == 0) {
if (situation == 'calcul') {
updateDistanceFromServer(result);
}
else {
myDebug('distanceAutomatique ajax aucune réponse disponible ');
ons.notification.alert("Aucune ville ne semble exister avec ce nom ou code postal dans notre base de données.\n\nLe calcul automatique de distance ne fonctionnera pas.\n\nVeuillez saisir la distance manuellement.", { title: "Erreur #1a" });
}
if (situation == "depart") {
popupChoixDepart(result);
}
else if (situation == "arrivee") {
popupChoixArrivee(result);
}
else {
if (situation == "depart") {
popupChoixDepart(result);
}
else if (situation == "arrivee") {
popupChoixArrivee(result);
if (result.distanceKM > 0) {
updateDistanceFromServer(result);
}
else {
//debug alert(result.departsNb + " : " + result.arriveesNb);
popupChoixDepart(result).then(popupChoixArrivee(result));
myDebug('distanceAutomatique ajax aucune réponse disponible ');
ons.notification.alert("Le calcul automatique de distance n'a rien trouvé.\n\nVeuillez saisir la distance manuellement.", { title: "Erreur #1a" });
}
//debug alert(result.departsNb + " : " + result.arriveesNb);
//popupChoixDepart(result).then(popupChoixArrivee(result));
}
}
else {
......@@ -125,33 +128,38 @@ function popupChoixDepart(result) {
myDebug('popupChoixDepart');
return new Promise((resolve, reject) => {
if (result.departsNb !== undefined && result.departsNb >= 1) {
let btn = [];
let btnNb = 0;
for (btnNb = 0; btnNb < result.departsNb; btnNb++) {
btn.push({
label: encodeHTMLEntities(result.depart[btnNb]) + " (" + result.departCP[btnNb] + ")",
slug: result.departSlug[btnNb]
});
}
// btn.push({ label: 'Annuler', icon: 'md-close' });
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
resolve(
globalMyNavigator.pushPage("choix-liste.html", {
data: {
title: "Précisez la ville de départ",
callFunction: 'functionChooseDepart2',
btn: btn,
btnNb: btnNb,
},
})
);
if (result.departsNb !== undefined) {
if (result.departsNb == 1) {
functionChooseDepart2(encodeHTMLEntities(result.depart) + " (" + result.departCP + ")", result.departSlug, true);
}
else {
myDebug('ERROR myNavigator does not exists !');
reject(null);
let btn = [];
let btnNb = 0;
for (btnNb = 0; btnNb < result.departsNb; btnNb++) {
btn.push({
label: encodeHTMLEntities(result.depart[btnNb]) + " (" + result.departCP[btnNb] + ")",
slug: result.departSlug[btnNb]
});
}
// btn.push({ label: 'Annuler', icon: 'md-close' });
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
resolve(
globalMyNavigator.pushPage("choix-liste.html", {
data: {
title: "Précisez la ville de départ",
callFunction: 'functionChooseDepart2',
btn: btn,
btnNb: btnNb,
},
})
);
}
else {
myDebug('ERROR myNavigator does not exists !');
reject(null);
}
}
}
else {
......@@ -165,33 +173,39 @@ function popupChoixDepart(result) {
//Autre idée pour une popup pour préciser la ville d'arrivée lorsqu'on a des homonymes
function popupChoixArrivee(result) {
return new Promise((resolve, reject) => {
if (result.arriveesNb !== undefined && result.arriveesNb >= 1) {
let btn = [];
let btnNb = 0;
for (btnNb = 0; btnNb < result.arriveesNb; btnNb++) {
btn.push({
label: encodeHTMLEntities(result.arrivee[btnNb]) + " (" + result.arriveeCP[btnNb] + ")",
slug: result.arriveeSlug[btnNb]
});
}
// btn.push({ label: 'Annuler', icon: 'md-close' });
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
resolve(
globalMyNavigator.pushPage("choix-liste.html", {
data: {
title: "Précisez la ville d'arrivée",
callFunction: 'functionChooseArrivee2',
btn: btn,
btnNb: btnNb,
},
})
);
if (result.arriveesNb !== undefined) {
if (result.arriveesNb == 1) {
functionChooseArrivee2(encodeHTMLEntities(result.arrivee) + " (" + result.arriveeCP + ")", result.arriveeSlug, true);
}
else {
myDebug('ERROR myNavigator does not exists !');
reject(null);
let btn = [];
let btnNb = 0;
for (btnNb = 0; btnNb < result.arriveesNb; btnNb++) {
btn.push({
label: encodeHTMLEntities(result.arrivee[btnNb]) + " (" + result.arriveeCP[btnNb] + ")",
slug: result.arriveeSlug[btnNb]
});
}
// btn.push({ label: 'Annuler', icon: 'md-close' });
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
resolve(
globalMyNavigator.pushPage("choix-liste.html", {
data: {
title: "Précisez la ville d'arrivée",
callFunction: 'functionChooseArrivee2',
btn: btn,
btnNb: btnNb,
},
})
);
}
else {
myDebug('ERROR myNavigator does not exists !');
reject(null);
}
}
}
});
......@@ -247,7 +261,7 @@ function popupChoixArrivee(result) {
// }
//Actualisation du champ "distance" du formulaire
function functionChooseArrivee2(label, slug) {
function functionChooseArrivee2(label, slug, single = false) {
if (slug !== undefined) {
//Il faudrait donc aller chercher la val correspondante
$('#arrivee').val(decodeURIComponent(label));
......@@ -256,7 +270,9 @@ function functionChooseArrivee2(label, slug) {
$('#btnCalculDistanceArrivee').attr('style', "");
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
globalMyNavigator.popPage();
//Si on a une seule réponse et qu'on a fait un appel direct on ne pop pas la page
if (!single)
globalMyNavigator.popPage();
}
blinkElement("#btnCalculDistance", 3, 800);
}
......@@ -266,7 +282,7 @@ function functionChooseArrivee2(label, slug) {
}
//Actualisation du champ "distance" du formulaire
function functionChooseDepart2(label, slug) {
function functionChooseDepart2(label, slug, single = false) {
if (slug !== undefined) {
//Il faudrait donc aller chercher la val correspondante
$('#depart').val(decodeURIComponent(label));
......@@ -274,7 +290,9 @@ function functionChooseDepart2(label, slug) {
$('#btnCalculDistanceArrivee').attr('style', "border-radius: 5px; border:#00FF00 2px solid;");
if (globalMyNavigator === undefined) globalMyNavigator = document.getElementById('myNavigator');
if (globalMyNavigator !== undefined) {
globalMyNavigator.popPage();
//Si on a une seule réponse et qu'on a fait un appel direct on ne pop pas la page
if (!single)
globalMyNavigator.popPage();
}
blinkElement("#btnCalculDistanceArrivee", 3, 800);
// return true;
......
......@@ -93,7 +93,7 @@ function dirname(path) {
function computeHT(taux, destination) {
let ttc = $('#ttc').val();
//Merci ios
let ttcVal = parseFloat(ttc.replace(",","."));
let ttcVal = parseFloat(ttc.replace(",", "."));
let ht = (ttcVal / ((taux / 100) + 1)).toFixed(2);
$(destination).val(ht);
}
......@@ -111,7 +111,7 @@ function computeHT(taux, destination) {
function computeHTAmount(taux, destination) {
let ttc = $('#ttc').val();
//Merci ios
let ttcVal = parseFloat(ttc.replace(",","."));
let ttcVal = parseFloat(ttc.replace(",", "."));
let ht = (ttcVal / ((taux / 100) + 1));
let diff = ttcVal - ht;
......@@ -143,14 +143,14 @@ function compareVersions(a, b) {
//Affiche un "wait" message ... un sablier quoi
function showWait() {
// myDebug("Appel a showWait");
$("#sablier").show();
$("#sablier").fadeIn(250);
setTimeout(function () { hideWait() }, 120000);
}
//Cache le sablier
function hideWait() {
// myDebug("Appel a hideWait");
$("#sablier").hide();
$("#sablier").fadeOut(250);
}
// Retourne une icone a partir de l'id si on n'en a pas a partir du label
......
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