metadataplayer/metadataplayer/Trace.js
changeset 0 222f9654ed39
child 5 e27a08b0a037
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/metadataplayer/metadataplayer/Trace.js	Thu Jun 07 23:14:10 2012 +0200
@@ -0,0 +1,144 @@
+IriSP.Widgets.Trace = function(player, config) {
+  IriSP.Widgets.Widget.call(this, player, config);
+    
+}
+
+IriSP.Widgets.Trace.prototype = new IriSP.Widgets.Widget();
+
+IriSP.Widgets.Trace.prototype.defaults = {
+    js_console : false,
+    url: "http://traces.advene.org:5000/",
+    requestmode: 'GET',
+    syncmode: "sync"
+}
+
+IriSP.Widgets.Trace.prototype.draw = function() {
+  this.lastEvent = "";
+  if (typeof window.tracemanager === "undefined") {
+      console.log("Tracemanager not found");
+      return;
+  }
+  var _this = this,
+    _listeners = {
+        "IriSP.search.open" : 0,
+        "IriSP.search.closed" : 0,
+        "IriSP.search" : 0,
+        "IriSP.search.cleared" : 0,
+        "IriSP.search.matchFound" : 0,
+        "IriSP.search.noMatchFound" : 0,
+        "IriSP.search.triggeredSearch" : 0,
+        "IriSP.TraceWidget.MouseEvents" : 0,
+        "play" : 0,
+        "pause" : 0,
+        "volumechange" : 0,
+        "seeked" : 0,
+        "play" : 0,
+        "pause" : 0,
+        "timeupdate" : 2000
+    };
+    IriSP._(_listeners).each(function(_ms, _listener) {
+        var _f = function(_arg) {
+            _this.eventHandler(_listener, _arg);
+        }
+        if (_ms) {
+            _f = IriSP._.throttle(_f, _ms);
+        }
+        _this.player.popcorn.listen(_listener, _f);
+    });
+    
+    this.tracer = window.tracemanager.init_trace("test", {
+        url: this.url,
+        requestmode: this.requestmode,
+        syncmode: this.syncmode
+    });
+    this.tracer.trace("StartTracing", {});
+    
+    this.mouseLocation = '';
+    IriSP.jQuery(".Ldt-Widget").bind("click mouseover mouseout", function(_e) {
+        var _target = IriSP.jQuery(_e.target);
+
+        while (!_target.hasClass("Ldt-TraceMe") && !_target.hasClass("Ldt-Widget") && _target.length) {
+            _target = _target.parent();
+        }
+        
+        var _widget = IriSP.jQuery(this).attr("widget-type"),
+            _data = {
+                "type": _e.type,
+                "x": _e.clientX,
+                "y": _e.clientY,
+                "widget": _widget
+            },
+            _targetEl = _target[0],
+            _class = _targetEl.className,
+            _name = _targetEl.localName,
+            _id = _targetEl.id,
+            _value = _targetEl.value,
+            _traceInfo = _target.attr("trace-info"),
+            _lastTarget = _name + (_id && _id.length ? '#' + IriSP.jqEscape(_id) : '') + (_class && _class.length ? ('.' + IriSP.jqEscape(_class).replace(/\s/g,'.')).replace(/\.Ldt-(Widget|TraceMe)/g,'') : '');
+        _data.target = _lastTarget
+        if (typeof _traceInfo == "string" && _traceInfo.length && _traceInfo.length < 140) {
+            _data.traceInfo = _traceInfo;
+            _lastTarget += ( ";" + _traceInfo );
+        }
+        if (typeof _value == "string" && _value.length) {
+            _data.value = _value;
+        }
+        switch(_e.type) {
+            case "mouseover":
+                if (_this.lastTarget != _lastTarget) {
+                    _this.player.popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
+                } else {
+                    if (typeof _this.moTimeout != "undefined") {
+                        clearTimeout(_this.moTimeout);
+                        _this.moTimeout = undefined;
+                    }
+                }
+            break;
+            case "mouseout":
+                if (typeof _this.moTimeout != "undefined") {
+                    clearTimeout(_this.moTimeout);
+                }
+                _this.moTimeout = setTimeout(function() {
+                   if (_lastTarget != _this.lastTarget) {
+                       _this.player.popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
+                   }
+                },100);
+            break;
+            default:
+                _this.player.popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
+        }
+        _this.lastTarget = _lastTarget;
+    });
+}
+
+IriSP.Widgets.Trace.prototype.eventHandler = function(_listener, _arg) {
+    var _traceName = 'Mdp_';
+    if (typeof _arg == "string" || typeof _arg == "number") {
+        _arg = { "value" : _arg }
+    }
+    if (typeof _arg == "undefined") {
+        _arg = {}
+    }
+    switch(_listener) {
+        case 'IriSP.TraceWidget.MouseEvents':
+            _traceName += _arg.widget + '_' + _arg.type;
+            delete _arg.widget;
+            delete _arg.type;
+        break;
+        case 'timeupdate':
+        case 'play':
+        case 'pause':
+            _arg.time = this.player.popcorn.currentTime() * 1000;
+        case 'seeked':
+        case 'volumechange':
+            _traceName += 'Popcorn_' + _listener;
+        break;
+        default:
+            _traceName += _listener.replace('IriSP.','').replace('.','_');
+    }
+    this.lastEvent = _traceName;
+    this.tracer.trace(_traceName, _arg);
+    if (this.js_console) {
+        console.log("tracer.trace('" + _traceName + "', " + JSON.stringify(_arg) + ");");
+    }
+}