Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 3239 Rev 3240
Line 31... Line 31...
31
  this.serviceNomCommuneUrlAlt = null;
31
  this.serviceNomCommuneUrlAlt = null;
32
  this.chargementIconeUrl = null;
32
  this.chargementIconeUrl = null;
33
  this.chargementImageIconeUrl = null;
33
  this.chargementImageIconeUrl = null;
34
  this.calendrierIconeUrl = null;
34
  this.calendrierIconeUrl = null;
35
  this.pasDePhotoIconeUrl = null;
35
  this.pasDePhotoIconeUrl = null;
-
 
36
 
-
 
37
  // système de traduction minimaliste
-
 
38
  this.msgs = {
-
 
39
    fr: {
-
 
40
      'format-non-supporte': 'Le format de fichier n\'est pas supporté, les formats acceptés sont',
-
 
41
      'date-incomplete': 'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.',
-
 
42
      'observations-transmises': 'observations transmises',
-
 
43
      'supprimer-observation-liste': 'Supprimer cette observation de la liste à transmettre',
-
 
44
      'milieu': 'Milieu',
-
 
45
      'commentaires': 'Commentaires',
-
 
46
      'erreur-inconnue': 'Erreur inconnue',
-
 
47
      'non-lie-au-ref': 'non lié au référentiel',
-
 
48
      'obs-le': 'le',
-
 
49
      'quitter-page' : 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.',
-
 
50
      'courriel-connu' : 'Un compte existe pour ce courriel, connectez-vous pour saisir votre observation',
-
 
51
      'obs-numero' : 'Observation n°',
-
 
52
      'erreur-ajax' : 'Erreur Ajax',
-
 
53
      'erreur' : 'Erreur',
-
 
54
      'erreur-chargement' : 'Erreur lors du chargement de l\'observation',
-
 
55
      'lieu-obs' : 'observé à',
-
 
56
      'lieu-dit' : 'Lieu-dit',
-
 
57
      'station' : 'Station'
-
 
58
 
-
 
59
    },
-
 
60
    en: {
-
 
61
      'format-non-supporte': 'The file format is not supported, the accepted formats are',
-
 
62
      'date-incomplete': 'Format: dd / mm / yyyy. Incomplete date, use 0, example: 00/12/2011.',
-
 
63
      'observations-transmises': 'observations transmitted',
-
 
64
      'supprimer-observation-liste': 'Delete this observation from the list to be transmitted',
-
 
65
      'milieu': 'Environment',
-
 
66
      'commentaires': 'Comments',
-
 
67
      'erreur-inconnue': 'Unknown error',
-
 
68
      'non-lie-au-ref': 'unrelated to the referencial ',
-
 
69
      'obs-le': 'the',
-
 
70
      'quitter-page' : 'Are you sure you want to leave the page?\nThe observations entered but not transmitted will be lost.',
-
 
71
      'courriel-connu' : 'An account exists for this email, log in to enter your observation',
-
 
72
      'obs-numero' : 'Observation number ',
-
 
73
      'erreur-ajax' : 'Ajax Error',
-
 
74
      'erreur' : 'Error',
-
 
75
      'erreur-chargement' : 'Error loading the observation',
-
 
76
      'lieu-obs' : 'observed at',
-
 
77
      'lieu-dit' : 'Locality',
-
 
78
      'station' : 'Place'
-
 
79
 
-
 
80
    }
-
 
81
  };
36
}
82
}
Line 37... Line 83...
37
 
83
 
38
/**
84
/**
39
 * Initialisation du widget
85
 * Initialisation du widget
Line 53... Line 99...
53
WidgetSaisie.prototype.initForm = function() {
99
WidgetSaisie.prototype.initForm = function() {
54
  if ( '' !== this.obsId ) {
100
  if ( '' !== this.obsId ) {
55
    this.chargerInfoObs();
101
    this.chargerInfoObs();
56
  }
102
  }
Line 57... Line 103...
57
 
103
 
58
  this.configurerDatePicker( '.date' );
104
  // this.configurerDatePicker( '.date' );
59
  this.ajouterAutocompletionNoms();
105
  this.ajouterAutocompletionNoms();
60
  this.configurerFormValidator();
106
  this.configurerFormValidator();
Line 61... Line 107...
61
  this.definirReglesFormValidator();
107
  this.definirReglesFormValidator();
Line 118... Line 164...
118
    $( '#ajouter-obs' ).attr( 'disabled', 'disabled' );
164
    $( '#ajouter-obs' ).attr( 'disabled', 'disabled' );
119
    if( lthis.verifierFormat( $( '#fichier' ).val() ) ) {
165
    if( lthis.verifierFormat( $( '#fichier' ).val() ) ) {
120
      $( '#form-upload' ).ajaxSubmit( options );
166
      $( '#form-upload' ).ajaxSubmit( options );
121
    } else {
167
    } else {
122
      $( '#form-upload' )[0].reset();
168
      $( '#form-upload' )[0].reset();
123
      window.alert( 'Le format de fichier n\'est pas supporté, les formats acceptés sont ' + $( '#fichier' ).attr( 'accept' ) );
169
      window.alert( this.msgTraduction( 'format-non-supporte' ) + ' ' + $( '#fichier' ).attr( 'accept' ) );
124
    }
170
    }
125
    return false;
171
    return false;
126
  });
172
  });
Line 127... Line 173...
127
 
173
 
Line 159... Line 205...
159
  });
205
  });
Line 160... Line 206...
160
 
206
 
161
  // fermeture fenêtre
207
  // fermeture fenêtre
162
  if ( !this.debug && 0 < $( '.obs' ).length ) {
208
  if ( !this.debug && 0 < $( '.obs' ).length ) {
163
    $( window ).on( 'beforeunload', function( event ) {
209
    $( window ).on( 'beforeunload', function( event ) {
164
      return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';
210
      return this.msgTraduction( 'quitter-page' );
165
    });
211
    });
Line 166... Line 212...
166
  }
212
  }
Line 265... Line 311...
265
    });
311
    });
266
  }
312
  }
267
};
313
};
Line 268... Line 314...
268
 
314
 
269
WidgetSaisie.prototype.surSuccesCompletionCourriel = function( infos, courriel ) {
315
WidgetSaisie.prototype.surSuccesCompletionCourriel = function( infos, courriel ) {
270
  $( '#zone-courriel' ).before( '<p class="warning"><i class="fas fa-exclamation-triangle"></i> Un compte existe pour ce courriel, connectez-vous pour saisir votre observation</p>' );
316
  $( '#zone-courriel' ).before( '<p class="warning"><i class="fas fa-exclamation-triangle"></i> ' + this.msgTraduction( 'courriel-connu' ) + '</p>' );
271
  $( '#bouton-inscription, #zone-prenom-nom, #zone-courriel-confirmation' ).addClass( 'hidden' );
317
  $( '#bouton-inscription, #zone-prenom-nom, #zone-courriel-confirmation' ).addClass( 'hidden' );
272
  $( '#prenom, #nom, #courriel_confirmation' ).attr( 'disabled', 'disabled' );
318
  $( '#prenom, #nom, #courriel_confirmation' ).attr( 'disabled', 'disabled' );
273
  $( '#bouton-connexion a' ).css( 'box-shadow', '0 0 1.5px 1px red' );
319
  $( '#bouton-connexion a' ).css( 'box-shadow', '0 0 1.5px 1px red' );
274
  // // Traité par auth.js :
320
  // // Traité par auth.js :
Line 343... Line 389...
343
WidgetSaisie.prototype.ajouterObs = function() {
389
WidgetSaisie.prototype.ajouterObs = function() {
344
  // Fermeture automatique des dialogue de transmission de données
390
  // Fermeture automatique des dialogue de transmission de données
345
  // @WARNING TEST
391
  // @WARNING TEST
346
  $( '#dialogue-obs-transaction-ko' ).addClass( 'hidden' );
392
  $( '#dialogue-obs-transaction-ko' ).addClass( 'hidden' );
347
  $( '#dialogue-obs-transaction-ok' ).addClass( 'hidden' );
393
  $( '#dialogue-obs-transaction-ok' ).addClass( 'hidden' );
-
 
394
  console.log( this.validerFormulaire() );
Line 348... Line 395...
348
 
395
 
349
  if ( this.validerFormulaire() ) {
396
  if ( this.validerFormulaire() ) {
350
    this.masquerPanneau( '#dialogue-form-invalide' );
397
    this.masquerPanneau( '#dialogue-form-invalide' );
351
    this.obsNbre = this.obsNbre + 1;
398
    this.obsNbre = this.obsNbre + 1;
Line 357... Line 404...
357
    if( !this.especeImposee ) {
404
    if( !this.especeImposee ) {
358
      $( '#taxon' ).val( '' );
405
      $( '#taxon' ).val( '' );
359
      $( '#taxon' ).data( 'numNomSel', undefined );
406
      $( '#taxon' ).data( 'numNomSel', undefined );
360
    }
407
    }
361
    $( '#barre-progression-upload' ).attr( 'aria-valuemax', this.obsNbre );
408
    $( '#barre-progression-upload' ).attr( 'aria-valuemax', this.obsNbre );
362
    $( '#barre-progression-upload .sr-only' ).text( '0/' + this.obsNbre + ' observations transmises' );
409
    $( '#barre-progression-upload .sr-only' ).text( '0/' + this.obsNbre + ' ' + this.msgTraduction( 'observations-transmises' ) );
363
  } else {
410
  } else {
364
    this.afficherPanneau( '#dialogue-form-invalide' );
411
    this.afficherPanneau( '#dialogue-form-invalide' );
365
  }
412
  }
366
};
413
};
Line 367... Line 414...
367
 
414
 
368
/**
415
/**
369
 * Affiche une observation dans la liste des observations à transmettre
416
 * Affiche une observation dans la liste des observations à transmettre
370
 */
417
 */
Line -... Line 418...
-
 
418
WidgetSaisie.prototype.afficherObs = function() {
-
 
419
 
-
 
420
  var obsHtmlDiff1 = '',
-
 
421
      obsHtmlDiff2 = '',
-
 
422
      obsHtmlDiff3 = '',
-
 
423
      obsHtmlDiff4 = '',
-
 
424
      obsHtmlDiff5 = '',
371
WidgetSaisie.prototype.afficherObs = function() {
425
      obsHtmlDiff6 = '',
372
 
426
      taxon = '',
-
 
427
      commune = '',
-
 
428
      inseeLatitudeLongitude = '',
-
 
429
      lieudit = '',
-
 
430
      station = '',
373
  // var commune = $( '#commune-nom' ).text();
431
      milieu = '',
-
 
432
      commentaires = '';
-
 
433
 
-
 
434
  if ( undefined != $('#taxon').data( 'numNomSel' ) ) {
374
  // commune = ( '' !== commune.trim() ) ? commune : $( '#carte-recherche' ).val();
435
    taxon = '<span class="referentiel-obs">' + '[' + this.nomSciReferentiel + ']' + '</span>';
-
 
436
  }
-
 
437
  if ( 0 < $( '#commune-nom' ).val().length ) {
-
 
438
    commune = ' '  + this.msgTraduction( 'lieu-obs' ) + ' <span class="commune">' + commune + '</span> ';
-
 
439
  }
-
 
440
  if ( 0 < $( '#commune-insee' ).val().length &&  0 < $( '#latitude' ).val().length && 0 < $( '#longitude' ).val().length ) {
-
 
441
    inseeLatitudeLongitude = $('#commune-insee').val() + ' [' + $( '#latitude' ).val() + ' / ' + $( '#longitude' ).val() + ']';
-
 
442
  }
-
 
443
  if ( 0 < $( '#lieudit' ).val().length ) {
-
 
444
    lieudit = '<span>' + this.msgTraduction( 'lieu-dit' ) + ' :</span> ' + $( '#lieudit' ).val() + ' ';
-
 
445
  }
-
 
446
  if ( 0 < $( '#station' ).val().length ) {
-
 
447
    station = '<span>' + this.msgTraduction( 'station' ) + ' :</span> ' + $( '#station' ).val() + ' ';
375
 
448
  }
-
 
449
  if ( 0 < $( '#milieu' ).val().length ) {
-
 
450
    milieu = '<span>' + this.msgTraduction( 'milieu' ) + ' :</span> ' + $( '#milieu' ).val() + ' ';
-
 
451
  }
-
 
452
  if ( 0 < $( '#notes' ).val().length ) {
376
  // var code_insee = $('#commune-code-insee').text();
453
    commentaires = this.msgTraduction( 'commentaires' ) + ' : <span class="discretion">' + $( '#notes' ).val() + '</span>' + ' ';
-
 
454
  }
-
 
455
 
377
  // code_insee = ( '' !== code_insee.trim() ) ? '(' + code_insee + ')' : '';
456
  if ( window.matchMedia( '(min-width: 576px)' ).matches ) {
-
 
457
    /* La largeur minimum de l'affichage est 600 px inclus */
-
 
458
    obsHtmlDiff1 = ' droite';
378
 
459
    obsHtmlDiff2 = '<div></div>';
-
 
460
    obsHtmlDiff3 = '<div class="row">';
-
 
461
    obsHtmlDiff4 = ' col-md-2 col-sm-4';
379
  // if ( this.debug ) {
462
    obsHtmlDiff5 = ' class="col-md-9 col-sm-7"';
Line 380... Line -...
380
  //   console.log( commune + '  -  ' + code_insee );
-
 
381
  // }
-
 
Line -... Line 463...
-
 
463
    obsHtmlDiff6 = '</div>';
-
 
464
  }
-
 
465
 
382
 
466
 
383
  $( '#liste-obs' ).prepend(
467
    $( '#liste-obs' ).prepend(
384
    '<div id="obs' + this.obsNbre + '" class="obs obs' + this.obsNbre + ' mb-2">'+
468
      '<div id="obs' + this.obsNbre + '" class="obs obs' + this.obsNbre + ' mb-2">'+
385
 
469
 
386
      '<div '+
470
        '<div '+
387
        'class="obs-action droite" '+
471
          'class="obs-action" '+
388
        'title="Supprimer cette observation de la liste à transmettre"'+
472
          'title="' + this.msgTraduction( 'supprimer-observation-liste' ) + '"'+
-
 
473
        '>'+
389
      '>'+
474
          '<button class="btn btn-danger supprimer-obs' + obsHtmlDiff1 + '" value="'+ this.obsNbre + '" title="' + this.msgTraduction( 'obs-numero' ) + this.obsNbre + '">'+
390
        '<button class="btn btn-danger supprimer-obs" value="'+ this.obsNbre + '" title="Observation n°' + this.obsNbre + '">'+
475
          '<i class="far fa-trash-alt"></i>'+
391
          '<i class="far fa-trash-alt"></i>'+
476
          '</button>'+
392
        '</button>'+
477
          obsHtmlDiff2 +
393
      '</div> '+
478
        '</div> '+
394
 
479
 
395
      '<div class="row">'+
480
        obsHtmlDiff3 +
396
        '<div class="thumbnail col-md-2">'+
481
          '<div class="thumbnail' + obsHtmlDiff4 + '">'+
397
          this.ajouterImgMiniatureAuTransfert()+
482
            this.ajouterImgMiniatureAuTransfert()+
398
        '</div>'+
483
          '</div>'+
399
        '<div class="col-md-9">'+
484
          '<div' + obsHtmlDiff5 + '>'+
400
          '<ul class="unstyled">'+
-
 
401
            '<li>'+
485
            '<ul class="unstyled">'+
402
              '<span class="nom-sci">' + $( '#taxon' ).val() + '</span> '+
486
              '<li>'+
403
              this.ajouterNumNomSel() + '<span class="referentiel-obs">'+
487
                '<span class="nom-sci">' + $( '#taxon' ).val() + '</span> '+
404
              ( ( undefined == $('#taxon').data( 'numNomSel' ) ) ? '' : '[' + this.nomSciReferentiel + ']' ) + '</span>'+
488
                this.ajouterNumNomSel() +
405
              // ' observé à '+
489
                taxon +
406
              // '<span class="commune">' + commune + '</span> '+
490
                commune +
407
              // code_insee + ' [' + $( '#latitude' ).val() + ' / ' + $( '#longitude' ).val() + ']'+
491
                inseeLatitudeLongitude +
408
              // ' le '+
492
                ' ' + this.msgTraduction( 'obs-le' ) + ' ' +
409
              // '<span class="date">' + $( '#date' ).val() + '</span>'+
493
                '<span class="date">' + $( '#date_releve' ).val() + '</span>'+
410
            '</li>'+
494
              '</li>'+
411
            '<li>'+
495
              '<li>'+
412
            //   '<span>Lieu-dit :</span> ' + $( '#lieudit' ).val() + ' '+
496
                lieudit +
413
            //   '<span>Station :</span> ' + $( '#station' ).val() + ' '+
497
                station +
414
              '<span>Milieu :</span> '+ $ ( '#milieu' ).val() + ' '+
498
                milieu +
415
            '</li>'+
499
              '</li>'+
416
            '<li>'+
500
              '<li>'+
417
              'Commentaires : <span class="discretion">' + $( '#notes' ).val() + '</span>'+
501
                commentaires +
418
            '</li>'+
-
 
419
          '</ul>'+
502
              '</li>'+
420
        '</div>'+
503
            '</ul>'+
Line 421... Line 504...
421
      '</div>'+
504
          '</div>'+
422
 
505
        obsHtmlDiff6+
Line -... Line 506...
-
 
506
      '</div>'
-
 
507
    );
-
 
508
 
-
 
509
  $( '#zone-liste-obs' ).removeClass( 'hidden' );
-
 
510
};
-
 
511
 
-
 
512
WidgetSaisie.prototype.fournirDate = function( dateObs ) {
-
 
513
 
-
 
514
  if ( /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/.test( dateObs ) ) {
-
 
515
    return dateObs;
-
 
516
  } else if ( /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test( dateObs ) ) {
-
 
517
    var dateArray = dateObs.split( '-' );
-
 
518
    return dateArray[2] + '/' + dateArray[1] + '/' + dateArray[0]
423
    '</div>'
519
  } else {
424
  );
520
    console.log( 'erreur date : ' + dateObs )
Line 425... Line -...
425
 
-
 
426
  $( '#zone-liste-obs' ).removeClass( 'hidden' );
-
 
427
};
-
 
428
 
521
  }
429
WidgetSaisie.prototype.stockerObsData = function() {
522
 
430
  var lthis = this;
523
}
431
 
524
 
432
  // var commune = $( '#commune-nom' ).text();
525
WidgetSaisie.prototype.stockerObsData = function() {
433
  // commune = ( '' === commune.trim() ) ? commune : $( '#carte-recherche' ).val();
526
  var lthis = this;
434
 
527
 
435
  $( '#liste-obs' ).data( 'obsId' + this.obsNbre, {
528
  $( '#liste-obs' ).data( 'obsId' + this.obsNbre, {
436
    'date' : $( '#date' ).val(),
529
    'date' : lthis.fournirDate( $( '#date_releve' ).val() ),
437
    'notes' : $( '#notes' ).val().trim(),
530
    'notes' : $( '#notes' ).val().trim(),
-
 
531
    'nom_sel' : $( '#taxon' ).val(),
-
 
532
    'num_nom_sel' : $( '#taxon' ).data( 'numNomSel' ),
-
 
533
    'nom_ret' : $( '#taxon' ).data( 'nomRet' ),
-
 
534
    'num_nom_ret' : $( '#taxon' ).data( 'numNomRet' ),
438
    'nom_sel' : $( '#taxon' ).val(),
535
    'num_taxon' : $( '#taxon' ).data( 'nt' ),
439
    'num_nom_sel' : $( '#taxon' ).data( 'numNomSel' ),
536
    'famille' : $( '#taxon' ).data( 'famille' ),
440
    'nom_ret' : $( '#taxon' ).data( 'nomRet' ),
-
 
441
    'num_nom_ret' : $( '#taxon' ).data( 'numNomRet' ),
-
 
442
    'num_taxon' : $( '#taxon' ).data( 'nt' ),
537
    'referentiel' : ( ( undefined === $( '#taxon' ).data( 'numNomSel' ) ) ? '' : lthis.nomSciReferentiel ),
443
    'famille' : $( '#taxon' ).data( 'famille' ),
538
    // 'pays' : $( 'pays' ).val(),
-
 
539
    // 'commune_nom' : $( '#commune-nom' ).val(),
-
 
540
    // 'commune_code_insee' : $( '#commune-code-insee' ).text(),
-
 
541
    // 'commune_code_insee' : $( '#commune-insee' ).val(),
-
 
542
    // 'latitude' : $( '#latitude' ).val(),
-
 
543
    // 'longitude' : $( '#longitude' ).val(),
-
 
544
    // 'lieudit' : $( '#lieudit' ).val(),
-
 
545
    // 'station' : $( '#station' ).val(),
-
 
546
    // 'altitude' : $( '#altitude' ).val(),
-
 
547
 
-
 
548
// début valeurs pour test:
444
    'referentiel' : ( ( undefined === $( '#taxon' ).data( 'numNomSel' ) ) ? '' : lthis.nomSciReferentiel ),
549
    'commune_nom' : 'Montpellier',
Line 445... Line 550...
445
    // 'latitude' : $( '#latitude' ).val(),
550
    'commune_code_insee' : '34172',
446
    // 'longitude' : $( '#longitude' ).val(),
551
    'latitude' : '43.608320',
447
    // 'commune_nom' : commune,
552
    'longitude' : '3.880196',
Line 461... Line 566...
461
 
566
 
462
/**
567
/**
463
 * Retourne un Array contenant les valeurs des champs étendus
568
 * Retourne un Array contenant les valeurs des champs étendus
464
 */
569
 */
465
WidgetSaisie.prototype.getObsChpEtendus = function() {
570
WidgetSaisie.prototype.getObsChpEtendus = function() {
466
  var champs = [],
571
  var champs = new Array(),
467
      $thisForm = $( '#form-supp' ),
572
      $thisForm = $( '#form-supp' ),
468
      elements =
573
      elements =
469
        'input[type=text]:not(.collect-other),'+
574
        'input[type=text]:not(.collect-other),'+
470
        'input[type=checkbox]:checked,'+
575
        'input[type=checkbox]:checked,'+
471
        'input[type=radio]:checked,'+
576
        'input[type=radio]:checked,'+
472
        'input[type=email],'+
577
        'input[type=email],'+
473
        'input[type=number],'+
578
        'input[type=number],'+
474
        'input[type=range]'+
579
        'input[type=range]'+
475
        'input[type=date],'+
580
        'input[type=date],'+
476
        'textarea,'+
581
        'textarea,'+
-
 
582
        'select:not(.list-checkbox)',
Line 477... Line 583...
477
        'select';
583
      retour = new Array();
478
 
584
 
479
  $( elements, $thisForm ).each( function() {
585
  $( elements, $thisForm ).each( function() {
480
    var valeur = $( this ).val(),
586
    var valeur = $( this ).val();
481
        cle = $( this ).attr( 'name' ),
587
        cle = $( this ).attr( 'name' );
482
        label = $( this ).data( 'label' );
588
    console.log(valeur);
483
    if ( '' !== valeur ) {
589
    if ( '' !== valeur ) {
484
      var chpEtendu = {
590
      if ( cle in champs ) {
485
        cle: cle,
591
        champs[cle] += ';' + valeur;
486
        label: label,
592
      } else {
487
        valeur: valeur
-
 
488
      };
593
        champs[cle] =  valeur;
489
      champs.push( chpEtendu );
594
      }
-
 
595
    }
-
 
596
  });
-
 
597
 
-
 
598
  for( var key in champs ) {
-
 
599
    retour.push({ 'cle' : key , 'valeur' : champs[key] });
490
    }
600
  };
491
  });
601
 
Line 492... Line 602...
492
  return champs;
602
  return retour;
493
};
603
};
494
 
604
 
Line 600... Line 710...
600
          $.each( reponse, function( cle, valeur ) {
710
          $.each( reponse, function( cle, valeur ) {
601
            erreurMsg += valeur + '\n';
711
            erreurMsg += valeur + '\n';
602
          });
712
          });
603
        }
713
        }
604
      } catch( e ) {
714
      } catch( e ) {
605
        erreurMsg += 'Erreur inconnue: ' + jqXHR.responseText;
715
        erreurMsg += 'Erreur inconnue : ' + jqXHR.responseText;
606
      }
716
      }
607
    },
717
    },
608
    complete : function( jqXHR, textStatus ) {
718
    complete : function( jqXHR, textStatus ) {
609
      var debugMsg = extraireEnteteDebug( jqXHR );
719
      var debugMsg = extraireEnteteDebug( jqXHR );
Line 652... Line 762...
652
WidgetSaisie.prototype.mettreAJourProgression = function() {
762
WidgetSaisie.prototype.mettreAJourProgression = function() {
653
  this.nbObsTransmises++;
763
  this.nbObsTransmises++;
654
  var pct = ( this.nbObsTransmises / this.totalObsATransmettre ) * 100;
764
  var pct = ( this.nbObsTransmises / this.totalObsATransmettre ) * 100;
655
  $( '#barre-progression-upload' ).attr( 'aria-valuenow', this.nbObsTransmises );
765
  $( '#barre-progression-upload' ).attr( 'aria-valuenow', this.nbObsTransmises );
656
  $( '#barre-progression-upload' ).attr( 'style', 'width: ' + pct + '%' );
766
  $( '#barre-progression-upload' ).attr( 'style', 'width: ' + pct + '%' );
657
  $( '#barre-progression-upload .sr-only' ).text( this.nbObsTransmises + '/' + this.totalObsATransmettre + ' observations transmises' );
767
  $( '#barre-progression-upload .sr-only' ).text( this.nbObsTransmises + '/' + this.totalObsATransmettre + ' ' + this.msgTraduction( 'observations-transmises' ) );
Line 658... Line 768...
658
 
768
 
659
  if( 0 === this.obsNbre ) {
769
  if( 0 === this.obsNbre ) {
660
    $( '.progress' ).removeClass( 'active' );
770
    $( '.progress' ).removeClass( 'active' );
661
    $( '.progress' ).removeClass( 'progress-striped' );
771
    $( '.progress' ).removeClass( 'progress-striped' );
662
  }
772
  }
Line 663... Line 773...
663
};
773
};
664
 
774
 
665
WidgetSaisie.prototype.validerFormulaire = function() {
775
WidgetSaisie.prototype.validerFormulaire = function() {
-
 
776
  var observateur = $( '#form-observateur' ).valid();
666
  observateur = $( '#form-observateur' ).valid();
777
  var obs = $( '#form-observation' ).valid();
667
  // station = $( '#form-station' ).valid();
778
  var geoloc = ( 'ok' === $( '#geoloc' ).val() );
Line 668... Line 779...
668
  obs = ( '' !== $( '#nom-complet' ).text() || ( $( '#form-observation' ).valid() && !$( '#anonyme' ).hasClass( 'hidden' ) ) ) ? true : false;
779
  ( geoloc ) ? this.masquerPanneau( '#dialogue-geoloc-ko' ) : this.afficherPanneau( '#dialogue-geoloc-ko' );
669
  ( obs ) ? this.masquerPanneau( '#dialogue-utilisateur-non-identifie' ) : this.afficherPanneau( '#dialogue-utilisateur-non-identifie' );
780
  ( obs ) ? this.masquerPanneau( '#dialogue-utilisateur-non-identifie' ) : this.afficherPanneau( '#dialogue-utilisateur-non-identifie' );
Line 670... Line 781...
670
 
781
 
671
  return ( observateur /*&& station */&& obs ) ? true : false;
782
  return ( observateur &&  geoloc && obs );
672
};
783
};
Line 709... Line 820...
709
};
820
};
Line 710... Line 821...
710
 
821
 
711
WidgetSaisie.prototype.initialiserBarreProgression = function() {
822
WidgetSaisie.prototype.initialiserBarreProgression = function() {
712
  $( '#barre-progression-upload' ).attr( 'aria-valuenow', 0 );
823
  $( '#barre-progression-upload' ).attr( 'aria-valuenow', 0 );
713
  $( '#barre-progression-upload' ).attr( 'style', 'width: 0%' );
824
  $( '#barre-progression-upload' ).attr( 'style', 'width: 0%' );
714
  $( '#barre-progression-upload .sr-only' ).text( '0/0 observations transmises' );
825
  $( '#barre-progression-upload .sr-only' ).text( '0/0 ' + this.msgTraduction( 'observations-transmises' ) );
715
  $( '.progress' ).addClass( 'active' );
826
  $( '.progress' ).addClass( 'active' );
716
  $( '.progress' ).addClass( 'progress-striped' );
827
  $( '.progress' ).addClass( 'progress-striped' );
Line 717... Line 828...
717
};
828
};
Line 804... Line 915...
804
};
915
};
Line 805... Line 916...
805
 
916
 
806
WidgetSaisie.prototype.ajouterNumNomSel = function() {
917
WidgetSaisie.prototype.ajouterNumNomSel = function() {
807
  var nn = '<span class="nn">[nn' + $( '#taxon' ).data( 'numNomSel' ) + ']</span>';
918
  var nn = '<span class="nn">[nn' + $( '#taxon' ).data( 'numNomSel' ) + ']</span>';
808
  if ( undefined == $( '#taxon' ).data( 'numNomSel' ) ) {
919
  if ( undefined == $( '#taxon' ).data( 'numNomSel' ) ) {
809
    nn = '<span class="alert-error">[non lié au référentiel]</span>';
920
    nn = '<span class="alert-error">[' + this.msgTraduction( 'non-lie-au-ref' ) + ']</span>';
810
  }
921
  }
811
  return nn;
922
  return nn;
Line 812... Line 923...
812
};
923
};
Line 880... Line 991...
880
  });
991
  });
881
};
992
};
Line 882... Line 993...
882
 
993
 
883
// @TODO faire mieux que ça !
994
// @TODO faire mieux que ça !
884
WidgetSaisie.prototype.surErreurChargementInfosObs = function() {
995
WidgetSaisie.prototype.surErreurChargementInfosObs = function() {
885
  alert( 'Erreur lors du chargement de l\'observation' );
996
  alert( this.msgTraduction( 'erreur-chargement' ) );
Line 886... Line 997...
886
};
997
};
Line 887... Line 998...
887
 
998
 
Line 909... Line 1020...
909
WidgetSaisie.prototype.configurerFormValidator = function() {
1020
WidgetSaisie.prototype.configurerFormValidator = function() {
910
    var lthis = this;
1021
    var lthis = this;
911
  $.validator.addMethod(
1022
  $.validator.addMethod(
912
    'dateCel',
1023
    'dateCel',
913
    function ( value, element ) {
1024
    function ( value, element ) {
914
      return ( '' === value || ( /(^(((0[1-9]|1[0-9]|2[0-8])[\/](0[1-9]|1[012]))|((29|30|31)[\/](0[13578]|1[02]))|((29|30)[\/](0[4,6,9]|11)))[\/](19|[2-9][0-9])\d\d$)|(^29[\/]02[\/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)/.test( value ) ) );
1025
      return ( '' !== value || ( /^(?:[0-9]{4}-[0-9]{2}-[0-9]{2})|(?:[0-9]{2}\/[0-9]{2}\/[0-9]{4})$/.test( value ) ) );
915
    },
1026
    },
916
    'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.'
1027
    this.msgTraduction( 'date-incomplete' )
917
  );
1028
  );
Line 918... Line 1029...
918
 
1029
 
919
  $.validator.addMethod(
1030
  $.validator.addMethod(
920
      'userEmailOk',
1031
      'userEmailOk',
Line 953... Line 1064...
953
      $( element ).closest( '.control-group' ).addClass( 'error' );
1064
      $( element ).closest( '.control-group' ).addClass( 'error' );
954
    },
1065
    },
Line 955... Line 1066...
955
 
1066
 
956
    unhighlight: function( element ) {
1067
    unhighlight: function( element ) {
957
      if ( 'taxon' === $( element ).attr( 'id' ) ) {
1068
      if ( 'taxon' === $( element ).attr( 'id' ) ) {
958
        if ( '' !== $( '#taxon' ).val() ) {
1069
        if ( 0 < $( '#taxon' ).val().length ) {
959
          // Si le taxon n'est pas lié au référentiel, on vide le data associé
1070
          // Si le taxon n'est pas lié au référentiel, on vide le data associé
960
          if ( $( '#taxon' ).data( 'value' ) != $( '#taxon' ).val() ) {
1071
          if ( $( '#taxon' ).data( 'value' ) != $( '#taxon' ).val() ) {
961
            $( '#taxon' ).data( 'numNomSel', '' );
1072
            $( '#taxon' ).data( 'numNomSel', '' );
962
            $( '#taxon' ).data( 'nomRet','' );
1073
            $( '#taxon' ).data( 'nomRet','' );
963
            $( '#taxon' ).data( 'numNomRet', '' );
1074
            $( '#taxon' ).data( 'numNomRet', '' );
964
            $( '#taxon' ).data( 'nt', '' );
1075
            $( '#taxon' ).data( 'nt', '' );
965
            $( '#taxon' ).data( 'famille', '' );
1076
            $( '#taxon' ).data( 'famille', '' );
966
          }
1077
          }
967
          $( '#taxon-input-groupe' ).removeClass( 'error' );
1078
          $( '#taxon-input-groupe' ).removeClass( 'error' );
-
 
1079
          $( element ).next( 'span.help-inline' ).remove();
-
 
1080
        } else {
968
          $( element ).next( 'span.help-inline' ).remove();
1081
          $( '#taxon-input-groupe' ).addClass( 'error' );
969
        }
1082
        }
970
      } else {
1083
      } else {
971
        $( element ).closest( '.control-group' ).removeClass( 'error' );
1084
        $( element ).closest( '.control-group' ).removeClass( 'error' );
972
        $( element ).next( 'span.help-inline' ).remove();
1085
        $( element ).next( 'span.help-inline' ).remove();
Line 976... Line 1089...
976
  });
1089
  });
977
};
1090
};
Line 978... Line 1091...
978
 
1091
 
Line -... Line 1092...
-
 
1092
WidgetSaisie.prototype.definirReglesFormValidator = function() {
-
 
1093
 
-
 
1094
  $( '#form-observation' ).validate({
-
 
1095
    rules : {
-
 
1096
      date_releve : {
-
 
1097
        required : true,
-
 
1098
        'dateCel' : true
-
 
1099
      },
-
 
1100
      taxon : 'required'
-
 
1101
      // latitude : {
-
 
1102
      //   range: [-90, 90]
-
 
1103
      // },
-
 
1104
      // longitude : {
-
 
1105
      //   range: [-180, 180]
-
 
1106
      // }
979
WidgetSaisie.prototype.definirReglesFormValidator = function() {
1107
    }
980
 
1108
  });
981
  $( '#form-observateur' ).validate({
1109
  $( '#form-observateur' ).validate({
982
    rules : {
1110
    rules : {
983
      courriel : {
1111
      courriel : {
Line 989... Line 1117...
989
        required : true,
1117
        required : true,
990
        equalTo : '#courriel'
1118
        equalTo : '#courriel'
991
      }
1119
      }
992
    }
1120
    }
993
  });
1121
  });
994
  // $( '#form-station' ).validate({
-
 
995
  //   rules: {
-
 
996
  //     latitude : {
-
 
997
  //       range: [-90, 90]
-
 
998
  //     },
-
 
999
  //     longitude : {
-
 
1000
  //       range: [-180, 180]
-
 
1001
  //     }
-
 
1002
  //   }
-
 
1003
  // });
-
 
1004
  $( '#form-observation' ).validate({
-
 
1005
    rules : {
-
 
1006
      date_releve : {
-
 
1007
        required : true,
-
 
1008
        'dateCel' : true
-
 
1009
      },
-
 
1010
      taxon : 'required'
-
 
1011
    }
-
 
1012
  });
-
 
1013
};
1122
};
Line 1014... Line 1123...
1014
 
1123
 
1015
/* calendrier */
1124
// /* calendrier */
1016
WidgetSaisie.prototype.configurerDatePicker = function( selector ) {
1125
// WidgetSaisie.prototype.configurerDatePicker = function( selector ) {
1017
  $.datepicker.setDefaults( $.datepicker.regional[ this.langue ] );
1126
//   $.datepicker.setDefaults( $.datepicker.regional[ this.langue ] );
1018
  $( selector ).datepicker({
1127
//   $( selector ).datepicker({
1019
    dateFormat: 'dd/mm/yy',
1128
//     dateFormat: 'dd/mm/yyyy',
1020
    maxDate: new Date,
1129
//     maxDate: new Date,
1021
    onSelect: function( date ) {
1130
//     onSelect: function( date ) {
1022
      $( this ).valid();
1131
//       $( this ).valid();
1023
    }
1132
//     }
1024
  });
1133
//   });
1025
  $( selector + ' + img.ui-datepicker-trigger' ).appendTo( selector + '-icone.add-on' );
1134
//   $( selector + ' + img.ui-datepicker-trigger' ).appendTo( selector + '-icone.add-on' );
Line 1026... Line 1135...
1026
};
1135
// };
1027
 
1136
 
1028
WidgetSaisie.prototype.surAutocompletionTaxon = function( event, ui ) {
1137
WidgetSaisie.prototype.surAutocompletionTaxon = function( event, ui ) {
1029
  $( '#taxon' ).data( ui.item );
1138
  $( '#taxon' ).data( ui.item );
Line 1096... Line 1205...
1096
 
1205
 
1097
WidgetSaisie.prototype.masquerPanneau = function( selecteur ) {
1206
WidgetSaisie.prototype.masquerPanneau = function( selecteur ) {
1098
  $( selecteur ).addClass( 'hidden' );
1207
  $( selecteur ).addClass( 'hidden' );
Line -... Line 1208...
-
 
1208
};
-
 
1209
 
-
 
1210
/**
-
 
1211
 * Si la langue est définie dans this.langue, et si des messages sont définis
-
 
1212
 * dans this.msgs, tente de trouver le message dont la clé est [cle] dans la
-
 
1213
 * langue en cours. S'il n'est pas trouvé, retourne la version française (par
-
 
1214
 * défaut); si celle-ci n'exite pas, retourne "N/A".
-
 
1215
 */
-
 
1216
WidgetSaisie.prototype.msgTraduction = function( cle ) {
-
 
1217
  var msg = 'N/A';
-
 
1218
  if ( this.msgs ) {
-
 
1219
    if ( this.langue in this.msgs && cle in this.msgs[this.langue] ) {
-
 
1220
      msg = this.msgs[this.langue][cle];
-
 
1221
    } else if ( cle in this.msgs['fr'] ) {
-
 
1222
      msg = this.msgs['fr'][cle];
-
 
1223
    }
-
 
1224
  }
-
 
1225
  return msg;
1099
};
1226
};
Line 1100... Line 1227...
1100
 
1227
 
1101
// lib hors objet --
1228
// lib hors objet --
1102
 
1229