Starting implementing a trace widget popcorn-port
authorveltr
Mon, 05 Mar 2012 10:55:08 +0100
branchpopcorn-port
changeset 826 c7ae4f126e51
parent 825 04a1ff9e0449
child 827 1dc2f85c3b89
Starting implementing a trace widget
src/js/widgets.js
src/js/widgets/traceWidget.js
test/integration/allocine_dossier_independant/polemic-allocine.htm
--- a/src/js/widgets.js	Fri Mar 02 13:25:44 2012 +0100
+++ b/src/js/widgets.js	Mon Mar 05 10:55:08 2012 +0100
@@ -52,6 +52,24 @@
   if (config.hasOwnProperty("layoutManager")) {
      this.layoutManager = config.layoutManager;     
   }
+  if (typeof this.selector != "undefined" && typeof Popcorn != "undefined") {
+      var _id = this._id;
+      this.selector.bind("click mouseover mouseout dragstart dragstop", function(_e) {
+            var _data = {
+                "type": _e.type,
+                "x": _e.clientX,
+                "y": _e.clientY,
+                "widget": _id,
+                "target_name": _e.target.localName,
+                "target_id": _e.target.id,
+                "target_class": _e.target.className,
+                "text": _e.target.textContent.trim(),
+                "title": _e.target.title,
+                "value": _e.target.value
+            };
+            Popcorn.trigger('IriSP.Widget.MouseEvents', _data);
+      })
+  }
   
 };
 
--- /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) + ");");
+}
--- a/test/integration/allocine_dossier_independant/polemic-allocine.htm	Fri Mar 02 13:25:44 2012 +0100
+++ b/test/integration/allocine_dossier_independant/polemic-allocine.htm	Mon Mar 05 10:55:08 2012 +0100
@@ -15,7 +15,7 @@
   
  <!-- START Integration  ###################################### -->
  <!-- SIMPLE PLAYER EXPERIMENTATION -->
-  <script type="text/javascript" src="js/LdtPlayer-release.js" type="text/javascript"></script>   
+  <script type="text/javascript" src="/metadataplayer/build/LdtPlayer-release.js" type="text/javascript"></script>   
   
   <div id="video"></div>
   <div id="LdtPlayer"></div>
@@ -62,7 +62,8 @@
              mode: "radio"},                     
             {type: "ArrowWidget"},
             {type: "TweetsWidget"},
-            {type: "createAnnotationWidget"}      
+            {type: "createAnnotationWidget"},
+            {type: "TraceWidget"}
             ]
         },
       player:{
@@ -70,7 +71,7 @@
               height: 300, 
               width: 640,
               acPlayerUrl: "allocine_test/AcPlayer_v3.0.swf",
-              autoPlay: "false",
+              autoPlay: "true",
               urlAcData: "allocine_test/data_cinecast.xml"
       },
       modules: [