2850 |
aurel |
1 |
/* Héritage */
|
|
|
2 |
function WidgetSaisieMessicoles()
|
|
|
3 |
{
|
2857 |
aurel |
4 |
this.taxons = {};
|
2850 |
aurel |
5 |
}
|
2857 |
aurel |
6 |
|
2850 |
aurel |
7 |
WidgetSaisieMessicoles.prototype = new WidgetSaisie();
|
|
|
8 |
|
|
|
9 |
/* Surcharge des fonctions */
|
2854 |
mathias |
10 |
|
2857 |
aurel |
11 |
// Surcharge ajouterObs
|
|
|
12 |
WidgetSaisieMessicoles.prototype.ajouterObs = function() {
|
2852 |
mathias |
13 |
// Fermeture automatique des dialogue de transmission de données
|
|
|
14 |
// @WARNING TEST
|
|
|
15 |
$('#dialogue-obs-transaction-ko').hide();
|
|
|
16 |
$('#dialogue-obs-transaction-ok').hide();
|
2850 |
aurel |
17 |
|
2852 |
mathias |
18 |
// vérification : si la détermination est incertaine, obligation
|
|
|
19 |
// de fournir au moins une image
|
2857 |
aurel |
20 |
var certitude = $('#identification-liste').val(),
|
|
|
21 |
nbImages = $('#miniatures img').length,
|
2852 |
mathias |
22 |
imagesOK = true;
|
|
|
23 |
if (certitude != "certaine" && nbImages == 0) {
|
|
|
24 |
imagesOK = false;
|
2857 |
aurel |
25 |
$('#image-obligatoire').show();
|
2852 |
mathias |
26 |
} else {
|
2857 |
aurel |
27 |
$('#image-obligatoire').hide();
|
2852 |
mathias |
28 |
}
|
|
|
29 |
|
|
|
30 |
if ((this.validerFormulaire() == true) && imagesOK) {
|
|
|
31 |
this.masquerPanneau('#dialogue-form-invalide');
|
2857 |
aurel |
32 |
//return false;
|
2852 |
mathias |
33 |
// suite des opérations
|
|
|
34 |
this.obsNbre = this.obsNbre + 1;
|
|
|
35 |
$(".obs-nbre").text(this.obsNbre);
|
|
|
36 |
$(".obs-nbre").triggerHandler('changement');
|
|
|
37 |
this.afficherObs();
|
|
|
38 |
this.stockerObsData();
|
|
|
39 |
this.supprimerMiniatures();
|
|
|
40 |
if(! this.especeImposee) {
|
|
|
41 |
$("#taxon").val("");
|
|
|
42 |
$("#taxon").data("numNomSel",undefined);
|
|
|
43 |
}
|
|
|
44 |
$('#barre-progression-upload').attr('aria-valuemax', this.obsNbre);
|
|
|
45 |
$('#barre-progression-upload .sr-only').text('0/'+this.obsNbre+" observations transmises");
|
|
|
46 |
} else {
|
|
|
47 |
this.afficherPanneau('#dialogue-form-invalide');
|
|
|
48 |
}
|
|
|
49 |
};
|
|
|
50 |
|
2857 |
aurel |
51 |
// surcharge fonction definirReglesFormValidator()
|
|
|
52 |
WidgetSaisieMessicoles.prototype.definirReglesFormValidator = function() {
|
|
|
53 |
// WidgetSaisie.definirReglesFormValidator();
|
|
|
54 |
$("#form-observateur").validate({
|
|
|
55 |
rules: {
|
|
|
56 |
courriel : {
|
|
|
57 |
required : true,
|
|
|
58 |
email : true},
|
|
|
59 |
courriel_confirmation : {
|
|
|
60 |
required : true,
|
|
|
61 |
equalTo: "#courriel"}
|
|
|
62 |
}
|
|
|
63 |
});
|
|
|
64 |
$("#form-station").validate({
|
2860 |
mathias |
65 |
ignore: ':hidden:not("#latitude, #longitude")', // validation des champs cachés...
|
|
|
66 |
errorPlacement: function(error, element) { // ...mais erreur visible
|
|
|
67 |
error.insertBefore("#coordonnees-geo");
|
|
|
68 |
},
|
|
|
69 |
groups: {
|
|
|
70 |
latLon: "latitude longitude"
|
|
|
71 |
},
|
2857 |
aurel |
72 |
rules: {
|
|
|
73 |
latitude : {
|
2860 |
mathias |
74 |
required: true,
|
|
|
75 |
range: [-90, 90]
|
|
|
76 |
},
|
2857 |
aurel |
77 |
longitude : {
|
2860 |
mathias |
78 |
required: true,
|
|
|
79 |
range: [-180, 180]
|
|
|
80 |
}
|
2861 |
mathias |
81 |
},
|
|
|
82 |
messages: {
|
|
|
83 |
// astuce pour simuler un message personnalisé pour le groupe "latLon"
|
|
|
84 |
latitude: "Veuillez géolocaliser votre observation en déplaçant le curseur sur la carte",
|
|
|
85 |
longitude: "Veuillez géolocaliser votre observation en déplaçant le curseur sur la carte"
|
2857 |
aurel |
86 |
}
|
|
|
87 |
});
|
|
|
88 |
$("#form-obs").validate({
|
|
|
89 |
rules: {
|
|
|
90 |
"taxon-liste" : "required",
|
|
|
91 |
taxon : "required",
|
|
|
92 |
"abondance-liste" : "required",
|
|
|
93 |
"zone-champ[]" : {
|
|
|
94 |
required : true,
|
|
|
95 |
minlength : 1
|
|
|
96 |
}
|
2860 |
mathias |
97 |
},
|
|
|
98 |
errorPlacement: function(error, element) { // pas top mais mieux que rien
|
|
|
99 |
error.insertBefore(element.parent());
|
2857 |
aurel |
100 |
}
|
|
|
101 |
});
|
|
|
102 |
$("#form-date").validate({
|
|
|
103 |
rules: {
|
|
|
104 |
date : {
|
|
|
105 |
required : true,
|
|
|
106 |
date : date
|
|
|
107 |
}
|
|
|
108 |
}
|
|
|
109 |
});
|
|
|
110 |
};
|
|
|
111 |
|
|
|
112 |
// surcharge fonction validerFormulaire()
|
|
|
113 |
WidgetSaisieMessicoles.prototype.validerFormulaire = function() {
|
|
|
114 |
observateur = $("#form-observateur").valid();
|
|
|
115 |
station = $("#form-station").valid();
|
|
|
116 |
obs = $("#form-obs").valid();
|
|
|
117 |
date = $("#form-date").valid();
|
|
|
118 |
return (observateur && station && obs && date);
|
|
|
119 |
};
|
|
|
120 |
|
|
|
121 |
// surcharge fonction stockerObsData()
|
|
|
122 |
WidgetSaisieMessicoles.prototype.stockerObsData = function() {
|
|
|
123 |
var lthis = this;
|
|
|
124 |
var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
|
|
|
125 |
numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
|
|
|
126 |
var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
|
|
|
127 |
nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
|
|
|
128 |
numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
|
|
|
129 |
numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
|
|
|
130 |
famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
|
|
|
131 |
referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
|
2862 |
mathias |
132 |
notes = $('#notes').val();
|
|
|
133 |
// champs spécifques aux messicoles
|
|
|
134 |
var abondance = $('#abondance-liste').val(),
|
|
|
135 |
certitude = $('#identification-liste').val();
|
|
|
136 |
|
2857 |
aurel |
137 |
$('#liste-obs').data('obsId'+this.obsNbre, {
|
|
|
138 |
'date': $('#date').val(),
|
|
|
139 |
'notes': notes,
|
|
|
140 |
|
|
|
141 |
'latitude': $('#latitude').val(),
|
|
|
142 |
'longitude': $('#longitude').val(),
|
|
|
143 |
'commune_nom': $('#commune-nom').text(),
|
|
|
144 |
'commune_code_insee': $('#commune-code-insee').text(),
|
2862 |
mathias |
145 |
'lieudit' : $("#lieudit").val(),
|
|
|
146 |
'station' : $("#station").val(),
|
|
|
147 |
'milieu' : $("#milieu").val(),
|
2857 |
aurel |
148 |
|
|
|
149 |
'nom_sel': nomSel,
|
|
|
150 |
'num_nom_sel': numNomSel,
|
|
|
151 |
'nom_ret': nomRet,
|
|
|
152 |
'num_nom_ret': numNomRet,
|
|
|
153 |
'num_taxon': numTaxon,
|
|
|
154 |
'famille': famille,
|
|
|
155 |
'referentiel': referentiel,
|
2862 |
mathias |
156 |
|
2857 |
aurel |
157 |
'certitude': certitude,
|
|
|
158 |
'abondance': abondance,
|
|
|
159 |
|
|
|
160 |
// Ajout des champs images
|
2862 |
mathias |
161 |
'image_nom' : lthis.getNomsImgsOriginales(),
|
|
|
162 |
'image_b64' : lthis.getB64ImgsOriginales(),
|
2857 |
aurel |
163 |
|
|
|
164 |
// Ajout des champs étendus de l'obs
|
2862 |
mathias |
165 |
'obs_etendue': lthis.getObsChpEtendus()
|
2857 |
aurel |
166 |
});
|
|
|
167 |
if (this.debug) {
|
|
|
168 |
console.log($('#liste-obs').data('obsId'+this.obsNbre));
|
|
|
169 |
}
|
|
|
170 |
};
|
|
|
171 |
|
|
|
172 |
/**
|
|
|
173 |
* Affiche une observation dans la liste des observations à transmettre
|
|
|
174 |
*/
|
|
|
175 |
WidgetSaisieMessicoles.prototype.afficherObs = function() {
|
2863 |
mathias |
176 |
console.log(this.taxons);
|
2862 |
mathias |
177 |
var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false,
|
|
|
178 |
numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
|
|
|
179 |
var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
|
2863 |
mathias |
180 |
//famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
|
2862 |
mathias |
181 |
referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel;
|
|
|
182 |
|
2857 |
aurel |
183 |
var commune = $("#commune-nom").text();
|
|
|
184 |
commune = commune.trim() != "" ? commune : $("#carte-recherche").val();
|
|
|
185 |
var code_insee = $('#commune-code-insee').text();
|
|
|
186 |
code_insee = code_insee.trim() != "" ? "("+code_insee+")" : "";
|
|
|
187 |
var latitude = $("#latitude").val();
|
|
|
188 |
var longitude = $("#longitude").val();
|
|
|
189 |
var lieudit = ($('#lieudit').val() != "" ? $('#lieudit').val() : "pas de lieu-dit saisi");
|
|
|
190 |
var station = ($('#station').val() != "" ? $('#station').val() : "pas de station saisie");
|
|
|
191 |
var milieu = ($('#milieu').val() != "" ? $('#milieu').val() : "pas de milieu saisi");
|
2862 |
mathias |
192 |
|
|
|
193 |
var date = $("#date").val();
|
|
|
194 |
// champs spécifques aux messicoles
|
2857 |
aurel |
195 |
var culture = ($('#culture-autres-radio').is(':checked') ? $('#culture-autres-input').val() : $('input[name=type-culture]:checked').data('titre'));
|
|
|
196 |
var identification = $('#identification-liste option:selected').data('titre');
|
|
|
197 |
var abondance = $('#abondance-liste option:selected').data('titre');
|
|
|
198 |
var zoneChamp = [];
|
|
|
199 |
// récupération des cases à cocher multiples dans un tableau pour l'abondance
|
|
|
200 |
$('input[name="zone-champ[]"]:checked').each(function() {
|
|
|
201 |
zoneChamp.push(' '+$(this).data('titre'));
|
|
|
202 |
});
|
|
|
203 |
var notes = $("#notes").val();
|
|
|
204 |
|
|
|
205 |
// affichage des données de l'observation à transmettre
|
|
|
206 |
$("#liste-obs").prepend(
|
|
|
207 |
'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+
|
|
|
208 |
'<div class="span12">'+
|
|
|
209 |
'<div class="well">'+
|
|
|
210 |
'<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+
|
|
|
211 |
'title="Supprimer cette observation de la liste à transmettre">'+
|
|
|
212 |
'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+
|
|
|
213 |
'<i class="icon-trash icon-white"></i>'+
|
|
|
214 |
'</button>'+
|
|
|
215 |
'</div> '+
|
|
|
216 |
'<div class="row-fluid">'+
|
|
|
217 |
'<div class="thumbnail span2">'+
|
|
|
218 |
this.ajouterImgMiniatureAuTransfert()+
|
|
|
219 |
'</div>'+
|
|
|
220 |
'<div class="span9">'+
|
|
|
221 |
'<ul class="unstyled">'+
|
|
|
222 |
'<li>'+
|
2866 |
aurel |
223 |
'<span class="nom-sci gras">'+nomSel+'</span> '+
|
2862 |
mathias |
224 |
this.ajouterNumNomSel(numNomSel, referentiel)+
|
2857 |
aurel |
225 |
' observé à <span class="gras">'+commune+' '+code_insee+'</span> ['+latitude+' / '+longitude+']'+' le <span class="gras">'+' '+date+'</span>'+
|
|
|
226 |
'</li>'+
|
|
|
227 |
'<li>'+
|
|
|
228 |
'<div class="row-fluid">'+
|
|
|
229 |
'<span class="span4">Lieu-dit : <span class="gras">'+lieudit+'</span></span>'+
|
|
|
230 |
'<span class="span4">Station : <span class="gras">'+station+'</span></span>'+
|
|
|
231 |
'<span class="span4">Milieu : <span class="gras">'+milieu+'</span></span>'+
|
|
|
232 |
'</div>'+
|
|
|
233 |
'</li>'+
|
|
|
234 |
'<li>'+
|
|
|
235 |
'<div class="row-fluid">'+
|
|
|
236 |
'<span class="span4">Culture de type <span class="gras">'+culture+'</span></span>'+
|
|
|
237 |
'<span class="span4">Identification <span class="gras">'+identification+'</span></span>'+
|
|
|
238 |
'<span class="span4">Abondance de <span class="gras">'+abondance+'</span></span>'+
|
|
|
239 |
'</div>'+
|
|
|
240 |
'</li>'+
|
|
|
241 |
'<li>'+
|
|
|
242 |
'Espèce située en <span class="gras">'+zoneChamp+'</span> du champ'+
|
|
|
243 |
'</li>'+
|
|
|
244 |
'<li>'+
|
|
|
245 |
'Notes : <span class="discretion">'+notes+'</span>'+
|
|
|
246 |
'</li>'+
|
|
|
247 |
'</ul>'+
|
|
|
248 |
'</div>'+
|
|
|
249 |
'</div>'+
|
|
|
250 |
'</div>'+
|
|
|
251 |
'</div>'+
|
|
|
252 |
'</div>');
|
|
|
253 |
$('#zone-liste-obs').removeClass("hidden").show();
|
|
|
254 |
};
|
|
|
255 |
|
2863 |
mathias |
256 |
WidgetSaisieMessicoles.prototype.surAutocompletionTaxon = function(event, ui) {
|
|
|
257 |
$("#taxon").data(ui.item);
|
|
|
258 |
if (ui.item.retenu == true) {
|
|
|
259 |
$("#taxon").addClass('ns-retenu');
|
|
|
260 |
} else {
|
|
|
261 |
$("#taxon").removeClass('ns-retenu');
|
|
|
262 |
}
|
|
|
263 |
// détection de si c'est un(e?) messicole ou pas
|
|
|
264 |
var panneauAvertissementNonMessicole = $('#avertissement-non-messicole');
|
|
|
265 |
panneauAvertissementNonMessicole.hide();
|
|
|
266 |
if (nnr_messicoles.indexOf(parseInt(ui.item.numNomRet)) == -1) {
|
|
|
267 |
panneauAvertissementNonMessicole.show();
|
|
|
268 |
}
|
|
|
269 |
};
|
|
|
270 |
|
2862 |
mathias |
271 |
WidgetSaisieMessicoles.prototype.ajouterNumNomSel = function(numNom, referentiel) {
|
|
|
272 |
var nn = '';
|
|
|
273 |
if (numNom == '' || numNom == undefined) {
|
|
|
274 |
nn = '<span class="alert-error">[non lié au référentiel]</span>';
|
|
|
275 |
} else {
|
|
|
276 |
nn = '<span class="nn">[nn'+numNom+']</span>'
|
|
|
277 |
+ '<span class="referentiel-obs"> '
|
|
|
278 |
+ referentiel+'</span>';
|
|
|
279 |
}
|
|
|
280 |
return nn;
|
|
|
281 |
};
|
2857 |
aurel |
282 |
|
2862 |
mathias |
283 |
// surcharge, abadon du mécanisme générique et bidouillage en dur (plus facile
|
|
|
284 |
// car champs radio / checkboxes)
|
|
|
285 |
WidgetSaisieMessicoles.prototype.getObsChpEtendus = function() {
|
|
|
286 |
var champs = [];
|
2857 |
aurel |
287 |
|
2862 |
mathias |
288 |
var zoneChamp = [];
|
|
|
289 |
$('input[name="zone-champ[]"]:checked').each(function() {
|
|
|
290 |
zoneChamp.push($(this).val());
|
|
|
291 |
});
|
|
|
292 |
//console.log("zc:", zoneChamp);
|
|
|
293 |
// obligatoire donc jamais vide (on croise les doigts)
|
|
|
294 |
champs.push({
|
|
|
295 |
cle: "zoneDuChamp",
|
|
|
296 |
label: "Zone du champ",
|
|
|
297 |
valeur: zoneChamp.join()
|
|
|
298 |
});
|
2857 |
aurel |
299 |
|
2862 |
mathias |
300 |
var typeCulture = $('input[name=type-culture]:checked').val();
|
|
|
301 |
if (typeCulture == "autres") {
|
|
|
302 |
typeCulture = $('#culture-autres-input').val();
|
|
|
303 |
}
|
|
|
304 |
//console.log("tc:", typeCulture);
|
|
|
305 |
if (typeCulture != '') {
|
|
|
306 |
champs.push({
|
|
|
307 |
cle: "typeDeCulture",
|
|
|
308 |
label: "Type de culture",
|
|
|
309 |
valeur: typeCulture
|
|
|
310 |
});
|
|
|
311 |
}
|
|
|
312 |
|
|
|
313 |
return champs;
|
|
|
314 |
}
|
|
|
315 |
|
|
|
316 |
|
|
|
317 |
|
|
|
318 |
|
2851 |
mathias |
319 |
/* jQuery en vrac */
|
|
|
320 |
$(document).ready(function() {
|
|
|
321 |
// super popover qui va chercher son contenu dans un div à côté (pour les
|
|
|
322 |
// boutons d'aide des types de champs, etc.)
|
|
|
323 |
$('[data-toggle="popover"]').popover({
|
|
|
324 |
html : true,
|
|
|
325 |
content: function() {
|
|
|
326 |
var parentFor = $(this).parent().attr("for");
|
|
|
327 |
var popoverHtmlContentDiv = $('.popover-html-content[data-for="' + parentFor + '"]');
|
|
|
328 |
return popoverHtmlContentDiv.html();
|
|
|
329 |
}
|
|
|
330 |
});
|
2860 |
mathias |
331 |
|
2857 |
aurel |
332 |
// Activation de la saisie si on clique sur 'Autres' (type de champ)
|
2862 |
mathias |
333 |
function gererAffichageChampAutreCulture() {
|
2857 |
aurel |
334 |
var input = $('#culture-autres-input');
|
2860 |
mathias |
335 |
($('#culture-autres-radio').is(':checked')) ? input.show() && input.focus() : input.hide();
|
2862 |
mathias |
336 |
}
|
|
|
337 |
$('.culture').change(gererAffichageChampAutreCulture);
|
|
|
338 |
// ... et aussi au chargement du widget, si la sélection est restée sur "Autre"
|
|
|
339 |
gererAffichageChampAutreCulture();
|
2860 |
mathias |
340 |
|
|
|
341 |
// Affichage de l'espèce liée au référentiel sélectionné lors de la sélection 'Autres' (espèce)
|
2862 |
mathias |
342 |
function gererAffichageChampAutreEspece() {
|
2857 |
aurel |
343 |
var option = $('#taxon-liste').val();
|
|
|
344 |
var taxonCompletion = $('#taxon-input-groupe');
|
|
|
345 |
if (option == '?') {
|
|
|
346 |
taxonCompletion.show();
|
|
|
347 |
$('#taxon').focus();
|
2856 |
aurel |
348 |
}
|
|
|
349 |
else {
|
2857 |
aurel |
350 |
taxonCompletion.hide();
|
2856 |
aurel |
351 |
}
|
2862 |
mathias |
352 |
}
|
|
|
353 |
$('#taxon-liste').change(gererAffichageChampAutreEspece);
|
|
|
354 |
// ... et aussi au chargement du widget, si la sélection est restée sur "Autre espèce"
|
|
|
355 |
gererAffichageChampAutreEspece();
|
2860 |
mathias |
356 |
|
2857 |
aurel |
357 |
// On masque l'option par défaut pour l'abondance puisque le choix est obligatoire
|
|
|
358 |
$('#abondance-liste').click(masquerTitreListe('abondance'));
|
|
|
359 |
function masquerTitreListe(element) {
|
|
|
360 |
$('#' + element + '-liste .a-masquer').hide();
|
|
|
361 |
}
|
2850 |
aurel |
362 |
});
|