Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3877 → Rev 3899

/trunk/widget/modules/saisie/squelettes/js/WidgetSaisie.js
1,5 → 1,5
import {WidgetsSaisiesCommun,utils} from './WidgetsSaisiesCommun.js';
import {valOk} from './Utils.js';
import {valOk,tryParseJson} from './Utils.js';
 
/**
* Constructeur WidgetSaisie par défaut
358,59 → 358,85
}
};
 
WidgetSaisie.prototype.validateGeometry = function( geometry ) {
const isLineString = !!geometry && 'LineString' === geometry.type,
validateTypeOfCoordinates = coordinates => isLineString ? Array.isArray( coordinates ) : ['number','string'].includes( typeof coordinates );
 
if ( !valOk( geometry.coordinates ) ) {
return false;
}
 
let isValid = true;
 
$.each(geometry.coordinates, (i, coordinates) => {
if ( !validateTypeOfCoordinates( coordinates ) ) {
isValid = false;
}
});
 
const isValidLength = isLineString ? ( geometry.coordinates.length >= 2 ) : ( geometry.coordinates.length === 2 );
 
return isValid && isValidLength;
}
 
// Géolocalisation *************************************************************/
/**
* Fonction handler de l'évenement location du module tb-geoloc
*/
WidgetSaisie.prototype.locationHandler = function( location ) {
const locDatas = location.originalEvent.detail;
const locDatas = location.originalEvent.detail,
$geolocControlGroup = $( '#geoloc' ).closest( '.control-group' );
 
if ( valOk( locDatas ) ) {
console.log( locDatas );
if ( !valOk( locDatas ) ) {
console.warn( 'Error location' );
} else {
if ( !this.validateGeometry( locDatas.geometry ) ) {
$geolocControlGroup.addClass( 'error' );
$( '#geometry' ).val( '' );
} else {
console.log( locDatas );
 
const geometry = JSON.stringify( locDatas.geometry ),
altitude = ( valOk( locDatas.elevation ) ) ? locDatas.elevation : '',
pays = ( valOk( locDatas.osmCountryCode ) ) ? locDatas.osmCountryCode.toUpperCase() : 'FR',
rue = ( valOk( locDatas.osmRoad ) ) ? locDatas.osmRoad : '';
let latitude = '',
longitude = '',
coordLineaire = '',
nomCommune = '',
communeInsee = '';
const geometry = JSON.stringify( locDatas.geometry ),
altitude = ( valOk( locDatas.elevation ) ) ? locDatas.elevation : '',
pays = ( valOk( locDatas.osmCountryCode ) ) ? locDatas.osmCountryCode.toUpperCase() : 'FR',
rue = ( valOk( locDatas.osmRoad ) ) ? locDatas.osmRoad : '';
let latitude = '',
longitude = '',
coordLineaire = '',
nomCommune = '',
communeInsee = '';
 
if ( valOk( locDatas.geometry.coordinates ) &&
valOk( locDatas.centroid.coordinates ) &&
valOk( locDatas.centroid.coordinates[0] ) &&
valOk( locDatas.centroid.coordinates[1] )
) {
longitude = locDatas.centroid.coordinates[0];
latitude = locDatas.centroid.coordinates[1];
if ( valOk( locDatas.geometry.coordinates ) &&
valOk( locDatas.centroid.coordinates ) &&
valOk( locDatas.centroid.coordinates[0] ) &&
valOk( locDatas.centroid.coordinates[1] )
) {
longitude = locDatas.centroid.coordinates[0];
latitude = locDatas.centroid.coordinates[1];
}
if ( valOk( locDatas.inseeData ) ) {
nomCommune = locDatas.inseeData.nom;
communeInsee = ( valOk( locDatas.inseeData.code ) ) ? locDatas.inseeData.code : '';
} else if ( valOk( locDatas.locality ) ) {
nomCommune = locDatas.locality;
} else if ( valOk( locDatas.locality ) ) {
nomCommune = locDatas.osmCounty;
}
$( '#geometry' ).val( geometry );
$( '#coord-lineaire' ).val( coordLineaire );
$( '#latitude' ).val( latitude );
$( '#longitude' ).val( longitude );
$( '#commune-nom' ).val( nomCommune );
$( '#commune-insee' ).val( communeInsee );
$( '#altitude' ).val( altitude );
$( '#pays' ).val( pays );
$( '#station' ).val( rue );
$( '#latitude, #longitude' ).valid();
$geolocControlGroup.toggleClass(
'error',
!valOk( $( '#latitude' ).val() ) || !valOk( $( '#longitude' ).val() )
);
}
if ( valOk( locDatas.inseeData ) ) {
nomCommune = locDatas.inseeData.nom;
communeInsee = ( valOk( locDatas.inseeData.code ) ) ? locDatas.inseeData.code : '';
} else if ( valOk( locDatas.locality ) ) {
nomCommune = locDatas.locality;
} else if ( valOk( locDatas.locality ) ) {
nomCommune = locDatas.osmCounty;
}
$( '#geometry' ).val( geometry );
$( '#coord-lineaire' ).val( coordLineaire );
$( '#latitude' ).val( latitude );
$( '#longitude' ).val( longitude );
$( '#commune-nom' ).val( nomCommune );
$( '#commune-insee' ).val( communeInsee );
$( '#altitude' ).val( altitude );
$( '#pays' ).val( pays );
$( '#station' ).val( rue );
$( '#latitude, #longitude' ).valid();
if ( valOk( $( '#latitude' ).val() ) && valOk( $( '#longitude' ).val() ) ) {
$( '#geoloc' ).closest( '.control-group' ).removeClass( 'error' );
} else {
$( '#geoloc' ).closest( '.control-group' ).addClass( 'error' );
}
} else {
console.warn( 'Error location' );
}
}
 
619,18 → 645,16
 
WidgetSaisie.prototype.validerCertitudeTaxonImage = function( hasTaxon = false, hasImages = false ) {
const isCertain = 'certain' === $( '#certitude' ).val();
let isvalide = true ;
let isvalid = true ;
 
if ( this.photoObligatoire || !isCertain ) {
isvalide = this.validerImageRequise( hasImages );
isvalid = this.validerImageRequise( hasImages );
}
if ( isCertain ) {
isvalide &= this.validerTaxonRequis( hasTaxon );
isvalid &= this.validerTaxonRequis( hasTaxon );
}
 
return isvalide;
 
 
return isvalid;
};
 
WidgetSaisie.prototype.validerTaxonRequis = function( hasTaxon = false ) {
698,9 → 722,10
};
 
WidgetSaisie.prototype.validerForm = function() {
const observateur = ( $( '#form-observateur' ).valid() && $( '#courriel' ).valid() && $( '#courriel_confirmation' ).valid() ),
obs = $( '#form-observation' ).valid(),
geoloc = ( valOk( $( '#latitude' ).val() ) && valOk( $( '#longitude' ).val() ) ) ,
const observateur = ( $( '#form-observateur' ).valid() && $( '#courriel' ).valid() && $( '#courriel_confirmation' ).valid() ),
obs = $( '#form-observation' ).valid(),
parsedGeometry = tryParseJson( $( '#geometry' ).val() ),
geoloc = this.validateGeometry( parsedGeometry ) && ( valOk( $( '#latitude' ).val() ) && valOk( $( '#longitude' ).val() ) ) ,
// validation et panneau taxon/images
certitudeTaxonImage = this.validerCertitudeTaxonImage(
valOk( $( '#taxon' ).val() ),