| // The OwnMenu item |
| KorAP.OwnMenuItem = { |
| create : function (params) { |
| return Object.create(KorAP.MenuItem).upgradeTo(KorAP.OwnMenuItem)._init(params); |
| }, |
| content : function (content) { |
| if (arguments.length === 1) { |
| this._content = content; |
| }; |
| return this._content; |
| }, |
| _init : function (params) { |
| if (params[0] === undefined) |
| throw new Error("Missing parameters"); |
| |
| this._content = document.createTextNode(params[0]); |
| this._lcField = ' ' + this.content().textContent.toLowerCase(); |
| |
| return this; |
| } |
| }; |
| |
| |
| // The OwnMenu |
| KorAP.OwnMenu = { |
| create : function (params) { |
| return Object.create(KorAP.Menu) |
| .upgradeTo(KorAP.OwnMenu) |
| ._init(KorAP.OwnMenuItem, params); |
| } |
| }; |
| |
| |
| // HintMenuItem |
| KorAP.HintMenuItem = { |
| create : function (params) { |
| return Object.create(KorAP.MenuItem) |
| .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) |
| throw new Error("Missing parameters"); |
| |
| this._name = params[0]; |
| this._action = params[1]; |
| this._lcField = ' ' + this._name.toLowerCase(); |
| |
| if (params.length > 2) { |
| this._desc = params[2]; |
| this._lcField += " " + this._desc.toLowerCase(); |
| }; |
| |
| return this; |
| }, |
| name : function () { |
| return this._name; |
| }, |
| action : function () { |
| return this._action; |
| }, |
| desc : function () { |
| return this._desc; |
| }, |
| element : function () { |
| // already defined |
| if (this._element !== undefined) |
| return this._element; |
| |
| // Create list item |
| var li = document.createElement("li"); |
| li.setAttribute("data-action", this._action); |
| |
| // Create title |
| var name = document.createElement("strong"); |
| name.appendChild(document.createTextNode(this._name)); |
| |
| li.appendChild(name); |
| |
| // Create description |
| if (this._desc !== undefined) { |
| var desc = document.createElement("span"); |
| desc.appendChild(document.createTextNode(this._desc)); |
| li.appendChild(desc); |
| }; |
| return this._element = li; |
| } |
| }; |
| |
| |
| // HintMenu |
| KorAP.HintMenu = { |
| create : function (context, params) { |
| var obj = Object.create(KorAP.Menu) |
| .upgradeTo(KorAP.HintMenu) |
| ._init(KorAP.HintMenuItem, params); |
| obj._context = context; |
| return obj; |
| } |
| }; |
| |
| |
| // The ComplexMenuItem |
| KorAP.ComplexMenuItem = { |
| create : function (params) { |
| return Object.create(KorAP.MenuItem) |
| .upgradeTo(KorAP.ComplexMenuItem) |
| ._init(params); |
| }, |
| content : function (content) { |
| if (arguments.length === 1) { |
| this._content = content; |
| }; |
| return this._content; |
| }, |
| _init : function (params) { |
| if (params[0] === undefined) |
| throw new Error("Missing parameters"); |
| |
| var r = document.createElement('div'); |
| for (var i = 1; i <= params.length; i++) { |
| var h = document.createElement('h' + i); |
| h.appendChild(document.createTextNode(params[i-1])); |
| r.appendChild(h); |
| }; |
| |
| this._content = r; |
| this._lcField = ' ' + this.content().textContent.toLowerCase(); |
| |
| return this; |
| } |
| }; |
| |
| |
| |
| describe('KorAP.MenuItem', function () { |
| it('should be initializable', function () { |
| expect( |
| function() { KorAP.MenuItem.create([]) } |
| ).toThrow(new Error("Missing parameters")); |
| |
| expect( |
| function() { KorAP.OwnMenuItem.create([]) } |
| ).toThrow(new Error("Missing parameters")); |
| |
| var mi = KorAP.OwnMenuItem.create(["Baum"]); |
| expect(mi.element().firstChild.nodeValue).toEqual('Baum'); |
| expect(mi.lcField()).toEqual(' baum'); |
| }); |
| |
| it('should be activatable and deactivateable by class', function () { |
| var menuItem = KorAP.OwnMenuItem.create(['Test']); |
| |
| expect(menuItem.active()).toBe(false); |
| expect(menuItem.element().getAttribute("class")).toBe(null); |
| menuItem.active(true); |
| expect(menuItem.active()).toBe(true); |
| expect(menuItem.element().getAttribute("class")).toEqual("active"); |
| menuItem.active(false); // Is active |
| expect(menuItem.active()).toBe(false); |
| expect(menuItem.element().getAttribute("class")).toEqual(""); |
| menuItem.active(true); |
| expect(menuItem.active()).toBe(true); |
| expect(menuItem.element().getAttribute("class")).toEqual("active"); |
| |
| menuItem = KorAP.OwnMenuItem.create(['Spiegel']); |
| expect(menuItem.active()).toBe(false); |
| 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); |
| }); |
| |
| it('should be set to boundary', function () { |
| var menuItem = KorAP.OwnMenuItem.create(['CoreNLP']); |
| expect(menuItem.active()).toBe(false); |
| 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"); |
| |
| // 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"); |
| |
| // No no more |
| menuItem.noMore(false); |
| expect(menuItem.active()).toBe(true); |
| expect(menuItem.noMore()).toBe(false); |
| 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"); |
| |
| // Set active |
| menuItem.active(true); |
| expect(menuItem.active()).toBe(true); |
| expect(menuItem.noMore()).toBe(true); |
| expect(menuItem.element().getAttribute("class")).toEqual("no-more active"); |
| }); |
| |
| |
| it('should be highlightable', function () { |
| // Highlight in the middle |
| var menuItem = KorAP.OwnMenuItem.create(['CoreNLP']); |
| menuItem.highlight("ren"); |
| expect(menuItem.element().innerHTML).toEqual("Co<mark>reN</mark>LP"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual("CoreNLP"); |
| |
| var plain = "<div><h1>CoreNLP</h1><h2>corenlp/</h2></div>"; |
| |
| // Starting highlight |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']); |
| menuItem.highlight("cor"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1><mark>Cor</mark>eNLP</h1><h2><mark>cor</mark>enlp/</h2></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Starting highlight - short |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']); |
| menuItem.highlight("c"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1><mark>C</mark>oreNLP</h1><h2><mark>c</mark>orenlp/</h2></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Highlight at the end |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']); |
| menuItem.highlight("nlp"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1>Core<mark>NLP</mark></h1><h2>core<mark>nlp</mark>/</h2></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Highlight at the end - short |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']); |
| menuItem.highlight("p"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNL<mark>P</mark></h1><h2>corenl<mark>p</mark>/</h2></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // No highlight |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']); |
| menuItem.highlight("xp"); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Highlight in the middle - first |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']); |
| menuItem.highlight("ren"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1>Co<mark>reN</mark>LP</h1><h2>co<mark>ren</mark>lp/</h2><h3>This is my Example</h3></div>"); |
| |
| plain = "<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Example</h3></div>" |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Highlight in the middle - second |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']); |
| menuItem.highlight("ampl"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Ex<mark>ampl</mark>e</h3></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Highlight in the middle - both |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']); |
| menuItem.highlight("e"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1>Cor<mark>e</mark>NLP</h1><h2>cor<mark>e</mark>nlp/</h2><h3>This is my <mark>E</mark>xampl<mark>e</mark></h3></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Highlight in the end - second |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']); |
| menuItem.highlight("le"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Examp<mark>le</mark></h3></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| |
| // Highlight at the beginning - second |
| menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']); |
| menuItem.highlight("this"); |
| expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3><mark>This</mark> is my Example</h3></div>"); |
| |
| menuItem.lowlight(); |
| expect(menuItem.element().innerHTML).toEqual(plain); |
| }); |
| }); |
| |
| |
| describe('KorAP.Menu', function () { |
| var list = [ |
| ["Constituency", "c=", "Example 1"], |
| ["Lemma", "l="], |
| ["Morphology", "m=", "Example 2"], |
| ["Part-of-Speech", "p="], |
| ["Syntax", "syn="] |
| ]; |
| |
| it('should be initializable', function () { |
| var list = [ |
| ["Constituency"], |
| ["Lemma"], |
| ["Morphology"], |
| ["Part-of-Speech"], |
| ["Syntax"] |
| ]; |
| |
| var menu = KorAP.OwnMenu.create(list); |
| expect(menu.itemClass()).toEqual(KorAP.OwnMenuItem); |
| expect(menu.element().nodeName).toEqual('UL'); |
| expect(menu.element().style.opacity).toEqual("0"); |
| expect(menu.limit()).toEqual(8); |
| |
| menu.limit(9); |
| expect(menu.limit()).toEqual(9); |
| |
| menu.limit(8); |
| |
| // view |
| menu.show(); |
| |
| // First element in list |
| expect(menu.item(0).active()).toBe(true); |
| expect(menu.item(0).noMore()).toBe(true); |
| |
| // Middle element in list |
| expect(menu.item(2).active()).toBe(false); |
| expect(menu.item(2).noMore()).toBe(false); |
| |
| // Last element in list |
| expect(menu.item(menu.length() - 1).active()).toBe(false); |
| expect(menu.item(menu.length() - 1).noMore()).toBe(true); |
| }); |
| |
| it('should be visible', function () { |
| var menu = KorAP.HintMenu.create("cnx/", list); |
| expect(menu.delete()).toBe(undefined); |
| menu.limit(3); |
| |
| expect(menu.show()).toBe(true); |
| expect(menu.element().firstChild.innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>"); |
| |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemma</strong>"); |
| expect(menu.element().childNodes[1].getAttribute("data-action")).toEqual("l="); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Check boundaries |
| expect(menu.element().childNodes[0].classList.contains("no-more")).toBe(true); |
| expect(menu.element().childNodes[1].classList.contains("no-more")).toBe(false); |
| expect(menu.element().childNodes[2].classList.contains("no-more")).toBe(false); |
| }); |
| |
| it('should be filterable', function () { |
| var menu = KorAP.HintMenu.create("cnx/", list); |
| menu.limit(3); |
| |
| expect(menu.show("o")).toBe(true); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>"); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>"); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Check boundaries |
| expect(menu.element().childNodes[0].classList.contains("no-more")).toBe(true); |
| expect(menu.element().childNodes[1].classList.contains("no-more")).toBe(false); |
| expect(menu.element().childNodes[2].classList.contains("no-more")).toBe(true); |
| |
| menu.limit(2); |
| |
| expect(menu.show("o")).toBe(true); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>"); |
| expect(menu.element().childNodes[2]).toBe(undefined); |
| |
| // Check boundaries |
| expect(menu.element().childNodes[0].classList.contains("no-more")).toBe(true); |
| expect(menu.element().childNodes[1].classList.contains("no-more")).toBe(false); |
| expect(menu.element().childNodes[2]).toBe(undefined); |
| |
| expect(menu.show("e")).toBe(true); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>"); |
| expect(menu.element().childNodes[2]).toBe(undefined); |
| |
| menu.limit(5); |
| |
| expect(menu.show("a")).toBe(true); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span>Ex<mark>a</mark>mple 1</span>"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemm<mark>a</mark></strong>"); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Ex<mark>a</mark>mple 2</span>"); |
| expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>P<mark>a</mark>rt-of-Speech</strong>"); |
| expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Synt<mark>a</mark>x</strong>"); |
| expect(menu.element().childNodes[5]).toBe(undefined); |
| |
| }); |
| |
| |
| it('should be nextable', function () { |
| var menu = KorAP.HintMenu.create("cnx/", list); |
| |
| // Show only 3 items |
| menu.limit(3); |
| |
| expect(menu.show()).toBe(true); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemma</strong>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate next (1) |
| menu.next(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemma</strong>"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate next (2) |
| menu.next(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemma</strong>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(2).active()).toBe(true); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate next (3) |
| // scroll! |
| menu.next(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Lemma</strong>"); |
| |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Part-of-Speech</strong>"); |
| expect(menu.shownItem(2).active()).toBe(true); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate next (4) |
| menu.next(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Part-of-Speech</strong>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Syntax</strong>"); |
| expect(menu.shownItem(2).active()).toBe(true); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate next (5) - ROLL |
| menu.next(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemma</strong>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Active next (6) |
| menu.next(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemma</strong>"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| }); |
| |
| it('should be prevable', function () { |
| var menu = KorAP.HintMenu.create("cnx/", list); |
| |
| menu.limit(3); |
| expect(menu.show()).toBe(true); |
| |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Lemma</strong>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate prev (1) - roll to bottom |
| menu.prev(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Part-of-Speech</strong>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Syntax</strong>"); |
| expect(menu.shownItem(2).active()).toBe(true); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate prev (2) |
| menu.prev(); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Part-of-Speech</strong>"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.element().childNodes[2].innerHTML).toEqual("<strong>Syntax</strong>"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate prev (3) |
| menu.prev(); |
| expect(menu.shownItem(0).name()).toEqual("Morphology"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Part-of-Speech"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2).name()).toEqual("Syntax"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate prev (4) |
| menu.prev(); |
| expect(menu.shownItem(0).name()).toEqual("Lemma"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2).name()).toEqual("Part-of-Speech"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate prev (5) |
| menu.prev(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Lemma"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2).name()).toEqual("Morphology"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate next (1) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.shownItem(1).name()).toEqual("Lemma"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.shownItem(2).name()).toEqual("Morphology"); |
| expect(menu.shownItem(2).active()).toBe(false); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| |
| // Activate prev (6) |
| menu.prev(); |
| |
| // Activate prev (7) |
| menu.prev(); |
| expect(menu.shownItem(0).name()).toEqual("Morphology"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.shownItem(1).name()).toEqual("Part-of-Speech"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2).name()).toEqual("Syntax"); |
| expect(menu.shownItem(2).active()).toBe(true); |
| expect(menu.element().childNodes[3]).toBe(undefined); |
| }); |
| |
| |
| it('should be navigatable and filterable (prefix = "o")', function () { |
| var menu = KorAP.HintMenu.create("cnx/", list); |
| menu.limit(2); |
| |
| expect(menu.show("o")).toBe(true); |
| |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Next (1) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Next (2) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.shownItem(1).name()).toEqual("Part-of-Speech"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Next (3) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2)).toBe(undefined); |
| }); |
| |
| |
| it('should be navigatable and filterable (prefix = "ex", "e")', function () { |
| var menu = KorAP.HintMenu.create("cnx/", list); |
| |
| menu.limit(2); |
| expect(menu.show("ex")).toBe(true); |
| |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Next (1) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Next (2) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Reset limit |
| menu.limit(5); |
| |
| // Change show |
| expect(menu.show("e")).toBe(true); |
| |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Next (1) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(false); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(true); |
| expect(menu.shownItem(2)).toBe(undefined); |
| |
| // Next (2) |
| menu.next(); |
| expect(menu.shownItem(0).name()).toEqual("Constituency"); |
| expect(menu.element().childNodes[0].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>"); |
| expect(menu.shownItem(0).active()).toBe(true); |
| expect(menu.shownItem(1).name()).toEqual("Morphology"); |
| expect(menu.element().childNodes[1].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>"); |
| expect(menu.shownItem(1).active()).toBe(false); |
| expect(menu.shownItem(2)).toBe(undefined); |
| }); |
| }); |