From 162638d9f56633ae3330bb7a6a611f3fe37af181 Mon Sep 17 00:00:00 2001 From: Niklaus Giger Date: Wed, 1 Feb 2017 18:17:28 +0100 Subject: [PATCH] Use TooltipDialog instead of tooltip --- doc/resources/javascript/ywesee/widget/Tooltip.js | 79 ----------------------- src/view/additional_information.rb | 14 ++-- src/view/publictemplate.rb | 2 +- src/view/tooltip.rb | 38 +++++++++++ test/test_view/drugs/resultlist.rb | 19 ++++++ test/test_view/tooltip.rb | 52 +++++++++++++++ 6 files changed, 118 insertions(+), 86 deletions(-) delete mode 100644 doc/resources/javascript/ywesee/widget/Tooltip.js mode change 100644 => 100755 src/view/additional_information.rb create mode 100644 src/view/tooltip.rb create mode 100755 test/test_view/tooltip.rb diff --git a/doc/resources/javascript/ywesee/widget/Tooltip.js b/doc/resources/javascript/ywesee/widget/Tooltip.js deleted file mode 100644 index e6b4b55..0000000 --- a/doc/resources/javascript/ywesee/widget/Tooltip.js +++ /dev/null @@ -1,79 +0,0 @@ -require([ - 'dojo/_base/declare', - 'dojo/_base/connect', - 'dojo/_base/lang', - 'dojox/widget/DynamicTooltip', // new xhr support tooltip - 'dijit/layout/ContentPane' - ], function(declare, connect, lang, tooltip, contentPane) { - declare('ywesee.widget.Tooltip', [tooltip], { - href: null, - contentPane: null, - _hoverContent: false, - _contentNode: null, - _handle1: null, - _handle2: null, - _handle3: null, - _handle4: null, - _hideTimer: null, - - constructor: function(args) { - declare.safeMixin(this, args); - }, - - open: function() { - if (!master) { - var master = new dijit._MasterTooltip(); - } - this._contentNode = master.domNode; - if (this.href && (!this.contentPane)) { - domNode = document.createElement("div"); - this.contentPane = new dijit.layout.ContentPane({ - href: this.href, - placeAt: this._contentNode.getAttribute('id') - }, domNode); - this.contentPane.startup(); - } - this._handle1 = connect.connect(this._contentNode, 'onmouseover',this, 'onHoverContent'); - this._handle2 = connect.connect(this._contentNode, 'onhover', this, 'onHoverContent'); - this._handle3 = connect.connect(this._contentNode, 'onmouseout', this, 'onUnHoverContent'); - this._handle4 = connect.connect(this._contentNode, 'onunhover', this, 'onUnHoverContent'); - this.inherited("open", arguments); - }, - - close: function() { - connect.disconnect(this._handle1); - connect.disconnect(this._handle2); - connect.disconnect(this._handle3); - connect.disconnect(this._handle4); - this.inherited("close", arguments); - }, - - onHoverContent: function(/*Event*/ e) { - this._hoverContent = true; - }, - - onUnHoverContent: function(/*Event*/ e) { - if (dojo.isDescendant(e.relatedTarget, this._contentNode)){ - // false event; just moved from target to target child; ignore. - return; - } - this._hoverContent = false; - this._onUnHover(e); - }, - - _onUnHover: function(/*Event*/ e) { - this._hideTimer = setTimeout(lang.hitch(this, "_deferredOnUnHover", arguments), 2000); - }, - - _deferredOnUnHover: function(/*Event*/ e) { - if (this._hoverContent) { return; } - if (this._showTimer) { - clearTimeout(this._showTimer); - delete this._showTimer; - } else { - this.close(); - } - } - }); -}); - diff --git a/src/view/additional_information.rb b/src/view/additional_information.rb old mode 100644 new mode 100755 index d9d945d..8f7ff7e --- a/src/view/additional_information.rb +++ b/src/view/additional_information.rb @@ -7,6 +7,7 @@ require 'model/analysis/group' require 'view/drugs/atcchooser' require 'plugin/comarketing' +require 'view/tooltip' module ODDB module View @@ -173,7 +174,7 @@ module ODDB node.set_attribute('title', @lookandfeel.lookup(:ddd_price_title)) node.href = @lookandfeel._event_url(:ddd_price, args) else - node.dojo_tooltip = @lookandfeel._event_url(:ajax_ddd_price, args) + # node.dojo_tooltip = @lookandfeel._event_url(:ajax_ddd_price, args) end end node.label = true @@ -183,18 +184,18 @@ module ODDB @deductible_count ||= 0 @deductible_count += 1 span = HtmlGrid::Span.new(model, @session, self) - tooltip = HtmlGrid::Div.new(model, @session, self) deductible = model.deductible if(deductible) - tooltip.value = @lookandfeel.lookup(:deductible_title, + tooltip_content = @lookandfeel.lookup(:deductible_title, @lookandfeel.lookup(deductible)) else - tooltip.value = @lookandfeel.lookup(:deductible_unknown_title) + tooltip_content = @lookandfeel.lookup(:deductible_unknown_title) end span.css_id = "deductible_#{@deductible_count}" span.css_class = deductible.to_s - span.dojo_tooltip = tooltip + # span.dojo_tooltip = tooltip span.value = @lookandfeel.lookup(deductible || :deductible_unknown) + ODDB::View::TooltipHelper.set_tooltip(span, nil, tooltip_content) span.label = true span end @@ -269,7 +270,8 @@ module ODDB txt.value = text_elements.join(' / ') url = @lookandfeel._event_url(:ajax_swissmedic_cat, [:reg, model.iksnr, :seq, model.seqnr, :pack, model.ikscd]) txt.css_id = "ikscat_#{@ikscat_count}" - txt.dojo_tooltip = url + ODDB::View::TooltipHelper.set_tooltip(txt, url, 'dummy content') + # txt.dojo_tooltip = url txt end def product_overview_link(model, session=@session) diff --git a/src/view/publictemplate.rb b/src/view/publictemplate.rb index 5abc8bc..b98612b 100644 --- a/src/view/publictemplate.rb +++ b/src/view/publictemplate.rb @@ -26,7 +26,7 @@ module ODDB 'dojox/data/JsonRestStore', 'dijit/form/ComboBox', 'dijit/ProgressBar', - 'ywesee/widget/Tooltip', + 'dijit/TooltipDialog', ] DOJO_PARSE_WIDGETS = false DOJO_PREFIX = { diff --git a/src/view/tooltip.rb b/src/view/tooltip.rb new file mode 100644 index 0000000..bd84e5e --- /dev/null +++ b/src/view/tooltip.rb @@ -0,0 +1,38 @@ +#!/usr/bin/env ruby +# encoding: utf-8 +# ODDB::View::LogoHead -- oddb -- 30.11.2012 -- yasaka@ywesee.com +# ODDB::View::LogoHead -- oddb -- 24.10.2002 -- hwyss@ywesee.com + +require 'htmlgrid/div' +module ODDB + module View + class TooltipHelper + def self.set_tooltip(element, href=nil, content=nil) + element.additional_javascripts.push <<-EOS +require([ + "dijit/TooltipDialog", + "dijit/popup", + "dojo/on", + "dojo/dom", + "dojo/domReady!" +], function(TooltipDialog, popup, on, dom){ + var #{element.css_id}_dialog = new TooltipDialog({ + id: '#{element.css_id}_dialog', + content: '#{content}', + href: '#{href}', // the initialization of href must come after content!! + onMouseLeave: function(){ + popup.close(#{element.css_id}_dialog); + } + }); + on(dom.byId('#{element.css_id}'), 'mouseover', function(){ + popup.open({ + popup: #{element.css_id}_dialog, + around: dom.byId('#{element.css_id}') + }); + }); +}); +EOS + end + end + end +end diff --git a/test/test_view/drugs/resultlist.rb b/test/test_view/drugs/resultlist.rb index 1a4b70f..80e9b51 100755 --- a/test/test_view/drugs/resultlist.rb +++ b/test/test_view/drugs/resultlist.rb @@ -279,6 +279,25 @@ class TestResultList true) assert_equal([@model], @list.compose_list(model)) end + def test_compose_list_with_real_overflow + flexmock(@list, :full_colspan => 2) + model = [@model] + flexmock(model, :overflow? => true) + @lookandfeel = flexmock('lookandfeel33', + :lookup => 'lookup', + :attributes => {}, + :language => 'language', + :enabled? => true, + :disabled? => nil, + :_event_url => '_event_url' + ) + # @lookandfeel.should_receive(:enabled?).with(:explain_atc).once + @session.lookandfeel = @lookandfeel + @session.should_receive(:enabled?).with(:explain_atc).once + require 'pry'; binding.pry + # assert_equal(true, @lookandfeel.enabled?(:explain_atc)) + assert_equal([@model], @list.compose_list(model)) + end end end end diff --git a/test/test_view/tooltip.rb b/test/test_view/tooltip.rb new file mode 100755 index 0000000..5195430 --- /dev/null +++ b/test/test_view/tooltip.rb @@ -0,0 +1,52 @@ +#!/usr/bin/env ruby +# encoding: utf-8 +# ODDB::View::TestLogoHead -- oddb.org -- 21.06.2011 -- mhatakeyama@ywesee.com + +$: << File.expand_path("../../src", File.dirname(__FILE__)) + + +require 'minitest/autorun' +require 'flexmock/minitest' +require 'view/tooltip' +require 'htmlgrid/span' + +module ODDB + module View + class StubContainer + attr_accessor :additional_javascripts + end + + class TestTooltip 'lookup', + :attributes => {}, + :_event_url => '_event_url' + ) + @session = flexmock('session', + :flavor => 'gcc', + :lookandfeel => @lnf, + :persistent_user_input => 'persistent_user_input' + ) + @model = flexmock('model') + @context = flexmock('context', HtmlGrid::Div.new(@model, @session),:span => '',) + @element = flexmock('element', HtmlGrid::Span.new(@model, @session, self)) + @element.should_receive(:additional_javascripts).and_return(Array.new) + end + def test_tooltip_selbstbehalt + ODDB::View::TooltipHelper.set_tooltip(@element, 'http://some.url/url') + assert_equal('', @element.to_html(@context)) + end + def test_tooltip_with_href + ODDB::View::TooltipHelper.set_tooltip(@element, nil, 'dummy content') + result = @element.to_html(@context) + assert_match(//, result) + end + def test_tool_tipp_javascript + skip('Howto test emitting the script') + end + end + end +end # ODDB + -- 2.10.2