diff -r 04a1ff9e0449 -r c7ae4f126e51 src/js/widgets/traceWidget.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/js/widgets/traceWidget.js Mon Mar 05 10:55:08 2012 +0100 @@ -0,0 +1,102 @@ +IriSP.TraceWidget = function(Popcorn, config, Serializer) { + IriSP.Widget.call(this, Popcorn, config, Serializer); + this.lastEvent = ""; + var _this = this, + _listeners = [ + "IriSP.ArrowWidget.releaseArrow", + "IriSP.SliceWidget.hide", + "IriSP.AnnotationsWidget.show", + "IriSP.AnnotationsWidget.hide", + "IriSP.ArrowWidget.blockArrow", + "IriSP.SliceWidget.position", + "IriSP.SliceWidget.show", + "IriSP.SliceWidget.hide", + "IriSP.createAnnotationWidget.addedAnnotation", +// "IriSP.PlayerWidget.AnnotateButton.clicked", +// "IriSP.PlayerWidget.MouseOver", +// "IriSP.PlayerWidget.MouseOut", + "IriSP.search.open", + "IriSP.search.closed", + "IriSP.search", + "IriSP.search.cleared", +// "IriSP.PolemicTweet.click", + "IriSP.search.matchFound", + "IriSP.search.noMatchFound", +// "IriSP.SegmentsWidget.click", + "IriSP.SliceWidget.zoneChange", +// "IriSP.SparklineWidget.clicked", +// "IriSP.StackGraphWidget.mouseOver", +// "IriSP.StackGraphWidget.clicked", + "IriSP.search.triggeredSearch", + "IriSP.Widget.MouseEvents", + "play", + "pause", + "volumechange", + "timeupdate", + "seeked", + "play", + "pause" + ]; + IriSP._(_listeners).each(function(_listener) { + _this._Popcorn.listen(_listener, function() { + _this.eventHandler(_listener, arguments); + }); + }); + +} + +IriSP.TraceWidget.prototype = new IriSP.Widget(); + +IriSP.TraceWidget.prototype.draw = function() { +} + +IriSP.TraceWidget.prototype.eventHandler = function(_listener, _args) { + var _traceName = 'Mdp_', + _data = {}; + + function packArgs() { + for (var _i = 0; _i < _args.length; _i++) { + _data[_i] = _args[_i]; + } + } + + switch(_listener) { + case 'IriSP.Widget.MouseEvents': + var _type = _args[0].type, + _name = _args[0].target_name, + _class = _args[0].target_class, + _id = _args[0].target_id, + _widget = _args[0].widget.match(/[^_]+widget/i)[0]; + _traceName += _widget + '_' + _type; + _data.x = _args[0].x; + _data.y = _args[0].y; + _data.target = _name + (_id.length ? '#' + _id : '') + (_class.length ? '.' + _class.replace(/\s/g,'.') : ''); + if (typeof _args[0].value == "string" && _args[0].value.length) { + _data.value = _args[0].value; + } + if ((_name == "button" || /button/.test(_class)) && typeof _args[0].text == "string" && _args[0].text.length) { + _data.text = _args[0].text; + } + if (typeof _args[0].title == "string" && _args[0].title.length) { + _data.title = _args[0].title; + } + // Filtrer les événements mouseover quand on se déplace vers des éléments non pertinents + if (!_id.length && !_class.length && ( _type == 'mouseover' || _type == 'mouseout' ) && this.lastEvent.search('Mdp_' + _widget) == 0) { + return; + } + break; + case 'play': + case 'pause': + case 'seeked': + case 'timeupdate': + case 'volumechange': + _traceName += 'Popcorn' + _listener; + packArgs(); + break; + default: + _traceName += _listener.replace('IriSP.','').replace('.','_'); + packArgs(); + } + this.lastEvent = _traceName; + console.log("trace('" + _traceName + "', " + JSON.stringify(_data) + ");"); +}