| author | ymh <ymh.work@gmail.com> |
| Fri, 02 Oct 2015 11:27:17 +0200 | |
| changeset 1068 | 7623f9af9272 |
| parent 1033 | c20df1c080e6 |
| child 1072 | ac1eacb3aa33 |
| permissions | -rw-r--r-- |
| 882 | 1 |
IriSP.Widgets.Trace = function(player, config) { |
2 |
IriSP.Widgets.Widget.call(this, player, config); |
|
3 |
|
|
| 1013 | 4 |
}; |
| 882 | 5 |
|
6 |
IriSP.Widgets.Trace.prototype = new IriSP.Widgets.Widget(); |
|
7 |
||
8 |
IriSP.Widgets.Trace.prototype.defaults = { |
|
9 |
js_console : false, |
|
10 |
url: "http://traces.advene.org:5000/", |
|
11 |
requestmode: 'GET', |
|
| 924 | 12 |
syncmode: "sync", |
| 926 | 13 |
default_subject: "IRI", |
| 928 | 14 |
tracer: null, |
15 |
extend: false |
|
| 1013 | 16 |
}; |
| 882 | 17 |
|
18 |
IriSP.Widgets.Trace.prototype.draw = function() { |
|
19 |
if (typeof window.tracemanager === "undefined") { |
|
20 |
console.log("Tracemanager not found"); |
|
21 |
return; |
|
22 |
} |
|
23 |
var _this = this, |
|
| 957 | 24 |
_medialisteners = { |
| 882 | 25 |
"play" : 0, |
26 |
"pause" : 0, |
|
27 |
"volumechange" : 0, |
|
28 |
"seeked" : 0, |
|
29 |
"play" : 0, |
|
30 |
"pause" : 0, |
|
| 986 | 31 |
"timeupdate" : 10000 |
| 990 | 32 |
}, |
33 |
_annlisteners = { |
|
34 |
search: 0, |
|
35 |
"search-cleared": 0 |
|
| 882 | 36 |
}; |
| 957 | 37 |
IriSP._(_medialisteners).each(function(_ms, _listener) { |
38 |
var _f = function(_arg) { |
|
39 |
_this.eventHandler(_listener, _arg); |
|
| 1013 | 40 |
}; |
| 957 | 41 |
if (_ms) { |
42 |
_f = IriSP._.throttle(_f, _ms); |
|
43 |
} |
|
44 |
_this.media.on(_listener, _f); |
|
| 882 | 45 |
}); |
| 990 | 46 |
var _annotations = this.source.getAnnotations(); |
47 |
IriSP._(_annlisteners).each(function(_ms, _listener) { |
|
48 |
var _f = function(_arg) { |
|
49 |
_this.eventHandler(_listener, _arg); |
|
| 1013 | 50 |
}; |
| 990 | 51 |
if (_ms) { |
52 |
_f = IriSP._.throttle(_f, _ms); |
|
53 |
} |
|
54 |
_annotations.on(_listener, _f); |
|
55 |
}); |
|
| 882 | 56 |
|
| 926 | 57 |
if (!this.tracer) { |
58 |
|
|
59 |
this.tracer = window.tracemanager.init_trace("test", { |
|
60 |
url: this.url, |
|
61 |
requestmode: this.requestmode, |
|
62 |
syncmode: this.syncmode, |
|
63 |
default_subject: this.default_subject |
|
64 |
}); |
|
65 |
|
|
66 |
} |
|
67 |
|
|
| 990 | 68 |
|
69 |
|
|
| 926 | 70 |
this.tracer.trace("TraceWidgetInit", {}); |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
71 |
|
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
72 |
// Configure annotation creation/update/delete/publish tracing |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
73 |
_this.player.on("Annotation.create", function (a) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
74 |
_this.tracer.trace("AnnotationCreated", { id: a.id, annotation_begin: a.begin.milliseconds, annotation_end: a.end.milliseconds, annotation_media: a.media.id, content_length: a.title.length, content_words: a.title.split(/\s+/).length }); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
75 |
}); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
76 |
_this.player.on("Annotation.delete", function (aid) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
77 |
_this.tracer.trace("AnnotationDeleted", { id: aid }); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
78 |
}); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
79 |
_this.player.on("Annotation.update", function (a) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
80 |
_this.tracer.trace("AnnotationUpdated", { id: a.id, annotation_begin: a.begin.milliseconds, annotation_end: a.end.milliseconds, annotation_media: a.media.id, content_length: a.title.length, content_words: a.title.split(/\s+/).length }); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
81 |
}); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
82 |
_this.player.on("Annotation.publish", function (a) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
83 |
_this.tracer.trace("AnnotationPublished", { id: a.id, annotation_begin: a.begin.milliseconds, annotation_end: a.end.milliseconds, annotation_media: a.media.id, content_length: a.title.length, content_words: a.title.split(/\s+/).length }); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
84 |
}); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1033
diff
changeset
|
85 |
|
| 1033 | 86 |
_this.player.trigger("trace-ready"); |
| 882 | 87 |
this.mouseLocation = ''; |
| 1033 | 88 |
IriSP.jQuery(".Ldt-Widget").on("mousedown mouseenter mouseleave", ".Ldt-TraceMe", function(_e) { |
| 956 | 89 |
var _target = IriSP.jQuery(this); |
| 906 | 90 |
|
| 986 | 91 |
var _widget = _target.attr("widget-type") || _target.parents(".Ldt-Widget").attr("widget-type"), |
| 906 | 92 |
_data = { |
93 |
"type": _e.type, |
|
94 |
"widget": _widget |
|
95 |
}, |
|
96 |
_targetEl = _target[0], |
|
97 |
_class = _targetEl.className, |
|
98 |
_name = _targetEl.localName, |
|
99 |
_id = _targetEl.id, |
|
| 986 | 100 |
_value = _target.val(), |
101 |
_traceInfo = _target.attr("trace-info"); |
|
102 |
_data.target = _name + (_id && _id.length ? '#' + IriSP.jqEscape(_id) : '') + (_class && _class.length ? ('.' + IriSP.jqEscape(_class).replace(/\s/g,'.')).replace(/\.Ldt-(Widget|TraceMe)/g,'') : ''); |
|
103 |
if (typeof _traceInfo == "string" && _traceInfo) { |
|
| 906 | 104 |
_data.traceInfo = _traceInfo; |
105 |
} |
|
106 |
if (typeof _value == "string" && _value.length) { |
|
107 |
_data.value = _value; |
|
108 |
} |
|
| 986 | 109 |
_this.eventHandler('UIEvent', _data); |
| 882 | 110 |
}); |
| 1013 | 111 |
}; |
| 882 | 112 |
|
113 |
IriSP.Widgets.Trace.prototype.eventHandler = function(_listener, _arg) { |
|
114 |
var _traceName = 'Mdp_'; |
|
115 |
if (typeof _arg == "string" || typeof _arg == "number") { |
|
| 1013 | 116 |
_arg = { "value" : _arg }; |
| 882 | 117 |
} |
118 |
if (typeof _arg == "undefined") { |
|
| 1013 | 119 |
_arg = {}; |
| 882 | 120 |
} |
121 |
switch(_listener) { |
|
| 986 | 122 |
case 'UIEvent': |
| 882 | 123 |
_traceName += _arg.widget + '_' + _arg.type; |
124 |
delete _arg.widget; |
|
125 |
delete _arg.type; |
|
126 |
break; |
|
127 |
case 'play': |
|
128 |
case 'pause': |
|
| 960 | 129 |
_arg.milliseconds = this.media.getCurrentTime().milliseconds; |
130 |
case 'timeupdate': |
|
| 882 | 131 |
case 'seeked': |
132 |
case 'volumechange': |
|
| 957 | 133 |
_traceName += 'media_' + _listener; |
| 882 | 134 |
break; |
135 |
default: |
|
| 957 | 136 |
_traceName += _listener.replace('.','_'); |
| 882 | 137 |
} |
| 928 | 138 |
if (typeof this.extend === "object" && this.extend) { |
139 |
IriSP._(_arg).extend(this.extend); |
|
140 |
} |
|
| 882 | 141 |
this.tracer.trace(_traceName, _arg); |
| 930 | 142 |
if (this.js_console && typeof window.console !== "undefined" && typeof console.log !== "undefined") { |
| 882 | 143 |
console.log("tracer.trace('" + _traceName + "', " + JSON.stringify(_arg) + ");"); |
144 |
} |
|
| 1033 | 145 |
}; |