//trunk/widget/modules/saisie/squelettes/defaut/defaut.tpl.html |
---|
202,7 → 202,7 |
<h2>Observateur</h2> |
<form id="form-observateur" action="#" class="" autocomplete="on"> |
<div class="row-fluid"> |
<div class="span6" rel="tooltip" data-placement="right" |
<div class="span6 has-tooltip" data-placement="right" |
title="Saisissez le courriel avec lequel vous être inscrit à Tela Botanica. |
Si vous n'êtes pas inscrit, ce n'est pas grave, vous pourrez le faire |
ultérieurement. Des informations complémentaires vont vous être |
296,8 → 296,7 |
<form id="form-carte-recherche" class="form-search form-horizontal" action="#" > |
<div class="control-group"> |
<label for="carte-recherche">Rechercher</label> |
<input id="carte-recherche" class="search-query" type="text" value="" |
rel="tooltip" |
<input id="carte-recherche" class="search-query has-tooltip" type="text" value="" |
title="Permet de centrer la carte sur le lieu recherché." |
placeholder="Centrer la carte sur un lieu..."/> |
</div> |
306,7 → 305,7 |
</div> |
<div class="row-fluid"> |
<div class="span12"> |
<div id="map-canvas" rel="tooltip" |
<div id="map-canvas" class="has-tooltip" |
title="Vous pouvez cliquer sur la carte pour déplacer le marqueur |
représentant votre station ou bien le glisser-déposer sur |
le lieu souhaité."></div> |
317,8 → 316,7 |
<a href="#" class="afficher-coord">Afficher</a> |
<a href="#" class="afficher-coord" style="display:none;">Cacher</a> |
les coordonnées géographiques |
<span id="lat-lon-info" class="info" |
rel="tooltip" |
<span id="lat-lon-info" class="info has-tooltip" |
title="Système géodésique mondial, révision de 1984 - Coordonnées non projetées"> |
(WGS84) |
</span> |
327,8 → 325,7 |
<span for="marqueur-commune">Commune : </span> |
<span id="marqueur-commune"> |
<span id="commune-nom" class="commune-info"></span> |
(<span id="commune-code-insee" class="commune-info" |
rel="tooltip" |
(<span id="commune-code-insee" class="commune-info has-tooltip" |
title="Code INSEE de la commune"></span>) |
</span> |
</div> |
351,7 → 348,7 |
<div class="span1"> |
<div> |
<input id="geolocaliser" type="button" value="Voir sur la carte" |
rel="tooltip" |
class="has-tooltip" |
title="Centre la carte sur les coordonnées de latitude et longitude saisies."/> |
</div> |
</div> |
358,7 → 355,7 |
</div> |
</div> |
<div class="row-fluid"> |
<div class="span4" rel="tooltip" |
<div class="span4 has-tooltip" |
title="Toponyme plus précis que la commune, utilisé localement et se trouvant souvent sur les cartes au 1/25 000." > |
<label for="lieudit">Lieu-dit</label> |
<div> |
365,7 → 362,7 |
<input type="text" id="lieudit" class="span2" name="lieudit"/> |
</div> |
</div> |
<div class="span4" rel="tooltip" |
<div class="span4 has-tooltip" |
title="Lieu précis de l'observation définissant une unité écologique homogène (ex: le pré derrière la maison)." > |
<label for="station">Station</label> |
<div> |
372,7 → 369,7 |
<input type="text" id="station" class="span2" name="station"/> |
</div> |
</div> |
<div class="span4" rel="tooltip" |
<div class="span4 has-tooltip" |
title="Type d'habitat plus ou moins standardisé dans les codes Corine ou Catminat (ex: prairie humide)."> |
<label for="milieu">Milieu</label> |
<div> |
388,7 → 385,7 |
<h2>Observation</h2> |
<?php if(!$referentiel_impose && !$espece_imposee) : ?> |
<div class="row-fluid"> |
<div rel="tooltip" |
<div class="has-tooltip" |
title="Sélectionnez le référentiel associé à votre relevé"> |
<label for="referentiel" title="Réferentiel"> |
Référentiel |
409,7 → 406,7 |
</div> |
<?php endif; ?> |
<div class="row-fluid"> |
<div class="span4" rel="tooltip" |
<div class="span4 has-tooltip" |
title="Vous pouvez cliquer sur l'icône de calendrier pour |
sélectionner une date dans un calendrier."> |
<label for="date" title="Veuillez indiquer la date du relevé au format jj/mm/aaaa"> |
421,7 → 418,7 |
placeholder="jj/mm/aaaa" /> |
</div> |
</div> |
<div id="taxon-input-groupe" class="span8" rel="tooltip" |
<div id="taxon-input-groupe" class="span8 has-tooltip" |
title="Sélectionnez une espèce dans la liste déroulante pour lier |
votre nom au référentiel selectionné. Si vous |
le désirez vous pouvez aussi saisir un nom absent du référentiel |
462,7 → 459,7 |
</form> |
</div> |
<div class="row-fluid"> |
<div class="span12 centre" rel="tooltip" |
<div class="span12 centre has-tooltip" |
title="Une fois les champs remplis, vous pouvez cliquer sur ce bouton pour |
ajouter votre observation à la liste à transmettre."> |
<button id="ajouter-obs" class="btn btn-primary btn-large" type="button"> |
506,8 → 503,8 |
<h2>Observations à transmettre : <span class="obs-nbre">0</span></h2> |
</div> |
<div class="span4 droite"> |
<button id="transmettre-obs" class="btn btn-primary btn-large" |
type="button" disabled="disabled" rel="tooltip" |
<button id="transmettre-obs" class="btn btn-primary btn-large has-tooltip" |
type="button" disabled="disabled" |
title="Ajoute les observations ci-dessous à votre Carnet en Ligne et les rend publiques."> |
Transmettre |
</button> |
//trunk/widget/modules/saisie/squelettes/defaut/js/WidgetSaisie.js |
---|
21,7 → 21,7 |
this.serviceSaisieUrl = null; |
this.serviceObsUrl = null; |
this.nomSciReferentiel = null; |
this.especeImposee = null; |
this.especeImposee = false; |
this.infosEspeceImposee = null; |
this.autocompletionElementsNbre = null; |
this.referentielImpose = null; |
46,6 → 46,7 |
this.initCarto(); |
this.initForm(); |
this.initEvts(); |
this.requeterIdentite(); |
}; |
/** |
54,6 → 55,34 |
WidgetSaisie.prototype.initCarto = function() { |
this.initialiserGoogleMap(); |
this.initialiserAutocompleteCommune(); |
$("#carte-recherche").autocomplete({ |
//Cette partie utilise geocoder pour extraire des valeurs d'adresse |
source: function(request, response) { |
geocoderOptions.address = request.term + addressSuffix; |
console.log('Geocoder options', geocoderOptions); |
lthis.geocoder.geocode( geocoderOptions, function(results, status) { |
if (status == google.maps.GeocoderStatus.OK) { |
response($.map(results, function(item) { |
var retour = { |
label: item.formatted_address, |
value: item.formatted_address, |
latitude: item.geometry.location.lat(), |
longitude: item.geometry.location.lng() |
}; |
return retour; |
})); |
} else { |
lthis.afficherErreurGoogleMap(status); |
} |
}); |
}, |
// Cette partie est executee a la selection d'une adresse |
select: function(event, ui) { |
var latLng = new google.maps.LatLng(ui.item.latitude, ui.item.longitude); |
lthis.deplacerMarker(latLng); |
} |
}); |
} |
/** |
61,10 → 90,11 |
*/ |
WidgetSaisie.prototype.initForm = function() { |
if (this.obsId != '') { |
console.log('obsId: (' + typeof obsId + ') : ' + obsId); |
this.chargerInfoObs(); |
} |
this.configurerDatePicker(); |
this.configurerDatePicker('#date'); |
this.ajouterAutocompletionNoms(); |
this.configurerFormValidator(); |
this.definirReglesFormValidator(); |
117,7 → 147,7 |
$("#courriel").on('blur', this.requeterIdentite.bind(this)); |
$("#courriel").on('keypress', this.testerLancementRequeteIdentite.bind(this)); |
$(".alert .close").on('click', this.fermerPanneauAlert); |
$("[rel=tooltip]").tooltip('enable'); |
$(".has-tooltip").tooltip('enable'); |
$("#btn-aide").on('click', this.basculerAffichageAide); |
$("#prenom").on("change", this.formaterPrenom.bind(this)); |
$("#nom").on("change", this.formaterNom.bind(this)); |
150,6 → 180,19 |
return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.'; |
}); |
} |
// Autocompletion du champ adresse |
$("#carte-recherche").on('focus', function() { |
$(this).select(); |
}); |
$("#carte-recherche").on('mouseup', function(event) {// Pour Safari... |
event.preventDefault(); |
}); |
$("#carte-recherche").keypress(function(e) { |
if (e.which == 13) { |
e.preventDefault(); |
} |
}); |
} |
/** |
193,6 → 236,13 |
}; |
/** |
* Efface une miniature (formulaire) |
*/ |
WidgetSaisie.prototype.supprimerMiniature = function(miniature) { |
miniature.parents('.miniature').remove(); |
} |
/** |
* Efface toutes les miniatures (formulaire) |
*/ |
WidgetSaisie.prototype.supprimerMiniatures = function() { |
229,47 → 279,6 |
geocoderOptions.region = 'fr'; |
addressSuffix = ', France'; |
} |
$("#carte-recherche").autocomplete({ |
//Cette partie utilise geocoder pour extraire des valeurs d'adresse |
source: function(request, response) { |
geocoderOptions.address = request.term + addressSuffix; |
console.log('Geocoder options', geocoderOptions); |
lthis.geocoder.geocode( geocoderOptions, function(results, status) { |
if (status == google.maps.GeocoderStatus.OK) { |
response($.map(results, function(item) { |
var retour = { |
label: item.formatted_address, |
value: item.formatted_address, |
latitude: item.geometry.location.lat(), |
longitude: item.geometry.location.lng() |
}; |
return retour; |
})); |
} else { |
lthis.afficherErreurGoogleMap(status); |
} |
}); |
}, |
// Cette partie est executee a la selection d'une adresse |
select: function(event, ui) { |
var latLng = new google.maps.LatLng(ui.item.latitude, ui.item.longitude); |
lthis.deplacerMarker(latLng); |
} |
}); |
// Autocompletion du champ adresse |
$("#carte-recherche").on('focus', function() { |
$(this).select(); |
}); |
$("#carte-recherche").on('mouseup', function(event) {// Pour Safari... |
event.preventDefault(); |
}); |
$("#carte-recherche").keypress(function(e) { |
if (e.which == 13) { |
e.preventDefault(); |
} |
}); |
}; |
WidgetSaisie.prototype.afficherErreurGoogleMap = function(status) { |
452,7 → 461,7 |
}, |
error : function(jqXHR, textStatus, errorThrown) { |
if (this.debug) { |
$("#dialogue-erreur .alert-txt").append('<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>'); |
$("#dialogue-erreur .alert-txt").append('<p class="msg">Une erreur Ajax est survenue lors de la recherche de la commune.</p>'); |
reponse = jQuery.parseJSON(jqXHR.responseText); |
var erreurMsg = ""; |
if (reponse != null) { |
503,7 → 512,7 |
$("#nom").val(infos.nom); |
$("#courriel_confirmation").val(courriel); |
$("#prenom, #nom, #courriel_confirmation").attr('disabled', 'disabled'); |
$("#date").focus(); |
lthis.focusChampFormulaire(); |
lthis.masquerPanneau("#dialogue-courriel-introuvable"); |
} else { |
lthis.surErreurCompletionCourriel(); |
523,16 → 532,19 |
}); |
}; |
WidgetSaisie.prototype.focusChampFormulaire = function() { |
$("#date").focus(); |
} |
WidgetSaisie.prototype.surErreurCompletionCourriel = function() { |
$("#prenom, #nom, #courriel_confirmation").val(''); |
$("#prenom, #nom, #courriel_confirmation").removeAttr('disabled'); |
this.afficherPanneau("#dialogue-courriel-introuvable"); |
}; |
//+---------------------------------------------------------------------------------------------------------+ |
//FORMULAIRE |
WidgetSaisie.prototype.chargerInfoObs = function() { |
var urlObs = this.serviceObsUrl + '/' + this.obsId; |
var lthis = this; |
$.ajax({ |
url: urlObs, |
type: 'GET', |
539,16 → 551,21 |
success: function(data, textStatus, jqXHR) { |
if (data != undefined && data != "") { |
this.prechargerForm(data); |
} else { |
lthis.surErreurChargementInfosObs(); |
} |
// TODO: voir s'il est pertinent d'indiquer quelque chose en cas d'erreur ou d'obs |
// inexistante |
}, |
error: function(jqXHR, textStatus, errorThrown) { |
// TODO: cf TODO ci-dessus |
lthis.surErreurChargementInfosObs(); |
} |
}); |
}; |
// @TODO faire mieux que ça ! |
WidgetSaisie.prototype.surErreurChargementInfosObs = function() { |
alert("Erreur lors du chargement de l'observation"); |
} |
WidgetSaisie.prototype.prechargerForm = function(data) { |
$("#milieu").val(data.milieu); |
641,9 → 658,9 |
}); |
}; |
WidgetSaisie.prototype.configurerDatePicker = function() { |
WidgetSaisie.prototype.configurerDatePicker = function(selector) { |
$.datepicker.setDefaults($.datepicker.regional["fr"]); |
$("#date").datepicker({ |
$(selector).datepicker({ |
dateFormat: "dd/mm/yy", |
maxDate: new Date, |
showOn: "button", |
650,9 → 667,12 |
buttonImageOnly: true, |
buttonImage: this.calendrierIconeUrl, |
buttonText: "Afficher le calendrier pour saisir la date.", |
showButtonPanel: true |
showButtonPanel: true, |
onSelect: function(date) { |
$(this).valid(); |
} |
}); |
$("img.ui-datepicker-trigger").appendTo("#date-icone"); |
$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on'); |
}; |
WidgetSaisie.prototype.fermerPanneauAlert = function() { |
687,11 → 707,11 |
WidgetSaisie.prototype.basculerAffichageAide = function() { |
if ($(this).hasClass('btn-warning')) { |
$("[rel=tooltip]").tooltip('enable'); |
$(".has-tooltip").tooltip('enable'); |
$(this).removeClass('btn-warning').addClass('btn-success'); |
$('#btn-aide-txt', this).text("Désactiver l'aide"); |
} else { |
$("[rel=tooltip]").tooltip('disable'); |
$(".has-tooltip").tooltip('disable'); |
$(this).removeClass('btn-success').addClass('btn-warning'); |
$('#btn-aide-txt', this).text("Activer l'aide"); |
} |
739,7 → 759,7 |
'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+ |
'<div class="span12">'+ |
'<div class="well">'+ |
'<div class="obs-action pull-right" rel="tooltip" data-placement="bottom" '+ |
'<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+ |
'title="Supprimer cette observation de la liste à transmettre">'+ |
'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+ |
'<i class="icon-trash icon-white"></i>'+ |
775,6 → 795,7 |
'</div>'+ |
'</div>'+ |
'</div>'); |
$('#zone-liste-obs').removeClass("hidden").show(); |
}; |
WidgetSaisie.prototype.stockerObsData = function() { |
//trunk/widget/modules/saisie/squelettes/florileges/florileges.tpl.html |
---|
18,104 → 18,109 |
<!-- Google Map v3 --> |
<!--<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>--> |
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&language=fr&region=FR"></script> |
<!-- Jquery --> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.min.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/1.11.1/jquery-1.11.1.min.js"></script> |
<!-- Jquery UI : nécessaire pour le minicalendrier et l'auto-complétion --> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/js/jquery-ui-1.10.2.custom.min.js"></script> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/js/jquery.ui.datepicker-fr.min.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/jquery-ui/1.11.0/js/jquery-ui.min.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/jquery-ui/1.11.0/js/datepicker-fr.js"></script> |
<!-- Jquery Plugins --> |
<!-- Jquery Validate : nécessaire pour la validation des formulaires --> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/validate/1.11.1/jquery.validate.min.js"></script> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/validate/1.11.1/additional-methods.min.js"></script> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/validate/1.11.1/messages_fr.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/validate/1.11.1/jquery.validate.min.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/validate/1.11.1/additional-methods.min.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/validate/1.11.1/messages_fr.js"></script> |
<!-- Jquery Form :nécessaire pour l'upload des images --> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/form/3.32/jquery.form.min.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/form/3.51/jquery.form.min.js"></script> |
<!-- Bootstrap --> |
<script type="text/javascript" src="http://www.tela-botanica.org/commun/bootstrap/2.3.2/js/bootstrap.min.js"></script> |
<script type="text/javascript" src="http://resources.tela-botanica.org/bootstrap/2.3.2/js/bootstrap.min.js"></script> |
<!-- Javascript : appli saisie --> |
<script type="text/javascript" src="<?=$url_base?>modules/saisie/squelettes/defaut/js/WidgetSaisie.js"></script> |
<script type="text/javascript" src="<?=$url_base?>modules/saisie/squelettes/florileges/js/WidgetSaisieFlorileges.js"></script> |
<script src="<?=$url_base?>saisie?projet=florileges&service=taxons" type="text/javascript"></script> |
<script type="text/javascript"> |
//<![CDATA[ |
// La présence du parametre 'debug' dans l'URL enclenche le dégogage |
var DEBUG = <?=isset($_GET['debug']) ? 'true' : 'false'?>; |
// La présence du parametre 'html5' dans l'URL enclenche les fonctions avancées HTML5 |
var HTML5 = <?=isset($_GET['html5']) ? 'true' : 'false'?>; |
// Mot-clé du widget/projet |
var TAG_PROJET = "Florileges,WidgetFlorileges,Sauvages"; |
$(document).ready(function() { |
// Héritage !! |
var widget = new WidgetSaisieFlorileges(); |
// Mots-clés à ajouter aux images |
var TAG_IMG = "<?=isset($_GET['tag-img']) ? $_GET['tag-img'] : ''?>"; |
var SEPARATION_TAG_IMG = "<?= isset($_GET['motcle']) && isset($_GET['tag-img']) ? ',' : '' ?>"; |
TAG_IMG = <?=isset($_GET['motcle']) ? "'".$_GET['motcle']."' + SEPARATION_TAG_IMG + TAG_IMG" : 'TAG_IMG' ?>; |
// Mots-clés à ajouter aux observations |
var TAG_OBS = "<?=isset($_GET['tag-obs']) ? $_GET['tag-obs'] : ''?>"; |
var SEPARATION_TAG_OBS = "<?= isset($_GET['projet']) && isset($_GET['tag-obs']) ? ',' : '' ?>"; |
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + SEPARATION_TAG_OBS + TAG_OBS" : 'TAG_OBS' ?>; |
// Précharger le formulaire avec les infos d'une observation |
var OBS_ID = "<?=isset($_GET['id-obs']) ? $_GET['id-obs'] : ''?>"; |
// URL du web service réalisant l'insertion des données dans la base du CEL. |
var SERVICE_SAISIE_URL = "<?=$url_ws_saisie?>"; |
// URL du web service permettant de récupérer les infos d'une observation du CEL. |
var SERVICE_OBS_URL = "<?=$url_ws_obs?>"; |
// Code du référentiel utilisé pour les nom scientifiques. |
var NOM_SCI_REFERENTIEL = "<?=$ns_referentiel?>"; |
// Indication de la présence d'une espèce imposée |
var ESPECE_IMPOSEE = "<?=$espece_imposee; ?>"; |
// Tableau d'informations sur l'espèce imposée |
var INFOS_ESPECE_IMPOSEE = <?=$infos_espece; ?>; |
// Nombre d'élément dans les listes d'auto-complétion |
var AUTOCOMPLETION_ELEMENTS_NBRE = 20; |
// Indication de la présence d'un référentiel imposé |
var REFERENTIEL_IMPOSE = "<?=$referentiel_impose; ?>"; |
// URL du web service permettant l'auto-complétion des noms scientifiques. |
var SERVICE_AUTOCOMPLETION_NOM_SCI_URL = "<?=$url_ws_autocompletion_ns?>?"+ |
// La présence du parametre 'debug' dans l'URL enclenche le débogage |
widget.debug = <?=isset($_GET['debug']) ? 'true' : 'false'?>; |
// La présence du parametre 'html5' dans l'URL enclenche les fonctions avancées HTML5 |
widget.html5 = <?=isset($_GET['html5']) ? 'true' : 'false'?>; |
// Mot-clé du widget/projet |
widget.tagProjet = "Florileges,WidgetFlorileges,Sauvages"; |
// Mots-clés à ajouter aux images |
widget.tagImg = "<?=isset($_GET['tag-img']) ? $_GET['tag-img'] : ''?>"; |
widget.separationTagImg = "<?= isset($_GET['motcle']) && isset($_GET['tag-img']) ? ',' : '' ?>"; |
widget.tagImg = <?=isset($_GET['motcle']) ? "'".$_GET['motcle']."' + widget.separationTagImg + widget.tagImg" : 'widget.tagImg' ?>; |
// Mots-clés à ajouter aux observations |
widget.tagObs = "<?=isset($_GET['tag-obs']) ? $_GET['tag-obs'] : ''?>"; |
widget.separationTagObs = "<?= isset($_GET['projet']) && isset($_GET['tag-obs']) ? ',' : '' ?>"; |
widget.tagObs = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + widget.separationTagObs + widget.tagObs" : 'widget.tagObs' ?>; |
// Précharger le formulaire avec les infos d'une observation |
widget.obsId = "<?=isset($_GET['id-obs']) ? $_GET['id-obs'] : ''?>"; |
// URL du web service réalisant l'insertion des données dans la base du CEL. |
widget.serviceSaisieUrl = "<?=$url_ws_saisie?>"; |
// URL du web service permettant de récupérer les infos d'une observation du CEL. |
widget.serviceObsUrl = "<?=$url_ws_obs?>"; |
// Code du référentiel utilisé pour les nom scientifiques. |
widget.nomSciReferentiel = "<?=$ns_referentiel?>"; |
// Indication de la présence d'une espèce imposée |
widget.especeImposee = "<?=$espece_imposee; ?>"; |
// Tableau d'informations sur l'espèce imposée |
widget.infosEspeceImposee = <?=$infos_espece; ?>; |
// Nombre d'élément dans les listes d'auto-complétion |
widget.autocompletionElementsNbre = 20; |
// Indication de la présence d'un référentiel imposé |
widget.referentielImpose = "<?=$referentiel_impose; ?>"; |
// URL du web service permettant l'auto-complétion des noms scientifiques |
widget.serviceAutocompletionNomSciUrl = "<?=$url_ws_autocompletion_ns?>?"+ |
"masque={masque}&"+ |
"recherche=etendue&"+ |
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+ |
"ns.structure=au"+"&"+ |
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE; |
// URL du web service permettant l'auto-complétion des noms scientifiques. |
var SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL = "<?=$url_ws_autocompletion_ns_tpl?>?"+ |
"navigation.limite=" + widget.autocompletionElementsNbre; |
// Squelette d'URL du web service permettant l'auto-complétion des noms scientifiques |
widget.serviceAutocompletionNomSciUrlTpl = "<?=$url_ws_autocompletion_ns_tpl?>?"+ |
"masque={masque}&"+ |
"recherche=etendue&"+ |
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+ |
"retour.tri=alpharet&"+ // tri "à la CeL" |
"ns.structure=au"+"&"+ |
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE; |
// Nombre d'observations max autorisé avant transmission |
var OBS_MAX_NBRE = 10; |
// Durée d'affichage en milliseconde des messages d'informations |
var DUREE_MESSAGE = 15000; |
// Squelette d'URL du web service de l'annuaire. |
var SERVICE_ANNUAIRE_ID_URL = "<?=$url_ws_annuaire?>"; |
// Squelette d'URL du web service d'eFlore fournissant les noms de communes. |
var SERVICE_NOM_COMMUNE_URL = "http://api.tela-botanica.org/service:eflore:0.1/osm/nom-commune?lon={lon}&lat={lat}"; |
// Squelette d'URL du web service d'eFlore fournissant les noms de communes hors de France (localisation approximative). |
var SERVICE_NOM_COMMUNE_URL_ALT = "http://api.tela-botanica.org/service:eflore:0.1/wikipedia/nom-commune?lon={lon}&lat={lat}&nbre=1"; |
// URL du marqueur à utiliser dans la carte Google Map |
var GOOGLE_MAP_MARQUEUR_DEBUT_URL = "<?=$url_base?>/modules/saisie/squelettes/florileges/img/marqueurs/debut.png"; |
// URL de l'icône de fin de rue |
var GOOGLE_MAP_MARQUEUR_FIN_URL = "<?=$url_base?>/modules/saisie/squelettes/florileges/img/marqueurs/fin.png"; |
// URL de l'icône du chargement en cours |
var CHARGEMENT_ICONE_URL = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/chargement.gif"; |
// URL de l'icône du chargement en cours d'une image |
var CHARGEMENT_IMAGE_URL = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/chargement-image.gif"; |
// URL de l'icône du calendrier |
var CALENDRIER_ICONE_URL = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/calendrier.png"; |
// URL de l'icône du calendrier |
var PAS_DE_PHOTO_ICONE_URL = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/pas_de_photo.png"; |
"navigation.limite=" + widget.autocompletionElementsNbre; |
// Nombre d'observations max autorisé avant transmission |
widget.obsMaxNbre = 10; |
// Durée d'affichage en milliseconde des messages d'informations |
widget.dureeMessage = 15000; |
// Squelette d'URL du web service de l'annuaire. |
widget.serviceAnnuaireIdUrl = "<?=$url_ws_annuaire?>"; |
// Squelette d'URL du web service d'eFlore fournissant les noms de communes. |
widget.serviceNomCommuneUrl = "http://api.tela-botanica.org/service:eflore:0.1/osm/nom-commune?lon={lon}&lat={lat}"; |
// Squelette d'URL du web service d'eFlore fournissant les noms de communes hors de France (localisation approximative). |
widget.serviceNomCommuneUrlAlt = "http://api.tela-botanica.org/service:eflore:0.1/wikipedia/nom-commune?lon={lon}&lat={lat}&nbre=1"; |
// URL des marqueurs à utiliser dans la carte Google Map |
widget.googleMapMarqueurDebutUrl = "<?=$url_base?>modules/saisie/squelettes/florileges/img/marqueurs/debut.png"; |
widget.googleMapMarqueurFinUrl = "<?=$url_base?>modules/saisie/squelettes/florileges/img/marqueurs/fin.png"; |
// URL de l'icône du chargement en cours |
widget.chargementIconeUrl = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/chargement.gif"; |
// URL de l'icône du chargement en cours d'une image |
widget.chargementImageIconeUrl = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/chargement-image.gif"; |
// URL de l'icône du calendrier |
widget.calendrierIconeUrl = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/calendrier.png"; |
// URL de l'icône pour une photo manquante |
widget.pasDePhotoIconeUrl = "<?=$url_base?>modules/saisie/squelettes/florileges/img/icones/pas_de_photo.png"; |
// et BIM |
widget.init(); |
}); |
//]]> |
</script> |
<script type="text/javascript" src="<?=$url_base?>modules/saisie/squelettes/florileges/js/florileges.js"></script> |
<!-- CSS --> |
<link href="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/css/smoothness/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" media="screen" /> |
<link href="http://www.tela-botanica.org/commun/bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" media="screen" /> |
<link href="http://www.tela-botanica.org/commun/bootstrap/2.3.2/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" media="screen" /> |
<link href="http://resources.tela-botanica.org/jquery/jquery-ui/1.11.0/css/themes/smoothness/jquery-ui.min.css" rel="stylesheet" type="text/css" media="screen" /> |
<link href="http://resources.tela-botanica.org/bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" media="screen" /> |
<link href="http://resources.tela-botanica.org/bootstrap/2.3.2/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" media="screen" /> |
<link href="<?=$url_base?>modules/saisie/squelettes/florileges/css/<?=isset($_GET['style']) ? $_GET['style'] : 'florileges'?>.css" rel="stylesheet" type="text/css" media="screen" /> |
//trunk/widget/modules/saisie/squelettes/florileges/js/florileges.js |
---|
File deleted |
\ No newline at end of file |
//trunk/widget/modules/saisie/squelettes/florileges/js/WidgetSaisieFlorileges.js |
---|
New file |
0,0 → 1,809 |
// Héritage |
function WidgetSaisieFlorileges() { |
this.latLngDebPre = {lat: null, lng: null}; |
this.latLngFinPre = {lat: null, lng: null}; |
this.okPourChargementCarte = 2; |
this.markerDeb = null; |
this.latLngDeb = null; |
this.markerFin = null; |
this.latLngFin = null; |
this.ligneRue = null; |
this.googleMapMarqueurDebutUrl = null; |
this.googleMapMarqueurFinUrl = null; |
this.premierDeplacement = true; |
} |
WidgetSaisieFlorileges.prototype = new WidgetSaisie(); |
WidgetSaisieFlorileges.prototype.initCarto = function() { |
var lthis = this; |
this.initialiserGoogleMap(); |
this.afficherEtapeGeolocalisation(1); |
$('#carte-recherche').autocomplete({ |
//Cette partie utilise geocoder pour extraire des valeurs d'adresse |
source: function(request, response) { |
lthis.geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) { |
if (status == google.maps.GeocoderStatus.OK) { |
response($.map(results, function(item) { |
var retour = { |
label: item.formatted_address, |
value: item.formatted_address, |
latitude: item.geometry.location.lat(), |
longitude: item.geometry.location.lng() |
}; |
return retour; |
})); |
} else { |
lthis.afficherErreurGoogleMap(status); |
} |
}); |
}, |
// Cette partie est executee a la selection d'une adresse |
select: function(event, ui) { |
var nouvellePosition = new google.maps.LatLng(ui.item.latitude, ui.item.longitude); |
lthis.initialiserMarkerDeb(); |
lthis.deplacerMarkerDeb(nouvellePosition); |
lthis.map.setZoom(16); |
lthis.afficherEtapeGeolocalisation(2); |
} |
}); |
} |
WidgetSaisieFlorileges.prototype.initForm = function() { |
// super() à la main - toute autre manière de faire est über-komplex |
WidgetSaisie.prototype.initForm.call(this); |
this.configurerDatePicker('#date-arret-traitement-phyto'); |
this.surChangementTaxonListe();// Vérif lors du chargement de la page |
$('#taxon-liste').on('change', this.surChangementTaxonListe.bind(this)); |
} |
WidgetSaisieFlorileges.prototype.initEvts = function() { |
var lthis = this; |
// super() à la main - toute autre manière de faire est über-komplex |
WidgetSaisie.prototype.initEvts.call(this); |
$('#photo-placeholder').click(function(event) { |
$('#fichier').click(); |
}); |
$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) { |
event.stopPropagation(); |
}); |
// Afficher/Cacher champs cachés par défaut |
this.surChangementPeriodiciteTraitementPhyto();// Vérif lors du chargement de la page |
$('#periodicite-traitement-phyto').on('change', this.surChangementPeriodiciteTraitementPhyto.bind(this)); |
// Sliders |
this.transformerEnSlider('#presence-zone-vegetalise'); |
this.transformerEnSlider('#hauteur-batiment-avoisinant'); |
this.transformerEnSlider('#periodicite-traitement-phyto'); |
this.transformerEnSlider('#resistance-traitement-phyto'); |
this.transformerEnSlider('#vitesse-croissance'); |
// Gestion des obs |
$('.cb-milieux').on('click', function(event) { |
$(this).valid(); |
event.stopPropagation(); |
}); |
$('input#hauteur-plante').on('blur', function() { |
// if there's a bad value |
var valeur = $(this).val(); |
if (! valeur.match(/^[0-9]+$/)) { |
// replace it with nothing |
var nouvelleValeur = valeur.replace(/[^0-9]/g, ''); |
$(this).val(nouvelleValeur); |
} |
}); |
// Défilement des photos @TODO harmoniser |
$('body').on('click', '.defilement-control-zone', function(event) { |
lthis.defilerMiniatures($(this)); |
}); |
$('body').on('mouseover', '.defilement-control-zone', function(event) { |
$('.defilement-control', this).removeClass('hidden'); |
}); |
$('body').on('mouseout', '.defilement-control-zone', function(event) { |
$('.defilement-control', this).addClass('hidden'); |
}); |
}; |
WidgetSaisieFlorileges.prototype.prechargerForm = function(infos) { |
$('input[name="station"]').val(infos.station); |
//console.log(infos.extension); |
if (infos.extension) { |
var ext = infos.extension; |
if (ext.latitudeDebutRue && ext.longitudeDebutRue && ext.latitudeFinRue && ext.longitudeFinRue) { |
this.okPourChargementCarte--; |
this.latLngDebPre.lat = parseFloat(ext.latitudeDebutRue.valeur); |
this.latLngDebPre.lng = parseFloat(ext.longitudeDebutRue.valeur); |
this.latLngFinPre.lat = parseFloat(ext.latitudeFinRue.valeur); |
this.latLngFinPre.lng = parseFloat(ext.longitudeFinRue.valeur); |
this.prechargerRue(); |
} |
var chpsARemplir = ['adresse', 'typoUrbaine', 'revetementSol', 'presenceZoneVegetalise', 'hauteurBatimentAvoisinant', |
'intensiteGestion', 'periodiciteTraitementPhyto', 'dateArretTraitementPhyto', 'itineraireGestion']; |
$.each(infos.extension, function(nomDuChp, value) { |
if (chpsARemplir.indexOf(nomDuChp) >= 0) { |
if ($('[name="' + nomDuChp + '"]').hasClass('slider')) { |
$('select[name="' + nomDuChp + '"] option[value="' + value.valeur + '"]') |
.attr('selected', 'selected'); |
var selectedIndexOptions = $('select[name="' + nomDuChp + '"]').prop('selectedIndex') + 1; |
$('[name="' + nomDuChp + '"]').parent().find('.horizontal-slider').slider('value', selectedIndexOptions); |
if (nomDuChp == 'periodiciteTraitementPhyto') { |
$('[name="periodiciteTraitementPhyto"]').trigger('change'); |
} |
} else { |
$('[name="' + nomDuChp + '"]').val(value.valeur); |
} |
} |
}); |
} |
} |
WidgetSaisieFlorileges.prototype.prechargerRue = function() { |
if (this.okPourChargementCarte == 0) { |
this.latLngDeb = new google.maps.LatLng(this.latLngDebPre.lat, this.latLngDebPre.lng); |
this.markerDeb = undefined; |
this.initialiserMarkerDeb(); |
this.deplacerMarkerDeb(latLngDeb); |
this.premierDeplacement = false; |
this.markerFin = undefined; |
this.latLngFin = new google.maps.LatLng(this.latLngFinPre.lat, this.latLngFinPre.lng); |
this.initialiserMarkerFin(); |
this.deplacerMakerFin(latLngFin) |
this.surDeplacementMarkerFin(); |
this.map.setZoom(16); |
} |
} |
WidgetSaisieFlorileges.prototype.focusChampFormulaire = function() { |
$('#structure').focus(); |
} |
WidgetSaisieFlorileges.prototype.initialiserGoogleMap = function() { |
var lthis = this; |
this.latLngDeb = new google.maps.LatLng(46.30871, 2.54395);// Centre de la France |
var options = { |
zoom: 5, |
center: this.latLngDeb, |
mapTypeId: google.maps.MapTypeId.HYBRID, |
mapTypeControlOptions: { |
mapTypeIds: ['OSM', |
google.maps.MapTypeId.ROADMAP, |
google.maps.MapTypeId.HYBRID, |
google.maps.MapTypeId.SATELLITE, |
google.maps.MapTypeId.TERRAIN]} |
}; |
// Ajout de la couche OSM à la carte |
var osmMapType = new google.maps.ImageMapType({ |
getTileUrl: function(coord, zoom) { |
return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png'; |
}, |
tileSize: new google.maps.Size(256, 256), |
isPng: true, |
alt: 'OpenStreetMap', |
name: 'OSM', |
maxZoom: 19 |
}); |
// Création de la carte Google |
this.map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas |
this.map.mapTypes.set('OSM', osmMapType); |
// Ajout de l'évènment sur click dans Carte |
google.maps.event.addListener(this.map, 'click', this.surClickDansCarte.bind(this)); |
// Lorsque la carte est chargée, on vérifie si on peut précharger des données |
google.maps.event.addListenerOnce(this.map, 'idle', function(){ |
if (lthis.obsId == '') { |
// Initialisation du marker de début de rue |
lthis.initialiserMarkerDeb(); |
// Tentative de geocalisation si aucune obs à précharger |
if (lthis.obsId == '') { |
lthis.tenterGeolocalisation(); |
} |
} else { |
lthis.okPourChargementCarte--; |
lthis.prechargerRue(); |
} |
}); |
$("#geolocaliser").on('click', this.geolocaliser.bind(this)); |
// Création du Geocoder |
this.geocoder = new google.maps.Geocoder(); |
} |
WidgetSaisieFlorileges.prototype.initialiserMarkerDeb = function() { |
this.premierDeplacement = true; |
if (this.markerDeb == undefined) { |
// Marqueur de début de Rue |
this.markerDeb = new google.maps.Marker({ |
map: this.map, |
draggable: true, |
title: 'Début de la portion de rue étudiée', |
icon: this.googleMapMarqueurDebutUrl, |
position: this.latLngDeb |
}); |
google.maps.event.addListener(this.markerDeb, 'dragend', this.surDeplacementMarkerDeb.bind(this)); |
} |
this.latLngFin = this.latLngDeb; |
if (this.markerFin != undefined) { |
this.markerFin.setMap(null); |
} |
this.latLngCentre = this.latLngDeb; |
if (this.ligneRue != undefined) { |
this.ligneRue.setMap(null); |
} |
} |
WidgetSaisieFlorileges.prototype.surDeplacementMarkerDeb = function() { |
this.deplacerMarkerDeb(this.markerDeb.getPosition()); |
} |
WidgetSaisieFlorileges.prototype.deplacerMarkerDeb = function(nouvellePosition) { |
this.latLngDeb = nouvellePosition; |
this.markerDeb.setPosition(this.latLngDeb); |
this.map.setCenter(this.latLngDeb); |
this.mettreAJourMarkerPosition(this.latLngDeb); |
this.trouverCommune(this.latLngDeb); |
if (this.premierDeplacement) { |
this.initialiserMarkerDeb(); |
this.premierDeplacement = false; |
} else { |
var nouvellePositionFin = new google.maps.LatLng(this.latLngDeb.lat(), this.latLngDeb.lng() + 0.0010); |
this.initialiserMarkerFin(); |
this.deplacerMakerFin(nouvellePositionFin) |
this.afficherEtapeGeolocalisation(3); |
} |
} |
WidgetSaisieFlorileges.prototype.initialiserMarkerFin = function() { |
if (this.markerFin == undefined) { |
this.markerFin = new google.maps.Marker({ |
map: this.map, |
draggable: true, |
title: 'Fin de la portion de rue étudiée', |
icon: this.googleMapMarqueurFinUrl, |
position: this.latLngFin |
}); |
google.maps.event.addListener(this.markerFin, 'dragend', this.surDeplacementMarkerFin.bind(this)); |
} else { |
this.markerFin.setMap(null); |
} |
} |
WidgetSaisieFlorileges.prototype.deplacerMakerFin = function(nouvellePosition) { |
this.latLngFin = nouvellePosition; |
this.markerFin.setMap(this.map); |
this.markerFin.setPosition(this.latLngFin); |
this.dessinerLigneRue(this.latLngDeb, this.latLngFin); |
} |
WidgetSaisieFlorileges.prototype.surDeplacementMarkerFin = function() { |
this.dessinerLigneRue(this.markerDeb.getPosition(), this.markerFin.getPosition()); |
this.afficherCentreRue(); |
this.afficherEtapeGeolocalisation(4); |
} |
WidgetSaisieFlorileges.prototype.dessinerLigneRue = function(pointDebut, pointFin) { |
if (this.ligneRue != undefined) { |
this.ligneRue.setMap(null); |
} |
this.ligneRue = new google.maps.Polyline({ |
path: [pointDebut, pointFin], |
strokeColor: "#FF0000", |
strokeOpacity: 1.0, |
strokeWeight: 2 |
}); |
this.ligneRue.setMap(this.map); |
} |
WidgetSaisieFlorileges.prototype.afficherCentreRue = function() { |
this.latLngDeb = this.markerDeb.getPosition(); |
this.latLngFin = this.markerFin.getPosition(); |
this.latLngCentre = new google.maps.LatLng((this.latLngFin.lat() + this.latLngDeb.lat())/2, (this.latLngFin.lng() + this.latLngDeb.lng())/2); |
this.mettreAJourMarkerPosition(this.latLngCentre); |
} |
WidgetSaisieFlorileges.prototype.afficherEtapeGeolocalisation = function(numEtape) { |
$('.liste_indication_geolocalisation').children().hide(); |
$('.liste_indication_geolocalisation :nth-child('+numEtape+')').show(); |
} |
WidgetSaisieFlorileges.prototype.geolocaliser = function(event) { |
var latitude = $('#latitude').val(), |
longitude = $('#longitude').val(), |
nouvellePosition = new google.maps.LatLng(latitude, longitude); |
this.initialiserMarkerDeb(); |
this.deplacerMarkerDeb(nouvellePosition); |
this.afficherEtapeGeolocalisation(2); |
this.map.setZoom(16); |
arreter(event); |
} |
WidgetSaisieFlorileges.prototype.tenterGeolocalisation = function() { |
if (navigator.geolocation) { |
navigator.geolocation.getCurrentPosition(function(position) { |
var latitude = position.coords.latitude, |
longitude = position.coords.longitude, |
nouvellePosition = new google.maps.LatLng(latitude, longitude); |
this.initialiserMarkerDeb(); |
this.deplacerMarkerDeb(nouvellePosition); |
this.map.setZoom(16); |
}); |
} |
} |
WidgetSaisieFlorileges.prototype.surClickDansCarte = function(event) { |
this.deplacerMarkerDeb(event.latLng); |
} |
WidgetSaisieFlorileges.prototype.transformerEnSlider = function(selector) { |
$(selector).each(function(index, el) { |
// hide the element |
$(el).addClass('slider-on'); |
// add the slider to each element |
var slider = $( '<div class="slider-holder"><div class="horizontal-slider"></div></div>' ). |
insertBefore( el ).find('.horizontal-slider').slider({ |
min: 1, |
max: el.options.length, |
range: 'min', |
value: el.selectedIndex + 1, |
slide: function(event, ui) { |
el.selectedIndex = ui.value - 1; |
slider.find('a').text(el.options[el.selectedIndex].text); |
$(selector + ' option[selected="selected"]').removeAttr('selected'); |
$(selector + ' :nth-child('+ui.value+')').attr('selected', 'selected') |
$(selector).valid(); |
}, |
stop: function() { |
$(el).change(); |
} |
}); |
slider.find('a').text(el.options[el.selectedIndex].text); |
// Create a legend under the slider so we can see the options |
var options = []; |
for (var option in $(el).children()) { |
if (!isNaN(parseInt(option))) { |
options.push(el.options[option].text); |
} |
} |
// the width of each legend/option |
var width = (slider.width() / (options.length - 1)); |
// Add the legend. Half the width of the first and last options for display consistency. |
slider.after('<div class="slider-legend"><p style="width:' + (width / 2) + 'px;text-align:left;">' + |
options.join('</p><p style="width:' + width + 'px;">') +'</p></div>') |
.parent().find('.slider-legend p:last-child').css('width', width / 2) |
.css('text-align', 'right'); |
// if there are too many options so that the text is wider than the width, then hide the text |
var lastChild = slider.parent().find('.slider-legend p:last-child'); |
if (lastChild[0].clientWidth < lastChild[0].scrollWidth) { |
slider.parent().find('.slider-legend p');//.css('text-indent', '200%'); |
} |
}); |
} |
WidgetSaisieFlorileges.prototype.surChangementPeriodiciteTraitementPhyto = function() { |
if ($('#periodicite-traitement-phyto').val() === 'jamais') { |
$('#datp-zone').removeClass('hidden'); |
} else { |
$('#datp-zone').addClass('hidden'); |
} |
} |
WidgetSaisieFlorileges.prototype.surChangementTaxonListe = function() { |
if ($('#taxon-liste').val() === '?') { |
$('#taxon-input-groupe').removeClass('hidden'); |
} else { |
$('#taxon-input-groupe').addClass('hidden'); |
} |
} |
WidgetSaisieFlorileges.prototype.configurerFormValidator = function() { |
$.validator.addMethod( |
'dateCel', |
function (value, element) { |
return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value)); |
}, |
'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.'); |
$.extend($.validator.defaults, { |
ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none; |
highlight: function(element) { |
$(element).closest('.control-group').removeClass('success').addClass('error'); |
}, |
success: function(element) { |
element.text('OK!').addClass('valid'); |
element.closest('.control-group').removeClass('error').addClass('success'); |
if (element.attr('id') == 'taxon' && $('#taxon').val() != '') { |
// Si le taxon n'est pas lié au référentiel, on vide le data associé |
if ($('#taxon').data('value') != $('#taxon').val()) { |
$('#taxon').data('numNomSel', ''); |
$('#taxon').data('nomRet', ''); |
$('#taxon').data('numNomRet', ''); |
$('#taxon').data('nt', ''); |
$('#taxon').data('famille', ''); |
} |
} |
} |
}); |
} |
WidgetSaisieFlorileges.prototype.definirReglesFormValidator = function() { |
$('#form-observateur').validate({ |
rules: { |
courriel: { |
required: true, |
email: true}, |
courriel_confirmation: { |
required: true, |
equalTo: '#courriel'}, |
prenom: { |
required: true}, |
nom: { |
required: true}, |
personneStructure: { |
required: true}, |
personneService: { |
required: true} |
} |
}); |
$('#form-site').validate({ |
rules: { |
station: { |
required: true}, |
latitude : { |
required: true, |
range: [-90, 90]}, |
longitude: { |
required: true, |
range: [-180, 180]}, |
typoUrbaine: { |
required: true}, |
revetementSol: { |
required: true}, |
intensiteGestion: { |
required: true}, |
periodiciteTraitementPhyto: { |
required: true}, |
itineraireGestion: { |
required: true} |
} |
}); |
$('#form-date').validate({ |
rules: { |
date: { |
required: true, |
'dateCel' : true}, |
dateDerniereIntervention: { |
required: true} |
}, |
errorPlacement: function(error, element) { |
if (element.attr('name') == 'date') { |
element.parent('.input-prepend').after(error); |
} else { |
error.insertAfter(element); |
} |
} |
}); |
$('#form-obs').validate({ |
rules: { |
'taxon-liste': { |
required: true}, |
'milieux[]': { |
required: true, |
minlength: 1}, |
hauteurPlante: { |
required: true, |
digits: true}, |
resistanceTraitementPhyto: { |
required: true} |
}, |
errorPlacement: function(error, element) { |
if (element.attr('name') == 'milieux[]') { |
error.insertAfter('#milieux-controls'); |
} else { |
error.insertAfter(element); |
} |
} |
}); |
} |
WidgetSaisieFlorileges.prototype.validerFormulaire = function() { |
var observateur = $('#form-observateur').valid(), |
station = $('#form-site').valid(), |
date = $('#form-date').valid(), |
obs = $('#form-obs').valid(), |
debRue = (this.latLngDeb == undefined) ? false : true, |
finRue = (this.latLngFin == undefined) ? false : true; |
var ok = (observateur && station && obs && date && debRue && finRue) ? true : false; |
//console.log(observateur+'-'+station+'-'+obs+'-'+date+'-'+debRue+'-'+finRue); |
return ok; |
} |
WidgetSaisieFlorileges.prototype.ajouterObs = function() { |
if (this.validerFormulaire() == true) { |
this.obsNbre = this.obsNbre + 1; |
$('.obs-nbre').text(this.obsNbre); |
$('.obs-nbre').triggerHandler('changement'); |
this.afficherObs(); |
this.stockerObsData(); |
this.supprimerMiniatures(); |
} else { |
var debRue = (this.latLngDeb == undefined) ? false : true, |
finRue = (this.latLngFin == undefined) ? false : true; |
if (debRue == false || finRue == false) { |
this.afficherPanneau('#dialogue-form-invalide-rue'); |
} else { |
this.afficherPanneau('#dialogue-form-invalide'); |
} |
} |
} |
WidgetSaisieFlorileges.prototype.afficherObs = function() { |
var lthis = this; |
var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(), |
nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'), |
taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'), |
referentiel = (numNomSel == undefined) ? '' : '['+ this.nomSciReferentiel +']', |
commune = $('#commune-nom').text(), |
codeInsee = $('#commune-code-insee').text(), |
lat = $('input[name="latitude"]').val(), |
lng = $('input[name="longitude"]').val(), |
date = $('#date').val(), |
site = $('#station').val(), |
revetement = $('#revetement-sol').val(), |
intensiteGestion = $('#intensite-gestion').val(), |
resistance = $('#resistance-traitement-phyto').val(), |
milieux = this.getMilieux(), |
notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val(); |
$('#liste-obs').prepend( |
'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+ |
'<div class="span12">'+ |
'<div class="well">'+ |
'<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+ |
'title="Supprimer cette observation de la liste à transmettre">'+ |
'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+ |
'<i class="icon-trash icon-white"></i>'+ |
'</button>'+ |
'</div> '+ |
'<div class="row-fluid">'+ |
'<div class="span2 obs-miniatures">'+ |
this.ajouterImgMiniatureAuTransfert()+ |
'</div>'+ |
'<div class="span8">'+ |
'<ul class="unstyled">'+ |
'<li>'+ |
'<span class="nom-sci">' + taxon + '</span> ' + |
this.formaterNumNomSel(numNomSel)+ |
'<span class="referentiel-obs">' + referentiel + '</span>' + |
' observé à ' + |
'<span class="commune">' + commune + '</span> ' + |
'(' + codeInsee + ') [' + lat +' / ' + lng + ']' + |
' le ' + |
'<span class="date">' + date + '</span>' + |
'</li>' + |
'<li>' + |
'<span>Site :</span> ' + site + ' ' + ' ; ' + |
'<span>Revêtement au sol :</span> ' + revetement + ' ' + ' ; ' + |
'<span>Intensité de gestion :</span> ' + intensiteGestion + ' ' + ' ; ' + |
'<span>Milieu :</span> ' + milieux + ' ' + ' ; ' + |
'<span>Résistance/Résilience :</span> ' + resistance + ' ' + |
'</li>' + |
'<li>' + |
'Commentaires : ' + notes + |
'</li>'+ |
'</ul>'+ |
'</div>'+ |
'</div>'+ |
'</div>'+ |
'</div>'+ |
'</div>'); |
$('#zone-liste-obs').removeClass("hidden").show(); |
} |
WidgetSaisieFlorileges.prototype.getMilieux = function() { |
var milieuxStr = '', |
milieux = []; |
$('.cb-milieux:checked').each(function() { |
milieux.push($(this).val()); |
}); |
milieuxStr = Array.prototype.slice.call(milieux).join(', '); |
return milieuxStr; |
} |
WidgetSaisieFlorileges.prototype.ajouterImgMiniatureAuTransfert = function() { |
var html = '', |
miniatures = '', |
indicateurs = '', |
premiere = true, |
numero = 1; |
if ($('#miniatures img').length == 0) { |
html = '<img class="miniature" alt="Aucune photo"src="'+ this.pasDePhotoIconeUrl +'" />'; |
} else if ($('#miniatures img').length >= 1) { |
$('#miniatures img').each(function() { |
var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee', |
css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature', |
src = $(this).attr('src'), |
alt = $(this).attr('alt'); |
var miniature = '<img class="'+css+' '+visible+'" alt="'+alt+'"src="'+src+'" />'; |
miniatures += miniature; |
var indicateurActif = premiere ? 'active' : ''; |
var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>'; |
indicateurs += indicateur; |
premiere = false; |
}); |
if ($('#miniatures img').length == 1) { |
html = miniatures; |
} else { |
html = |
'<div class="defilement">' + |
miniatures + |
'<a class="defilement-control-zone gauche">' + |
' <span class="defilement-control gauche hidden"><</span>' + |
'</a>' + |
'<a class="defilement-control-zone droite">' + |
' <span class="defilement-control droite hidden">></span>' + |
'</a>' + |
'<ol class="defilement-indicateurs">' + indicateurs + '</ol>' + |
'</div>'; |
} |
} |
return html; |
} |
WidgetSaisieFlorileges.prototype.defilerMiniatures = function(element) { |
var miniatureSelectionne = element.siblings('img.miniature-selectionnee'); |
miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee'); |
var miniatureAffichee = miniatureSelectionne; |
var indicateurActif = element.parent().find('.defilement-indicateurs .active'); |
indicateurActif.removeClass('active'); |
if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) { |
if (miniatureSelectionne.prev('.miniature').length != 0) { |
miniatureAffichee = miniatureSelectionne.prev('.miniature'); |
indicateurActif.prev().addClass('active'); |
} else { |
miniatureAffichee = miniatureSelectionne.siblings('.miniature').last(); |
indicateurActif.siblings().last().addClass('active'); |
} |
} else { |
if (miniatureSelectionne.next('.miniature').length != 0) { |
miniatureAffichee = miniatureSelectionne.next('.miniature'); |
indicateurActif.next().addClass('active'); |
} else { |
miniatureAffichee = miniatureSelectionne.siblings('.miniature').first(); |
indicateurActif.siblings().first().addClass('active'); |
} |
} |
miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee'); |
} |
WidgetSaisieFlorileges.prototype.formaterNumNomSel = function(numNomSel) { |
var nn = ''; |
if (numNomSel == undefined) { |
nn = '<span class="alert-error">[non lié au référentiel]</span>'; |
} else { |
nn = '<span class="nn">[nn'+numNomSel+']</span>'; |
} |
return nn; |
} |
// tentativé d'héritage |
/*function surChangementReferentiel() { |
NOM_SCI_REFERENTIEL = $('#referentiel').val(); |
$('#taxon').val(''); |
}*/ |
WidgetSaisieFlorileges.prototype.stockerObsData = function() { |
var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false; |
nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'), |
numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(), |
nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'), |
nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'], |
numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'], |
numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'], |
famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'], |
referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel, |
notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val(); |
$('#liste-obs').data('obsId'+ this.obsNbre, { |
'date': $('#date').val(), |
'notes': notes, |
'station': $('#station').val(), |
'latitude': $('#latitude').val(), |
'longitude': $('#longitude').val(), |
'commune_nom': $('#commune-nom').text(), |
'commune_code_insee': $('#commune-code-insee').text(), |
'nom_sel': nomSel, |
'num_nom_sel': numNomSel, |
'nom_ret': nomRet, |
'num_nom_ret': numNomRet, |
'num_taxon': numTaxon, |
'famille': famille, |
'referentiel': referentiel, |
'milieu': this.getMilieux(), |
// Ajout des champs images |
'image_nom': this.getNomsImgsOriginales(), |
// Ajout des champs étendus de l'obs |
'obs_etendue': this.getObsChpEtendus() |
}); |
//console.log($('#liste-obs').data('obsId'+obsNbre)); |
} |
WidgetSaisieFlorileges.prototype.getObsChpEtendus = function() { |
var champs = [], |
perceptionTechnicien = this.getPerceptionTechnicien(); |
if (perceptionTechnicien != undefined) { |
champs.push(perceptionTechnicien); |
} |
if (this.latLngDeb != undefined) { |
var latitudeDebutRue = {cle: 'latitudeDebutRue', label: 'Latitude du début de la rue', valeur: this.latLngDeb.lat().toFixed(5)}; |
champs.push(latitudeDebutRue); |
var longitudeDebutRue = {cle: 'longitudeDebutRue', label: 'Longitude du début de la rue', valeur: this.latLngDeb.lng().toFixed(5)}; |
champs.push(longitudeDebutRue); |
} |
if (this.latLngFin != undefined) { |
var latitudeFinRue = {cle: 'latitudeFinRue', label: 'Latitude de fin de la rue', valeur: this.latLngFin.lat().toFixed(5)}; |
champs.push(latitudeFinRue); |
var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: this.latLngFin.lng().toFixed(5)}; |
champs.push(longitudeFinRue); |
} |
$('.obs-chp-etendu').each(function() { |
var valeur = $(this).val(), |
cle = $(this).attr('name'), |
label = $(this).data('label'); |
if (valeur != '') { |
var chpEtendu = {cle: cle, label: label, valeur: valeur}; |
champs.push(chpEtendu); |
} |
}); |
return champs; |
} |
WidgetSaisieFlorileges.prototype.getPerceptionTechnicien = function() { |
var perceptionTechnicien = undefined, |
perceptions = []; |
$('.cb-perception-technicien:checked').each(function() { |
perceptions.push($(this).val()); |
}); |
if (perceptions.length > 0) { |
var valeur = Array.prototype.slice.call(perceptions).join(', '); |
perceptionTechnicien = {cle: 'perceptionTechnicien', label: "Perceptions par l'équipe", valeur: valeur}; |
} |
return perceptionTechnicien; |
} |
//trunk/widget/modules/saisie/squelettes/sauvages/js/WidgetSaisieSauvages.js |
---|
21,6 → 21,41 |
WidgetSaisieSauvages.prototype.initCarto = function() { |
this.initialiserGoogleMap(); |
this.afficherEtapeGeolocalisation(1); |
$('#carte-recherche').autocomplete({ |
//Cette partie utilise geocoder pour extraire des valeurs d'adresse |
source: function(request, response) { |
lthis.geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) { |
if (status == google.maps.GeocoderStatus.OK) { |
response($.map(results, function(item) { |
var rue = ""; |
$.each(item.address_components, function(){ |
if (this.types[0] == "route" || this.types[0] == "street_address" ) { |
rue = this.short_name; |
} |
}); |
var retour = { |
label: item.formatted_address, |
value: rue, |
latitude: item.geometry.location.lat(), |
longitude: item.geometry.location.lng() |
}; |
return retour; |
})); |
} else { |
lthis.afficherErreurGoogleMap(status); |
} |
}); |
}, |
// Cette partie est executee a la selection d'une adresse |
select: function(event, ui) { |
var nouvellePosition = new google.maps.LatLng(ui.item.latitude, ui.item.longitude); |
lthis.initialiserMarkerDeb(); |
lthis.deplacerMarkerDeb(nouvellePosition); |
lthis.map.setZoom(16); |
lthis.afficherEtapeGeolocalisation(2); |
} |
}); |
}; |
//surcharge |
44,11 → 79,9 |
//surcharge |
WidgetSaisieSauvages.prototype.initEvts = function() { |
var lthis = this; |
// super() à la main - toute autre manière de faire est über-komplex |
WidgetSaisie.prototype.initEvts.call(this); |
$('.has-tooltip').tooltip('enable'); // @TODO harmoniser .has-tooltip et [rel="tooltip"] |
$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) { |
event.stopPropagation(); |
}); |
106,53 → 139,6 |
$('#photo-placeholder').click(function(event) { |
$('#fichier').click(); |
}); |
// Autocompletion du champ adresse |
$('#carte-recherche').on('focus', function() { |
$(this).select(); |
}); |
$('#carte-recherche').on('mouseup', function(event) {// Pour Safari... |
event.preventDefault(); |
}); |
$('#carte-recherche').keypress(function(e) { |
if (e.which == 13) { |
e.preventDefault(); |
} |
}); |
$('#carte-recherche').autocomplete({ |
//Cette partie utilise geocoder pour extraire des valeurs d'adresse |
source: function(request, response) { |
lthis.geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) { |
if (status == google.maps.GeocoderStatus.OK) { |
response($.map(results, function(item) { |
var rue = ""; |
$.each(item.address_components, function(){ |
if (this.types[0] == "route" || this.types[0] == "street_address" ) { |
rue = this.short_name; |
} |
}); |
var retour = { |
label: item.formatted_address, |
value: rue, |
latitude: item.geometry.location.lat(), |
longitude: item.geometry.location.lng() |
}; |
return retour; |
})); |
} else { |
lthis.afficherErreurGoogleMap(status); |
} |
}); |
}, |
// Cette partie est executee a la selection d'une adresse |
select: function(event, ui) { |
var nouvellePosition = new google.maps.LatLng(ui.item.latitude, ui.item.longitude); |
lthis.initialiserMarkerDeb(); |
lthis.deplacerMarkerDeb(nouvellePosition); |
lthis.map.setZoom(16); |
lthis.afficherEtapeGeolocalisation(2); |
} |
}); |
$('#geolocaliser').on('click', this.geolocaliser.bind(this)); |
}; |
581,37 → 567,6 |
} |
}; |
// surcharge @TODO fusionner |
WidgetSaisieSauvages.prototype.configurerDatePicker = function(selector) { |
$.datepicker.setDefaults($.datepicker.regional['fr']); |
$(selector).datepicker({ |
dateFormat: 'dd/mm/yy', |
maxDate: new Date, |
showOn: 'button', |
buttonImageOnly: true, |
buttonImage: this.calendrierIconeUrl, |
buttonText: 'Afficher le calendrier pour saisir la date.', |
showButtonPanel: true, |
onSelect: function(date) { |
$(this).valid(); |
} |
}); |
$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on'); |
}; |
// surcharge @TODO uniformiser .has-tooltip & rel="tooltip" |
WidgetSaisieSauvages.prototype.basculerAffichageAide = function() { |
if ($(this).hasClass('btn-warning')) { |
$('.has-tooltip').tooltip('enable'); |
$(this).removeClass('btn-warning').addClass('btn-success'); |
$('#btn-aide-txt', this).text("Désactiver l'aide"); |
} else { |
$('.has-tooltip').tooltip('disable'); |
$(this).removeClass('btn-success').addClass('btn-warning'); |
$('#btn-aide-txt', this).text("Activer l'aide"); |
} |
}; |
// surcharge |
WidgetSaisieSauvages.prototype.ajouterObs = function() { |
if (this.validerFormulaire() == true) { |