web/lib/metadataplayer/Trace.js
changeset 0 7f8907368bd5
equal deleted inserted replaced
-1:000000000000 0:7f8907368bd5
       
     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 };