src/js/widgets/annotationsListWidget.js
author veltr
Tue, 20 Mar 2012 21:17:48 +0100
branchpopcorn-port
changeset 835 a8af9da7c622
parent 833 33a5d5882be4
child 836 526f91f5253e
permissions -rw-r--r--
Integrated trace manager
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
     1
IriSP.AnnotationsListWidget = function(Popcorn, config, Serializer) {
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
     2
  IriSP.Widget.call(this, Popcorn, config, Serializer);
605
e1a6f73038b4 made the listWidget redraw at every timeupdate event (added a small optimization though,
hamidouk
parents: 603
diff changeset
     3
  this.__counter = 0;
e1a6f73038b4 made the listWidget redraw at every timeupdate event (added a small optimization though,
hamidouk
parents: 603
diff changeset
     4
  this.__oldList = [];
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
     5
 
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
     6
  this.checkOption('ajax_mode');
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
     7
  this.checkOption('project_url');
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
     8
  this.checkOption('default_thumbnail');
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
     9
  this.checkOption("cinecast_version", false);
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    10
  var _this = this;
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    11
};
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    12
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    13
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    14
IriSP.AnnotationsListWidget.prototype = new IriSP.Widget();
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    15
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    16
IriSP.AnnotationsListWidget.prototype.clear = function() {
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    17
};
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    18
588
78cf49152d4a got a decent-looking list.
hamidouk
parents: 585
diff changeset
    19
IriSP.AnnotationsListWidget.prototype.clearWidget = function() {
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    20
};
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    21
629
b13bcfd2f9b1 DRYied the code.
hamidouk
parents: 621
diff changeset
    22
/** effectively redraw the widget - called by drawList */
b13bcfd2f9b1 DRYied the code.
hamidouk
parents: 621
diff changeset
    23
IriSP.AnnotationsListWidget.prototype.do_redraw = function(list) {
b13bcfd2f9b1 DRYied the code.
hamidouk
parents: 621
diff changeset
    24
    var widgetMarkup = IriSP.templToHTML(IriSP.annotationsListWidget_template, {annotations: list});
b13bcfd2f9b1 DRYied the code.
hamidouk
parents: 621
diff changeset
    25
    this.selector.html(widgetMarkup);
b13bcfd2f9b1 DRYied the code.
hamidouk
parents: 621
diff changeset
    26
};
b13bcfd2f9b1 DRYied the code.
hamidouk
parents: 621
diff changeset
    27
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    28
IriSP.AnnotationsListWidget.prototype.transformAnnotation = function(a) {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    29
    var _this = this
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    30
    return {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    31
        "id" : a.id,
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    32
        "title": this.cinecast_version ? IriSP.get_aliased(a.meta, ['creator_name', 'creator']) : a.content.title,
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    33
        "desc" : this.cinecast_version ? a.content.data : a.content.description,
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    34
        "begin": IriSP.msToTime(a.begin),
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    35
        "end" : IriSP.msToTime(a.end),
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    36
        "thumbnail" : (typeof a.meta == "object" && typeof a.meta.thumbnail == "string") ? a.meta.thumbnail : this.default_thumbnail,
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    37
        "url" : (typeof a.meta == "object" && typeof a.meta.url == "string") ? a.meta.url : null,
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    38
        "tags": typeof a.tags == "object"
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    39
            ? IriSP.underscore(a.tags)
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    40
                .chain()
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    41
                .map(function(_t) {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    42
                    if (typeof _t == "string") {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    43
                        return _t.replace(/^.*:/,'#');
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    44
                    } else {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    45
                        if (typeof _t['id-ref'] != "undefined") {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    46
                            var _f = IriSP.underscore.find(_this._serializer._data.tags, function(_tag) {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    47
                                return _tag['id-ref'] == _t.id;
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    48
                            });
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    49
                            if (typeof _f != "undefined") {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    50
                                return IriSP.get_aliased(_f.meta, ['dc:title', 'title']);
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    51
                            }
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    52
                        }
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    53
                    }
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    54
                    return null;
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    55
                })
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    56
                .filter(function(_t) {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    57
                    return _t !== null && _t !== ""
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    58
                })
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    59
                .value()
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    60
            : []
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    61
    }    
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    62
}
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    63
599
a5a5e70d46a7 added support for widget redrawing.
hamidouk
parents: 595
diff changeset
    64
/** draw the annotation list */
607
0b94ae49efbd added an option to force the redraw of a list, even if the cached lists are the
hamidouk
parents: 605
diff changeset
    65
IriSP.AnnotationsListWidget.prototype.drawList = function(force_redraw) {
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    66
  var _this = this;
674
835f5f454595 WIP - working on ajax autoupdate of the widget.
hamidouk
parents: 642
diff changeset
    67
  
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    68
//  var view_type = this._serializer.getContributions();
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    69
  var annotations = this._serializer._data.annotations;
602
b35862f9b0b0 WIP - working on the autoupdate of the widget.
hamidouk
parents: 599
diff changeset
    70
  var currentTime = this._Popcorn.currentTime();
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    71
  var list = [];
588
78cf49152d4a got a decent-looking list.
hamidouk
parents: 585
diff changeset
    72
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    73
/*  if (typeof(view_type) === "undefined") {    
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    74
    return;
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    75
} */
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    76
  for (i = 0; i < annotations.length; i++) {
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    77
    var obj = this.transformAnnotation(annotations[i]);
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    78
    obj.iterator = i;
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    79
    obj.distance = Math.abs((annotations[i].end + annotations[i].begin) / 2000 - currentTime);
835
a8af9da7c622 Integrated trace manager
veltr
parents: 833
diff changeset
    80
    if (!this.cinecast_version || annotations[i].type == "cinecast:UserAnnotation") {
a8af9da7c622 Integrated trace manager
veltr
parents: 833
diff changeset
    81
        list.push(obj);
a8af9da7c622 Integrated trace manager
veltr
parents: 833
diff changeset
    82
    }
a8af9da7c622 Integrated trace manager
veltr
parents: 833
diff changeset
    83
    
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
    84
  }
607
0b94ae49efbd added an option to force the redraw of a list, even if the cached lists are the
hamidouk
parents: 605
diff changeset
    85
  
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    86
  list = IriSP.underscore(list)
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    87
    .chain()
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    88
    .sortBy(function(_o) {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    89
        return _o.distance;
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    90
    })
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    91
    .first(10)
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    92
    .sortBy(function(_o) {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    93
        return _o.iterator;
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    94
    })
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    95
    .value();
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
    96
  
605
e1a6f73038b4 made the listWidget redraw at every timeupdate event (added a small optimization though,
hamidouk
parents: 603
diff changeset
    97
  var idList = IriSP.underscore.pluck(list, "id").sort();
642
37693f217f8c redraw the list when a new annotation is added.
hamidouk
parents: 629
diff changeset
    98
605
e1a6f73038b4 made the listWidget redraw at every timeupdate event (added a small optimization though,
hamidouk
parents: 603
diff changeset
    99
  
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   100
  if (!IriSP.underscore.isEqual(this.__oldList, idList) || typeof(force_redraw) !== "undefined") {
629
b13bcfd2f9b1 DRYied the code.
hamidouk
parents: 621
diff changeset
   101
    this.do_redraw(list);
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   102
    this.__oldList = idList;
607
0b94ae49efbd added an option to force the redraw of a list, even if the cached lists are the
hamidouk
parents: 605
diff changeset
   103
  }
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   104
   /* save for next call */
605
e1a6f73038b4 made the listWidget redraw at every timeupdate event (added a small optimization though,
hamidouk
parents: 603
diff changeset
   105
  
e1a6f73038b4 made the listWidget redraw at every timeupdate event (added a small optimization though,
hamidouk
parents: 603
diff changeset
   106
  
599
a5a5e70d46a7 added support for widget redrawing.
hamidouk
parents: 595
diff changeset
   107
};
a5a5e70d46a7 added support for widget redrawing.
hamidouk
parents: 595
diff changeset
   108
674
835f5f454595 WIP - working on ajax autoupdate of the widget.
hamidouk
parents: 642
diff changeset
   109
IriSP.AnnotationsListWidget.prototype.ajaxRedraw = function(timecode) {
748
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   110
752
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   111
  /* the seeked signal sometimes passes an argument - depending on if we're using
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   112
     our popcorn lookalike or the real thing - if it's the case, use it as it's
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   113
     more precise than currentTime which sometimes contains the place we where at */
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   114
  if (IriSP.null_or_undefined(timecode) || typeof(timecode) != "number") {
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   115
     var tcode = this._Popcorn.currentTime();     
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   116
   } else {
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   117
     var tcode = timecode;     
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   118
  }
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   119
   
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   120
  
748
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   121
  /* the platform gives us a special url - of the type : http://path/{media}/{begin}/{end}
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   122
     we double the braces using regexps and we feed it to mustache to build the correct url
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   123
     we have to do that because the platform only knows at run time what view it's displaying.
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   124
  */
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   125
     
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   126
  var platf_url = IriSP.widgetsDefaults["AnnotationsListWidget"].ajax_url
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   127
                                      .replace(/\{/g, '{{').replace(/\}/g, '}}');
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   128
  var media_id = this._serializer.currentMedia()["id"];
820
7968346b9689 Added compatibility with cinecast format (with get_aliased)
veltr
parents: 784
diff changeset
   129
  var duration = this._serializer.getDuration();
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   130
  
752
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   131
  var begin_timecode = (Math.floor(tcode) - 300) * 1000;
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   132
  if (begin_timecode < 0)
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   133
    begin_timecode = 0;
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   134
    
752
ebc72cbc35f4 same thing, for the annotationsListWidget
hamidouk
parents: 748
diff changeset
   135
  var end_timecode = (Math.floor(tcode) + 300) * 1000;
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   136
  if (end_timecode > duration)
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   137
    end_timecode = duration;
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   138
  
748
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   139
  var templ = Mustache.to_html(platf_url, {media: media_id, begin: begin_timecode,
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   140
                                 end: end_timecode});
ec1f7aa873f4 parse the url received by the platform.
hamidouk
parents: 745
diff changeset
   141
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   142
  /* we create on the fly a serializer to get the ajax */
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   143
  var serializer = new IriSP.JSONSerializer(IriSP.__dataloader, templ);
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   144
  serializer.sync(IriSP.wrap(this, function(json) { this.processJson(json, serializer) }));
674
835f5f454595 WIP - working on ajax autoupdate of the widget.
hamidouk
parents: 642
diff changeset
   145
};
835f5f454595 WIP - working on ajax autoupdate of the widget.
hamidouk
parents: 642
diff changeset
   146
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   147
/** process the received json - it's a bit hackish */
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   148
IriSP.AnnotationsListWidget.prototype.processJson = function(json, serializer) {
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   149
  /* FIXME: DRY the whole thing */
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   150
  var annotations = serializer._data.annotations;
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   151
  if (IriSP.null_or_undefined(annotations))
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   152
    return;
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   153
  
784
2ce658b19b96 commented unused line.
hamidouk
parents: 753
diff changeset
   154
  /*
2ce658b19b96 commented unused line.
hamidouk
parents: 753
diff changeset
   155
  commented in case we wanted to discriminate against some annotation types.
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   156
  var view_types = serializer.getIds("Contributions");
784
2ce658b19b96 commented unused line.
hamidouk
parents: 753
diff changeset
   157
  */
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   158
  var l = [];
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   159
  
714
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   160
  var media = this._serializer.currentMedia()["id"];
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   161
  
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   162
  for (i = 0; i < annotations.length; i++) {
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   163
    var obj = this.transformAnnotation(annotations[i])
714
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   164
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   165
      /* only if the annotation isn't present in the document create an
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   166
         external link */
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   167
      if (!this.annotations_ids.indexOf(obj["id"]) != -1) {
714
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   168
        // braindead url; jacques didn't want to create a new one in the platform,
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   169
        // so we append the cutting id to the url.
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   170
        obj["url"] = this.project_url + "/" + media + "/" + 
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   171
                     annotation.meta["project"] + "/" +
745
a996a24e07d6 fixed url generation bug.
hamidouk
parents: 730
diff changeset
   172
                     annotation.meta["id-ref"];
714
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   173
        
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   174
        // obj["url"] = document.location.href.split("#")[0] + "/" + annotation.meta["project"];
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   175
      }
716
16d61d539cbf fixed stupid bug.
hamidouk
parents: 714
diff changeset
   176
      
16d61d539cbf fixed stupid bug.
hamidouk
parents: 714
diff changeset
   177
      l.push(obj);
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   178
  }
703
9341d858bf8e removed useless printfs.
hamidouk
parents: 698
diff changeset
   179
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   180
  this.do_redraw(l);
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   181
};
599
a5a5e70d46a7 added support for widget redrawing.
hamidouk
parents: 595
diff changeset
   182
IriSP.AnnotationsListWidget.prototype.draw = function() {
714
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   183
  
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   184
  /* build a table of the annotations present in the document for faster 
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   185
     lookup
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   186
  */
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   187
  this.annotations_ids = [];
714
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   188
  
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   189
  var annotations = this._serializer._data.annotations;
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   190
  var i = 0;
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   191
  for(i = 0; i < annotations.length; i++) {
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   192
    this.annotations_ids.push(annotations[i]["id"]);
714
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   193
  }
9056928c46de WIP - making links to only annotations which are not present in the opened
hamidouk
parents: 703
diff changeset
   194
  
599
a5a5e70d46a7 added support for widget redrawing.
hamidouk
parents: 595
diff changeset
   195
  this.drawList();
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   196
  
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   197
  var _this = this;
674
835f5f454595 WIP - working on ajax autoupdate of the widget.
hamidouk
parents: 642
diff changeset
   198
    
833
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   199
  if (!this.ajax_mode) {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   200
      var _throttled = IriSP.underscore.throttle(function() {
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   201
      _this.drawList();
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   202
    }, 1500);
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   203
    this._Popcorn.listen("IriSP.createAnnotationWidget.addedAnnotation", _throttled);
33a5d5882be4 Last commit before weekend
veltr
parents: 820
diff changeset
   204
    this._Popcorn.listen("timeupdate", _throttled);
674
835f5f454595 WIP - working on ajax autoupdate of the widget.
hamidouk
parents: 642
diff changeset
   205
  } else {
729
7ba63d0315ad load the widget when the video has finished loading.
hamidouk
parents: 716
diff changeset
   206
    /* update the widget when the video has finished loading and when it's seeked and paused */
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   207
    this._Popcorn.listen("seeked", IriSP.wrap(this, this.ajaxRedraw));
729
7ba63d0315ad load the widget when the video has finished loading.
hamidouk
parents: 716
diff changeset
   208
    this._Popcorn.listen("loadedmetadata", IriSP.wrap(this, this.ajaxRedraw));
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   209
    this._Popcorn.listen("paused", IriSP.wrap(this, this.ajaxRedraw));
730
357fc047503b redraw the widget after that an annotation has been added.
hamidouk
parents: 729
diff changeset
   210
    
357fc047503b redraw the widget after that an annotation has been added.
hamidouk
parents: 729
diff changeset
   211
    this._Popcorn.listen("IriSP.createAnnotationWidget.addedAnnotation", IriSP.wrap(this, this.ajaxRedraw));
674
835f5f454595 WIP - working on ajax autoupdate of the widget.
hamidouk
parents: 642
diff changeset
   212
  }
698
329333e07267 lot of work on the ajax update front.
hamidouk
parents: 674
diff changeset
   213
585
44a4a4a179c1 first version of the AnnotationListWidget.
hamidouk
parents:
diff changeset
   214
};