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() ), |