Annotations now fit the new rest api platform-restapi
authorveltr
Fri, 26 Oct 2012 15:51:05 +0200
branchplatform-restapi
changeset 974 560afb14296d
parent 973 638fe8541a2e
child 975 35aadec4131b
Annotations now fit the new rest api
src/js/serializers/ldt_annotate.js
src/widgets/CreateAnnotation.js
--- a/src/js/serializers/ldt_annotate.js	Fri Oct 26 15:49:29 2012 +0200
+++ b/src/js/serializers/ldt_annotate.js	Fri Oct 26 15:51:05 2012 +0200
@@ -5,67 +5,58 @@
 }
 
 IriSP.serializers.ldt_annotate = {
-    types :  {
-        annotation : {
-            serialized_name : "annotations",
-            serializer : function(_data, _source) {
-                var _annType = _data.getAnnotationType();
-                return {
-                    begin: _data.begin.milliseconds,
-                    end: _data.end.milliseconds,
-                    content: {
-                        data: _data.description,
-                        audio: _data.audio
-                    },
-                    tags: _data.getTagTexts(),
-                    media: _data.getMedia().id,
-                    type_title: _annType.title,
-                    type: ( typeof _annType.dont_send_id !== "undefined" && _annType.dont_send_id ? "" : _annType.id )
-                }
+    serializeAnnotation : function(_data, _source) {
+        var _annType = _data.getAnnotationType();
+        return {
+            begin: _data.begin.milliseconds,
+            end: _data.end.milliseconds,
+            content: {
+                data: _data.description,
+                audio: _data.audio
+            },
+            tags: _data.getTagTexts(),
+            media: _data.getMedia().id,
+            type_title: _annType.title,
+            type: ( typeof _annType.dont_send_id !== "undefined" && _annType.dont_send_id ? "" : _annType.id ),
+            meta: {
+                created: _data.created,
+                creator: _data.creator
             }
         }
     },
     serialize : function(_source) {
-        var _res = {},
-            _this = this;
-        _source.forEach(function(_list, _typename) {
-            if (typeof _this.types[_typename] !== "undefined") {
-                _res[_this.types[_typename].serialized_name] = _list.map(function(_el) {
-                    return _this.types[_typename].serializer(_el, _source);
-                });
-            }
-        });
-        _res.meta = {
-            creator: _source.creator,
-            created: _source.created
-        }
+        var _this = this
+            _res = {
+                "objects": _source.getAnnotations().map(function(_annotation) {
+                    return _this.serializeAnnotation(_annotation, _source);
+                })
+            };
         return JSON.stringify(_res);
     },
     deSerialize : function(_data, _source) {
         if (typeof _data == "string") {
             _data = JSON.parse(_data);
         }
+        
         _source.addList('tag', new IriSP.Model.List(_source.directory));
         _source.addList('annotationType', new IriSP.Model.List(_source.directory));
         _source.addList('annotation', new IriSP.Model.List(_source.directory));
-        if (typeof _data.annotations == "object" && _data.annotations && _data.annotations.length) {
-            var _anndata = _data.annotations[0],
-                _ann = new IriSP.Model.Annotation(_anndata.id, _source);
+        IriSP._(_data.objects).each(function(_anndata) {
+            var _ann = new IriSP.Model.Annotation(_anndata.id, _source);
             _ann.description = _anndata.content.data || "";
-            _ann.title = _data.creator || "";
-            _ann.created = new Date(_data.meta.created);
+            _ann.title = "";
+            _ann.creator = _anndata.meta.creator || "";
+            _ann.created = new Date(_anndata.meta.created);
             _ann.setMedia(_anndata.media, _source);
-            var _anntypes = _source.getAnnotationTypes(true).searchByTitle(_anndata.type_title);
-            if (_anntypes.length) {
-                var _anntype = _anntypes[0];
-            } else {
-                var _anntype = new IriSP.Model.AnnotationType(_anndata.type, _source);
+            var _anntype = _source.getElement(_anndata.type);
+            if (!_anntype) {
+                _anntype = new IriSP.Model.AnnotationType(_anndata.type, _source);
                 _anntype.title = _anndata.type_title;
                 _source.getAnnotationTypes().push(_anntype);
             }
             _ann.setAnnotationType(_anntype.id);
             var _tagIds = IriSP._(_anndata.tags).map(function(_title) {
-                var _tags = _source.getTags(true).searchByTitle(_title);
+                var _tags = _source.getTags(true).searchByTitle(_title, true);
                 if (_tags.length) {
                     var _tag = _tags[0];
                 }
@@ -79,11 +70,10 @@
             _ann.setTags(_tagIds);
             _ann.setBegin(_anndata.begin);
             _ann.setEnd(_anndata.end);
-            _ann.creator = _data.meta.creator;
             if (typeof _anndata.content.audio !== "undefined" && _anndata.content.audio.href) {
                 _ann.audio = _anndata.content.audio;
             }
             _source.getAnnotations().push(_ann);
-        }
+        });
     }
 }
\ No newline at end of file
--- a/src/widgets/CreateAnnotation.js	Fri Oct 26 15:49:29 2012 +0200
+++ b/src/widgets/CreateAnnotation.js	Fri Oct 26 15:51:05 2012 +0200
@@ -392,7 +392,6 @@
     _annotation.description = this.$.find(".Ldt-CreateAnnotation-Description").val(); /* Champ description */
     _annotation.setTags(this.$.find(".Ldt-CreateAnnotation-TagLi.selected")
         .map(function() { return IriSP.jQuery(this).attr("tag-id")})); /*Liste des ids de tags */
-    
     if (this.audio_url) {
         _annotation.audio = {
             src: "mic",
@@ -400,14 +399,11 @@
             href: this.audio_url
         };
     }
-    
-    /* Les données créateur/date de création sont envoyées non pas dans l'annotation, mais dans le projet */
     if (this.show_creator_field) {
-        _export.creator = this.$.find(".Ldt-CreateAnnotation-Creator").val();
+        _annotation.creator = this.$.find(".Ldt-CreateAnnotation-Creator").val();
     } else {
-        _export.creator = this.creator_name;
+        _annotation.creator = this.creator_name;
     }
-    _export.created = new Date();
     _exportedAnnotations.push(_annotation); /* Ajout de l'annotation à la liste à exporter */
     _export.addList("annotation",_exportedAnnotations); /* Ajout de la liste à exporter à l'objet Source */