Commit 1ee45ce3 authored by Eric Seigne's avatar Eric Seigne
Browse files

split du code js en plein de fichiers pour faciliter la comprehension + concat/minify lors du build

parent ec9ffca7
......@@ -12,7 +12,14 @@ APPVERSION=`grep version config.xml | grep doliscan | sed s/".*version=\""/""/ |
sed -i -e s%".*preference name=\"OverrideUserAgent\" value=\".*"%" <preference name=\"OverrideUserAgent\" value=\"Mozilla/5.0 OpenNDF/${APPVERSION} Android\" />"% config.xml
#et on hardcode le globalAppVersion au passage
sed -i -e s%"\(var globalAppVersion =\)\( .*; \)\(.*\)"%"\1 \"${APPVERSION}\"; \3"% ./www/js/ndf-head.js
sed -i -e s%"\(var globalAppVersion =\)\( .*; \)\(.*\)"%"\1 \"${APPVERSION}\"; \3"% ./www/js/src/config.js
#puis on minify/compile les js
minify www/js/src -o www/js/index.minTMP.js -v
if [ -f www/js/index.minTMP.js ]; then
cat www/js/src/copyright.js www/js/index.minTMP.js > www/js/index.min.js
rm -f www/js/index.minTMP.js
fi
cordova build android --release
if [ ${?} -eq "0" ]; then
......
......@@ -4,17 +4,15 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>doliscan : Notes de frais</title>
<title>DoliSCAN : Notes de frais</title>
<link rel="stylesheet" href="css/onsenui.css">
<link rel="stylesheet" href="css/onsen-css-components.min.css">
<!-- <link rel="stylesheet" href="css/normalize.css"> -->
<link rel="stylesheet" href="css/skeleton.css">
<link rel="stylesheet" href="css/index.css">
<link rel="stylesheet" href="css/font_awesome/css/font-awesome.min.css">
<script type="text/javascript" src="js/onsenui.min.js"></script>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/ndf-head.js"></script>
<script type="text/javascript" src="js/jquery.serialize-object.min.js"></script>
</head>
......@@ -36,9 +34,7 @@
</ons-modal>
</body>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/ndf.js"></script>
<script type="text/javascript" src="js/config.js"></script>
<script type="text/javascript" src="js/index.min.js"></script>
<script type="text/javascript" src="js/pinch-zoom.js"></script>
<script type="text/javascript" src="js/session-timeout.js"></script>
......
......@@ -9,13 +9,14 @@
</div>
<script type="text/javascript">
//Si on a un vehicule perso on pourrait importer la base de donnee des principales villes ...
//Pour l'instant non car on n'en fait rien
// var testvVP = localGetData("vehicules");
// if (testvVP != null) {
// jeuEssaiVilles();
// }
//Si on a un vehicule perso on pourrait importer la base de donnee des principales villes ...
//Pour l'instant non car on n'en fait rien
var testvVP = localGetData("vehicules");
if (testvVP != null) {
importListeVilles();
}
$(document).ready(function () {
setPageTitle("Démarrage");
});
</script>
......@@ -4,7 +4,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>doliscan : Notes de frais</title>
<title>DoliSCAN : Notes de frais</title>
<link rel="stylesheet" href="css/onsenui.css">
<link rel="stylesheet" href="css/onsen-css-components.min.css">
<link rel="stylesheet" href="css/font_awesome/css/font-awesome.min.css">
......@@ -14,7 +14,6 @@
<script type="text/javascript" src="js/onsenui.min.js"></script>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/ndf-head.js"></script>
</head>
<body>
......@@ -88,29 +87,6 @@
</ons-col>
</ons-row>
<!-- <ons-row>
<ons-col>
<ons-list>
<ons-list-header>Choisissez un serveur</ons-list-header>
<ons-list-item tappable expandable>
<div id="server">Choisissez un serveur ici :</div>
<div class="expandable-content">
<ons-list>
<ons-list-item onclick="switchServer('#server','DoliScan officiel','https://doliscan.fr');" tappable>
DoliScan officiel</ons-list-item>
<ons-list-item onclick="switchServer('#server','Développeur','https://dev.app.cap-rel.fr');" tappable>
Développeur</ons-list-item>
<ons-list-item onclick="switchServer('#server','CAP-REL démo','https://z.cap-rel.fr/ndfdemo');" tappable>
CAP-REL démo</ons-list-item>
<ons-list-item onclick="switchServer('#server','CAP-REL officiel','https://z.cap-rel.fr/ndf');" tappable>
CAP-REL officiel</ons-list-item>
</ons-list>
</div>
</ons-list-item>
</ons-list>
</ons-col>
</ons-row> -->
<ons-row style="margin-top:50px;">
<ons-col>
<ons-button modifier="material large" type="button" onclick="loginButtonPressed();" class="menubutton"><i class="zmdi zmdi-sign-in"></i> Authentification</ons-button>
......@@ -120,7 +96,7 @@
<i>Votre assistant "notes de frais"...</i>
</div>
<div style="text-align: right;">
<a onclick="carouselCreateAccount();">Ouvrir un compte</a>
<a onclick="carouselPassword();">Mot de passe oublié...</a>
</div>
</ons-col>
</ons-row>
......@@ -130,47 +106,19 @@
<ons-carousel-item>
<div class="container">
<h3>Création d'un compte...</h3>
<form id="leformCreation">
<h3>Mot de passe oublié...</h3>
<form id="leformPassword">
<ons-row>
<ons-col>
<label for="firstnameCreate">Votre prénom</label>
<ons-input name="firstnameCreate" id="firstnameCreate" type="text" placeholder="Votre prénom" value="Prénom" autocorrect="off" autocapitalize="off" spellcheck="false" minlength="4" maxlength="30">
</ons-input>
<label for="nameCreate">Votre nom</label>
<ons-input name="nameCreate" id="nameCreate" type="text" placeholder="Votre nom" value="Anonyme" autocorrect="off" autocapitalize="off" spellcheck="false" minlength="4" maxlength="30">
</ons-input>
<label for="emailCreate">Votre adresse mail</label>
<ons-input name="emailCreate" id="emailCreate" type="email" placeholder="Identifiant" value="demo@devtemp.fr" autocorrect="off" autocapitalize="off" spellcheck="false" minlength="4" maxlength="60">
<label for="emailForget">Votre adresse mail</label>
<ons-input name="emailForget" id="emailForget" type="email" placeholder="Identifiant" value="demo@devtemp.fr" autocorrect="off" autocapitalize="off" spellcheck="false" minlength="4" maxlength="60">
</ons-input>
<label for="passwordCreate">Mot de passe souhaité (6 caractères minimum)</label>
<input name="passwordCreate" id="passwordCreate" type="password" placeholder="Mot de passe" value="azaz" autocorrect="off" autocapitalize="off" spellcheck="false" minlength="6" maxlength="30">
</ons-input>
<ons-list>
<ons-list-item tappable expandable>
<div id="serverCreate">Choisissez un serveur :</div>
<div class="expandable-content">
<ons-list>
<ons-list-item onclick="switchServer('#serverCreate','DoliScan officiel','https://doliscan.fr');" tappable>
DoliScan officiel (15 jours gratuits)</ons-list-item>
<ons-list-item onclick="switchServer('#serverCreate','Serveur de tests','https://doliscan.devtemp.fr');" tappable>
Serveur de tests</ons-list-item>
<ons-list-item onclick="switchServer('#serverCreate','Serveur de dev','https://doliscan.alpha.devtemp.fr');" tappable>
Serveur de dev</ons-list-item>
</ons-list>
</div>
</ons-list-item>
</ons-list>
</ons-col>
</ons-row>
<ons-row style="margin-top:50px;">
<ons-col>
<ons-button modifier="material large" type="button" onclick="createJson();" class="menubutton"><i class="zmdi zmdi-sign-in"></i> Créer le compte</ons-button>
<ons-button modifier="material large" type="button" onclick="passwordJson();" class="menubutton"><i class="zmdi zmdi-sign-in"></i> Envoyer</ons-button>
&nbsp;
<div style="text-align: right;">
<h1 style="font-family: Penna,sans-serif; font-size: 400%; padding: 0; margin:0;">DoliSCAN</h1>
......@@ -179,6 +127,9 @@
<div style="text-align: right;">
<a onclick="carouselLogin();">S'authentifier</a>
</div>
<div style="text-align: right;">
<a onclick="CreateAccount();">Créer un compte sur doliscan.fr</a>
</div>
</ons-col>
</ons-row>
</form>
......@@ -199,8 +150,7 @@
</body>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/ndf.js"></script>
<script type="text/javascript" src="js/index.min.js"></script>
<script type="text/javascript">
function CreateAccount() {
......@@ -275,47 +225,44 @@
});
}
function createJson() {
if (!genericCheckForm()) {
return;
}
let lemail = document.getElementById('emailCreate').value;
let lfirstname = document.getElementById('firstnameCreate').value;
let lname = document.getElementById('nameCreate').value;
let lpassword = document.getElementById('passwordCreate').value;
function passwordJson() {
//On supprime tout message précédent
$("#messagePopupMessage").replaceWith("");
let lemail = document.getElementById('emailForget').value;
showWait();
// myDebug('loginJson : tentative de login via ajax request vers le serveur ');
$.ajax({
type: "POST",
url: localGetData("api_server") + "/api/register",
timeout: 5000,
url: localGetData("api_server") + "/api/password/reset",
timeout: 15000,
data: {
firstname: lfirstname,
name: lname,
email: lemail,
password: lpassword,
},
success: function (result) {
hideWait();
myDebug("SUCCESS");
myDebug(result);
globalNetworkResponse = Date.now();
$("#messagePopupMessage").replaceWith("Votre compte est créé, patientez quelques secondes puis consultez vos mails pour valider votre ouverture de compte.");
$("#messagePopup").show();
myDebug("Success on a un message du serveur on l'affiche ...");
ons.notification.alert(result.message);
carouselLogin();
},
error: function (result) {
hideWait();
myDebug("ERROR");
myDebug(result);
$("#messagePopupMessage").replaceWith("Erreur de création de votre compte ... contactez l'administrateur du serveur pour plus d'informations.");
$("#messagePopup").show();
// setTimeout(function(){ $("#erreurLogin").hide(); }, 5000);
// ons.notification.alert("Erreur d'authentification.<br />Vérifiez votre mot de passe ...");
// myDebug("carouselLogin 6");
carouselCreateAccount();
myDebug(result.responseJSON);
if (typeof result.responseJSON.message !== 'undefined') {
myDebug("Error ... on a un message du serveur on l'affiche ...");
ons.notification.alert(result.responseJSON.message);
}
else {
myDebug("Error ... pas de message serveur");
myDebug(result.message);
ons.notification.alert("Erreur ... contactez le service technique pour plus d'informations.");
// setTimeout(function(){ $("#erreurLogin").hide(); }, 5000);
// ons.notification.alert(result.message);
// myDebug("carouselLogin 6");
carouselPassword();
}
}
});
}
......@@ -446,7 +393,7 @@
carousel.setActiveIndex(1);
}
}
function carouselCreateAccount() {
function carouselPassword() {
let carousel = document.getElementById('carousel');
if (carousel.getActiveIndex() != 2) {
carousel.setActiveIndex(2);
......
/*
* (c) Éric Seigne <eric.seigne@cap-rel.fr> - 2019 - GNU AGPLv3
*/
function jeuEssaiVilles() {
var cities = ["Abbeville", "Abymes", "Achères", "Agde", "Agen", "Aire-sur-la-Lys", "Aix-en-Provence", "Aix-les-Bains", "Ajaccio", "Albert", "Albertville", "Albi", "Alençon",
"Alès", "Alfortville", "Allauch", "Allonnes", "Ambarès-et-Lagrave", "Ambérieu-en-Bugey", "Amboise", "Amiens", "Amilly", "Amnéville", "Andernos-les-Bains", "Andrésy",
"Andrézieux-Bouthéon", "Angers", "Anglet", "Angoulême", "Aniche", "Annecy", "Annecy-le-Vieux", "Annemasse", "Annœullin", "Annonay", "Antibes", "Antony", "Anzin", "Apt",
"Arcachon", "Arcueil", "Argelès-sur-Mer", "Argentan", "Argenteuil", "Arles", "Armentières", "Arnouville", "Arpajon", "Arques", "Arras", "Asnières-sur-Seine", "Athis-Mons",
"Aubagne", "Aubenas", "Aubergenville", "Aubervilliers", "Aubière", "Auch", "Auchel", "Audincourt", "Aulnay-sous-Bois", "Auray", "Aurillac", "Auriol", "Auterive", "Autun",
"Auxerre", "Avignon", "Avion", "Avirons", "Avon", "Avrillé", "Bagneux", "Bagnolet", "Bagnols-sur-Cèze", "Baie-Mahault", "Bailleul", "Balma", "Bandraboua", "Barentin",
"Bar-le-Duc", "Basse-Terre", "Bastia", "Bayeux", "Bayonne", "Beaucaire", "Beaumont", "Beaune", "Beausoleil", "Beauvais", "Bègles", "Belfort", "Bellegarde-sur-Valserine",
"Berck", "Bergerac", "Bernay", "Berre-l'Étang", "Besançon", "Béthune", "Betton", "Béziers", "Bezons", "Biarritz", "Biganos", "Billère", "Biot", "Biscarrosse", "Bischheim",
"Bischwiller", "Blagnac", "Blain", "Blanquefort", "Blois", "Bobigny", "Bois-Colombes", "Bois-d'Arcy", "Bois-Guillaume", "Boissy-Saint-Léger", "Bolbec", "Bollène",
"Bondoufle", "Bondues", "Bondy", "Bonneuil-sur-Marne", "Bonneville", "Bordeaux", "Bouc-Bel-Air", "Bouguenais", "Boulogne-Billancourt", "Boulogne-sur-Mer", "Bourg-de-Péage",
"Bourg-en-Bresse", "Bourges", "Bourg-la-Reine", "Bourg-lès-Valence", "Bourgoin-Jallieu", "Bras-Panon", "Bressuire", "Brest", "Brétigny-sur-Orge", "Briançon",
"Brie-Comte-Robert", "Brignais", "Brignoles", "Brive-la-Gaillarde", "Bron", "Bruay-la-Buissière", "Bruay-sur-l'Escaut", "Bruges", "Brumath", "Brunoy", "Bruz", "Bry-sur-Marne",
"Bully-les-Mines", "Bures-sur-Yvette", "Bussy-Saint-Georges", "Buxerolles", "Cabestany", "Cachan", "Caen", "Cagnes-sur-Mer", "Cahors", "Calais", "Caluire-et-Cuire", "Cambrai",
"Canet-en-Roussillon", "Cannes", "Canteleu", "Capesterre-Belle-Eau", "Carcassonne", "Carmaux", "Carpentras", "Carquefou", "Carqueiranne", "Carrières-sous-Poissy",
"Carrières-sur-Seine", "Carros", "Carvin", "Castanet-Tolosan", "Castelnaudary", "Castelnau-le-Lez", "Castelsarrasin", "Castres", "Caudebec-lès-Elbeuf", "Caudry", "Cavaillon",
"Cayenne", "Cenon", "Cergy", "Cernay", "Cesson-Sévigné", "Cestas", "Châlette-sur-Loing", "Challans", "Châlons-en-Champagne", "Chalon-sur-Saône", "Chamalières", "Chambéry",
"Chambly", "Chambray-lès-Tours", "Champigny-sur-Marne", "Champs-sur-Marne", "Chanteloup-les-Vignes", "Chantepie", "Chantilly", "Charenton-le-Pont", "Charleville-Mézières",
"Chartres", "Chassieu", "Châteaubriant", "Château-d'Olonne", "Châteaudun", "Château-Gontier", "Châteauneuf-les-Martigues", "Châteaurenard", "Châteauroux", "Château-Thierry",
"Châtellerault", "Châtenay-Malabry", "Châtillon", "Chatou", "Chaumont", "Chauny", "Chaville", "Chelles", "Chennevières-sur-Marne", "Chenôve", "Cherbourg-Octeville",
"Chevigny-Saint-Sauveur", "Chevilly-Larue", "Chilly-Mazarin", "Choisy-le-Roi", "Cholet", "Clamart", "Claye-Souilly", "Clayes-sous-Bois", "Clermont", "Clermont-Ferrand",
"Clichy", "Clichy-sous-Bois", "Cluses", "Cognac", "Cogolin", "Colmar", "Colombes", "Colomiers", "Combs-la-Ville", "Comines", "Compiègne", "Concarneau", "Condé-sur-l'Escaut",
"Conflans-Sainte-Honorine", "Corbas", "Corbeil-Essonnes", "Cormeilles-en-Parisis", "Cosne-Cours-sur-Loire", "Coudekerque-Branche", "Couëron", "Coulommiers", "Courbevoie",
"Courcouronnes", "Cournon-d'Auvergne", "Courrières", "Coutances", "Cran-Gevrier", "Craponne", "Creil", "Crépy-en-Valois", "Créteil", "Creutzwald", "Croissy-sur-Seine", "Croix",
"Crosne", "Cuers", "Cugnaux", "Cusset", "Dammarie-les-Lys", "Darnétal", "Dax", "Décines-Charpieu", "Dembeni", "Denain", "Deuil-la-Barre", "Déville-lès-Rouen", "Dieppe",
"Digne-les-Bains", "Dijon", "Dinan", "Dinard", "Dole", "Dombasle-sur-Meurthe", "Domont", "Douai", "Douarnenez", "Douchy-les-Mines", "Dourdan", "Draguignan", "Drancy", "Draveil",
"Dreux", "Ducos", "Dugny", "Dunkerque", "Dzaoudzi", "Eaubonne", "Échirolles", "Écully", "Élancourt", "Elbeuf", "Enghien-les-Bains", "Épernay", "Épinal", "Épinay-sous-Sénart",
"Épinay-sur-Orge", "Épinay-sur-Seine", "Équeurdreville-Hainneville", "Éragny", "Ermont", "Erstein", "Escaudain", "Étampes", "Étang-Salé", "Étaples", "Évreux", "Évry", "Eybens",
"Eysines", "Faches-Thumesnil", "Fameck", "Fécamp", "Feyzin", "Figeac", "Firminy", "Flers", "Fleury-les-Aubrais", "Fleury-Mérogis", "Floirac", "Florange", "Foix", "Fondettes",
"Fonsorbes", "Fontaine", "Fontainebleau", "Fontaine-lès-Dijon", "Fontenay-aux-Roses", "Fontenay-le-Comte", "Fontenay-le-Fleury", "Fontenay-sous-Bois", "Forbach",
"Fort-de-France", "Fosses", "Fos-sur-Mer", "Fouesnant", "Fougères", "Fourmies", "Francheville", "François", "Franconville", "Fréjus", "Fresnes", "Freyming-Merlebach",
"Frontignan", "Fuveau", "Gagny", "Gaillac", "Gaillard", "Gap", "Garches", "Gardanne", "Garges-lès-Gonesse", "Genas", "Gennevilliers", "Gentilly", "Gerzat", "Gex", "Gien",
"Gif-sur-Yvette", "Gignac-la-Nerthe", "Gisors", "Givors", "Gonesse", "Gonfreville-l'Orcher", "Gosier", "Goussainville", "Gouvieux", "Gradignan", "Grand-Couronne",
"Grande-Synthe", "Granville", "Grasse", "Graulhet", "Gravelines", "Grenoble", "Grigny", "Gros-Morne", "Guebwiller", "Guérande", "Guéret", "Guidel", "Guilherand-Granges",
"Guipavas", "Gujan-Mestras", "Guyancourt", "Hagondange", "Haguenau", "Halluin", "Harnes", "Haubourdin", "Hautmont", "Hayange", "Hazebrouck", "Hem", "Hendaye", "Hénin-Beaumont",
"Hennebont", "Herbiers", "Herblay", "Héricourt", "Hérouville-Saint-Clair", "Hirson", "Hœnheim", "Houilles", "Hyères", "Ifs", "Igny", "Illkirch-Graffenstaden", "Illzach",
"Isbergues", "Issoire", "Issoudun", "Issy-les-Moulineaux", "Istres", "Ivry-sur-Seine", "Jarville-la-Malgrange", "Jeumont", "Joigny", "Joinville-le-Pont", "Joué-lès-Tours",
"Jouy-le-Moutier", "Juvisy-sur-Orge", "Kingersheim", "Koungou", "Kourou", "La Baule-Escoublac", "La Celle-Saint-Cloud", "La Chapelle-Saint-Luc", "La Chapelle-Saint-Mesmin",
"La Chapelle-sur-Erdre", "La Ciotat", "La Courneuve", "La Crau", "La Ferté-Bernard", "La Ferté-sous-Jouarre", "La Flèche", "La Garde", "La Garenne-Colombes", "Lagny-sur-Marne",
"La Londe-les-Maures", "La Madeleine", "Lamballe", "Lambersart", "Lambesc", "Lamentin", "Lamorlaye", "La Motte-Servolex", "Landerneau", "Landivisiau", "Lanester", "Lannion",
"Laon", "La Queue-en-Brie", "La Riche", "La Rochelle", "La Roche-sur-Foron", "La Roche-sur-Yon", "La Seyne-sur-Mer", "La Teste-de-Buch", "La Trinité", "Lattes", "Laval",
"La Valette-du-Var", "Lavaur", "Laxou", "Le Beausset", "Le Blanc-Mesnil", "Le Bourget", "Le Bouscat", "Le Cannet", "Le Chambon-Feugerolles", "Le Chesnay", "Le Creusot",
"Leers", "Le Grand-Quevilly", "Le Havre", "Le Kremlin-Bicêtre", "Le Luc", "Le Mans", "Le Mée-sur-Seine", "Le Muy", "Lens", "Léognan", "Le Passage", "Le Pecq",
"Le Perreux-sur-Marne", "Le Petit-Quevilly", "Le Plessis-Robinson", "Le Plessis-Trévise", "Le Pont-de-Claix", "Le Pontet", "Le Portel", "Le Pradet", "Le Pré-Saint-Gervais",
"Le Puy-en-Velay", "Le Raincy", "Le Relecq-Kerhuon", "Lescar", "Le Taillan-Médoc", "Levallois-Perret", "Le Vésinet", "Lézignan-Corbières", "L'Haÿ-les-Roses", "Libourne",
"Lieusaint", "Liévin", "Lilas", "Lille", "Lillers", "Limay", "Limeil-Brévannes", "Limoges", "Limoux", "Lingolsheim", "Lisieux", "L'Isle-Adam", "L'Isle-d'Abeau",
"L'Isle-sur-la-Sorgue", "Livry-Gargan", "Lognes", "Longjumeau", "Longuenesse", "Longvic", "Longwy", "Lons", "Lons-le-Saunier", "Loos", "Lorient", "Lormont", "Loudéac",
"Lourdes", "Louviers", "Louvres", "Lucé", "Luçon", "Lunel", "Lunéville", "L'Union", "Lyon", "Lys-lez-Lannoy", "Mâcon", "MACOURIA TONATE", "Magny-les-Hameaux",
"Mainvilliers", "Maisons-Alfort", "Maisons-Laffitte", "Maizières-lès-Metz", "Malakoff", "Mamoudzou", "Mandelieu-la-Napoule", "Manosque", "Mantes-la-Jolie",
"Mantes-la-Ville", "Marck", "Marcq-en-Barœul", "Marignane", "Marly", "Marly-le-Roi", "Marmande", "Maromme", "Marquette-lez-Lille", "Marseille", "Martigues", "Massy",
"Matoury", "Maubeuge", "Mauguio", "Maurepas", "Maxéville", "Mayenne", "Mazamet", "Meaux", "Melun", "Mende", "Mennecy", "Menton", "Méricourt", "Mérignac", "Méru",
"Méry-sur-Oise", "Metz", "Meudon", "Meylan", "Meyzieu", "Mèze", "Millau", "Mions", "Miramas", "Miribel", "Mitry-Mory", "Moissac", "Moissy-Cramayel", "Molsheim",
"Mondeville", "Mons-en-Barœul", "Montargis", "Montataire", "Montauban", "Montbéliard", "Montbrison", "Montceau-les-Mines", "Mont-de-Marsan", "Montélimar",
"Montereau-Fault-Yonne", "Montesson", "Monteux", "Montfermeil", "Montgeron", "Montigny-en-Gohelle", "Montigny-le-Bretonneux", "Montigny-lès-Cormeilles",
"Montigny-lès-Metz", "Montivilliers", "Montlouis-sur-Loire", "Montluçon", "Montmagny", "Montmorency", "Montpellier", "Montreuil", "Montrouge", "Mont-Saint-Aignan",
"Morangis", "Morlaix", "Morne-à-l'Eau", "Morsang-sur-Orge", "Mouans-Sartoux", "Mougins", "Moule", "Moulins", "Mouvaux", "Mulhouse", "Mureaux", "Muret", "Nancy", "Nanterre",
"Nantes", "Narbonne", "Nemours", "Neuilly-Plaisance", "Neuilly-sur-Marne", "Neuilly-sur-Seine", "Neuville-en-Ferrain", "Nevers", "Nice", "Nîmes", "Niort",
"Nœux - les - Mines", "Nogent - le - Rotrou", "Nogent - sur - Marne", "Nogent - sur - Oise", "Noisiel", "Noisy - le - Grand", "Noisy - le - Sec", "Noyon", "Obernai",
"Oignies", "Oissel", "Olivet", "Ollioules", "Olonne-sur-Mer", "Oloron-Sainte-Marie", "Onet-le-Château", "Orange", "Orléans", "Orly", "Ormesson-sur-Marne", "Orsay", "Orthez",
"Orvault", "Osny", "Ostwald", "Ouangani", "Ouistreham", "Oullins", "Outreau", "Oyonnax", "Ozoir-la-Ferrière", "Pacé", "Palaiseau", "Pamandzi", "Pamiers", "Panazol", "Pantin",
"Paray-le-Monial", "Paris", "Parthenay", "Passy", "Pau", "Pavillons-sous-Bois", "Pélissanne", "Pennes-Mirabeau", "Périgueux", "Pernes-les-Fontaines", "Perpignan", "Persan",
"Pertuis", "Pessac", "Petit-Bourg", "Petit-Couronne", "Petite-Île", "Pierre-Bénite", "Pierrefitte-sur-Seine", "Pierrelatte", "Plaisance-du-Touch", "Plaisir", "Plan-de-Cuques",
"Plérin", "Ploemeur", "Ploërmel", "Ploufragan", "Plougastel-Daoulas", "Plouzané", "Pointe-à-Pitre", "Poissy", "Poitiers", "Pont-à-Mousson", "Pontarlier", "Pontault-Combault",
"Pontchâteau", "Pont-du-Château", "Pontivy", "Pontoise", "Pont-Sainte-Maxence", "Pont-Saint-Esprit", "Ponts-de-Cé", "Pornic", "Pornichet", "Port", "Port-de-Bouc",
"Portes-lès-Valence", "Portet-sur-Garonne", "Porto-Vecchio", "Possession", "Provins", "Puteaux", "Quetigny", "Quimper", "Quimperlé", "Raismes", "Rambouillet",
"Ramonville-Saint-Agne", "Redon", "Reims", "Remire-Montjoly", "Rennes", "Revel", "Rezé", "Riedisheim", "Rillieux-la-Pape", "Riom", "Riorges", "Ris-Orangis", "Rive-de-Gier",
"Rivière-Pilote", "Rivière-Salée", "Rixheim", "Roanne", "Robert", "Rochefort", "Roche-la-Molière", "Rodez", "Rognac", "Roissy-en-Brie", "Romainville", "Romans-sur-Isère",
"Rombas", "Romilly-sur-Seine", "Romorantin-Lanthenay", "Ronchin", "Roncq", "Roquebrune-Cap-Martin", "Roquebrune-sur-Argens", "Rosny-sous-Bois", "Roubaix", "Rouen", "Royan",
"Rueil-Malmaison", "Rumilly", "Sables-d'Olonne", "Sablé-sur-Sarthe", "Sada", "Saint-Amand-les-Eaux", "Saint-Amand-Montrond", "Saint-André", "Saint-André-de-Cubzac",
"Saint-André-les-Vergers", "Saint-André-lez-Lille", "Saint-Avé", "Saint-Avertin", "Saint-Avold", "Saint-Benoît", "Saint-Brevin-les-Pins", "Saint-Brice-sous-Forêt",
"Saint-Brieuc", "Saint-Chamond", "Saint-Claude", "Saint-Cloud", "Saint-Cyprien", "Saint-Cyr-l'École", "Saint-Cyr-sur-Loire", "Saint-Cyr-sur-Mer", "Saint-Denis",
"Saint-Dié-des-Vosges", "Saint-Dizier", "Saint-Doulchard", "Sainte-Anne", "Sainte-Foy-lès-Lyon", "Sainte-Geneviève-des-Bois", "Saint-Égrève", "Sainte-Luce",
"Sainte-Luce-sur-Loire", "Sainte-Marie", "Sainte-Maxime", "Sainte-Rose", "Saintes", "Sainte-Savine", "Saint-Esprit", "Saint-Estève", "Sainte-Suzanne", "Saint-Étienne",
"Saint-Étienne-du-Rouvray", "Saint-Fargeau-Ponthierry", "Saint-Fons", "Saint-François", "Saint-Gaudens", "Saint-Genis-Laval", "Saint-Germain-en-Laye",
"Saint-Germain-lès-Arpajon", "Saint-Gilles", "Saint-Gratien", "Saint-Herblain", "Saint-Hilaire-de-Riez", "Saint-Jacques-de-la-Lande", "Saint-Jean", "Saint-Jean-de-Braye",
"Saint-Jean-de-la-Ruelle", "Saint-Jean-de-Luz", "Saint-Joseph", "Saint-Julien-en-Genevois", "Saint-Junien", "Saint-Just-Saint-Rambert", "Saint-Laurent-du-Maroni",
"Saint-Laurent-du-Var", "Saint-Leu", "Saint-Leu-la-Forêt", "Saint-Lô", "Saint-Louis", "Saint-Malo", "Saint-Mandé", "Saint-Martin", "Saint-Martin-Boulogne",
"Saint-Martin-de-Crau", "Saint-Martin-d'Hères", "Saint-Maur-des-Fossés", "Saint-Maurice", "Saint-Max", "Saint-Maximin-la-Sainte-Baume", "Saint-Médard-en-Jalles",
"Saint-Michel-sur-Orge", "Saint-Nazaire", "Saint-Omer", "Saint-Orens-de-Gameville", "Saint-Ouen", "Saint-Ouen-l'Aumône", "Saint-Paul", "Saint-Paul-lès-Dax", "Saint-Pierre",
"Saint-Pierre-des-Corps", "Saint-Priest", "Saint-Quentin", "Saint-Raphaël", "Saint-Rémy-de-Provence", "Saint-Saulve", "Saint-Sébastien-sur-Loire", "Saint-Vallier", "Sallanches",
"Sallaumines", "Salon-de-Provence", "Sanary-sur-Mer", "Sannois", "Saran", "Sarcelles", "Sarlat-la-Canéda", "Sarrebourg", "Sarreguemines", "Sartrouville", "Sassenage", "Saumur",
"Saverne", "Savigny-le-Temple", "Savigny-sur-Orge", "Sceaux", "Schiltigheim", "Seclin", "Sedan", "Sélestat", "Senlis", "Sens", "Septèmes-les-Vallons", "Sète", "Sevran",
"Sèvres", "Seynod", "Seyssinet-Pariset", "SHOELCHER", "Sin-le-Noble", "Six-Fours-les-Plages", "Soissons", "Soisy-sous-Montmorency", "Solliès-Pont", "Somain", "Sorgues",
"Sotteville-lès-Rouen", "Soyaux", "Stains", "Stiring-Wendel", "Strasbourg", "Sucy-en-Brie", "Suresnes", "Talant", "Talence", "Tampon", "Tarare", "Tarascon", "Tarbes", "Tarnos",
"Tassin-la-Demi-Lune", "Taverny", "Tergnier", "Thiais", "Thiers", "Thionville", "Thonon-les-Bains", "Thorigny-sur-Marne", "Thouars", "Tinqueux", "Torcy", "Toul", "Toulon",
"Toulouse", "Tourcoing", "Tourlaville", "Tournefeuille", "Tournon-sur-Rhône", "Tours", "Trappes", "Trélazé", "Tremblay-en-France", "Trets", "Triel-sur-Seine", "Trinité",
"Troyes", "Tsingoni", "Tulle", "Ulis", "Ussel", "Vaires-sur-Marne", "Valbonne", "Val-de-Reuil", "Valence", "Valenciennes", "Valentigney", "Valenton", "Vallauris", "Valréas",
"Vandœuvre-lès-Nancy", "Vannes", "Vanves", "Varennes-Vauzelles", "Vauclin", "Vaulx-en-Velin", "Vauréal", "Vauvert", "Vaux-le-Pénil", "Vedène", "Vélizy-Villacoublay", "Vence",
"Vendôme", "Vénissieux", "Verdun", "Verneuil-sur-Seine", "Vernon", "Vernouillet", "Verrières-le-Buisson", "Versailles", "Vertou", "Vesoul", "Vichy", "Vidauban", "Vienne",
"Vierzon", "Vieux-Condé", "Vigneux-sur-Seine", "Villebon-sur-Yvette", "Villecresnes", "Ville-d'Avray", "Villefontaine", "Villefranche-de-Rouergue", "Villefranche-sur-Saône",
"Villejuif", "Villemomble", "Villenave-d'Ornon", "Villeneuve-d'Ascq", "Villeneuve-la-Garenne", "Villeneuve-le-Roi", "Villeneuve-lès-Avignon", "Villeneuve-lès-Maguelone",
"Villeneuve-Loubet", "Villeneuve-Saint-Georges", "Villeneuve-sur-Lot", "Villeparisis", "Villepinte", "Villepreux", "Villers-Cotterêts", "Villers-lès-Nancy", "Villerupt",
"Villetaneuse", "Villeurbanne", "Villiers-le-Bel", "Villiers-sur-Marne", "Vincennes", "Vire", "Viroflay", "Viry-Châtillon", "Vitré", "Vitrolles", "Vitry-le-François",
"Vitry-sur-Seine", "Voiron", "Voisins-le-Bretonneux", "Voreppe", "Wambrechies", "Wasquehal", "Wattignies", "Wattrelos", "Wittelsheim", "Wittenheim", "Woippy", "Yerres", "Yutz",
"Yvetot", "Yzeure",
]
showWait();
let testCities = JSON.parse(localGetData("cities"));
if (testCities == null) {
myDebug("Import initial");
localStoreData("cities", JSON.stringify(cities));
}
else {
if (testCities.length < 1060) {
myDebug("Mise à jour");
localStoreData("cities", JSON.stringify(cities));
}
else {
myDebug("Import pas nécessaire, la base est à jour :-)");
}
}
hideWait();
// alert("Import OK");
}
//Supprime le véhicule "id"
function rmVehicule(storageKey, id) {
// myDebug("rmVehicule :" + id);
let vehicules = JSON.parse(localGetData(storageKey));
// myDebug("rmVehicule liste avant" + vehicules);
vehicules.splice(id, 1);
localStoreData(storageKey, JSON.stringify(vehicules));
// myDebug("rmVehicule liste apres" + vehicules);
}
//Ajoute un véhicule perso -> maximum 3 véhicules dans cette v1 !-)
function addVehicule(storageKey, nom, energie, puissance, type, kmbefore) {
//On cherche une place de libre (max 4 on a dit)
let vehiculeNew = { "nom": nom, "energie": energie, "puissance": puissance, "type": type, "kmbefore": kmbefore };
let vehicules = JSON.parse(localGetData(storageKey));
if (vehicules === null) {
vehicules = [];
}
vehicules.push(vehiculeNew);
localStoreData(storageKey, JSON.stringify(vehicules));
//window.location.assign('config.html');
}
/*
* (c) Éric Seigne <eric.seigne@cap-rel.fr> - 2019 - GNU AGPLv3
*/
var app = {
// Application Constructor
initialize: function () {
document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
},
// deviceready Event Handler
//
// Bind any cordova events here. Common events are:
// 'pause', 'resume', etc.
onDeviceReady: function () {
// if ( device.platform === "iOS" && parseInt( device.version ) === 9 ) {
// $.mobile.hashListeningEnabled = false;
// }
//device.overrideBackButton();
document.addEventListener("backKeyDown", function () {
// myDebug('onBackKeyDown');
fn.back();
}, false);
this.receivedEvent('deviceready');
},
// Update DOM on a Received Event
receivedEvent: function (id) {
var parentElement = document.getElementById(id);
if (parentElement != null) {
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
// myDebug('Received Event: ' + id);
}
}
};
app.initialize();
//La date du jour par défaut
Date.prototype.toDateInputValue = (function () {
var local = new Date(this);
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
return local.toJSON().slice(0, 10);
});
//initialise le formulaire avec des valeurs par défaut ...
function initialiseForm() {
// myDebug('initialiseForm ... ' + device.platform);
if (document.getElementById('feedPaiements')) {
// myDebug('feedPaiements ...');
$('#feedPaiements').load('parts/paiement.html', function () {
$('#feedPaiements').trigger("create");
if (dataLDF != "") {
if (dataLDF['moyenPaiement']) {
myDebug("Choix du moyen de paiement");
$('#moyenPaiement-' + dataLDF['moyenPaiement']).click();
myDebug("On a cliqué");
}
}
});
}
//Si on a un objet "ladate" on essaye de lui attribuer par défaut la date du jour
if (document.getElementById('ladate')) {
let today = new Date();
$('#ladate').val(today.toDateInputValue());
// myDebug('date : ');
// myDebug(today.toDateInputValue());
// myDebug("Résultat de l'affectation : " + document.getElementById('ladate').value);
}
if (document.getElementById('feedVehiculesPerso')) {
// myDebug('Depuis initialiseForm, appel feedVehicules ...');
$("#feedVehiculesPerso").append(feedVehicules("vehicules"));
}
if (document.getElementById('feedVehiculesPro')) {
// myDebug('Depuis initialiseForm, appel feedVehicules ...');
$("#feedVehiculesPro").append(feedVehicules("vehiculesPro"));
}
//Sur iPhone on transforme les champs de type input=number pour avoir le clavier special
//issu du plugin cordova-plugin-decimal-keyboard
if (device.platform == "iOS") {
$('input[type="number"]').attr('pattern', '[0-9]*');
$('input[type="number"]').attr('decimal', 'true');
$('input[type="number"]').prop('type', 'text');
}
}
// Retourne une icone a partir de l'id si on n'en a pas a partir du label
// En bref par ex. pour la "restauration" on a des icones de
// café, hotdog, gateau, cookie, glace, hamburger, poisson, pizza
// ou une icone générique ...
function faIcone(label, id) {
let icone = "";
icone = faIconeLabel(label);
if (icone == "") {
icone = faIconeId(id);
}
return icone;
}
// Icone à partir du texte
function faIconeLabel(label) {
if ((typeof label !== 'undefined') && (label != null) && (label != "")) {
let r = "";
// myDebug('faIconeLabel : ' + label);
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",