src/js/serializers/ldt_annotate.js
author durandn
Fri, 03 Jul 2015 16:48:41 +0200
changeset 1035 c1bc8a2b1468
parent 1013 392ddcd212d7
child 1045 b06345320ffb
permissions -rw-r--r--
Allow the annotation serializer to extract project_id for use in some widget when it is provided in the data
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
998
9521347ede1d Refactoring
veltr
parents: 979
diff changeset
     1
/* ldt_annotate serializer: Used when Putting annotations on the platform */
904
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
     2
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
     3
if (typeof IriSP.serializers === "undefined") {
998
9521347ede1d Refactoring
veltr
parents: 979
diff changeset
     4
    IriSP.serializers = {};
904
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
     5
}
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
     6
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
     7
IriSP.serializers.ldt_annotate = {
974
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
     8
    serializeAnnotation : function(_data, _source) {
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
     9
        var _annType = _data.getAnnotationType();
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    10
        return {
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    11
            begin: _data.begin.milliseconds,
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    12
            end: _data.end.milliseconds,
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    13
            content: {
975
35aadec4131b Adapted Metadataplayer to send title and description
veltr
parents: 974
diff changeset
    14
                description: _data.description,
35aadec4131b Adapted Metadataplayer to send title and description
veltr
parents: 974
diff changeset
    15
                title: _data.title,
974
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    16
                audio: _data.audio
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    17
            },
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    18
            tags: _data.getTagTexts(),
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    19
            media: _data.getMedia().id,
1035
c1bc8a2b1468 Allow the annotation serializer to extract project_id for use in some widget when it is provided in the data
durandn
parents: 1013
diff changeset
    20
            project: _data.project_id,
974
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    21
            type_title: _annType.title,
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    22
            type: ( typeof _annType.dont_send_id !== "undefined" && _annType.dont_send_id ? "" : _annType.id ),
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    23
            meta: {
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    24
                created: _data.created,
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    25
                creator: _data.creator
904
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
    26
            }
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 998
diff changeset
    27
        };
904
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
    28
    },
979
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    29
    deserializeAnnotation : function(_anndata, _source) {
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    30
        var _ann = new IriSP.Model.Annotation(_anndata.id, _source);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    31
        _ann.description = _anndata.content.description || "";
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    32
        _ann.title = _anndata.content.title || "";
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    33
        _ann.creator = _anndata.meta.creator || "";
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    34
        _ann.created = new Date(_anndata.meta.created);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    35
        _ann.setMedia(_anndata.media, _source);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    36
        var _anntype = _source.getElement(_anndata.type);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    37
        if (!_anntype) {
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    38
            _anntype = new IriSP.Model.AnnotationType(_anndata.type, _source);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    39
            _anntype.title = _anndata.type_title;
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    40
            _source.getAnnotationTypes().push(_anntype);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    41
        }
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    42
        _ann.setAnnotationType(_anntype.id);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    43
        var _tagIds = IriSP._(_anndata.tags).map(function(_title) {
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    44
            var _tags = _source.getTags(true).searchByTitle(_title, true);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    45
            if (_tags.length) {
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    46
                var _tag = _tags[0];
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    47
            }
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    48
            else {
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    49
                _tag = new IriSP.Model.Tag(_title.replace(/\W/g,'_'),_source);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    50
                _tag.title = _title;
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    51
                _source.getTags().push(_tag);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    52
            }
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    53
            return _tag.id;
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    54
        });
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    55
        _ann.setTags(_tagIds);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    56
        _ann.setBegin(_anndata.begin);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    57
        _ann.setEnd(_anndata.end);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    58
        if (typeof _anndata.content.audio !== "undefined" && _anndata.content.audio.href) {
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    59
            _ann.audio = _anndata.content.audio;
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    60
        }
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    61
        _source.getAnnotations().push(_ann);
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    62
    },
904
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
    63
    serialize : function(_source) {
979
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    64
        return JSON.stringify(this.serializeAnnotation(_source.getAnnotations()[0], _source));
908
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    65
    },
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    66
    deSerialize : function(_data, _source) {
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    67
        if (typeof _data == "string") {
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    68
            _data = JSON.parse(_data);
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    69
        }
974
560afb14296d Annotations now fit the new rest api
veltr
parents: 924
diff changeset
    70
        
908
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    71
        _source.addList('tag', new IriSP.Model.List(_source.directory));
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    72
        _source.addList('annotationType', new IriSP.Model.List(_source.directory));
f56199193fad CreateAnnotation widget now posts annotations, Tagcloud can be made segment-dependent
veltr
parents: 904
diff changeset
    73
        _source.addList('annotation', new IriSP.Model.List(_source.directory));
979
ff62016e051d Adapted to REST API Changes
veltr
parents: 975
diff changeset
    74
        this.deserializeAnnotation(_data, _source);
904
510ebab76fa3 Work on CreateAnnotation Widget
veltr
parents:
diff changeset
    75
    }
998
9521347ede1d Refactoring
veltr
parents: 979
diff changeset
    76
};
9521347ede1d Refactoring
veltr
parents: 979
diff changeset
    77
9521347ede1d Refactoring
veltr
parents: 979
diff changeset
    78
/* End ldt_annotate serializer */