src/js/widgets/annotationsWidget.js
author hamidouk
Mon, 19 Dec 2011 15:25:22 +0100
branchpopcorn-port
changeset 481 a46cfeee6d77
parent 470 19389e221722
child 493 f7333cdf5320
permissions -rw-r--r--
using jquery ui draggable changes the state of an element from absolute to relative positioning, which breaks the way our seek button expands itself, so we need to force absolute positioning, quite uglily, using jquery.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     1
IriSP.AnnotationsWidget = function(Popcorn, config, Serializer) {
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     2
  IriSP.Widget.call(this, Popcorn, config, Serializer);
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     3
  
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     4
};
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     5
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     6
139
ba2b3c15bd47 fixing prototype bug.
hamidouk
parents: 130
diff changeset
     7
IriSP.AnnotationsWidget.prototype = new IriSP.Widget();
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     8
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
     9
IriSP.AnnotationsWidget.prototype.clear = function() {
162
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    10
    this.selector.find(".Ldt-SaTitle").text("");
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    11
    this.selector.find(".Ldt-SaDescription").text("");
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    12
    this.selector.find(".Ldt-SaKeywordText").text("");
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    13
};
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    14
470
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    15
IriSP.AnnotationsWidget.prototype.displayAnnotation = function(annotation) {   
264
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    16
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    17
    var title = annotation.content.title;
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    18
    var description = annotation.content.description;
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    19
    var keywords =  "" // FIXME;
309
49c2b9e63591 added segment duration display to the annotationsWidget
hamidouk
parents: 264
diff changeset
    20
    var begin = +annotation.begin / 1000;
49c2b9e63591 added segment duration display to the annotationsWidget
hamidouk
parents: 264
diff changeset
    21
    var end = +annotation.end / 1000;
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    22
    var duration = +this._serializer.currentMedia().meta["dc:duration"];
470
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    23
    
309
49c2b9e63591 added segment duration display to the annotationsWidget
hamidouk
parents: 264
diff changeset
    24
    var title_templ = "{{title}} - ( {{begin}} - {{end}} )";
49c2b9e63591 added segment duration display to the annotationsWidget
hamidouk
parents: 264
diff changeset
    25
    var endstr = Mustache.to_html(title_templ, {title: title, begin: IriSP.secondsToTime(begin), end: IriSP.secondsToTime(end)});
49c2b9e63591 added segment duration display to the annotationsWidget
hamidouk
parents: 264
diff changeset
    26
49c2b9e63591 added segment duration display to the annotationsWidget
hamidouk
parents: 264
diff changeset
    27
    this.selector.find(".Ldt-SaTitle").text(endstr);
162
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    28
    this.selector.find(".Ldt-SaDescription").text(description);
470
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    29
    
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    30
    // update sharing buttons
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    31
    var defaults = IriSP.widgetsDefaults.AnnotationsWidget;
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    32
    var text = defaults.share_text;
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    33
    var fb_link = defaults.fb_link;
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    34
    var tw_link = defaults.tw_link;
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    35
    var gplus_link = defaults.gplus_link;
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    36
    var url = document.location.href + "#a=" + annotation.id;
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    37
    this.selector.find(".Ldt-fbShare").attr("href", fb_link + IriSP.encodeURI(text) + IriSP.encodeURI(url));
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    38
    this.selector.find(".Ldt-TwShare").attr("href", tw_link + IriSP.encodeURI(text) + IriSP.encodeURI(url));
19389e221722 the annotationWidget "share" buttons now work correctly.
hamidouk
parents: 393
diff changeset
    39
    this.selector.find(".Ldt-GplusShare").attr("href", fb_link + IriSP.encodeURI(text) + IriSP.encodeURI(url));
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    40
};
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    41
125
960ce0b9f9f0 added a function to clear the widget.
hamidouk
parents: 101
diff changeset
    42
IriSP.AnnotationsWidget.prototype.clearWidget = function() {
264
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    43
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    44
    
125
960ce0b9f9f0 added a function to clear the widget.
hamidouk
parents: 101
diff changeset
    45
    /* retract the pane between two annotations */
162
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    46
    this.selector.find(".Ldt-SaTitle").text("");
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    47
    this.selector.find(".Ldt-SaDescription").text("");
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    48
    this.selector.find(".Ldt-SaKeywordText").html("");
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    49
    this.selector.find(".Ldt-ShowAnnotation").slideUp();
130
f25676c72044 added a semicolon.
hamidouk
parents: 125
diff changeset
    50
};
f25676c72044 added a semicolon.
hamidouk
parents: 125
diff changeset
    51
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    52
IriSP.AnnotationsWidget.prototype.draw = function() {
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    53
  var _this = this;
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    54
382
d68de477761b WIP - adding social buttons support.
hamidouk
parents: 312
diff changeset
    55
  var annotationMarkup = IriSP.templToHTML(IriSP.annotationWidget_template);
162
2ef47ccb290f a couple fixes to the annotationsWidget tests.
hamidouk
parents: 146
diff changeset
    56
	this.selector.append(annotationMarkup);
393
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    57
  var view;
139
ba2b3c15bd47 fixing prototype bug.
hamidouk
parents: 130
diff changeset
    58
393
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    59
  if (typeof(this._serializer._data.views) !== "undefined" && this._serializer._data.views !== null)
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    60
     view = this._serializer._data.views[0];
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    61
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    62
  var view_type = "";
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    63
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    64
  if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    65
          view_type = view.annotation_types[0];
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    66
  }
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    67
 
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    68
  var annotations = this._serializer._data.annotations;
146
b99527037c89 fixed global variable declaration bug.
hamidouk
parents: 139
diff changeset
    69
  var i;
b99527037c89 fixed global variable declaration bug.
hamidouk
parents: 139
diff changeset
    70
  
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    71
	for (i in annotations) {    
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    72
    var annotation = annotations[i];
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    73
    var begin = Math.round((+ annotation.begin) / 1000);
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    74
    var end = Math.round((+ annotation.end) / 1000);
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    75
393
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    76
    if (view_type != "" && typeof(annotation.meta) !== "undefined" && typeof(annotation.meta["id-ref"]) !== "undefined"
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    77
          && annotation.meta["id-ref"] != view_type) {
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    78
        continue;
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    79
    }
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    80
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    81
125
960ce0b9f9f0 added a function to clear the widget.
hamidouk
parents: 101
diff changeset
    82
    var conf = {start: begin, end: end, 
960ce0b9f9f0 added a function to clear the widget.
hamidouk
parents: 101
diff changeset
    83
                onStart: 
264
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    84
                       function(annotation) { 
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    85
                        return function() { 
393
54947acf2770 ignore tweets.
hamidouk
parents: 382
diff changeset
    86
                            _this.displayAnnotation(annotation); 
264
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    87
                          
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    88
                        } }(annotation),
125
960ce0b9f9f0 added a function to clear the widget.
hamidouk
parents: 101
diff changeset
    89
                onEnd: 
264
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    90
                       function() { _this.clearWidget.call(_this); },
125
960ce0b9f9f0 added a function to clear the widget.
hamidouk
parents: 101
diff changeset
    91
                };
960ce0b9f9f0 added a function to clear the widget.
hamidouk
parents: 101
diff changeset
    92
    this._Popcorn = this._Popcorn.code(conf);                                             
98
ed4ac18baf07 broke the widgets.js in multiple files.
hamidouk
parents:
diff changeset
    93
  }
264
9fb001b19dd2 clean-ups.
hamidouk
parents: 162
diff changeset
    94
309
49c2b9e63591 added segment duration display to the annotationsWidget
hamidouk
parents: 264
diff changeset
    95
};