|
1 IriSP.Widgets.Trace = function(player, config) { |
|
2 IriSP.Widgets.Widget.call(this, player, config); |
|
3 |
|
4 }; |
|
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', |
|
12 syncmode: "sync", |
|
13 default_subject: "IRI", |
|
14 tracer: null, |
|
15 extend: false |
|
16 }; |
|
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, |
|
24 _medialisteners = { |
|
25 "play" : 0, |
|
26 "pause" : 0, |
|
27 "volumechange" : 0, |
|
28 "seeked" : 0, |
|
29 "play" : 0, |
|
30 "pause" : 0, |
|
31 "timeupdate" : 10000 |
|
32 }, |
|
33 _annlisteners = { |
|
34 search: 0, |
|
35 "search-cleared": 0 |
|
36 }; |
|
37 IriSP._(_medialisteners).each(function(_ms, _listener) { |
|
38 var _f = function(_arg) { |
|
39 _this.eventHandler(_listener, _arg); |
|
40 }; |
|
41 if (_ms) { |
|
42 _f = IriSP._.throttle(_f, _ms); |
|
43 } |
|
44 _this.media.on(_listener, _f); |
|
45 }); |
|
46 var _annotations = this.source.getAnnotations(); |
|
47 IriSP._(_annlisteners).each(function(_ms, _listener) { |
|
48 var _f = function(_arg) { |
|
49 _this.eventHandler(_listener, _arg); |
|
50 }; |
|
51 if (_ms) { |
|
52 _f = IriSP._.throttle(_f, _ms); |
|
53 } |
|
54 _annotations.on(_listener, _f); |
|
55 }); |
|
56 |
|
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 |
|
68 |
|
69 |
|
70 this.tracer.trace("TraceWidgetInit", {}); |
|
71 |
|
72 this.mouseLocation = ''; |
|
73 IriSP.jQuery(".Ldt-Widget").on("click mouseenter mouseleave", ".Ldt-TraceMe", function(_e) { |
|
74 var _target = IriSP.jQuery(this); |
|
75 |
|
76 var _widget = _target.attr("widget-type") || _target.parents(".Ldt-Widget").attr("widget-type"), |
|
77 _data = { |
|
78 "type": _e.type, |
|
79 "widget": _widget |
|
80 }, |
|
81 _targetEl = _target[0], |
|
82 _class = _targetEl.className, |
|
83 _name = _targetEl.localName, |
|
84 _id = _targetEl.id, |
|
85 _value = _target.val(), |
|
86 _traceInfo = _target.attr("trace-info"); |
|
87 _data.target = _name + (_id && _id.length ? '#' + IriSP.jqEscape(_id) : '') + (_class && _class.length ? ('.' + IriSP.jqEscape(_class).replace(/\s/g,'.')).replace(/\.Ldt-(Widget|TraceMe)/g,'') : ''); |
|
88 if (typeof _traceInfo == "string" && _traceInfo) { |
|
89 _data.traceInfo = _traceInfo; |
|
90 } |
|
91 if (typeof _value == "string" && _value.length) { |
|
92 _data.value = _value; |
|
93 } |
|
94 _this.eventHandler('UIEvent', _data); |
|
95 }); |
|
96 }; |
|
97 |
|
98 IriSP.Widgets.Trace.prototype.eventHandler = function(_listener, _arg) { |
|
99 var _traceName = 'Mdp_'; |
|
100 if (typeof _arg == "string" || typeof _arg == "number") { |
|
101 _arg = { "value" : _arg }; |
|
102 } |
|
103 if (typeof _arg == "undefined") { |
|
104 _arg = {}; |
|
105 } |
|
106 switch(_listener) { |
|
107 case 'UIEvent': |
|
108 _traceName += _arg.widget + '_' + _arg.type; |
|
109 delete _arg.widget; |
|
110 delete _arg.type; |
|
111 break; |
|
112 case 'play': |
|
113 case 'pause': |
|
114 _arg.milliseconds = this.media.getCurrentTime().milliseconds; |
|
115 case 'timeupdate': |
|
116 case 'seeked': |
|
117 case 'volumechange': |
|
118 _traceName += 'media_' + _listener; |
|
119 break; |
|
120 default: |
|
121 _traceName += _listener.replace('.','_'); |
|
122 } |
|
123 if (typeof this.extend === "object" && this.extend) { |
|
124 IriSP._(_arg).extend(this.extend); |
|
125 } |
|
126 this.tracer.trace(_traceName, _arg); |
|
127 if (this.js_console && typeof window.console !== "undefined" && typeof console.log !== "undefined") { |
|
128 console.log("tracer.trace('" + _traceName + "', " + JSON.stringify(_arg) + ");"); |
|
129 } |
|
130 }; |