Update Tooltip V02.08
authorRaphael Velt <raph.velt@gmail.com>
Wed, 19 Dec 2012 16:52:21 +0100
changeset 755 d50aeed9a54b
parent 754 6fd82508e33f
child 756 a42360459998
Update Tooltip
web/res/metadataplayer/AnnotationsList.css
web/res/metadataplayer/LdtPlayer-core.js
web/res/metadataplayer/Mediafragment.js
web/res/metadataplayer/Polemic.js
web/res/metadataplayer/Segments.js
web/res/metadataplayer/Tagcloud.css
web/res/metadataplayer/Tooltip.css
web/res/metadataplayer/Tooltip.js
web/res/metadataplayer/Trace.js
web/res/metadataplayer/img/tooltip-corners.png
web/res/metadataplayer/img/tooltip-gradient.png
web/res/metadataplayer/img/tooltip-h-borders.png
web/res/metadataplayer/img/tooltip-tip.png
web/res/metadataplayer/img/tooltip-v-borders.png
--- a/web/res/metadataplayer/AnnotationsList.css	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/AnnotationsList.css	Wed Dec 19 16:52:21 2012 +0100
@@ -1,9 +1,6 @@
 /* AnnotationsListWidget */
 
 .Ldt-AnnotationsListWidget {
-    border: none; margin: 0; padding: 0;
-    overflow: auto;
-    max-height: 480px;
 }
 .Ldt-AnnotationsListWidget a {
     text-decoration: none;
--- a/web/res/metadataplayer/LdtPlayer-core.js	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/LdtPlayer-core.js	Wed Dec 19 16:52:21 2012 +0100
@@ -119,6 +119,9 @@
         _this.widgets.push(null);
         _this.loadWidget(widgetconf, function(widget) {
             _this.widgets[key] = widget;
+            if (widget.isLoaded()) {
+                _this.trigger("widget-loaded");
+            }
         });
     });
     this.$.find('.Ldt-Loader').detach();
@@ -491,7 +494,8 @@
     var _iexact = _iexact || false,
         _rgxp =  Model.regexpFromTextOrArray(_text, true);
     return this.filter(function(_element) {
-        return _rgxp.test(_element.description) || _rgxp.test(_element.title);
+        var keywords = (_element.keywords || _element.getTagTexts() || []).join(", ");
+        return _rgxp.test(_element.description) || _rgxp.test(_element.title) || _rgxp.test(keywords);
     });
 }
 
@@ -676,7 +680,7 @@
     }
     _res += pad(2, _hms.minutes) + ':' + pad(2, _hms.seconds);
     if (showCs) {
-        _res += "." + Math.round(_hms.milliseconds / 100)
+        _res += "." + Math.floor(_hms.milliseconds / 100)
     }
     return _res;
 }
@@ -1252,12 +1256,12 @@
 
 Model.Source.prototype.getList = function(_listId, _global) {
     _global = (typeof _global !== "undefined" && _global);
-    if (_global || typeof this.contents[_listId] === "undefined") {
+    if (_global) {
         return this.directory.getGlobalList().filter(function(_e) {
             return (_e.elementType === _listId);
         });
     } else {
-        return this.contents[_listId];
+        return this.contents[_listId] || new IriSP.Model.List(this.directory);
     }
 }
 
@@ -1391,6 +1395,7 @@
         url: this.url,
         dataType: dataType,
         data: urlparams,
+        traditional: true,
         success: function(_result) {
             _this.deSerialize(_result);
             _this.handleCallbacks();
@@ -1491,6 +1496,9 @@
         noCss: true,
         requires: [ "popcorn" ]
     },
+    HtmlPlayer: {
+        noCss: true
+    },
     JwpPlayer: {
         noCss: true,
         requires: [ "jwplayer" ]
@@ -1591,24 +1599,6 @@
      */
     this.player = player;
     
-    /* Getting metadata */
-    this.source = player.loadMetadata(this.metadata);
-    
-    /* Call draw when loaded */
-    this.source.onLoad(function() {
-        if (_this.media_id) {
-            _this.media = this.getElement(_this.media_id);
-        } else {
-            var _mediaopts = {
-                is_mashup: _this.is_mashup || false
-            }
-            _this.media = this.getCurrentMedia(_mediaopts);
-        }
-        
-        _this.draw();
-        player.trigger("widget-loaded");
-    });
-   
     /* Adding classes and html attributes */
     this.$ = IriSP.jQuery('#' + this.container);
     this.$.addClass("Ldt-TraceMe Ldt-Widget").attr("widget-type", _type);
@@ -1623,6 +1613,31 @@
         )
     );
     
+    /* Loading Metadata if required */
+    
+    if (this.metadata) {
+        /* Getting metadata */
+        this.source = player.loadMetadata(this.metadata);
+        
+        /* Call draw when loaded */
+        this.source.onLoad(function() {
+            if (_this.media_id) {
+                _this.media = this.getElement(_this.media_id);
+            } else {
+                var _mediaopts = {
+                    is_mashup: _this.is_mashup || false
+                }
+                _this.media = this.getCurrentMedia(_mediaopts);
+            }
+            
+            _this.draw();
+            player.trigger("widget-loaded");
+        });
+    } else {
+        this.draw();
+    }
+    
+    
 };
 
 IriSP.Widgets.Widget.prototype.defaults = {}
--- a/web/res/metadataplayer/Mediafragment.js	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/Mediafragment.js	Wed Dec 19 16:52:21 2012 +0100
@@ -4,9 +4,10 @@
     this.last_hash_value = "";
     window.onhashchange = this.functionWrapper("goToHash");
     if (typeof window.addEventListener !== "undefined") {
+        var _this = this;
         window.addEventListener('message', function(_msg) {
             if (/^#/.test(_msg.data)) {
-                this.setWindowHash(_msg.data);
+                _this.setWindowHash(_msg.data);
             }
         })
     };
@@ -18,14 +19,15 @@
 
 IriSP.Widgets.Mediafragment.prototype.draw = function() {
     this.onMediaEvent("pause","setHashToTime");
-    this.onMediaEvent("seeked","setHashToTime");
-    this.goToHash();
     var _this = this;
     this.getWidgetAnnotations().forEach(function(_annotation) {
         _annotation.on("click", function() {
             _this.setHashToAnnotation(_annotation.id);
         })
-    })
+    });
+    this.player.on("widgets-loaded", function() {
+        _this.goToHash();
+    });
 }
 
 IriSP.Widgets.Mediafragment.prototype.setWindowHash = function(_hash) {
--- a/web/res/metadataplayer/Polemic.js	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/Polemic.js	Wed Dec 19 16:52:21 2012 +0100
@@ -135,12 +135,14 @@
                     _annotation.trigger("click");
                 });
                 _annotation.on("select", function() {
-                    _this.tooltip.show(
-                        Math.floor(_elx + (_this.element_width - 1) / 2),
-                        _ely,
-                        _annotation.title,
-                        _col
-                    );
+                    if (_this.tooltip) {
+                        _this.tooltip.show(
+                            Math.floor(_elx + (_this.element_width - 1) / 2),
+                            _ely,
+                            _annotation.title,
+                            _col
+                        );
+                    }
                     _this.$tweets.each(function() {
                         var _e = IriSP.jQuery(this);
                         _e.css(
@@ -150,7 +152,9 @@
                     });
                 });
                 _annotation.on("unselect", function() {
-                    _this.tooltip.hide();
+                    if (_this.tooltip) {
+                        _this.tooltip.hide();
+                    }
                     _this.$tweets.css("opacity",1);
                 });
                 _annotation.on("found", function() {
@@ -270,10 +274,14 @@
                     var _color = _i ? _this.polemics[_i - 1].color : _this.defaultcolor;
                     _html += '<div class="Ldt-Tooltip-Color" style="background: ' + _color + '"></div><p>' + _nums[_i] + _this.l10n._annotations + '</p>'
                 }
-                _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _html);
+                if (_this.tooltip) {
+                    _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _html);
+                }
             })
             .mouseout(function() {
-                _this.tooltip.hide();
+                if (_this.tooltip) {
+                    _this.tooltip.hide();
+                }
             })
             
     }
@@ -289,7 +297,15 @@
     
     this.$.append('<div class="Ldt-Polemic-Tooltip"></div>');
     
-    this.insertSubwidget(this.$.find(".Ldt-Polemic-Tooltip"), { type: "Tooltip" }, "tooltip");
+    this.insertSubwidget(
+        this.$.find(".Ldt-Polemic-Tooltip"),
+        {
+            type: "Tooltip",
+            min_x: 0,
+            max_x: this.width
+        },
+        "tooltip"
+    );
 }
 
 IriSP.Widgets.Polemic.prototype.onTimeupdate = function(_time) {
--- a/web/res/metadataplayer/Segments.js	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/Segments.js	Wed Dec 19 16:52:21 2012 +0100
@@ -108,10 +108,14 @@
                 background: _el.hasClass("found") ? _this.found_color: color,
                 "z-index": ++zindex
             });
-            _this.tooltip.show( _center, _top, _data.text, _data.color );
+            if (_this.tooltip) {
+                _this.tooltip.show( _center, _top, _data.text, _data.color );
+            }
         });
         _annotation.on("unselect", function() {
-            _this.tooltip.hide();
+            if (_this.tooltip) {
+                _this.tooltip.hide();
+            }
             _this.$segments.each(function() {
                 var _segment = IriSP.jQuery(this);
                 _segment.css("background", _segment.hasClass("found") ? _this.found_color : _segment.attr(searching ? "data-low-color" : "data-medium-color"));
@@ -131,7 +135,15 @@
         background : this.background,
         margin: "1px 0"
     });
-    this.insertSubwidget(this.$.find(".Ldt-Segments-Tooltip"), { type: "Tooltip" }, "tooltip");
+    this.insertSubwidget(
+        this.$.find(".Ldt-Segments-Tooltip"),
+        {
+            type: "Tooltip",
+            min_x: 0,
+            max_x: this.width
+        },
+        "tooltip"
+    );
     this.$segments = this.$.find('.Ldt-Segments-Segment');
     this.source.getAnnotations().on("search", function() {
         searching = true;
--- a/web/res/metadataplayer/Tagcloud.css	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/Tagcloud.css	Wed Dec 19 16:52:21 2012 +0100
@@ -2,13 +2,9 @@
  * 
  */
 .Ldt-Tagcloud-Container {
-    border: 1px solid #b7b7b7;
-    padding: 1px;
-    margin: 0;
 }
 
 ul.Ldt-Tagcloud-List {
-    background: url(img/pinstripe.png);
     padding: 5px;
     margin: 0;
     list-style: none;
--- a/web/res/metadataplayer/Tooltip.css	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/Tooltip.css	Wed Dec 19 16:52:21 2012 +0100
@@ -1,31 +1,119 @@
-/* ToolTip Widget */
+.Ldt-Tooltip {
+    position: absolute;
+    height: 0; width: 0;
+    z-index: 100000;
+}
+
+.Ldt-Tooltip-Main {
+    position: absolute; bottom: 0; left: -96px;
+}
+
+.Ldt-Tooltip-Corner-NW,
+.Ldt-Tooltip-Corner-NE,
+.Ldt-Tooltip-Corner-SW,
+.Ldt-Tooltip-Corner-SE {
+    position: absolute; width: 6px; height: 6px; background: url(img/tooltip-corners.png);
+}
+
+.Ldt-Tooltip-Corner-NW,
+.Ldt-Tooltip-Corner-SW {
+    left: 0;
+}
+
+.Ldt-Tooltip-Corner-NE,
+.Ldt-Tooltip-Corner-SE {
+    right: 0;
+}
+
+.Ldt-Tooltip-Corner-NW,
+.Ldt-Tooltip-Corner-NE {
+    top: 0;
+}
+
+.Ldt-Tooltip-Corner-SW,
+.Ldt-Tooltip-Corner-SE {
+    bottom: 10px;
+}
+
+.Ldt-Tooltip-Corner-NW {
+    background-position: top left;
+}
+
+.Ldt-Tooltip-Corner-NE {
+    background-position: top right;
+}
 
-.Ldt-Tooltip {
-  position: absolute;
-  z-index: 10000000000;
-  background: transparent url("img/white_arrow_long.png");
-  font-size: 12px;
-  padding: 15px 15px 20px;
-  color: black;
-  font-family: Arial, Helvetica, sans-serif;
-  overflow:hidden;
+.Ldt-Tooltip-Corner-SW {
+    background-position: bottom left;
+}
+
+.Ldt-Tooltip-Corner-SE {
+    background-position: bottom right;
+}
+
+.Ldt-Tooltip-Border-Top,
+.Ldt-Tooltip-Border-SW,
+.Ldt-Tooltip-Border-SE {
+    position: absolute; height: 6px; background: url(img/tooltip-h-borders.png);
+}
+
+.Ldt-Tooltip-Border-Top {
+    left: 6px; right: 6px;
+}
+
+.Ldt-Tooltip-Border-SW,
+.Ldt-Tooltip-Border-SE {
+    bottom: 10px; background-position: bottom;
+}
+
+.Ldt-Tooltip-Border-SW {
+    left: 6px;
+}
+
+.Ldt-Tooltip-Border-SE {
+    right: 6px;
+}
+
+.Ldt-Tooltip-Tip {
+    position: absolute; height: 16px; width: 22px;
+    background: url(img/tooltip-tip.png);
+    bottom: 0;
+}
+
+.Ldt-Tooltip-Border-Left,
+.Ldt-Tooltip-Border-Right {
+    position: absolute; width: 6px; background: url(img/tooltip-v-borders.png);
+    top: 6px; bottom: 16px;
+}
+
+.Ldt-Tooltip-Border-Left {
+    left: 0; background-position: left;
+}
+
+.Ldt-Tooltip-Border-Right {
+    right: 0; background-position: right;
 }
 
 .Ldt-Tooltip-Inner {
-    height: 115px;
+    min-height: 30px;
+    max-height: 140px;
     width: 180px;
     overflow: hidden;
+    margin: 6px 6px 16px;
+    background: url(img/tooltip-gradient.png) bottom;
 }
 
+
 .Ldt-Tooltip-Color {
-    float: left; margin: 2px 4px 2px 0; width: 10px; height: 10px;
+    float: left; margin: 8px 2px 2px 8px; width: 10px; height: 10px;
 }
 
 .Ldt-Tooltip img {
-    max-width: 140px; max-height: 70px; margin: 0 20px;
+    max-width: 140px; max-height: 80px; margin: 2px 20px;
 }
 
 .Ldt-Tooltip p {
-    margin: 2px 0;
-  font-size: 12px;
-}
+    margin: 6px 8px;
+    font-size: 12px;
+    line-height: 14px;
+}
\ No newline at end of file
--- a/web/res/metadataplayer/Tooltip.js	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/Tooltip.js	Wed Dec 19 16:52:21 2012 +0100
@@ -5,17 +5,35 @@
 
 IriSP.Widgets.Tooltip.prototype = new IriSP.Widgets.Widget();
 
-IriSP.Widgets.Tooltip.prototype.template = '<div class="Ldt-Tooltip"><div class="Ldt-Tooltip-Inner"><div class="Ldt-Tooltip-Color"></div><div class="Ldt-Tooltip-Text"></div></div></div>';
+IriSP.Widgets.Tooltip.prototype.defaults = {
+    
+};
+
+IriSP.Widgets.Tooltip.prototype.template =
+    '<div class="Ldt-Tooltip"><div class="Ldt-Tooltip-Main"><div class="Ldt-Tooltip-Corner-NW"></div>'
+    + '<div class="Ldt-Tooltip-Border-Top"></div><div class="Ldt-Tooltip-Corner-NE"></div>'
+    + '<div class="Ldt-Tooltip-Border-Left"></div><div class="Ldt-Tooltip-Border-Right"></div>'
+    + '<div class="Ldt-Tooltip-Corner-SW"></div><div class="Ldt-Tooltip-Border-SW"></div>'
+    + '<div class="Ldt-Tooltip-Tip"></div><div class="Ldt-Tooltip-Border-SE"></div>'
+    + '<div class="Ldt-Tooltip-Corner-SE"></div><div class="Ldt-Tooltip-Inner">'
+    + '<div class="Ldt-Tooltip-Color"></div><p class="Ldt-Tooltip-Text"></p></div></div></div>';
 
 IriSP.Widgets.Tooltip.prototype.draw = function() {
     _this = this;
-    this.$.html(this.template);
+    this.renderTemplate();
     this.$.parent().css({
         "position" : "relative"
     });
-    this.$tip = this.$.find(".Ldt-Tooltip");
+    this.$tooltip = this.$.find(".Ldt-Tooltip");
+    this.$tip = this.$.find(".Ldt-Tooltip-Tip");
+    this.$sw = this.$.find(".Ldt-Tooltip-Border-SW");
+    this.$se = this.$.find(".Ldt-Tooltip-Border-SE");
+    this.__halfWidth = Math.floor(this.$.find(".Ldt-Tooltip-Main").width()/2);
+    this.__borderWidth = this.$.find(".Ldt-Tooltip-Border-Left").width();
+    this.__tipDelta = this.__halfWidth - Math.floor(this.$tip.width()/2);
+    this.__maxShift = this.__tipDelta - this.__borderWidth;
     this.$.mouseover(function() {
-        _this.$tip.hide();
+        _this.$tooltip.hide();
     });
     this.hide();
 };
@@ -30,13 +48,33 @@
 
     this.$.find(".Ldt-Tooltip-Text").html(text);
 
-    this.$tip.show();
+    this.$tooltip.show();
+    
+    var shift = 0;
+    
+    if (typeof this.min_x !== "undefined" && (x - this.__halfWidth < this.min_x)) {
+        shift = Math.max(x - this.__halfWidth - this.min_x, - this.__maxShift);
+    }
+    
+    if (typeof this.max_x !== "undefined" && (x + this.__halfWidth > this.max_x)) {
+        shift = Math.min(x + this.__halfWidth - this.max_x, this.__maxShift);
+    }
+    
+    this.$tooltip.css({
+        "left" : (x - shift) + "px",
+        "top" : y + "px"
+    });
     this.$tip.css({
-        "left" : Math.floor(x - this.$tip.outerWidth() / 2) + "px",
-        "top" : Math.floor(y - this.$tip.outerHeight()) + "px"
+        "left": (this.__tipDelta + shift) + "px"
+    });
+    this.$sw.css({
+        "width": (this.__tipDelta + shift - this.__borderWidth) + "px"
+    });
+    this.$se.css({
+        "width": (this.__tipDelta - shift - this.__borderWidth) + "px"
     });
 };
 
 IriSP.Widgets.Tooltip.prototype.hide = function() {
-    this.$tip.hide();
+    this.$tooltip.hide();
 };
--- a/web/res/metadataplayer/Trace.js	Tue Dec 18 17:16:26 2012 +0100
+++ b/web/res/metadataplayer/Trace.js	Wed Dec 19 16:52:21 2012 +0100
@@ -16,22 +16,11 @@
 }
 
 IriSP.Widgets.Trace.prototype.draw = function() {
-  this.lastEvent = "";
   if (typeof window.tracemanager === "undefined") {
       console.log("Tracemanager not found");
       return;
   }
   var _this = this,
-    _mdplisteners = {
-        "search.open" : 0,
-        "search.closed" : 0,
-        "search" : 0,
-        "search.cleared" : 0,
-        "search.matchFound" : 0,
-        "search.noMatchFound" : 0,
-        "search.triggeredSearch" : 0,
-        "TraceWidget.MouseEvents" : 0
-    }
     _medialisteners = {
         "play" : 0,
         "pause" : 0,
@@ -39,17 +28,8 @@
         "seeked" : 0,
         "play" : 0,
         "pause" : 0,
-        "timeupdate" : 2000
+        "timeupdate" : 10000
     };
-    IriSP._(_mdplisteners).each(function(_ms, _listener) {
-        var _f = function(_arg) {
-            _this.eventHandler(_listener, _arg);
-        }
-        if (_ms) {
-            _f = IriSP._.throttle(_f, _ms);
-        }
-        _this.onMdpEvent(_listener, _f);
-    });
     IriSP._(_medialisteners).each(function(_ms, _listener) {
         var _f = function(_arg) {
             _this.eventHandler(_listener, _arg);
@@ -74,10 +54,10 @@
     this.tracer.trace("TraceWidgetInit", {});
     
     this.mouseLocation = '';
-    IriSP.jQuery(".Ldt-Widget").on("click mouseover mouseout", ".Ldt-TraceMe", function(_e) {
+    IriSP.jQuery(".Ldt-Widget").on("click mouseenter mouseleave", ".Ldt-TraceMe", function(_e) {
         var _target = IriSP.jQuery(this);
         
-        var _widget = IriSP.jQuery(this).attr("widget-type"),
+        var _widget = _target.attr("widget-type") || _target.parents(".Ldt-Widget").attr("widget-type"),
             _data = {
                 "type": _e.type,
                 "x": _e.clientX,
@@ -88,42 +68,16 @@
             _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) {
+            _value = _target.val(),
+            _traceInfo = _target.attr("trace-info");
+        _data.target = _name + (_id && _id.length ? '#' + IriSP.jqEscape(_id) : '') + (_class && _class.length ? ('.' + IriSP.jqEscape(_class).replace(/\s/g,'.')).replace(/\.Ldt-(Widget|TraceMe)/g,'') : '');
+        if (typeof _traceInfo == "string" && _traceInfo) {
             _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.trigger('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.trigger('TraceWidget.MouseEvents', _data);
-                   }
-                },100);
-            break;
-            default:
-                _this.player.trigger('TraceWidget.MouseEvents', _data);
-        }
-        _this.lastTarget = _lastTarget;
+        _this.eventHandler('UIEvent', _data);
     });
 }
 
@@ -136,7 +90,7 @@
         _arg = {}
     }
     switch(_listener) {
-        case 'IriSP.TraceWidget.MouseEvents':
+        case 'UIEvent':
             _traceName += _arg.widget + '_' + _arg.type;
             delete _arg.widget;
             delete _arg.type;
@@ -152,7 +106,6 @@
         default:
             _traceName += _listener.replace('.','_');
     }
-    this.lastEvent = _traceName;
     if (typeof this.extend === "object" && this.extend) {
         IriSP._(_arg).extend(this.extend);
     }
@@ -160,4 +113,4 @@
     if (this.js_console && typeof window.console !== "undefined" && typeof console.log !== "undefined") {
         console.log("tracer.trace('" + _traceName + "', " + JSON.stringify(_arg) + ");");
     }
-}
+}
\ No newline at end of file
Binary file web/res/metadataplayer/img/tooltip-corners.png has changed
Binary file web/res/metadataplayer/img/tooltip-gradient.png has changed
Binary file web/res/metadataplayer/img/tooltip-h-borders.png has changed
Binary file web/res/metadataplayer/img/tooltip-tip.png has changed
Binary file web/res/metadataplayer/img/tooltip-v-borders.png has changed