src/js/serializers/ldt.js
changeset 1002 a86208b60c91
parent 998 9521347ede1d
child 1005 768bd0691ed1
equal deleted inserted replaced
1001:3210bf928a11 1002:a86208b60c91
    56                         "dc:creator" : _data.creator || _source.creator,
    56                         "dc:creator" : _data.creator || _source.creator,
    57                         "dc:contributor" : _data.contributor || _source.contributor || _data.creator || _source.creator,
    57                         "dc:contributor" : _data.contributor || _source.contributor || _data.creator || _source.creator,
    58                         "id-ref": _data.id
    58                         "id-ref": _data.id
    59                     },
    59                     },
    60                     items: _source.getAnnotationTypes().filter(function(_at) {
    60                     items: _source.getAnnotationTypes().filter(function(_at) {
    61                         return _at.media === _data;
    61                         switch (typeof _at.media) {
       
    62                             case "object":
       
    63                                 return (_at.media === _data);
       
    64                             case "string":
       
    65                                 return (_at.media === _data.id);
       
    66                             default:
       
    67                                 var _ann = _at.getAnnotations();
       
    68                                 if (_ann) {
       
    69                                     for (var i = 0; i < _ann.length; i++) {
       
    70                                         if (_ann[i].getMedia() === _data) {
       
    71                                             return true;
       
    72                                         }
       
    73                                     }
       
    74                                 }
       
    75                         }
       
    76                         return false;
    62                     }).map(function(_at) {
    77                     }).map(function(_at) {
    63                         return {
    78                         return {
    64                             "id-ref": _at.id
    79                             "id-ref": _at.id
    65                         }
    80                         }
    66                     })
    81                     })
    76                 var _res = new IriSP.Model.Tag(_data.id, _source);
    91                 var _res = new IriSP.Model.Tag(_data.id, _source);
    77                 _res.title = _data.meta["dc:title"];
    92                 _res.title = _data.meta["dc:title"];
    78                 return _res;        
    93                 return _res;        
    79             },
    94             },
    80             serializer : function(_data, _source, _dest) {
    95             serializer : function(_data, _source, _dest) {
       
    96                 if (_source.regenerateTags && !_data.regenerated) {
       
    97                     return;
       
    98                 }
    81                 var _res = {
    99                 var _res = {
    82                     id : _data.id,
   100                     id : _data.id,
    83                     meta : {
   101                     meta : {
    84                         "dc:title": _data.title || "",
   102                         "dc:title": _data.title || "",
    85                         "dc:description": _data.description || "",
   103                         "dc:description": _data.description || "",
   129                     while (_c.length < 6) {
   147                     while (_c.length < 6) {
   130                         _c = '0' + _c;
   148                         _c = '0' + _c;
   131                     }
   149                     }
   132                     _res.color = '#' + _c;
   150                     _res.color = '#' + _c;
   133                 }
   151                 }
       
   152                 _res.content = _data.content;
   134                 _res.setMedia(_data.media);
   153                 _res.setMedia(_data.media);
   135                 _res.setAnnotationType(_data.meta["id-ref"]);
   154                 _res.setAnnotationType(_data.meta["id-ref"]);
   136                 _res.setTags(IriSP._(_data.tags).pluck("id-ref"));
   155                 _res.setTags(IriSP._(_data.tags).pluck("id-ref"));
   137                 _res.keywords = _res.getTagTexts();
   156                 _res.keywords = _res.getTagTexts();
   138                 _res.setBegin(_data.begin);
   157                 _res.setBegin(_data.begin);
   151                 var _color = parseInt(_data.color.replace(/^#/,''),16).toString();
   170                 var _color = parseInt(_data.color.replace(/^#/,''),16).toString();
   152                 var _res = {
   171                 var _res = {
   153                     id : _data.id,
   172                     id : _data.id,
   154                     begin : _data.begin.milliseconds,
   173                     begin : _data.begin.milliseconds,
   155                     end : _data.end.milliseconds,
   174                     end : _data.end.milliseconds,
   156                     content : {
   175                     content : IriSP._.defaults(
   157                         title : _data.title || "",
   176                         {},
   158                         description : _data.description || "",
   177                         {
       
   178                             title : _data.title,
       
   179                             description : _data.description,
   159                         audio : _data.audio,
   180                         audio : _data.audio,
   160                         img: {
   181                         img: {
   161                             src: _data.thumbnail
   182                             src: _data.thumbnail
   162                         }
   183                         }
   163                     },
   184                     },
       
   185                         _data.content,
       
   186                         {
       
   187                             title: "",
       
   188                             description: ""
       
   189                         }
       
   190                     ),
   164                     color: _color,
   191                     color: _color,
   165                     media : _data.media.id,
   192                     media : _data.media.id,
   166                     meta : {
   193                     meta : {
   167                         "id-ref" : _data.getAnnotationType().id,
   194                         "id-ref" : _data.getAnnotationType().id,
   168                         "dc:created" : IriSP.Model.dateToIso(_data.created || _source.created),
   195                         "dc:created" : IriSP.Model.dateToIso(_data.created || _source.created),
   169                         "dc:modified" : IriSP.Model.dateToIso(_data.modified || _source.modified),
   196                         "dc:modified" : IriSP.Model.dateToIso(_data.modified || _source.modified),
   170                         "dc:creator" : _data.creator || _source.creator,
   197                         "dc:creator" : _data.creator || _source.creator,
   171                         "dc:contributor" : _data.contributor || _source.contributor || _data.creator || _source.creator,
   198                         "dc:contributor" : _data.contributor || _source.contributor || _data.creator || _source.creator,
   172 //                        project : _source.projectId
   199 //                        project : _source.projectId
   173                     },
   200                     }
   174                     tags : IriSP._(_data.tag.id).map(function(_id) {
   201                 }
       
   202                 if (_source.regenerateTags) {
       
   203                     _res.tags = IriSP._(_data.keywords).map(function(_kw) {
       
   204                         return {
       
   205                             "id-ref": _source.__keywords[_kw.toLowerCase()].id
       
   206                         } 
       
   207                     });
       
   208                 } else {
       
   209                     _res.tags = IriSP._(_data.tag.id).map(function(_id) {
   175                        return {
   210                        return {
   176                            "id-ref" : _id
   211                            "id-ref" : _id
   177                        } 
   212                        } 
   178                     })
   213                     });
   179                 }
   214                 }
       
   215                 _res.content.title = _data.title || _res.content.title || "";
   180                 _dest.annotations.push(_res);
   216                 _dest.annotations.push(_res);
   181             }
   217             }
   182         },
   218         },
   183         mashup : {
   219         mashup : {
   184             serialized_name : "lists",
   220             serialized_name : "lists",
   236                 medias: [],
   272                 medias: [],
   237                 tags: [],
   273                 tags: [],
   238                 annotations: []
   274                 annotations: []
   239             },
   275             },
   240             _this = this;
   276             _this = this;
       
   277         if (_source.regenerateTags) {
       
   278             _source.__keywords = {};
       
   279             _source.getAnnotations().forEach(function(a) {
       
   280                 IriSP._(a.keywords).each(function(kw) {
       
   281                     var lkw = kw.toLowerCase();
       
   282                     if (typeof _source.__keywords[lkw] === "undefined") {
       
   283                         _source.__keywords[lkw] = {
       
   284                             id: IriSP.Model.getUID(),
       
   285                             title: kw,
       
   286                             regenerated: true
       
   287                         }
       
   288                     }
       
   289                 });
       
   290             });
       
   291             IriSP._(_source.__keywords).each(function(kw) {
       
   292                 _this.types.tag.serializer(kw, _source, _res);
       
   293             })
       
   294         }
   241         _source.forEach(function(_list, _typename) {
   295         _source.forEach(function(_list, _typename) {
   242             if (typeof _this.types[_typename] !== "undefined") {
   296             if (typeof _this.types[_typename] !== "undefined") {
   243                 _list.forEach(function(_el) {
   297                 _list.forEach(function(_el) {
   244                     _this.types[_typename].serializer(_el, _source, _res);
   298                     _this.types[_typename].serializer(_el, _source, _res);
   245                 });
   299                 });
   273             _source.addList(_typename, _list);
   327             _source.addList(_typename, _list);
   274         });
   328         });
   275         
   329         
   276         if (typeof _data.meta !== "undefined") {
   330         if (typeof _data.meta !== "undefined") {
   277             _source.projectId = _data.meta.id;
   331             _source.projectId = _data.meta.id;
       
   332             _source.title = _data.meta["dc:title"] || _data.meta.title || "";
       
   333             _source.description = _data.meta["dc:description"] || _data.meta.description || "";
       
   334             _source.creator = _data.meta["dc:creator"] || _data.meta.creator || "";
       
   335             _source.contributor = _data.meta["dc:contributor"] || _data.meta.contributor || _source.creator;
       
   336             _source.created = IriSP.Model.isoToDate(_data.meta["dc:created"] || _data.meta.created);
   278         }
   337         }
   279         
   338         
   280         if (typeof _data.meta !== "undefined" && typeof _data.meta.main_media !== "undefined" && typeof _data.meta.main_media["id-ref"] !== "undefined") {
   339         if (typeof _data.meta !== "undefined" && typeof _data.meta.main_media !== "undefined" && typeof _data.meta.main_media["id-ref"] !== "undefined") {
   281             _source.currentMedia = _source.getElement(_data.meta.main_media["id-ref"]);
   340             _source.currentMedia = _source.getElement(_data.meta.main_media["id-ref"]);
   282         }
   341         }