Subversion Repositories eFlore/Applications.cel

Rev

Rev 3811 | Rev 3853 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3811 Rev 3844
Line -... Line 1...
-
 
1
import {WidgetsSaisiesASL} from './WidgetsSaisiesASL.js';
-
 
2
import {valOk} from './Utils.js';
-
 
3
 
1
/**
4
/**
2
 * Constructeur ReleveASL par défaut
5
 * Constructeur ReleveASL par défaut
3
 * S'applique au squelette apaforms.tpl.html
6
 * S'applique au squelette apaforms.tpl.html
4
 * Qui se charge dans apa.tpl.php
7
 * Qui se charge dans apa.tpl.php
5
 * Lors de la saisie du relevé et des arbres
8
 * Lors de la saisie du relevé et des arbres
6
 */
9
 */
7
// ASL : APA, sTREETs, Lichen's Go!
10
// ASL : APA, sTREETs, Lichen's Go!
8
function ReleveASL( proprietes, widgetProp ) {
11
export function ReleveASL(arbresProp) {
9
	if  ( utils.valOk( proprietes ) && utils.valOk( widgetProp ) ) {
12
	if  ( valOk( arbresProp ) ) {
10
		this.sujet             = proprietes.sujet;
13
		this.sujet             = arbresProp.sujet;
11
		this.tagImg            = proprietes.tagImg;
14
		this.tagImg            = arbresProp.tagImg;
12
		this.separationTagImg  = proprietes.separationTagImg;
15
		this.separationTagImg  = arbresProp.separationTagImg;
13
		this.tagImg            = proprietes.tagImg;
16
		this.tagImg            = arbresProp.tagImg;
14
		this.tagObs            = proprietes.tagObs;
17
		this.tagObs            = arbresProp.tagObs;
15
		this.separationTagObs  = proprietes.separationTagObs;
18
		this.separationTagObs  = arbresProp.separationTagObs;
16
		this.nomSciReferentiel = proprietes.nomSciReferentiel;
19
		this.nomSciReferentiel = arbresProp.nomSciReferentiel;
17
		this.referentielImpose = proprietes.referentielImpose;
20
		this.referentielImpose = arbresProp.referentielImpose;
18
		this.widgetProp        = widgetProp;
-
 
19
		this.urlWidgets        = widgetProp.urlWidgets;
-
 
20
		this.projet            = widgetProp.projet;
-
 
21
	}
21
	}
22
	this.isTaxonListe = false;
22
	this.isTaxonListe = false;
23
	this.numArbre     = 0;
23
	this.numArbre     = 0;
24
}
24
}
25
ReleveASL.prototype = new WidgetsSaisiesASL( this.widgetProp );
25
ReleveASL.prototype = new WidgetsSaisiesASL();
-
 
26
 
Line 26... Line 27...
26
 
27
 
27
/**
28
/**
28
 * Initialise le formulaire, les validateurs, les listes de complétion...
29
 * Initialise le formulaire, les validateurs, les listes de complétion...
29
 */
30
 */
30
ReleveASL.prototype.initForm = function() {
-
 
31
	const lthis = this;
-
 
32
 
31
ReleveASL.prototype.initForm = function() {
Line 33... Line 32...
33
	var idUtilisateur = $( '#id_utilisateur' ).val();
32
	const idUtilisateur = $( '#id_utilisateur' ).val();
34
 
33
 
35
	$('[type="date"]').prop('max', function(){
34
	$('[type="date"]').prop('max', function(){
36
		return new Date().toJSON().split('T')[0];
35
		return new Date().toJSON().split('T')[0];
37
	});
36
	});
38
	if( this.valOk( idUtilisateur ) ) {
37
	if( valOk( idUtilisateur ) ) {
-
 
38
		if ( valOk( $( '#releve-data' ).val() ) ) {
Line 39... Line -...
39
		if ( this.valOk( $( '#releve-data' ).val() ) ) {
-
 
40
			const datRuComun = $.parseJSON( $( '#dates-rues-communes' ).val() );
39
			const datRuComun = $.parseJSON( $( '#dates-rues-communes' ).val() ),
41
 
40
				releveDatas = $.parseJSON( $( '#releve-data' ).val() );
42
			var releveDatas = $.parseJSON( $( '#releve-data' ).val() );
41
 
43
			if ( !this.valOk( releveDatas[1] ) || -1 === datRuComun.indexOf( releveDatas[1]['date_rue_commune'] )  ) {
42
			if ( !valOk( releveDatas[1] ) || -1 === datRuComun.indexOf( releveDatas[1]['date_rue_commune'] )  ) {
44
				this.releveDatas = releveDatas;
43
				this.releveDatas = releveDatas;
45
				if ( this.valOk( this.releveDatas[0].utilisateur, true, idUtilisateur ) ) {
44
				if ( valOk( this.releveDatas[0].utilisateur, true, idUtilisateur ) ) {
46
					$( '#releve-date' ).val( this.releveDatas[0].date );
45
					$( '#releve-date' ).val( this.releveDatas[0].date );
47
					this.rechargerFormulaire();
46
					this.rechargerFormulaire();
Line 54... Line 53...
54
							$( this ).addClass( 'hidden' );
53
							$( this ).addClass( 'hidden' );
55
					});
54
					});
56
				}
55
				}
57
			}
56
			}
58
		}
57
		}
59
		if ( this.valOk(  $( '.charger-releve' ) ) ) {
58
		if ( valOk(  $( '.charger-releve' ) ) ) {
60
			var btnChargementForm = this.determinerBtnsChargementForm( '.' );
59
			const btnChargementForm = this.determinerBtnsChargementForm( '.' );
61
			// #releve-data est modifié, bouton dans #releves-utilisateur
60
			// #releve-data est modifié, bouton dans #releves-utilisateur
62
			this.btnsChargerForm( btnChargementForm );
61
			this.btnsChargerForm( btnChargementForm );
63
		}
62
		}
64
	}
63
	}
65
	this.ajouterAutocompletionNoms();
64
	this.ajouterAutocompletionNoms();
Line 72... Line 71...
72
 */
71
 */
73
ReleveASL.prototype.initEvts = function() {
72
ReleveASL.prototype.initEvts = function() {
74
	const lthis = this;
73
	const lthis = this;
Line 75... Line 74...
75
 
74
 
76
	// comportement du bouton nouveau releve
75
	// comportement du bouton nouveau releve
77
	if ( this.valOk( $( '#id_utilisateur' ).val() ) ) {
76
	if ( valOk( $( '#id_utilisateur' ).val() ) ) {
78
		// #releve-data est modifié, bouton dans #releves-utilisateur
77
		// #releve-data est modifié, bouton dans #releves-utilisateur
79
		this.btnsChargerForm( '#bouton-nouveau-releve' );
78
		this.btnsChargerForm( '#bouton-nouveau-releve' );
80
	}
79
	}
81
	// on location, initialisation de la géoloc
80
	// on location, initialisation de la géoloc
Line 104... Line 103...
104
	$( '#bloc-info-arbres' ).on( 'click', '.arbre-info', function ( event ) {
103
	$( '#bloc-info-arbres' ).on( 'click', '.arbre-info', function ( event ) {
105
		event.preventDefault();
104
		event.preventDefault();
106
		$( this ).addClass( 'disabled' );
105
		$( this ).addClass( 'disabled' );
107
		$( '.arbre-info' ).not( $( this ) ).removeClass( 'disabled' );
106
		$( '.arbre-info' ).not( $( this ) ).removeClass( 'disabled' );
Line 108... Line 107...
108
 
107
 
Line 109... Line 108...
109
		var numArbre = $( this ).data( 'arbre-info' );
108
		const numArbre = $( this ).data( 'arbre-info' );
110
 
109
 
111
		lthis.chargerInfosArbre( numArbre );
110
		lthis.chargerInfosArbre( numArbre );
112
		lthis.scrollFormTop( '#zone-arbres' );
111
		lthis.scrollFormTop( '#zone-arbres' );
113
	});
112
	});
114
	// après avoir visualisé les champs d'un arbre, retour à la saisie
113
	// après avoir visualisé les champs d'un arbre, retour à la saisie
Line 115... Line 114...
115
	$( '#retour' ).on( 'click', function( event ) {
114
	$( '#retour' ).on( 'click', function( event ) {
Line 116... Line 115...
116
		event.preventDefault();
115
		event.preventDefault();
117
 
116
 
118
		var numArbre = lthis.numArbre + 1;
117
		const numArbre = lthis.numArbre + 1;
119
 
118
 
Line 130... Line 129...
130
				'famille'
129
				'famille'
131
			]);
130
			]);
132
		lthis.scrollFormTop( '#zone-arbres' );
131
		lthis.scrollFormTop( '#zone-arbres' );
133
	});
132
	});
134
	// chargement plantes ou lichens
133
	// chargement plantes ou lichens
135
	var btnChargementForm = this.determinerBtnsChargementForm( '#' );
134
	const btnChargementForm = this.determinerBtnsChargementForm( '#' );
136
	// #releve-data n'est pas modifié, bouton dans #charger-form
135
	// #releve-data n'est pas modifié, bouton dans #charger-form
137
	this.btnsChargerForm( btnChargementForm, false, false );
136
	this.btnsChargerForm( btnChargementForm, false, false );
138
	// Alertes et aides
137
	// Alertes et aides
139
	this.initEvtsAlertes();
138
	this.initEvtsAlertes();
140
};
139
};
Line 148... Line 147...
148
 
147
 
149
	this.releveDatas = $.parseJSON( $( '#releve-data' ).val() );
148
	this.releveDatas = $.parseJSON( $( '#releve-data' ).val() );
150
	$.each( this.releveDatas[0], function( cle , valeur ) {
149
	$.each( this.releveDatas[0], function( cle , valeur ) {
151
		if ( 'zone-pietonne' === cle ||  'pres-lampadaires' === cle ) {
150
		if ( 'zone-pietonne' === cle ||  'pres-lampadaires' === cle ) {
152
			$( 'input[name=' + cle + '][value=' + valeur + ']' , '#zone-observation' ).prop( 'checked', true );
151
			$( 'input[name=' + cle + '][value=' + valeur + ']' , '#zone-observation' ).prop( 'checked', true );
153
		} else if ( lthis.valOk( $( '#' + cle ) ) ) {
152
		} else if ( valOk( $( '#' + cle ) ) ) {
154
			$( '#' + cle ).val( valeur );
153
			$( '#' + cle ).val( valeur );
155
		}
154
		}
Line 156... Line 155...
156
	});
155
	});
157
 
156
 
158
	if (
157
	if (
159
		this.valOk( $( '#geometry-releve' ).val() ) &&
158
		valOk( $( '#geometry-releve' ).val() ) &&
160
		this.valOk( $( '#latitude-releve' ).val() ) &&
159
		valOk( $( '#latitude-releve' ).val() ) &&
161
		this.valOk( $( '#longitude-releve' ).val() ) &&
160
		valOk( $( '#longitude-releve' ).val() ) &&
162
		this.valOk( $( '#rue' ).val() ) &&
161
		valOk( $( '#rue' ).val() ) &&
163
		this.valOk( $( '#commune-nom' ).val() )
162
		valOk( $( '#commune-nom' ).val() )
164
	) {
163
	) {
165
		$( '#geoloc' ).addClass( 'hidden' );
164
		$( '#geoloc' ).addClass( 'hidden' );
166
		$( '#geoloc-datas' ).removeClass( 'hidden' );
165
		$( '#geoloc-datas' ).removeClass( 'hidden' );
Line 178... Line 177...
178
	this.numArbre    = parseInt( this.releveDatas[ this.obsNbre ]['num-arbre'] ) || this.obsNbre;
177
	this.numArbre    = parseInt( this.releveDatas[ this.obsNbre ]['num-arbre'] ) || this.obsNbre;
179
	$( '.obs-nbre' ).text( this.obsNbre );
178
	$( '.obs-nbre' ).text( this.obsNbre );
180
	$( '.obs-nbre' ).triggerHandler( 'changement' );
179
	$( '.obs-nbre' ).triggerHandler( 'changement' );
181
	$( '#arbre-nb' ).text( this.numArbre + 1 );
180
	$( '#arbre-nb' ).text( this.numArbre + 1 );
Line 182... Line 181...
182
 
181
 
183
	var infosArbre = {
182
	const infosArbre = {
184
		releve : this.releveDatas[0],
183
		releve : this.releveDatas[0],
185
		obsNum : 0,
184
		obsNum : 0,
186
		sujet  : {}
185
		sujet  : {}
Line 187... Line 186...
187
	};
186
	};
188
 
187
 
189
	for( var i = 1; i <= this.obsNbre; i ++ ) {
188
	for( let i = 1; i <= this.obsNbre; i ++ ) {
190
		infosArbre.obsNum = i;
189
		infosArbre.obsNum = i;
191
		infosArbre.sujet = this.releveDatas[i];
190
		infosArbre.sujet = this.releveDatas[i];
192
		this.lienArbreInfo( infosArbre.sujet['num-arbre'] );
191
		this.lienArbreInfo( infosArbre.sujet['num-arbre'] );
Line 220... Line 219...
220
// Ajouter Obs ****************************************************************/
219
// Ajouter Obs ****************************************************************/
221
/**
220
/**
222
 * Etape formulaire avec transfert carto
221
 * Etape formulaire avec transfert carto
223
 */
222
 */
224
ReleveASL.prototype.saisirArbres = function() {
223
ReleveASL.prototype.saisirArbres = function() {
225
	const lthis = this;
-
 
226
 
-
 
227
	if ( this.validerReleve() ) {
224
	if ( this.validerReleve() ) {
228
		$( '#soumettre-releve' )
225
		$( '#soumettre-releve' )
229
			.addClass( 'disabled' )
226
			.addClass( 'disabled' )
230
			.attr( 'aria-disabled', true )
227
			.attr( 'aria-disabled', true )
231
			.off();
228
			.off();
232
		$( '#form-observation' ).find( 'input, textarea' ).prop( 'disabled', true );
229
		$( '#form-observation' ).find( 'input, textarea' ).prop( 'disabled', true );
233
		$( '#zone-arbres,#geoloc-datas,#bouton-nouveau-releve' ).removeClass( 'hidden' );
230
		$( '#zone-arbres,#geoloc-datas,#bouton-nouveau-releve' ).removeClass( 'hidden' );
234
		this.confirmerSortie();
231
		this.confirmerSortie();
235
		if ( !this.valOk( $( '#releve-data' ).val() ) ) {
232
		if ( !valOk( $( '#releve-data' ).val() ) ) {
236
			var releveDatasTmp = {
233
			const releveDatasTmp = {
237
				obs  : {
234
				obs  : {
238
					ce_utilisateur     : $( '#id_utilisateur' ).val(),
235
					ce_utilisateur     : $( '#id_utilisateur' ).val(),
239
					date_observation   : $( '#releve-date' ).val(),
236
					date_observation   : $( '#releve-date' ).val(),
240
					zone_geo           : $( '#commune-nom' ).val(),
237
					zone_geo           : $( '#commune-nom' ).val(),
241
					ce_zone_geo        : $( '#commune-insee' ).val(),
238
					ce_zone_geo        : $( '#commune-insee' ).val(),
Line 263... Line 260...
263
			if ( 'tb_lichensgo' !== this.projet ) {
260
			if ( 'tb_lichensgo' !== this.projet ) {
264
				this.releveDatas[0]['zone-pietonne']    = $( '#zone-pietonne input:checked' ).val();
261
				this.releveDatas[0]['zone-pietonne']    = $( '#zone-pietonne input:checked' ).val();
265
				this.releveDatas[0]['pres-lampadaires'] = $( '#pres-lampadaires input:checked' ).val();
262
				this.releveDatas[0]['pres-lampadaires'] = $( '#pres-lampadaires input:checked' ).val();
266
			}
263
			}
267
			this.releveDatas[0].commentaires        = $( '#commentaires' ).val().trim();
264
			this.releveDatas[0].commentaires        = $( '#commentaires' ).val().trim();
268
			for ( var i = 1 ; i < this.releveDatas.length; i++ ) {
265
			for ( let i = 1 ; i < this.releveDatas.length; i++ ) {
269
				this.releveDatas[i]['date_rue_commune'] = (
266
				this.releveDatas[i]['date_rue_commune'] = (
270
					this.releveDatas[0].date +
267
					this.releveDatas[0].date +
271
					this.releveDatas[0].rue +
268
					this.releveDatas[0].rue +
272
					this.releveDatas[0]['commune-nom']
269
					this.releveDatas[0]['commune-nom']
273
				);
270
				);
Line 279... Line 276...
279
		}
276
		}
280
		// transfert carto
277
		// transfert carto
281
		// $cartoRemplacee = $( '#tb-geolocation' ),
278
		// $cartoRemplacee = $( '#tb-geolocation' ),
282
		// layer = 'osm',
279
		// layer = 'osm',
283
		// zoomInit = 18
280
		// zoomInit = 18
284
		var donnesResetCarto = {
281
		const donnesResetCarto = {
285
			geometry  : $( '#geometry-releve' ).val(),
282
			geometry  : $( '#geometry-releve' ).val(),
286
			latitude  : $( '#latitude-releve' ).val(),
283
			latitude  : $( '#latitude-releve' ).val(),
287
			longitude : $( '#longitude-releve' ).val(),
284
			longitude : $( '#longitude-releve' ).val(),
288
			suffixe   : 'arbres',
285
			suffixe   : 'arbres',
289
			layer     : 'google hybrid'
286
			layer     : 'googleHybrid',
-
 
287
			zoomInit  : 18
290
		};
288
		};
Line 291... Line 289...
291
 
289
 
292
		this.transfererCarto( donnesResetCarto );
290
		this.transfererCarto( donnesResetCarto );
293
		this.scrollFormTop( '#zone-arbres' );
291
		this.scrollFormTop( '#zone-arbres' );
294
	}
292
	}
Line 295... Line 293...
295
};
293
};
296
 
294
 
297
ReleveASL.prototype.chargerImgEnregistrees = function() {
295
ReleveASL.prototype.chargerImgEnregistrees = function() {
298
	const releveL = this.releveDatas.length;
296
	const releveL = this.releveDatas.length;
-
 
297
	let idArbre   = 0,
-
 
298
		last      = false,
Line 299... Line 299...
299
	var idArbre = 0,
299
		urlImgObs = '',
300
		last  = false;
300
		imgDatas  = {};
301
 
-
 
302
	for ( var i = 1; i < releveL; i++ ) {
301
 
303
		idArbre = this.releveDatas[i]['id_observation'];
302
	for ( let i = 1; i < releveL; i++ ) {
304
 
303
		idArbre = this.releveDatas[i]['id_observation'];
305
		var urlImgObs = this.serviceObsImgs + idArbre,
304
		urlImgObs = this.serviceObsImgs + idArbre;
306
			imgDatas  = {
305
		imgDatas = {
307
				'indice'      : i,
306
			'indice'      : i,
308
				'idArbre'     : idArbre,
307
			'idArbre'     : idArbre,
309
				'numArbre'    : this.releveDatas[i]['num-arbre'],
308
			'numArbre'    : this.releveDatas[i]['num-arbre'],
Line 310... Line 309...
310
				'nomRet'      : this.releveDatas[i].taxon.nomRet.replace( /\s/, '_' ),
309
			'nomRet'      : this.releveDatas[i].taxon.nomRet.replace( /\s/, '_' ),
311
				'releveDatas' : this.releveDatas
310
			'releveDatas' : this.releveDatas
312
			};
311
		};
313
 
312
 
Line 323... Line 322...
323
 
322
 
324
	$.ajax({
323
	$.ajax({
325
		url: urlImgObs,
324
		url: urlImgObs,
326
		type: 'GET',
325
		type: 'GET',
327
		success: function( idsImg, textStatus, jqXHR ) {
326
		success: function( idsImg, textStatus, jqXHR ) {
328
			if ( lthis.valOk( idsImg ) ) {
327
			if ( valOk( idsImg ) ) {
329
				var urlImg   = '',
328
				let urlImg   = '',
Line 330... Line 329...
330
					images   = [];
329
					images   = [];
331
 
330
 
332
				idsImg = idsImg[parseInt( imgDatas.idArbre )];
331
				idsImg = idsImg[parseInt( imgDatas.idArbre )];
Line 359... Line 358...
359
/**
358
/**
360
 * Retourne un Array contenant les valeurs des champs
359
 * Retourne un Array contenant les valeurs des champs
361
 * dont les données seront transmises dans la table cel-obs-etendues
360
 * dont les données seront transmises dans la table cel-obs-etendues
362
 */
361
 */
363
ReleveASL.prototype.getObsChpSpecifiques = function( datasArbres ) {
362
ReleveASL.prototype.getObsChpSpecifiques = function( datasArbres ) {
364
	const lthis = this;
363
	const lthis = this,
365
 
-
 
366
	var retour = [],
364
		retour  = [],
367
		champs = [
365
		champs  = [
368
			'rue',
366
			'rue',
369
			'geometry-releve',
367
			'geometry-releve',
370
			'latitude-releve',
368
			'latitude-releve',
371
			'longitude-releve',
369
			'longitude-releve',
372
			'altitude-releve'
370
			'altitude-releve'
Line 386... Line 384...
386
	champs.push(
384
	champs.push(
387
		'rue-arbres',
385
		'rue-arbres',
388
		'circonference'
386
		'circonference'
389
	);
387
	);
Line 390... Line 388...
390
 
388
 
Line 391... Line 389...
391
	var cleValeur = '';
389
	let cleValeur = '';
392
 
390
 
393
	$.each( champs, function( i , value ) {
391
	$.each( champs, function( i , value ) {
394
		cleValeur = ( 4 > i ) || ( 6 > i && 'tb_lichensgo' !== lthis.projet ) ? 'releve' : 'sujet';
392
		cleValeur = ( 4 > i ) || ( 6 > i && 'tb_lichensgo' !== lthis.projet ) ? 'releve' : 'sujet';
395
		if ( lthis.valOk( datasArbres[cleValeur][value] ) ) {
393
		if ( valOk( datasArbres[cleValeur][value] ) ) {
396
			retour.push({ cle : value, valeur : datasArbres[cleValeur][value] });
394
			retour.push({ cle : value, valeur : datasArbres[cleValeur][value] });
397
		}
395
		}
398
	});
-
 
399
	if ( 'tb_streets' !== this.projet ) {
396
	});
-
 
397
	if ( 'tb_streets' !== this.projet ) {
Line 400... Line 398...
400
		var faceOmbre = '',
398
		const faceOmbreLength = datasArbres.sujet['face-ombre'].length;
401
			faceOmbreLength = datasArbres.sujet['face-ombre'].length;
399
		let faceOmbre = '';
402
 
400
 
403
		if ( 'string' === typeof datasArbres.sujet['face-ombre'] ) {
401
		if ( 'string' === typeof datasArbres.sujet['face-ombre'] ) {
Line 412... Line 410...
412
		}
410
		}
413
		retour.push({ cle : 'face-ombre', valeur : faceOmbre });
411
		retour.push({ cle : 'face-ombre', valeur : faceOmbre });
414
	}
412
	}
415
	retour.push({ cle : 'num_arbre' , valeur : datasArbres.obsNum });
413
	retour.push({ cle : 'num_arbre' , valeur : datasArbres.obsNum });
Line 416... Line 414...
416
 
414
 
Line 417... Line 415...
417
	var stockerImg  = this.valOk( datasArbres.sujet['miniature-img'] );
415
	let stockerImg  = valOk( datasArbres.sujet['miniature-img'] );
418
 
416
 
419
	if( stockerImg ) {
417
	if( stockerImg ) {
420
		$.each( datasArbres.sujet['miniature-img'], function( i, paramsImg ) {
418
		$.each( datasArbres.sujet['miniature-img'], function( i, paramsImg ) {
Line 429... Line 427...
429
	}
427
	}
430
	return retour;
428
	return retour;
431
};
429
};
Line 432... Line 430...
432
 
430
 
433
ReleveASL.prototype.chargerInfosArbre = function( numArbre ) {
-
 
434
	const lthis = this;
-
 
435
 
431
ReleveASL.prototype.chargerInfosArbre = function( numArbre ) {
Line 436... Line 432...
436
	var desactiverForm = ( parseInt( numArbre ) !== ( this.numArbre + 1 ) );
432
	const desactiverForm = ( parseInt( numArbre ) !== ( this.numArbre + 1 ) );
437
 
433
 
438
	if ( desactiverForm ) {
434
	if ( desactiverForm ) {
439
		var releveDatas = $.parseJSON( $( '#releve-data' ).val() ),
435
		const releveDatas = $.parseJSON( $( '#releve-data' ).val() ),
440
			arbreDatas  = releveDatas[numArbre],
436
			arbreDatas    = releveDatas[numArbre];
Line 441... Line 437...
441
			taxon       = {item:{}},
437
		let	taxon   = {},
442
			imgHtml     = '';
438
			imgHtml = '';
443
 
439
 
Line 444... Line 440...
444
		$( '#arbre-nb' ).text( numArbre + ' (visualisation)' );
440
		$( '#arbre-nb' ).text( numArbre + ' (visualisation)' );
Line 445... Line 441...
445
		taxon.item = arbreDatas.taxon;
441
		taxon.item = arbreDatas.taxon;
446
		this.surAutocompletionTaxon( {}, taxon );
442
		this.surAutocompletionTaxon( {}, taxon );
447
 
443
 
448
		var selects = [ 'certitude' ];
444
		const selects = [ 'certitude' ];
449
 
445
 
450
		if ( 'tb_lichensgo' !== this.projet ) {
446
		if ( 'tb_lichensgo' !== this.projet ) {
451
			selects.push( 'equipement-pied-arbre', 'tassement' );
447
			selects.push( 'equipement-pied-arbre', 'tassement' );
452
		}
448
		}
453
		$.each( selects, function( i, value ) {
449
		$.each( selects, function( i, value ) {
454
			if( !lthis.valOk( arbreDatas[value] ) ) {
450
			if( !valOk( arbreDatas[value] ) ) {
455
				arbreDatas[value] = '';
451
				arbreDatas[value] = '';
456
			}
452
			}
457
			if ( $( this ).hasClass( 'other' ) && lthis.valOk( $( this ).val() ) ) {
453
			if ( $( this ).hasClass( 'other' ) && valOk( $( this ).val() ) ) {
Line 500... Line 496...
500
	}
496
	}
501
	this.modeArbresBasculerActivation( desactiverForm, numArbre );
497
	this.modeArbresBasculerActivation( desactiverForm, numArbre );
502
};
498
};
Line 503... Line 499...
503
 
499
 
504
ReleveASL.prototype.modeArbresBasculerActivation = function( desactiver, numArbre = 0 ) {
500
ReleveASL.prototype.modeArbresBasculerActivation = function( desactiver, numArbre = 0 ) {
505
	var selecteurs =
501
	let selecteurs =
506
		'#taxon,'+
502
		'#taxon,'+
507
		'#certitude,'+
503
		'#certitude,'+
508
		'#geometry-arbres,'+
504
		'#geometry-arbres,'+
509
		'#latitude-arbres,'+
505
		'#latitude-arbres,'+
Line 533... Line 529...
533
		$( '#geoloc-arbres,#bouton-fichier,#miniature-info' ).removeClass( 'hidden' );
529
		$( '#geoloc-arbres,#bouton-fichier,#miniature-info' ).removeClass( 'hidden' );
534
		$( '#geoloc-datas-arbres,#retour' ).addClass( 'hidden' );
530
		$( '#geoloc-datas-arbres,#retour' ).addClass( 'hidden' );
535
		// reset carto
531
		// reset carto
536
		// typeLocalisation = 'point',
532
		// typeLocalisation = 'point',
537
		// zoomInit = 18
533
		// zoomInit = 18
538
		var donnesResetCarto = {
534
		const donnesResetCarto = {
539
			cartoRemplacee : $( '#tb-geolocation-arbres' ),
535
			cartoRemplacee : $( '#tb-geolocation-arbres' ),
540
			geometry       : $( '#geometry-releve' ).val(),
536
			geometry       : $( '#geometry-releve' ).val(),
541
			latitude       : $( '#latitude-releve' ).val(),
537
			latitude       : $( '#latitude-releve' ).val(),
542
			longitude      : $( '#longitude-releve' ).val(),
538
			longitude      : $( '#longitude-releve' ).val(),
543
			suffixe        : 'arbres',
539
			suffixe        : 'arbres',
544
			layer          : 'google hybrid'
540
			layer          : 'googleHybrid',
-
 
541
			zoomInit       : 18
545
		};
542
		};
-
 
543
 
546
		this.transfererCarto( donnesResetCarto );
544
		this.transfererCarto( donnesResetCarto );
547
		// retour aux valeurs par defaut
545
		// retour aux valeurs par defaut
548
		selecteurs = '#certitude option';
546
		selecteurs = '#certitude option';
549
		if ( 'tb_lichensgo' !== this.projet ) {
547
		if ( 'tb_lichensgo' !== this.projet ) {
550
			selecteurs += ',#equipement-pied-arbre option,#tassement option';
548
			selecteurs += ',#equipement-pied-arbre option,#tassement option';
Line 599... Line 597...
599
// Géolocalisation *************************************************************/
597
// Géolocalisation *************************************************************/
600
/**
598
/**
601
 * Fonction handler de l'évenement location du module tb-geoloc
599
 * Fonction handler de l'évenement location du module tb-geoloc
602
 */
600
 */
603
ReleveASL.prototype.locationHandler = function( location ) {
601
ReleveASL.prototype.locationHandler = function( location ) {
604
	const lthis = this;
602
	const lthis = this,
605
	var isGeolocArbres = ( 'tb-geolocation-arbres' === location.target.id ),
603
		isGeolocArbres = ( 'tb-geolocation-arbres' === location.target.id ),
606
		locDatas       = location.originalEvent.detail;
604
		locDatas       = location.originalEvent.detail;
Line 607... Line 605...
607
 
605
 
608
	if ( this.valOk( locDatas ) ) {
606
	if ( valOk( locDatas ) ) {
Line 609... Line 607...
609
		console.dir( locDatas );
607
		console.dir( locDatas );
610
 
608
 
611
		var rue          = ( this.valOk( locDatas.osmRoad ) ) ? locDatas.osmRoad : '';
609
		const rue    = ( valOk( locDatas.osmRoad ) ) ? locDatas.osmRoad : '',
612
		var altitude     = ( this.valOk( locDatas.elevation ) ) ? locDatas.elevation : '';
610
			altitude = ( valOk( locDatas.elevation ) ) ? locDatas.elevation : '',
613
		var pays         = ( this.valOk( locDatas.osmCountryCode ) ) ? locDatas.osmCountryCode.toUpperCase() : 'FR';
611
			pays     = ( valOk( locDatas.osmCountryCode ) ) ? locDatas.osmCountryCode.toUpperCase() : 'FR',
614
		var geometry     = JSON.stringify( locDatas.geometry );
612
			geometry = JSON.stringify( locDatas.geometry );
615
		var latitude     = '';
613
		let latitude     = '',
616
		var longitude    = '';
614
			longitude    = '',
617
		var nomCommune   = '';
615
			nomCommune   = '',
618
		var	communeInsee = '';
616
			communeInsee = '';
619
 
-
 
620
		if ( this.valOk( locDatas.geometry.coordinates ) ) {
617
 
621
			if ( 'Point' === locDatas.geometry.type ) {
-
 
622
				if ( this.valOk( locDatas.geometry.coordinates[0] ) ) {
-
 
623
					longitude = locDatas.geometry.coordinates[0];
618
		if ( valOk( locDatas.geometry.coordinates ) &&
624
				}
619
			valOk( locDatas.centroid.coordinates ) &&
625
				if ( this.valOk( locDatas.geometry.coordinates[1] ) ) {
620
			valOk( locDatas.centroid.coordinates[0] ) &&
626
					latitude = locDatas.geometry.coordinates[1];
-
 
627
				}
-
 
628
			} else if ( 'LineString' === locDatas.geometry.type && this.valOk( locDatas.centroid.coordinates ) ) {
621
			valOk( locDatas.centroid.coordinates[1] )
629
				if ( this.valOk( locDatas.centroid.coordinates[0] ) ) {
-
 
630
					longitude = locDatas.centroid.coordinates[0];
-
 
631
				}
622
		) {
632
				if ( this.valOk( locDatas.centroid.coordinates[1] ) ) {
-
 
633
					latitude = locDatas.centroid.coordinates[1];
-
 
634
				}
623
			latitude = locDatas.centroid.coordinates[0];
635
			}
624
			longitude = locDatas.centroid.coordinates[1];
636
		}
625
		}
637
		if ( !isGeolocArbres ) {
626
		if ( !isGeolocArbres ) {
638
			if ( this.valOk( locDatas.inseeData ) ) {
627
			if ( valOk( locDatas.inseeData ) ) {
639
				nomCommune = locDatas.inseeData.nom;
628
				nomCommune = locDatas.inseeData.nom;
640
				communeInsee = ( this.valOk( locDatas.inseeData.code ) ) ? locDatas.inseeData.code : '';
629
				communeInsee = ( valOk( locDatas.inseeData.code ) ) ? locDatas.inseeData.code : '';
641
			} else if ( this.valOk( locDatas.locality ) ) {
630
			} else if ( valOk( locDatas.locality ) ) {
642
				nomCommune = locDatas.locality;
631
				nomCommune = locDatas.locality;
643
			} else if ( this.valOk( locDatas.osmCounty ) ) {
632
			} else if ( valOk( locDatas.osmCounty ) ) {
644
				nomCommune = locDatas.osmCounty;
633
				nomCommune = locDatas.osmCounty;
645
			}
634
			}
646
			$( '#rue' ).val( rue );
635
			$( '#rue' ).val( rue );
647
			$( '#geometry-releve' ).val( geometry );
636
			$( '#geometry-releve' ).val( geometry );
648
			$( '#latitude-releve' ).val( latitude );
637
			$( '#latitude-releve' ).val( latitude );
649
			$( '#longitude-releve' ).val( longitude );
638
			$( '#longitude-releve' ).val( longitude );
650
			$( '#commune-nom' ).val( nomCommune );
639
			$( '#commune-nom' ).val( nomCommune );
651
			$( '#commune-insee' ).val( communeInsee );
640
			$( '#commune-insee' ).val( communeInsee );
652
			$( '#altitude-releve' ).val( altitude );
641
			$( '#altitude-releve' ).val( altitude );
653
			$( '#pays' ).val( pays );
642
			$( '#pays' ).val( pays );
654
			if ( this.valOk( $( '#rue' ).val() ) && this.valOk( $( '#commune-nom' ).val() ) ) {
643
			if ( valOk( $( '#rue' ).val() ) && valOk( $( '#commune-nom' ).val() ) ) {
655
				$( '#geoloc-error' ).addClass( 'hidden' );
644
				$( '#geoloc-error' ).addClass( 'hidden' );
656
				$( '#geoloc-datas' ).closest( '.control-group' ).removeClass( 'error' );
645
				$( '#geoloc-datas' ).closest( '.control-group' ).removeClass( 'error' );
657
			} else {
646
			} else {
Line 667... Line 656...
667
						.removeClass( 'error' )
656
						.removeClass( 'error' )
668
						.find( '#error-drc' )
657
						.find( '#error-drc' )
669
							.remove();
658
							.remove();
670
			}
659
			}
671
			$( '#rue,#commune-nom' ).change( function() {
660
			$( '#rue,#commune-nom' ).change( function() {
672
				if ( lthis.valOk( $( '#rue' ).val() ) && lthis.valOk( $( '#commune-nom' ).val() ) ) {
661
				if ( valOk( $( '#rue' ).val() ) && valOk( $( '#commune-nom' ).val() ) ) {
673
					$( '#geoloc-error' ).addClass( 'hidden' );
662
					$( '#geoloc-error' ).addClass( 'hidden' );
674
				} else {
663
				} else {
675
					$( '#geoloc-error' ).removeClass( 'hidden' );
664
					$( '#geoloc-error' ).removeClass( 'hidden' );
676
				}
665
				}
677
			});
666
			});
Line 679... Line 668...
679
			$( '#rue-arbres' ).val( rue );
668
			$( '#rue-arbres' ).val( rue );
680
			$( '#geometry-arbres' ).val( geometry );
669
			$( '#geometry-arbres' ).val( geometry );
681
			$( '#latitude-arbres' ).val( latitude );
670
			$( '#latitude-arbres' ).val( latitude );
682
			$( '#longitude-arbres' ).val( longitude );
671
			$( '#longitude-arbres' ).val( longitude );
683
			$( '#altitude-arbres' ).val( altitude );
672
			$( '#altitude-arbres' ).val( altitude );
684
			if ( this.valOk( $( '#latitude-arbres' ).val() ) && this.valOk( $( '#longitude-arbres' ).val() ) ) {
673
			if ( valOk( $( '#latitude-arbres' ).val() ) && valOk( $( '#longitude-arbres' ).val() ) ) {
685
				$( '#geoloc-arbres' ).closest( '.control-group' ).removeClass( 'error' );
674
				$( '#geoloc-arbres' ).closest( '.control-group' ).removeClass( 'error' );
686
			} else {
675
			} else {
687
				$( '#geoloc-arbres' ).closest( '.control-group' ).addClass( 'error' );
676
				$( '#geoloc-arbres' ).closest( '.control-group' ).addClass( 'error' );
688
			}
677
			}
689
		}
678
		}
-
 
679
		this.geoloc.map.setView([latitude, longitude], 18);
690
	} else {
680
	} else {
691
		console.dir( 'Error location' );
681
		console.dir( 'Error location' );
692
	}
682
	}
693
};
683
};
Line 694... Line 684...
694
 
684
 
695
// Form Validator *************************************************************/
685
// Form Validator *************************************************************/
696
ReleveASL.prototype.validerMinMax = function( element ) {
-
 
697
	var mMCond      = new Boolean(),
686
ReleveASL.prototype.validerMinMax = function( element ) {
698
		minCond     = parseFloat( element.value ) >= parseFloat( element.min ),
687
	const minCond = parseFloat( element.value ) >= parseFloat( element.min ),
-
 
688
		maxCond   = parseFloat( element.value ) <= parseFloat( element.max );
699
		maxCond     = parseFloat( element.value ) <= parseFloat( element.max ),
689
	let mnMxCond    = new Boolean(),
700
		messageMnMx = 'La valeur entrée doit être',
690
		messageMnMx = 'La valeur entrée doit être',
Line 701... Line 691...
701
		returnMnMx  = { cond : true , message : '' };
691
		returnMnMx  = { cond : true , message : '' };
702
 
692
 
703
	if (
693
	if (
704
			( this.valOk( element.type, true, 'number' ) || this.valOk( element.type, true, 'range' ) ) &&
694
			( valOk( element.type, true, 'number' ) || valOk( element.type, true, 'range' ) ) &&
Line 705... Line 695...
705
			( this.valOk( element.min ) || this.valOk( element.max ) )
695
			( valOk( element.min ) || valOk( element.max ) )
706
		) {
696
		) {
707
 
697
 
Line 724... Line 714...
724
 
714
 
725
/**
715
/**
726
 * Valider date/rue/commune par rapport aux relevés précédents
716
 * Valider date/rue/commune par rapport aux relevés précédents
727
 */
717
 */
728
ReleveASL.prototype.validerDateRueCommune = function( valeurDate, valeurRue, valeurCmn ) {
718
ReleveASL.prototype.validerDateRueCommune = function( valeurDate, valeurRue, valeurCmn ) {
Line 729... Line 719...
729
	var valide = true;
719
	let valide = true;
730
 
720
 
731
	if (
721
	if (
732
		this.valOk( $( '#dates-rues-communes' ).val() ) &&
722
		valOk( $( '#dates-rues-communes' ).val() ) &&
733
		this.valOk( valeurDate ) &&
723
		valOk( valeurDate ) &&
734
		this.valOk( valeurRue ) &&
724
		valOk( valeurRue ) &&
735
		this.valOk( valeurCmn )
725
		valOk( valeurCmn )
736
	) {
726
	) {
-
 
727
		const valsEltDRC = $.parseJSON( $( '#dates-rues-communes' ).val() ),
737
		var valsEltDRC = $.parseJSON( $( '#dates-rues-communes' ).val() ),
728
			valeurDRC = valeurDate + valeurRue + valeurCmn;
Line 738... Line 729...
738
			valeurDRC = valeurDate + valeurRue + valeurCmn;
729
 
739
		valide = ( -1 === valsEltDRC.indexOf( valeurDRC ) );
730
		valide = ( -1 === valsEltDRC.indexOf( valeurDRC ) );
740
 
731
 
Line 741... Line 732...
741
	}
732
	}
742
	return valide;
733
	return valide;
743
};
734
};
744
 
735
 
745
/**
736
/**
746
 * FormValidator pour les champs date/rue/Commune
737
 * FormValidator pour les champs date/rue/Commune
747
 */
738
 */
748
ReleveASL.prototype.dateRueCommuneFormValidator = function() {
739
ReleveASL.prototype.dateRueCommuneFormValidator = function() {
749
	var dateValid    = ( /^(?:[0-9]{4}-[0-9]{2}-[0-9]{2})|(?:[0-9]{2}\/[0-9]{2}\/[0-9]{4})$/.test( $( '#releve-date' ).val() ) ),
740
	const dateValid  = ( /^(?:[0-9]{4}-[0-9]{2}-[0-9]{2})|(?:[0-9]{2}\/[0-9]{2}\/[0-9]{4})$/.test( $( '#releve-date' ).val() ) ),
750
		geolocValid  = ( this.valOk( $( '#commune-nom' ).val() ) && this.valOk( $( '#rue' ).val() ) );
741
		geolocValid  = ( valOk( $( '#commune-nom' ).val() ) && valOk( $( '#rue' ).val() ) ),
Line 751... Line 742...
751
	const errorDateRue =
742
		errorDateRue =
Line 768... Line 759...
768
	} else {
759
	} else {
769
		$( '#releve-date' )
760
		$( '#releve-date' )
770
			.addClass( 'erreur' )
761
			.addClass( 'erreur' )
771
			.closest( '.control-group' )
762
			.closest( '.control-group' )
772
				.addClass( 'error' );
763
				.addClass( 'error' );
773
		if ( !this.valOk( $( '#releve-date' ).closest( '.control-group' ).find( '#error-drc' ) ) ) {
764
		if ( !valOk( $( '#releve-date' ).closest( '.control-group' ).find( '#error-drc' ) ) ) {
774
			$( '#releve-date' ).after( errorDateRue );
765
			$( '#releve-date' ).after( errorDateRue );
775
		}
766
		}
776
		$( '#geoloc' ).closest( '.control-group' ).addClass( 'error' );
767
		$( '#geoloc' ).closest( '.control-group' ).addClass( 'error' );
777
	}
768
	}
778
	if ( dateValid ) {
769
	if ( dateValid ) {
Line 785... Line 776...
785
 
776
 
786
	$( '#form-observation' ).validate({
777
	$( '#form-observation' ).validate({
787
		rules : {
778
		rules : {
788
			'zone-pietonne' : {
779
			'zone-pietonne' : {
789
				required : function() {
780
				required : function() {
790
					return( 'tb_lichensgo' !== this.projet );
781
					return( 'tb_lichensgo' !== lthis.projet );
791
				},
782
				},
792
				minlength : 1
783
				minlength : 1
793
			},
784
			},
794
			'latitude-releve' : {
785
			'latitude-releve' : {
Line 840... Line 831...
840
				required : true,
831
				required : true,
841
				minlength : 1
832
				minlength : 1
842
			},
833
			},
843
			'surface-pied' : {
834
			'surface-pied' : {
844
				required :  function() {
835
				required :  function() {
845
					return( 'tb_lichensgo' !== this.projet );
836
					return( 'tb_lichensgo' !== lthis.projet );
846
				},
837
				},
847
				minlength : 1,
838
				minlength : 1,
848
				'minMaxOk' : true
839
				'minMaxOk' : true
849
			},
840
			},
850
			'equipement-pied-arbre' : {
841
			'equipement-pied-arbre' : {
851
				required :  function() {
842
				required :  function() {
852
					return( 'tb_lichensgo' !== this.projet );
843
					return( 'tb_lichensgo' !== lthis.projet );
853
				},
844
				},
854
				minlength : 1
845
				minlength : 1
855
			},
846
			},
856
			'face-ombre' : {
847
			'face-ombre' : {
857
				required :  function() {
848
				required :  function() {
858
					return( 'tb_streets' !== this.projet );
849
					return( 'tb_streets' !== lthis.projet );
859
				},
850
				},
860
				minlength : 1
851
				minlength : 1
861
			}
852
			}
862
		}
853
		}
863
	});
854
	});
Line 875... Line 866...
875
			}
866
			}
876
		}
867
		}
877
	});
868
	});
878
	if ( 'tb_lichensgo' !== this.projet ) {
869
	if ( 'tb_lichensgo' !== this.projet ) {
879
		$( '#equipement-pied-arbre' ).change( function() {
870
		$( '#equipement-pied-arbre' ).change( function() {
880
			if ( lthis.valOk( $( this ).val(), false, 'other' ) ) {
871
			if ( valOk( $( this ).val(), false, 'other' ) ) {
881
				$( this )
872
				$( this )
882
					.closest( '.control-group' )
873
					.closest( '.control-group' )
883
						.removeClass( 'error' )
874
						.removeClass( 'error' )
884
						.find( 'span.error' )
875
						.find( 'span.error' )
885
							.addClass( 'hidden' );
876
							.addClass( 'hidden' );
886
			}
877
			}
887
		});
878
		});
888
	}
879
	}
889
	if ( 'tb_streets' !== this.projet ) {
880
	if ( 'tb_streets' !== this.projet ) {
890
		$( '#face-ombre input' ).on( 'click', function() {
881
		$( '#face-ombre input' ).on( 'click', function() {
891
			var oneIsChecked = false;
882
			let oneIsChecked = false;
892
			$( '#face-ombre input' ).each( function() {
883
			$( '#face-ombre input' ).each( function() {
893
				if ( $( this ).is( ':checked' ) ) {
884
				if ( $( this ).is( ':checked' ) ) {
894
					oneIsChecked = true;
885
					oneIsChecked = true;
895
					return false;
886
					return false;
896
				}
887
				}
Line 915... Line 906...
915
 
906
 
916
/**
907
/**
917
 * Valide le formulaire Relevé (= étape 1) au click sur un bouton "enregistrer"
908
 * Valide le formulaire Relevé (= étape 1) au click sur un bouton "enregistrer"
918
 */
909
 */
919
ReleveASL.prototype.validerReleve = function() {
910
ReleveASL.prototype.validerReleve = function() {
920
	const observateur = ( $( '#form-observateur' ).valid() && $( '#courriel' ).valid() )
911
	const observateur = ( $( '#form-observateur' ).valid() && $( '#courriel' ).valid() ),
921
	const obs         = $( '#form-observation' ).valid();
912
		obs           = $( '#form-observation' ).valid(),
922
	const geoloc      = (
913
		geoloc        = (
923
		this.valOk( $( '#latitude-releve' ).val() ) &&
914
			valOk( $( '#latitude-releve' ).val() ) &&
924
		this.valOk( $( '#longitude-releve' ).val() ) &&
915
			valOk( $( '#longitude-releve' ).val() ) &&
925
		this.valOk( $( '#rue' ).val() ) &&
916
			valOk( $( '#rue' ).val() ) &&
926
		this.valOk( $( '#commune-nom' ).val() )
917
			valOk( $( '#commune-nom' ).val() )
927
	) ;
918
		);
-
 
919
	let dateRue = true;
928
	var dateRue = true;
920
 
929
	if ( this.valOk( $( '#dates-rues-communes' ).val() ) ) {
921
	if ( valOk( $( '#dates-rues-communes' ).val() ) ) {
930
		dateRue = (
922
		dateRue = (
931
			this.valOk( $( '#releve-date' ).val() ) &&
923
			valOk( $( '#releve-date' ).val() ) &&
932
			this.valOk( $( '#rue' ).val() ) &&
924
			valOk( $( '#rue' ).val() ) &&
933
			this.validerDateRueCommune( $( '#releve-date' ).val(), $( '#rue' ).val(), $( '#commune-nom' ).val() )
925
			this.validerDateRueCommune( $( '#releve-date' ).val(), $( '#rue' ).val(), $( '#commune-nom' ).val() )
934
		);
926
		);
935
	}
927
	}
936
	if ( !obs ) {
928
	if ( !obs ) {
Line 947... Line 939...
947
	if ( dateRue && geoloc ) {
939
	if ( dateRue && geoloc ) {
948
		this.masquerPanneau( '#dialogue-date-rue-ko' );
940
		this.masquerPanneau( '#dialogue-date-rue-ko' );
949
		$( '#geoloc-datas' ).closest( '.control-group' ).removeClass( 'error' );
941
		$( '#geoloc-datas' ).closest( '.control-group' ).removeClass( 'error' );
950
	} else {
942
	} else {
951
		if (
943
		if (
952
			this.valOk( $( '#releve-date' ).val() ) &&
944
			valOk( $( '#releve-date' ).val() ) &&
953
			this.valOk( $( '#rue' ).val() ) &&
945
			valOk( $( '#rue' ).val() ) &&
954
			this.valOk( $( '#dates-rues-communes' ).val() )
946
			valOk( $( '#dates-rues-communes' ).val() )
955
		) {
947
		) {
956
			this.afficherPanneau( '#dialogue-date-rue-ko' );
948
			this.afficherPanneau( '#dialogue-date-rue-ko' );
957
		}
949
		}
958
		$( '#geoloc-datas' ).closest( '.control-group' ).addClass( 'error' );
950
		$( '#geoloc-datas' ).closest( '.control-group' ).addClass( 'error' );
959
	}
951
	}
960
	if (
952
	if (
961
		!this.valOk( $( '#releve-date' ).val() ) ||
953
		!valOk( $( '#releve-date' ).val() ) ||
962
		!this.valOk( $( '#rue' ).val() ) ||
954
		!valOk( $( '#rue' ).val() ) ||
963
		!this.valOk( $( '#dates-rues-communes' ).val() )
955
		!valOk( $( '#dates-rues-communes' ).val() )
964
	) {
956
	) {
965
		this.masquerPanneau( '#dialogue-date-rue-ko' );
957
		this.masquerPanneau( '#dialogue-date-rue-ko' );
966
	}
958
	}
967
	if ( geoloc ) {
959
	if ( geoloc ) {
968
		this.masquerPanneau( '#dialogue-geoloc-ko' );
960
		this.masquerPanneau( '#dialogue-geoloc-ko' );
Line 979... Line 971...
979
 
971
 
980
/**
972
/**
981
 * Valide le formulaire Arbres (= étape 2) au click sur un bouton "suivant"
973
 * Valide le formulaire Arbres (= étape 2) au click sur un bouton "suivant"
982
 */
974
 */
983
ReleveASL.prototype.validerForm = function() {
975
ReleveASL.prototype.validerForm = function() {
984
	const validerReleve = this.validerReleve();
976
	const validerReleve = this.validerReleve(),
985
	const geoloc      = (
977
		geoloc          = (
986
		this.valOk( $( '#latitude-arbres' ).val() ) &&
978
			valOk( $( '#latitude-arbres' ).val() ) &&
987
		this.valOk( $( '#longitude-arbres' ).val() )
979
			valOk( $( '#longitude-arbres' ).val() )
988
	);
980
		),
989
	const taxon = this.valOk( $( '#taxon' ).val() );
981
		taxon = valOk( $( '#taxon' ).val() );
Line 990... Line 982...
990
	var piedArbre = true;
982
	let piedArbre = true;
991
 
983
 
992
	if ( 'tb_lichensgo' !== this.projet ) {
984
	if ( 'tb_lichensgo' !== this.projet ) {
993
		piedArbre = this.valOk( $( '#equipement-pied-arbre' ).val(), false, 'other' );
985
		piedArbre = valOk( $( '#equipement-pied-arbre' ).val(), false, 'other' );
994
		if ( piedArbre ) {
986
		if ( piedArbre ) {
995
			$( '#equipement-pied-arbre' )
987
			$( '#equipement-pied-arbre' )
996
				.closest( '.control-group' )
988
				.closest( '.control-group' )
Line 1004... Line 996...
1004
					.find( 'span.error' )
996
					.find( 'span.error' )
1005
						.removeClass( 'hidden' );
997
						.removeClass( 'hidden' );
1006
		}
998
		}
1007
	}
999
	}
Line 1008... Line 1000...
1008
 
1000
 
1009
	const obs   = (
1001
	const obs = (
1010
		$( '#form-arbres' ).valid() &&
1002
		$( '#form-arbres' ).valid() &&
1011
		$( '#form-arbre-fs' ).valid() &&
1003
		$( '#form-arbre-fs' ).valid() &&
1012
		piedArbre
1004
		piedArbre