Mercurial > hg > dml-open-vis
diff src/DML/MainVisBundle/Resources/assets/marionette/modules/TooltipModule.js @ 0:493bcb69166c
added public content
author | Daniel Wolff |
---|---|
date | Tue, 09 Feb 2016 20:54:02 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/DML/MainVisBundle/Resources/assets/marionette/modules/TooltipModule.js Tue Feb 09 20:54:02 2016 +0100 @@ -0,0 +1,107 @@ +/* global ChordVis */ +'use strict'; + +App.module('TooltipModule', function (TooltipModule, App, Backbone, Marionette, $, _) { + var renderFunctions = {}; + + var OBJECT_TYPE_CHORD_SEQUENCE = 1; + + TooltipModule.addInitializer(function() { + + + TooltipModule.TooltipView = Backbone.View.extend({ + + initialize: function(options) { + var _this = this; + + _this.$tooltip = $("<div/>").addClass("tooltip").appendTo("body"); + }, + + update: function(mouseEvent, title, target) { + var _this = this; + // removing the tooltip + if (!mouseEvent || mouseEvent.type == "mouseout" || mouseEvent.type == "mouseup" || !title) { + _this.previousTarget = null; + _this.$tooltip.addClass("tooltip_animation_slow-opacity"); + _this.$tooltip.removeClass("tooltip_state_visible"); + } else { + if (target != _this.previousTarget) { + _this.$tooltip.removeClass("tooltip_animation_slow-opacity"); + _this.$tooltip.addClass("tooltip_state_visible"); + + _this.$tooltip.html(title); + } + + _this.$tooltip.position({ + of: mouseEvent, + my: "left+20 topt+20", + collision: "flip flip" + }); + }; + } +// update: function(mouseEvent, object) { +// var _this = this; +// var objectType = null; +// if (object && object.sequenceAsObject && object.sequenceAsObject && object.sequenceAsObject.frequency && object.sequenceAsObject.chordsInOrder) { +// objectType = OBJECT_TYPE_CHORD_SEQUENCE; +// } +// if (!mouseEvent || mouseEvent.type == "mouseout" || !objectType) { +// _this.previousObject = null; +// _this.$tooltip.addClass("tooltip_animation_slow-opacity"); +// _this.$tooltip.removeClass("tooltip_state_visible"); +// } else { +// if (object != _this.previousObject) { +// _this.$tooltip.removeClass("tooltip_animation_slow-opacity"); +// _this.$tooltip.addClass("tooltip_state_visible"); +// // Chord sequence +// if (objectType == OBJECT_TYPE_CHORD_SEQUENCE) { +// _this.previousObject = object; +// +// var chordIds = _.pluck(object.sequenceAsObject.chordsInOrder, "id"); +// var chordTitles = []; +// for (var i = 0; i < chordIds.length; i++) { +// chordTitles.push(_this.bankOfChords.get(chordIds[i]).getNormalisedId()); +// } +// var frequency = object.sequenceAsObject.frequency; +// _this.$tooltip.html(_.str.sprintf("%s<br/>in %s%% of recordings", chordTitles.join(" → "), _.str.numberFormat(frequency, 2))); +// } +// } +// +// _this.$tooltip.position({ +// of: mouseEvent, +// my: "left+20 topt+20", +// collision: "flip flip" +// }); +// }; +// } + }); + + TooltipModule.tooltipView = new TooltipModule.TooltipView(); + + TooltipModule._updateTooltipForDOMNodeWithExTitle = function(mouseEvent) { + TooltipModule.tooltipView.update(mouseEvent, $(this).attr("tooltip-title"), this); + }; + + + TooltipModule.update = function(mouseEvent, title, target) { + TooltipModule.tooltipView.update(mouseEvent, title, target); + }; + + TooltipModule.convertTitlesToTooltips = function($container) { + $container.find("[title]").each(function(){ + var $this = $(this); + $this + .attr("tooltip-title", $this.attr("title")) + .removeAttr("title"); + if (App.options.enableTooltipsForControlsWithTitles) { + $this + .on('mouseover', TooltipModule._updateTooltipForDOMNodeWithExTitle) + .on('mouseout', TooltipModule._updateTooltipForDOMNodeWithExTitle) + .on('mousemove', TooltipModule._updateTooltipForDOMNodeWithExTitle) + .on('mouseup', TooltipModule._updateTooltipForDOMNodeWithExTitle); + } + + }); + }; + }); +}); \ No newline at end of file