player/js/ldt-serializer.js
changeset 15 01ac2cd2756c
parent 5 d7bcf5f39b6c
child 87 017f45c5209f
equal deleted inserted replaced
14:f8a0d5d14372 15:01ac2cd2756c
    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 || "",
   177                         "dc:created" : IriSP.Model.dateToIso(_data.created || _source.created),
   195                         "dc:created" : IriSP.Model.dateToIso(_data.created || _source.created),
   178                         "dc:modified" : IriSP.Model.dateToIso(_data.modified || _source.modified),
   196                         "dc:modified" : IriSP.Model.dateToIso(_data.modified || _source.modified),
   179                         "dc:creator" : _data.creator || _source.creator,
   197                         "dc:creator" : _data.creator || _source.creator,
   180                         "dc:contributor" : _data.contributor || _source.contributor || _data.creator || _source.creator,
   198                         "dc:contributor" : _data.contributor || _source.contributor || _data.creator || _source.creator,
   181 //                        project : _source.projectId
   199 //                        project : _source.projectId
   182                     },
   200                     }
   183                     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) {
   184                        return {
   210                        return {
   185                            "id-ref" : _id
   211                            "id-ref" : _id
   186                        } 
   212                        } 
   187                     })
   213                     });
   188                 }
   214                 }
   189                 _res.content.title = _data.title || _res.content.title || "";
   215                 _res.content.title = _data.title || _res.content.title || "";
   190                 _dest.annotations.push(_res);
   216                 _dest.annotations.push(_res);
   191             }
   217             }
   192         },
   218         },
   246                 medias: [],
   272                 medias: [],
   247                 tags: [],
   273                 tags: [],
   248                 annotations: []
   274                 annotations: []
   249             },
   275             },
   250             _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         }
   251         _source.forEach(function(_list, _typename) {
   295         _source.forEach(function(_list, _typename) {
   252             if (typeof _this.types[_typename] !== "undefined") {
   296             if (typeof _this.types[_typename] !== "undefined") {
   253                 _list.forEach(function(_el) {
   297                 _list.forEach(function(_el) {
   254                     _this.types[_typename].serializer(_el, _source, _res);
   298                     _this.types[_typename].serializer(_el, _source, _res);
   255                 });
   299                 });
   285         
   329         
   286         if (typeof _data.meta !== "undefined") {
   330         if (typeof _data.meta !== "undefined") {
   287             _source.projectId = _data.meta.id;
   331             _source.projectId = _data.meta.id;
   288             _source.title = _data.meta["dc:title"] || _data.meta.title || "";
   332             _source.title = _data.meta["dc:title"] || _data.meta.title || "";
   289             _source.description = _data.meta["dc:description"] || _data.meta.description || "";
   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);
   290         }
   337         }
   291         
   338         
   292         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") {
   293             _source.currentMedia = _source.getElement(_data.meta.main_media["id-ref"]);
   340             _source.currentMedia = _source.getElement(_data.meta.main_media["id-ref"]);
   294         }
   341         }