Minor adjustments to fix Chrome bug with the hint helper
diff --git a/dev/js/runner/hint.html b/dev/js/runner/hint.html
index 81f0422..b9028b9 100644
--- a/dev/js/runner/hint.html
+++ b/dev/js/runner/hint.html
@@ -10,8 +10,8 @@
<script src="../lib/jasmine-2.1.1/boot.js"></script>
<script src="../src/menu.js"></script>
<script src="../src/hint.js"></script>
- <script src="../spec/hintSpec.js"></script>
</head>
<body>
</body>
+ <script src="../spec/hintSpec.js"></script>
</html>
diff --git a/dev/js/spec/hintSpec.js b/dev/js/spec/hintSpec.js
index bb736ce..45457b4 100644
--- a/dev/js/spec/hintSpec.js
+++ b/dev/js/spec/hintSpec.js
@@ -29,18 +29,24 @@
beforeEach(function () {
input = document.createElement("input");
- input.setAttribute("type", "text");
+ input.setAttribute('type', "text");
input.setAttribute("value", "abcdefghijklmno");
input.style.position = 'absolute';
+ document.getElementsByTagName('body')[0].appendChild(input);
input.style.top = "20px";
input.style.left = "30px";
input.focus();
input.selectionStart = 5;
});
+ afterEach(function () {
+ document.getElementsByTagName("body")[0].removeChild(
+ input
+ );
+ });
+
afterAll(function () {
try {
- // document.getElementsByTagName("body")[0].removeChild(input);
document.getElementsByTagName("body")[0].removeChild(
document.getElementById("searchMirror")
);
@@ -60,6 +66,7 @@
expect(inputField.value()).toEqual("abcdefghijklmno");
+ expect(input.selectionStart).toEqual(5);
expect(inputField.element().selectionStart).toEqual(5);
expect(inputField.split()[0]).toEqual("abcde");
expect(inputField.split()[1]).toEqual("fghijklmno");
@@ -75,7 +82,8 @@
var inputField = KorAP.InputField.create(input);
document.getElementsByTagName("body")[0].appendChild(input);
inputField.reposition();
- expect(inputField.mirror().style.left).toEqual("30px");
+ expect(input.style.left).toEqual("30px");
+ expect(inputField.mirror().style.left.match(/^(\d+)px$/)[1]).toBeGreaterThan(29);
expect(inputField.mirror().style.top.match(/^(\d+)px$/)[1]).toBeGreaterThan(20);
});
@@ -153,225 +161,215 @@
});
});
-
-
-
-
-
-
-
-
-
-
-xdescribe('KorAP.MenuItem', function () {
+describe('KorAP.HintMenuItem', function () {
it('should be initializable', function () {
-
expect(
- function() { KorAP.MenuItem.create([]) }
+ function() { KorAP.HintMenuItem.create([]) }
).toThrow(new Error("Missing parameters"));
expect(
- function() { KorAP.MenuItem.create(['CoreNLP']) }
+ function() { KorAP.HintMenuItem.create(['CoreNLP']) }
).toThrow(new Error("Missing parameters"));
- var menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
- expect(menuItem.name).toEqual('CoreNLP');
- expect(menuItem.action).toEqual('corenlp/');
- expect(menuItem.desc).toBeUndefined();
- expect(menuItem.lcfield).toEqual(' corenlp');
+ var menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
+ expect(menuItem.name()).toEqual('CoreNLP');
+ expect(menuItem.action()).toEqual('corenlp/');
+ expect(menuItem.desc()).toBeUndefined();
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/', 'It\'s funny']);
- expect(menuItem.name).toEqual('CoreNLP');
- expect(menuItem.action).toEqual('corenlp/');
- expect(menuItem.desc).not.toBeUndefined();
- expect(menuItem.desc).toEqual('It\'s funny');
- expect(menuItem.lcfield).toEqual(' corenlp it\'s funny');
+ menuItem = KorAP.HintMenuItem.create(
+ ['CoreNLP', 'corenlp/', 'It\'s funny']
+ );
+ expect(menuItem.name()).toEqual('CoreNLP');
+ expect(menuItem.action()).toEqual('corenlp/');
+ expect(menuItem.desc()).not.toBeUndefined();
+ expect(menuItem.desc()).toEqual('It\'s funny');
});
it('should have an element', function () {
- var menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
- expect(menuItem.element).not.toBe(undefined);
- expect(menuItem.element.nodeName).toEqual("LI");
- expect(menuItem.element.getAttribute("data-action")).toEqual("corenlp/");
+ var menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
+ expect(menuItem.element()).not.toBe(undefined);
+ expect(menuItem.element().nodeName).toEqual("LI");
- var title = menuItem.element.firstChild;
- expect(title.nodeName).toEqual("STRONG");
+ var title = menuItem.element().firstChild;
+ expect(title.nodeName).toEqual("SPAN");
expect(title.firstChild.nodeType).toEqual(3);
expect(title.firstChild.nodeValue).toEqual("CoreNLP");
+ expect(menuItem.element().childNodes[0]).not.toBe(undefined);
+ expect(menuItem.element().childNodes[1]).toBe(undefined);
- expect(menuItem.element.childNodes[0]).not.toBe(undefined);
- expect(menuItem.element.childNodes[1]).toBe(undefined);
+ menuItem = KorAP.HintMenuItem.create(
+ ['CoreNLP', 'corenlp/', 'my DescRiption']
+ );
+ expect(menuItem.element()).not.toBe(undefined);
+ expect(menuItem.element().nodeName).toEqual("LI");
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/', 'my DescRiption']);
- expect(menuItem.element).not.toBe(undefined);
- expect(menuItem.element.nodeName).toEqual("LI");
- expect(menuItem.element.getAttribute("data-action")).toEqual("corenlp/");
-
- title = menuItem.element.firstChild;
- expect(title.nodeName).toEqual("STRONG");
+ title = menuItem.element().firstChild;
+ expect(title.nodeName).toEqual("SPAN");
expect(title.firstChild.nodeType).toEqual(3); // TextNode
expect(title.firstChild.nodeValue).toEqual("CoreNLP");
- expect(menuItem.element.childNodes[0]).not.toBe(undefined);
- expect(menuItem.element.childNodes[1]).not.toBe(undefined);
+ expect(menuItem.element().childNodes[0]).not.toBe(undefined);
+ expect(menuItem.element().childNodes[1]).not.toBe(undefined);
- var desc = menuItem.element.lastChild;
+ var desc = menuItem.element().lastChild;
expect(desc.nodeName).toEqual("SPAN");
expect(desc.firstChild.nodeType).toEqual(3); // TextNode
expect(desc.firstChild.nodeValue).toEqual("my DescRiption");
-
- expect(menuItem.lcfield).toEqual(' corenlp my description');
});
+
it('should be activatable and deactivateable by class', function () {
- var menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ var menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
expect(menuItem.active()).toBe(false);
- expect(menuItem.element.getAttribute("class")).toBe(null);
+ expect(menuItem.element().getAttribute("class")).toBe(null);
menuItem.active(true);
expect(menuItem.active()).toBe(true);
- expect(menuItem.element.getAttribute("class")).toEqual("active");
+ expect(menuItem.element().getAttribute("class")).toEqual("active");
menuItem.active(false); // Is active
expect(menuItem.active()).toBe(false);
- expect(menuItem.element.getAttribute("class")).toEqual("");
+ expect(menuItem.element().getAttribute("class")).toEqual("");
menuItem.active(true);
expect(menuItem.active()).toBe(true);
- expect(menuItem.element.getAttribute("class")).toEqual("active");
+ expect(menuItem.element().getAttribute("class")).toEqual("active");
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
expect(menuItem.active()).toBe(false);
- expect(menuItem.element.getAttribute("class")).toBe(null);
+ expect(menuItem.element().getAttribute("class")).toBe(null);
menuItem.active(false); // Is not active
expect(menuItem.active()).toBe(false);
- expect(menuItem.element.getAttribute("class")).toBe(null);
+ expect(menuItem.element().getAttribute("class")).toBe(null);
});
it('should be set to boundary', function () {
- var menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ var menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
expect(menuItem.active()).toBe(false);
- expect(menuItem.element.getAttribute("class")).toBe(null);
+ expect(menuItem.element().getAttribute("class")).toBe(null);
// Set active
menuItem.active(true);
expect(menuItem.active()).toBe(true);
expect(menuItem.noMore()).toBe(false);
- expect(menuItem.element.getAttribute("class")).toEqual("active");
+ expect(menuItem.element().getAttribute("class")).toEqual("active");
// Set no more
menuItem.noMore(true);
expect(menuItem.active()).toBe(true);
expect(menuItem.noMore()).toBe(true);
- expect(menuItem.element.getAttribute("class")).toEqual("active no-more");
+ expect(menuItem.element().getAttribute("class")).toEqual("active no-more");
// No no more
menuItem.noMore(false);
expect(menuItem.active()).toBe(true);
expect(menuItem.noMore()).toBe(false);
- expect(menuItem.element.getAttribute("class")).toEqual("active");
-
+ expect(menuItem.element().getAttribute("class")).toEqual("active");
// Set no more, deactivate
menuItem.noMore(true);
menuItem.active(false);
expect(menuItem.active()).toBe(false);
expect(menuItem.noMore()).toBe(true);
- expect(menuItem.element.getAttribute("class")).toEqual("no-more");
+ expect(menuItem.element().getAttribute("class")).toEqual("no-more");
// Set active
menuItem.active(true);
expect(menuItem.active()).toBe(true);
expect(menuItem.noMore()).toBe(true);
- expect(menuItem.element.getAttribute("class")).toEqual("no-more active");
+ expect(menuItem.element().getAttribute("class")).toEqual("no-more active");
});
-
- it('should be highlightable', function () {
+ xit('should be highlightable', function () {
// Highlight in the middle
- var menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ var menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
menuItem.highlight("ren");
- expect(menuItem.element.innerHTML).toEqual("<strong>Co<em>reN</em>LP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>Co<mark>reN</mark>LP</span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span>");
// Starting highlight
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
menuItem.highlight("cor");
- expect(menuItem.element.innerHTML).toEqual("<strong><em>Cor</em>eNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span><mark>Cor</mark>eNLP</span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span>");
+/*
// Starting highlight - short
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
menuItem.highlight("c");
- expect(menuItem.element.innerHTML).toEqual("<strong><em>C</em>oreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span><mark>C</mark>oreNLP</span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span>");
// Highlight at the end
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
menuItem.highlight("nlp");
- expect(menuItem.element.innerHTML).toEqual("<strong>Core<em>NLP</em></strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>Core<mark>NLP</mark></span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span>");
// Highlight at the end - short
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
menuItem.highlight("p");
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNL<em>P</em></strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNL<mark>P</mark></span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span>");
// No highlight
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/']);
menuItem.highlight("xp");
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span>");
+
// Highlight in the middle - first
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
menuItem.highlight("ren");
- expect(menuItem.element.innerHTML).toEqual("<strong>Co<em>reN</em>LP</strong><span>This is my Example</span>");
+ expect(menuItem.element().innerHTML).toEqual("<span>Co<mark>reN</mark>LP</span><span class=\"desc\">This is my Example</span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span>This is my Example</span>");
+ expect(menuItem.element().innerHTML).toEqual('<span>CoreNLP</span><span class="desc">This is my Example</span>');
// Highlight in the middle - second
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
menuItem.highlight("ampl");
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span>This is my Ex<em>ampl</em>e</span>");
+ expect(menuItem.element().innerHTML).toEqual('<span>CoreNLP</span><span class="desc">This is my Ex<mark>ampl</mark>e</span>');
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span>This is my Example</span>");
+ expect(menuItem.element().innerHTML).toEqual('<span>CoreNLP</span><span class="desc">This is my Example</span>');
// Highlight in the middle - both
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+
menuItem.highlight("e");
- expect(menuItem.element.innerHTML).toEqual("<strong>Cor<em>e</em>NLP</strong><span>This is my <em>E</em>xample</span>");
+ expect(menuItem.element().innerHTML).toEqual('<span>Cor<mark>e</mark>NLP</span><span class="desc">This is my <mark>E</mark>xampl<mark>e</mark></span>');
+
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span>This is my Example</span>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span><span>This is my Example</span>");
// Highlight in the end - second
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
menuItem.highlight("le");
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span>This is my Examp<em>le</em></span>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span><span>This is my Examp<mark>le</mark></span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span>This is my Example</span>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span><span>This is my Example</span>");
// Highlight at the beginning - second
- menuItem = KorAP.MenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+ menuItem = KorAP.HintMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
menuItem.highlight("this");
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span><em>This</em> is my Example</span>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span><span><mark>This</mark> is my Example</span>");
menuItem.lowlight();
- expect(menuItem.element.innerHTML).toEqual("<strong>CoreNLP</strong><span>This is my Example</span>");
+ expect(menuItem.element().innerHTML).toEqual("<span>CoreNLP</span><span>This is my Example</span>");
+*/
});
});
diff --git a/dev/js/src/hint.js b/dev/js/src/hint.js
index 474948a..11c3e1e 100644
--- a/dev/js/src/hint.js
+++ b/dev/js/src/hint.js
@@ -366,12 +366,6 @@
.upgradeTo(KorAP.HintMenuItem)
._init(params);
},
- content : function (content) {
- if (arguments.length === 1) {
- this._content = content;
- };
- return this._content;
- },
_init : function (params) {
if (params[0] === undefined ||
params[1] === undefined)
@@ -388,6 +382,12 @@
return this;
},
+ content : function (content) {
+ if (arguments.length === 1) {
+ this._content = content;
+ };
+ return this._content;
+ },
onclick : function () {
var m = this.menu();
var h = m.hint();