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,14 → 358,42 |
} |
}; |
|
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 ) ) { |
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 ), |
404,13 → 432,11 |
$( '#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' ); |
$geolocControlGroup.toggleClass( |
'error', |
!valOk( $( '#latitude' ).val() ) || !valOk( $( '#longitude' ).val() ) |
); |
} |
} 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 ) { |
700,7 → 724,8 |
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() ) ) , |
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() ), |