src/widgets/Markers.js
changeset 1067 539c9bee5372
parent 1066 5ef7182907c5
child 1069 2409cb4cebaf
--- a/src/widgets/Markers.js	Fri Sep 25 10:44:54 2015 +0200
+++ b/src/widgets/Markers.js	Fri Sep 25 14:45:38 2015 +0200
@@ -205,7 +205,7 @@
         this.showScreen("ConfirmDelete");
     }
     else {
-        // Clic sur - sans marqueur sélectionné = retour à l'état initial
+        // Click on "x" without a selected marker: back to initial state
         this.cancelEdit();
     }
 }
@@ -247,7 +247,7 @@
 
 IriSP.Widgets.Markers.prototype.cancelEdit = function(){
     if (this.selectedMarker){
-        // Clic sur "cancel" pendant édition d'un marqueur = retour à l'état visualisation
+        // Click on "cancel" while editing a marker: back to visualization state
         _divHtml = Mustache.to_html(this.infoTemplate, {
             edit: false,
             marker_info: this.selectedMarker.description,
@@ -258,7 +258,7 @@
         }
     }
     else {
-        // Clic sur "cancel" pendant la création d'un marqueur = retour à l'état initial
+        // Click on "cancel" while editing a marker: back to initial state
         this.hidePlaceholder();
         this.$.find(".Ldt-Markers-Info").html("");
         this.$.find(".Ldt-Markers-RoundButton").hide()
@@ -440,85 +440,78 @@
 
 IriSP.Widgets.Markers.prototype.onSubmit = function(){
     
-    /* Si les champs obligatoires sont vides, on annule l'envoi */
+    /* If mandatory fields are empty, we cancel the sending */
     if (!this.allow_empty_markers && !this.onDescriptionChange()){
         return false;
     }
     
-    /* On pause la vidéo si elle est encore en train de tourner */
+    /* We pause the video if it's still playing */
     if (!this.media.getPaused()){
         this.media.pause();
     }
     
     var _this = this,
-        _exportedAnnotations = new IriSP.Model.List(this.player.sourceManager); /* Création d'une liste d'annotations contenant une annotation afin de l'envoyer au serveur */        
+        _exportedAnnotations = new IriSP.Model.List(this.player.sourceManager), /* We create a List to send to the server that will contains the annotation */
+        _export = this.player.sourceManager.newLocalSource({serializer: IriSP.serializers[this.api_serializer]}), /* We create a source object using a specific serializer for export */
+        _annotationTypes = this.source.getAnnotationTypes().searchByTitle(this.annotation_type, true), /* We get the AnnotationType in which the annotation will be added */
+        _annotationType = (_annotationTypes.length ? _annotationTypes[0] : new IriSP.Model.AnnotationType(false, _export)); /* If it doesn't already exists, we create it */
     if (this.selectedMarker){
-        var _export = this.player.sourceManager.newLocalSource({serializer: IriSP.serializers[this.api_serializer]})
-            _annotation = this.selectedMarker,
+        var _annotation = this.selectedMarker,
             _url = Mustache.to_html(this.api_endpoint_template_edit, {annotation_id: this.selectedMarker ? this.selectedMarker.id : ""});
         _annotation.source = _export
-        _annotation.description = this.$.find(".Ldt-Markers-MarkerTextArea").val(), /* Champ description */
-        _annotationTypes = this.source.getAnnotationTypes().searchByTitle(this.annotation_type, true), /* Récupération du type d'annotation dans lequel l'annotation doit être ajoutée */
-        _annotationType = (_annotationTypes.length ? _annotationTypes[0] : new IriSP.Model.AnnotationType(false, _export)); /* Si le Type d'Annotation n'existe pas, il est créé à la volée */
+        _annotation.description = this.$.find(".Ldt-Markers-MarkerTextArea").val(), /* Description field */
     }
     else {
-        var _export = this.player.sourceManager.newLocalSource({serializer: IriSP.serializers[this.api_serializer]}), /* Création d'un objet source utilisant un sérialiseur spécifique pour l'export */
-            _annotation = new IriSP.Model.Annotation(false, _export); /* Création d'une annotation dans cette source avec un ID généré à la volée (param. false) */
-            _annotationTypes = this.source.getAnnotationTypes().searchByTitle(this.annotation_type, true), /* Récupération du type d'annotation dans lequel l'annotation doit être ajoutée */
-            _annotationType = (_annotationTypes.length ? _annotationTypes[0] : new IriSP.Model.AnnotationType(false, _export)), /* Si le Type d'Annotation n'existe pas, il est créé à la volée */
+        var _annotation = new IriSP.Model.Annotation(false, _export),
             _url = Mustache.to_html(this.api_endpoint_template_create);
-        /* Si nous avons dû générer un ID d'annotationType à la volée... */
+        
+        /* If we created an AnnotationType on the spot ... */
         if (!_annotationTypes.length) {
-            /* Il ne faudra pas envoyer l'ID généré au serveur */
+            /* ... We must not send its id to the server ... */
             _annotationType.dont_send_id = true;
-            /* Il faut inclure le titre dans le type d'annotation */
+            /* ... And we must include its title. */
             _annotationType.title = this.annotation_type;
         }
         
-        _annotation.setMedia(this.source.currentMedia.id); /* Id du média annoté */
+        _annotation.setMedia(this.source.currentMedia.id); /* Annotated media ID */
         if (!this.selectedMarker){
             _annotation.setBegin(this.newMarkerCurrentTime);
             _annotation.setEnd(this.newMarkerCurrentTime);
         }
-        _annotation.setAnnotationType(_annotationType.id); /* Id du type d'annotation */
+        _annotation.setAnnotationType(_annotationType.id); /* AnnotationType ID */
         if (this.project_id != ""){
-            /* Champ id projet, seulement si on l'a renseigné dans la config */
+            /* Project id, only if it's been specifiec in the config */
             _annotation.project_id = this.project_id;
         }
-        _annotation.created = new Date(); /* Date de création de l'annotation */
-        _annotation.description = this.$.find(".Ldt-Markers-MarkerTextArea").val(); /* Champ description */
+        _annotation.created = new Date(); /* Creation date */
+        _annotation.description = this.$.find(".Ldt-Markers-MarkerTextArea").val(); /* Description field */
         _annotation.creator = this.creator_name;
     }
     _annotation.project_id = this.project_id;
     
-    /*
-     * Nous remplissons les données de l'annotation générée à la volée
-     * ATTENTION: Si nous sommes sur un MASHUP, ces éléments doivent se référer AU MEDIA D'ORIGINE
-     * */
+    _exportedAnnotations.push(_annotation); /* We add the annotation in the list to export */
+    _export.addList("annotation",_exportedAnnotations); /* We add the list to the source object */ 
     
-    _exportedAnnotations.push(_annotation); /* Ajout de l'annotation à la liste à exporter */
-    _export.addList("annotation",_exportedAnnotations); /* Ajout de la liste à exporter à l'objet Source */
-    
-    /* Envoi de l'annotation via AJAX au serveur ! */
+    /* We send the AJAX request to the server ! */
     IriSP.jQuery.ajax({
         url: _url,
         type: this.selectedMarker ? this.api_method_edit : this.api_method_create,
         contentType: 'application/json',
-        data: _export.serialize(), /* L'objet Source est sérialisé */
+        data: _export.serialize(),
         success: function(_data) {
-            _this.showScreen('Success'); /* Si l'appel a fonctionné, on affiche l'écran "Annotation enregistrée" */
+            _this.showScreen('Success');
             window.setTimeout(_this.functionWrapper("revertToMainScreen"),(_this.after_send_timeout || 5000));
-            _export.getAnnotations().removeElement(_annotation, true); /* Pour éviter les doublons, on supprime l'annotation qui a été envoyée */
-            _export.deSerialize(_data); /* On désérialise les données reçues pour les réinjecter */
+            _export.getAnnotations().removeElement(_annotation, true); /* We delete the sent annotation to avoid redundancy */
+            _export.deSerialize(_data); /* Data deserialization */
             _annotation.id = _data.id;
-            _this.source.merge(_export); /* On récupère les données réimportées dans l'espace global des données */
+            _this.source.merge(_export); /* We merge the deserialized data with the current source data */
             if (_this.pause_on_write && _this.media.getPaused() && _this.play_on_submit) {
                 _this.media.play();
             }
             _this.markers.push(_annotation);
             _this.selectedMarker = _annotation;
             _this.drawMarkers();
-            _this.player.trigger("AnnotationsList.refresh"); /* On force le rafraîchissement du widget AnnotationsList */
+            _this.player.trigger("AnnotationsList.refresh");
             _this.player.trigger("Markers.refresh");
         },
         error: function(_xhr, _error, _thrown) {
@@ -541,14 +534,14 @@
         type: this.api_method_delete,
         contentType: 'application/json',
         success: function(_data) {
-            _this.showScreen('DeleteSuccess'); /* Si l'appel a fonctionné, on affiche l'écran "Annotation enregistrée" */
+            _this.showScreen('DeleteSuccess');
             window.setTimeout(_this.functionWrapper("revertToMainScreen"),(_this.after_send_timeout || 5000));
             if (_this.pause_on_write && _this.media.getPaused() && _this.play_on_submit) {
                 _this.media.play();
             }
             _this.markers.removeElement(_this.selectedMarker);
             _this.selectedMarker = false
-            _this.player.trigger("AnnotationsList.refresh"); /* On force le rafraîchissement du widget AnnotationsList */
+            _this.player.trigger("AnnotationsList.refresh");
             _this.player.trigger("Markers.refresh");
         },
         error: function(_xhr, _error, _thrown) {