Rev 1344 | Rev 1733 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
//+----------------------------------------------------------------------------------------------------------+// Initialisation de Jquery mobile$(document).bind('mobileinit', function() {$.mobile.defaultPageTransition = 'fade';});$(document).on('online', function(event) {console.log('online');miseAJourObs();});//+----------------------------------------------------------------------------------------------------------+// Gestion des paramètres URL$.urlParam = function(name){var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);return decodeURIComponent(results[1]) || 0;}function recupererParametresUrl() {$('#referentiel').val($.urlParam('ref'));$('#nom').val($.urlParam('nom_sci'));$('#nom-sci-select').val($.urlParam('nom_sci'));$('#num-nom-select').val($.urlParam('num_nom'));}$(document).ready(function() {$('body').on('pageshow', '#saisie', function(event) {obtenirPosition(event);recupererParametresUrl();});$('#geolocaliser').on('click', obtenirPosition);$('body').on('pageshow', '#infos', obtenirDate);});//+----------------------------------------------------------------------------------------------------------+// Géolocalisation et date du jourvar gps = navigator.geolocation;function obtenirPosition(event) {event.stopImmediatePropagation();event.stopPropagation();event.preventDefault();obtenirDate();geolocaliser();}function geolocaliser() {if (gps) {navigator.geolocation.getCurrentPosition(surSuccesGeoloc, surErreurGeoloc);} else {var erreur = {code:'0', message: 'Géolocalisation non supportée par le navigateur'};surErreurGeoloc(erreur);}}function surSuccesGeoloc(position){if (position) {var lat = position.coords.latitude;var lng = position.coords.longitude;$('#lat').html(lat);$('#lng').html(lng);console.log('Geolocation SUCCESS');var url_service = SERVICE_NOM_COMMUNE_URL;var urlNomCommuneFormatee = url_service.replace('{lat}', lat).replace('{lon}', lng);var jqxhr = $.getJSON(urlNomCommuneFormatee, function(data) {console.log('NOM_COMMUNE found.');$('#location').html(data['nom']);$('#code_insee').val(data['codeINSEE']);}).complete(function() {var texte = ($('#location').html() == '') ? TEXTE_HORS_LIGNE : $('#location').html();$('#location').html(texte);});}}function surErreurGeoloc(error){alert('Echec de la géolocalisation, code: ' + error.code + ' message: '+ error.message);}function obtenirDate() {var d = new Date();var jour = d.getDate();var mois = d.getMonth()+1;var annee = d.getFullYear();var aujourdhui =( (''+jour).length < 2 ? '0' : '') + jour + '/' +( (''+mois).length < 2 ? '0' : '') + mois + '/' +annee;$('#date').val(aujourdhui);$('#annee').html(annee);}//+----------------------------------------------------------------------------------------------------------+// Local Storage$(document).ready(function() {$('#sauver-obs').on('click', ajouterObs);$('#valider_photos').on('click', ajoutPhoto);$('body').on('pageshow', '#liste', chargerListeObs);$('body').on('pageshow', '#transmission', miseAJourObs);});var bdd = window.localStorage,index_obs = (bdd.getItem('index_obs') == null) ? 1 : bdd.getItem('index_obs'),index_photos = (bdd.getItem('index_photos') == null) ? 1 : bdd.getItem('index_photos');alert('space used:'+JSON.stringify(bdd).length);//bdd.clear();console.log(bdd);function ajouterObs(event) {if ($('#nom').val() != '') {var obs = {num:TEXTE_OBS,maj:0,date:'',referentiel:'',lat:'', lng:'',commune:'', code_insee: 0,nom:'',nom_sci_selec:'',nn_select:'',nom_sci_retenu:'',nn_retenu:'',num_taxon:'',famille:''};obs.num += index_obs++;obs.date = $('#date').val();obs.referentiel = $('#referentiel').val();obs.lat = $('#lat').html();obs.lng = $('#lng').html();obs.commune = $('#location').html();obs.code_insee = $('#code_insee').val();obs.nom = $('#nom').val();obs.referentiel = $('#referentiel').val();obs.nom_sci_selec = $('#nom_sci_select').val();obs.nn_select = $('#num_nom_select').val();var cle = obs.num;sauvegarderObs(cle, obs);bdd.setItem('index_obs', index_obs);/*var txt = 'Observation n°'+obs.num+'/'+bdd.length+' créée';$('#obs-saisie-infos').html('<p class="reponse ui-btn-inner ui-btn-corner-all">'+txt+'</p>').fadeIn("slow").delay(1600).fadeOut("slow");*/$.mobile.changePage('#liste');effacerFormulaire();event.stopPropagation();event.preventDefault();} else {$.mobile.changePage('#saisie');event.stopPropagation();event.preventDefault();}}function sauvegarderObs(cle, obs) {var val = JSON.stringify(obs);alert('space used:'+JSON.stringify(bdd).length+'_'+(JSON.stringify(bdd).length+val.length));bdd.setItem(cle, val);}function effacerFormulaire() {$('#lat').html('');$('#lng').html('');$('#location').html('');}function chargerListeObs() {$('#liste_obs').empty();var nbre = bdd.length;for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf(TEXTE_OBS) !== -1) {var obs = JSON.parse(bdd.getItem(cle));console.log(obs);$('#liste_obs').prepend('<li>'+obs.num + ' (Nbre photos : ' + compterPhotos(obs.num) + ')<br />' +'<a href="#" onclick="detailsObs(this);" data-split-icon="next" data-split-theme="a" title="Voir la fiche" data-obs-num="'+obs.num+'">'+'<strong>'+obs.nom+'</strong> <br />'+obs.date+' à '+obs.commune+'</a>'+'<a href="#" onclick="supprimerObs(this);" title="Supprimer l\'observation" ' +'data-obs-num="'+obs.num+'">'+'Supprimer'+'</a>'+'</li>');}$('#liste_obs').listview('refresh');}}function compterPhotos(num_obs) {var compteur = 0;if (num_obs != '') {var nbre = bdd.length;for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf(TEXTE_PHOTO) !== -1) {var photo = JSON.parse(bdd.getItem(cle));if (photo.parent == num_obs) {compteur++;}}}}return compteur;}function supprimerObs(data) {var cle_obs = data.getAttribute('data-obs-num'),obs = JSON.parse(bdd.getItem(cle_obs)),nbre = bdd.length,a_supprimer = new Array();for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf(TEXTE_PHOTO) !== -1) {var photo = JSON.parse(bdd.getItem(cle));if (photo.parent == obs.num) {a_supprimer.push(photo.num);}}}for (var c = 0; c < a_supprimer.length; c++) {bdd.removeItem(a_supprimer[c]);}bdd.removeItem(cle_obs);var txt = obs.num + ' supprimée.';$('#obs-suppression-infos').html('<p class="reponse ui-btn-inner ui-btn-corner-all">'+txt+'</p>').fadeIn(0).delay(1600).fadeOut('slow');chargerListeObs();}function detailsObs(data) {var num_obs = data.getAttribute('data-obs-num');var obs = JSON.parse(bdd.getItem(num_obs));$('#id_obs').html(obs.num);var texte = '<strong>' + obs.nom + '</strong> vue le ' + obs.date;texte += (obs.commune == TEXTE_HORS_LIGNE || obs.commune == '') ? '' : ' <br /> à ' + obs.commune;$('#details_obs').html(texte);$.mobile.changePage('#observation');afficherPhotos(obs.num);}function ajoutPhoto() {var id_obs = $('#id_obs').html();if (id_obs != '') {$.each($('#pic').get(0).files, function(index, valeur) {var reader = new FileReader(),binary, base64;reader.addEventListener('loadend', function (evt) {binary = reader.result; // binary data (stored as string), unsafe for most actionsbase64 = btoa(binary); // base64 data, safer but takes up more memoryvar photo = {num:TEXTE_PHOTO,nom: '',parent:'',base64:0};photo.num += index_photos++;photo.nom = valeur.name;photo.parent = id_obs;photo.base64 = base64;var cle = photo.num;sauvegarderObs(cle, photo);bdd.setItem('index_photos', index_photos);afficherPhotos(id_obs);}, false);reader.readAsBinaryString(valeur);});}}function afficherPhotos(num_obs) {$('#pic').val('');$('#photos_obs').empty();if (num_obs != '') {var nbre = bdd.length;for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf(TEXTE_PHOTO) !== -1) {var photo = JSON.parse(bdd.getItem(cle));if (photo.parent == num_obs) {$('#photos_obs').prepend('<li>'+'<a href="#'+photo.num+'" data-rel="popup" data-role="button" data-inline="true">' +'<img src="data:image/png;base64,' + photo.base64 + '" />' +photo.nom +'</a>' +'<a href="#" onclick="supprimerPhoto(this);" title="Supprimer la photo" ' +'data-icon="delete" data-photo-num="' + photo.num + '"' +'data-photo-parent="' + num_obs + '" data-theme="c">'+'Supprimer cette photo'+'</a>'+'</li>');}}$('#photos_obs').listview('refresh');}}}function compterPhotos(num_obs) {var compteur = 0;if (num_obs != '') {var nbre = bdd.length;for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf(TEXTE_PHOTO) !== -1) {var photo = JSON.parse(bdd.getItem(cle));if (photo.parent == num_obs) {compteur++;}}}}return compteur;}function supprimerPhoto(data) {var cle_photo = data.getAttribute('data-photo-num'),parent = data.getAttribute('data-photo-parent'),photo = JSON.parse(bdd.getItem(cle_photo));bdd.removeItem(cle_photo);var txt = photo.num + ' supprimée.';$('#photo-suppression-infos').html('<p class="reponse ui-btn-inner ui-btn-corner-all">'+txt+'</p>').fadeIn(0).delay(1600).fadeOut('slow');afficherPhotos(parent);}function miseAJourObs() {console.log('majObs');var nbre = bdd.length;for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf(TEXTE_OBS) !== -1) {var obs = JSON.parse(bdd.getItem(cle));if (obs.maj == 0) {var maj = 1;if (obs.commune == TEXTE_HORS_LIGNE || obs.commune == '') {var url_service = SERVICE_NOM_COMMUNE_URL;var urlNomCommuneFormatee = url_service.replace('{lat}', lat).replace('{lon}', lng);jQuery.ajax({url: urlNomCommuneFormatee,success: function(data) {obs.commune = data['nom'];obs.code_insee = data['codeINSEE'];},error: function() {maj = 0;},async: false});}if (obs.nom_sci_retenu == '') {jQuery.ajax({url: '/service:eflore:0.1/' + obs.referentiel + '/noms?'+ 'masque.nn=' + obs.nn_select+ '&retour.champs=num_taxonomique',success: function(data) {var cle = '',compteur = 0;for (name in data['resultat']) {if (compteur == 0) {cle = name;}compteur++;}obs.num_taxon = data['resultat'][cle]['num_taxonomique'];jQuery.ajax({url: '/service:eflore:0.1/' + obs.referentiel + '/noms?'+ 'masque.nt=' + obs.num_taxon+ '&retour.champs=famille'+ '&retour.tri=retenu',success: function(data) {var cle = '',compteur = 0;for (name in data['resultat']) {if (compteur == 0) {cle = name;}compteur++;}obs.famille = data['resultat'][cle]['famille'];obs.nom_sci_retenu = data['resultat'][cle]['nom_sci'];obs.nn_retenu = cle;},error: function() {maj = 0;},async: false});},async: false});}obs.maj = maj;}sauvegarderObs(obs.num, obs);}}}function transmettreObs() {if ($('#courriel').val() == $('#courriel_confirmation').val() && $('#courriel').val() != '') {var nbre = bdd.length;for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf('obs') !== -1) {var obs = JSON.parse(bdd.getItem(cle));stockerObsData(obs);}}var observations = $('#details_obs').data();console.log(observations);if (observations == undefined || jQuery.isEmptyObject(observations)) {//afficherPanneau("#dialogue-zero-obs");} else {observations['projet'] = TAG_PROJET;observations['tag-obs'] = '';observations['tag-img'] = '';var utilisateur = new Object();utilisateur.id_utilisateur = $('#id_utilisateur').val();utilisateur.prenom = $('#prenom_utilisateur').val();utilisateur.nom = $('#nom_utilisateur').val();utilisateur.courriel = $('#courriel').val();observations['utilisateur'] = utilisateur;envoyerObsAuCel(observations);}}}function stockerObsData(obs) {var nbre = bdd.length,img_noms = new Array(),img_codes = new Array();for (var i = 0; i < nbre; i++) {var cle = bdd.key(i);if (cle.indexOf(TEXTE_PHOTO) !== -1) {var photo = JSON.parse(bdd.getItem(cle));if (photo.parent == obs.num) {img_noms.push(photo.nom);img_codes.push(photo.base64);}}}$('#details_obs').data(obs.num, {'date' : obs.date,'notes' : '','nom_sel' : obs.nom,'num_nom_sel' : obs.nn_select,'nom_ret' : obs.nom_sci_retenu,'num_nom_ret' : obs.nn_retenu,'num_taxon' : obs.num_taxon,'famille' : obs.famille,'referentiel' : obs.referentiel,'latitude' : obs.lat,'longitude' : obs.lng,'commune_nom' : obs.commune,'commune_code_insee' : obs.code_insee,'lieudit' : '','station' : '','milieu' : '',//Ajout des champs images'image_nom' : img_noms,'image_b64' : img_codes});}function envoyerObsAuCel(observations) {/*var erreurMsg = "";$.ajax({url : SERVICE_SAISIE_URL,type : "POST",data : observations,dataType : "json",beforeSend : function() {$("#dialogue-obs-transaction-ko").hide();$("#dialogue-obs-transaction-ok").hide();$(".alert-txt .msg").remove();$(".alert-txt .msg-erreur").remove();$(".alert-txt .msg-debug").remove();$("#chargement").show();},success : function(data, textStatus, jqXHR) {$('#dialogue-obs-transaction-ok .alert-txt').append($("#tpl-transmission-ok").clone().html());supprimerMiniatures();},statusCode : {500 : function(jqXHR, textStatus, errorThrown) {erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";}},error : function(jqXHR, textStatus, errorThrown) {erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";try {reponse = jQuery.parseJSON(jqXHR.responseText);if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + "\n";});}} catch(e) {erreurMsg += "L'erreur n'était pas en JSON.";}},complete : function(jqXHR, textStatus) {$("#chargement").hide();var debugMsg = extraireEnteteDebug(jqXHR);if (erreurMsg != '') {if (DEBUG) {$("#dialogue-obs-transaction-ko .alert-txt").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');$("#dialogue-obs-transaction-ko .alert-txt").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');}var hrefCourriel = "mailto:cel@tela-botanica.org?"+"subject=Disfonctionnement du widget de saisie "+TAG_PROJET+"&body="+erreurMsg+"\nDébogage :\n"+debugMsg;$('#dialogue-obs-transaction-ko .alert-txt').append($("#tpl-transmission-ko").clone().find('.courriel-erreur').attr('href', hrefCourriel).end().html());$("#dialogue-obs-transaction-ko").show();} else {if (DEBUG) {$("#dialogue-obs-transaction-ok .alert-txt").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');}$("#dialogue-obs-transaction-ok").show();}initialiserObs();}});*/}//+----------------------------------------------------------------------------------------------------------+// Manifest Cachevar appCache = window.applicationCache;$(document).ready(function() {appCache.addEventListener('updateready', function() {alert('Mise à jour :'+appCache.status);});if (appCache.status === appCache.UPDATEREADY) {surMiseAJourCache();}});function surMiseAJourCache() {// Browser downloaded a new app cache.// Swap it in and reload the page to get the new hotness.appCache.swapCache();if (confirm('A new version of this site is available. Load it ?')) {window.location.reload();}}//+----------------------------------------------------------------------------------------------------------+//Transmission donnéesfunction verifierConnexion() {return ( ('onLine' in navigator) && (navigator.onLine));}//+---------------------------------------------------------------------------------------------------------+//IDENTITÉ$(document).ready(function() {$('#courriel').on('blur', requeterIdentite);$('#courriel').on('keypress', function(event) {if (event.which == 13) {testerLancementRequeteIdentite(event);}});$('#valider_courriel').on('vmousedown', testerLancementRequeteIdentite);$('body').on('pageshow', '#transmission', testerLancementRequeteIdentite);});function testerLancementRequeteIdentite(event) {if (bdd.getItem('courriel') != null) {$('#courriel').val(bdd.getItem('courriel'));}requeterIdentite();event.preventDefault();event.stopPropagation();}function requeterIdentite() {var courriel = $('#courriel').val();if (courriel != '') {miseAJourCourriel();var urlAnnuaire = SERVICE_ANNUAIRE + courriel; //http://localhost/applications/annuaire/jrest/$.ajax({url : urlAnnuaire,type : 'GET',success : function(data, textStatus, jqXHR) {console.log('Annuaire SUCCESS : ' + textStatus);if (data != undefined && data[courriel] != undefined) {var infos = data[courriel];$('#id_utilisateur').val(infos.id);$('#prenom_utilisateur').val(infos.prenom);$('#nom_utilisateur').val(infos.nom);$('#courriel_confirmation').val(courriel);$('#prenom_utilisateur, #nom_utilisateur, #courriel_confirmation').attr('disabled', 'disabled');} else {surErreurCompletionCourriel();}},error : function(jqXHR, textStatus, errorThrown) {console.log('Annuaire ERREUR : ' + textStatus);surErreurCompletionCourriel();},complete : function(jqXHR, textStatus) {console.log('Annuaire COMPLETE : ' + textStatus);$('#zone_prenom_nom').removeClass('hidden');$('#zone_courriel_confirmation').removeClass('hidden');}});}}function surErreurCompletionCourriel() {$('#prenom_utilisateur, #nom_utilisateur, #courriel_confirmation').val('');$('#prenom_utilisateur, #nom_utilisateur, #courriel_confirmation').removeAttr('disabled');}function miseAJourCourriel() {if ($('#courriel_memoire').is(':checked')) {bdd.setItem('courriel', $("#courriel").val());}}