src/js/serializers/PlatformSerializer.js
author veltr
Wed, 11 Apr 2012 16:39:03 +0200
branchnew-model
changeset 856 41c574c807d1
child 858 ad1ffe0c0955
permissions -rw-r--r--
basic implementation of model: media, annotation type, annotation

if (typeof IriSP.serializers === "undefined") {
    IriSP.serializers = {}
}

IriSP.serializers.platform = {
    deSerialize : function(_data, _container) {
        
        var _types = [
            {
                serialized_name : "medias",
                model_name : "media",
                deserializer : function(_data) {
                    var _res = new IriSP.Model.Media(_data.id, _data);
                    _res.url = _data.href;
                    _res.title = _data.meta["dc:title"];
                    _res.description = _data.meta["dc:description"];
                    _res.setDuration(_data.meta["dc:duration"]);
                    return _res;        
                }
            },
            {
                serialized_name : "annotation-types",
                model_name : "annotationType",
                deserializer : function(_data) {
                    var _res = new IriSP.Model.AnnotationType(_data.id, _data);
                    _res.title = _data["dc:title"];
                    _res.description = _data["dc:description"];
                    return _res;        
                }
            },
            {
                serialized_name : "annotations",
                model_name : "annotation",
                deserializer : function(_data) {
                    var _res = new IriSP.Model.Annotation(_data.id, _data);
                    _res.title = _data.content.title;
                    _res.description = _data.content.description;
                    _res.setMedia(_data.media, _container);
                    _res.setAnnotationType(_data.meta["id-ref"], _container);
                    _res.setBegin(_data.begin);
                    _res.setEnd(_data.end);
                    return _res;
                }
            }
        ];
        
        IriSP._(_types).each(function(_type) {
            if (typeof _data[_type.serialized_name] !== "undefined") {
                var _list = new IriSP.Model.List();
                IriSP._(_data[_type.serialized_name]).each(function(_el) {
                    _list.addElement(_type.deserializer(_el));
                });
                _container.addList(_type.model_name, _list);
            }
        });
        
        if (typeof _data.meta !== "undefined" && typeof _data.meta.main_media !== "undefined" && typeof _data.meta.main_media["id-ref"] !== "undefined") {
            _container.setCurrentMediaById(_data.meta.main_media["id-ref"]);
        }
        _container.setDefaultCurrentMedia();
    }
}