Unshow alert on menu display
diff --git a/dev/js/spec/hintSpec.js b/dev/js/spec/hintSpec.js
index 667ac7a..5df65fd 100644
--- a/dev/js/spec/hintSpec.js
+++ b/dev/js/spec/hintSpec.js
@@ -46,16 +46,16 @@
afterEach(function () {
document.getElementsByTagName("body")[0].removeChild(
- input
+ input
);
});
afterAll(function () {
try {
- var mirrors = document.querySelectorAll(".hint.mirror");
- for (var i in mirrors) {
- mirrors[i].parentNode.removeChild(mirrors[i])
- };
+ var mirrors = document.querySelectorAll(".hint.mirror");
+ for (var i in mirrors) {
+ mirrors[i].parentNode.removeChild(mirrors[i])
+ };
}
catch (e) {};
});
@@ -128,7 +128,7 @@
expect(analyzer.test("impcnx/")).toEqual("impcnx/");
expect(analyzer.test("cnx/c=npcnx/")).toEqual("npcnx/");
expect(analyzer.test("mate/m=degree:pos corenlp/ne_dewac_175m_600="))
- .toEqual("corenlp/ne_dewac_175m_600=");
+ .toEqual("corenlp/ne_dewac_175m_600=");
expect(analyzer.test("corenlp/")).toEqual("corenlp/");
expect(analyzer.test("corenlp/c=")).toEqual("corenlp/c=");
expect(analyzer.test("corenlp/c=PP-")).toEqual("corenlp/c=PP-");
@@ -145,13 +145,13 @@
describe('KorAP.Hint', function () {
KorAP.hintArray = {
"-" : [
- ["Base Annotation", "base/s=", "Structure"],
- ["CoreNLP", "corenlp/", "Constituency, Named Entities, Part-of-Speech"]
+ ["Base Annotation", "base/s=", "Structure"],
+ ["CoreNLP", "corenlp/", "Constituency, Named Entities, Part-of-Speech"]
],
"corenlp/" : [
- ["Named Entity", "ne=" , "Combined"],
- ["Named Entity", "ne_dewac_175m_600=" , "ne_dewac_175m_600"],
- ["Named Entity", "ne_hgc_175m_600=", "ne_hgc_175m_600"]
+ ["Named Entity", "ne=" , "Combined"],
+ ["Named Entity", "ne_dewac_175m_600=" , "ne_dewac_175m_600"],
+ ["Named Entity", "ne_hgc_175m_600=", "ne_hgc_175m_600"]
]
};
@@ -169,15 +169,16 @@
it('should be initializable', function () {
// Supports: context, searchField
var hint = hintClass.create({
- inputField : input
+ inputField : input
});
expect(hint).toBeTruthy();
});
+
it('should alert at char pos', function () {
var hint = hintClass.create({
- inputField : input
+ inputField : input
});
expect(hint.active()).toBeFalsy();
@@ -198,13 +199,38 @@
hint.update();
expect(hint.alert().active).toBeFalsy();
-
expect(hint.active()).toBeFalsy();
+
+ // Show again
+ expect(hint.alert(5, 'That does not work!')).toBeTruthy();
+ expect(hint.inputField().mirrorValue()).toEqual('abcde');
+ expect(hint.alert().active).toBeTruthy();
+ expect(hint.active()).toBeTruthy();
+
+ // Show menu, hide alert!
+ hint.show(false);
+ expect(hint.active()).toBeTruthy();
+ expect(hint.inputField().mirrorValue()).toEqual('abcde');
+ expect(hint.alert().active).toBeFalsy();
+
+ // Show again
+ expect(hint.alert(5, 'That does not work!')).toBeTruthy();
+ expect(hint.inputField().mirrorValue()).toEqual('abcde');
+ expect(hint.alert().active).toBeTruthy();
+ expect(hint.active()).toBeTruthy();
+
+ // Show menu, hide alert!
+ hint.show(false);
+ expect(hint.active()).toBeTruthy();
+ expect(hint.inputField().mirrorValue()).toEqual('abcde');
+ expect(hint.alert().active).toBeFalsy();
});
+
+
it('should view main menu on default', function () {
var hint = hintClass.create({
- inputField : input
+ inputField : input
});
expect(hint.active()).toBeFalsy();
@@ -247,23 +273,45 @@
// show with context
hint.show(true);
- expect(hint.inputField().container().getElementsByTagName('div').length).toEqual(4);
- expect(hint.inputField().container().getElementsByTagName('ul').length).toEqual(1);
+ expect(hint.inputField().container().getElementsByTagName('div').length).toEqual(1);
+ expect(hint.inputField().container().getElementsByTagName('ul').length).toEqual(0);
+ });
+
+ it('should not view main menu if context is mandatory', function () {
+ var hint = hintClass.create({
+ inputField : input
+ });
+
+ expect(hint.active()).toBeFalsy();
+
+ // Fine
+ hint.inputField().insert('der Baum corenlp/');
+ hint.show(true);
+ expect(hint.active()).toBeTruthy();
+
+ // Not analyzable
+ hint.inputField().insert('jhgjughjfhgnhfcvgnhj');
+ hint.show(true);
+ expect(hint.active()).toBeFalsy();
+
+ // Not available
+ hint.inputField().insert('jhgjughjfhgnhfcvgnhj/');
+ hint.show(true);
+ expect(hint.active()).toBeFalsy();
});
xit('should remove all menus on escape');
});
-
describe('KorAP.HintMenuItem', function () {
it('should be initializable', function () {
expect(
- function() { menuItemClass.create([]) }
+ function() { menuItemClass.create([]) }
).toThrow(new Error("Missing parameters"));
expect(
- function() { menuItemClass.create(['CoreNLP']) }
+ function() { menuItemClass.create(['CoreNLP']) }
).toThrow(new Error("Missing parameters"));
var menuItem = menuItemClass.create(['CoreNLP', 'corenlp/']);
@@ -272,7 +320,7 @@
expect(menuItem.desc()).toBeUndefined();
menuItem = menuItemClass.create(
- ['CoreNLP', 'corenlp/', 'It\'s funny']
+ ['CoreNLP', 'corenlp/', 'It\'s funny']
);
expect(menuItem.name()).toEqual('CoreNLP');
expect(menuItem.action()).toEqual('corenlp/');
@@ -293,7 +341,7 @@
expect(menuItem.element().childNodes[1]).toBe(undefined);
menuItem = menuItemClass.create(
- ['CoreNLP', 'corenlp/', 'my DescRiption']
+ ['CoreNLP', 'corenlp/', 'my DescRiption']
);
expect(menuItem.element()).not.toBe(undefined);
expect(menuItem.element().nodeName).toEqual("LI");
diff --git a/dev/js/src/hint.js b/dev/js/src/hint.js
index c5c689c..238b737 100644
--- a/dev/js/src/hint.js
+++ b/dev/js/src/hint.js
@@ -192,21 +192,22 @@
* Get the correct menu based on the context
*/
contextMenu : function (ifContext) {
-
+
// Get context (aka left text)
var context = this._inputField.context();
if (context === undefined || context.length === 0) {
- return ifContext ? false : this.menu("-");
+ return ifContext ? undefined : this.menu("-");
};
// Get context (aka left text matching regex)
context = this._analyzer.test(context);
- if (context === undefined || context.length == 0)
+ if (context === undefined || context.length == 0) {
return ifContext ? undefined : this.menu("-");
+ };
- return this.menu(context) || this.menu('-');
+ return this.menu(context) || (ifContext ? undefined : this.menu('-'));
},
/**
@@ -250,35 +251,15 @@
*/
show : function (ifContext) {
- var c = this._inputField.container();
-
- // Menu is already active
- if (this.active() !== null) {
-
- // This does not work for alert currently!
- if (this._active._type !== 'alert') {
- c.removeChild(this._active.element());
- };
-
- // This may already be hidden!
- // this._active.hide();
- this.active(null);
-
- // Alert is not active
- /*
- if (!this._alert.unshow())
- return;
- */
- };
-
+ // Remove the active object
+ this._unshow();
+
// Get the menu
var menu;
if (menu = this.contextMenu(ifContext)) {
-
- // TODO: Remove old element!
-
this.active(menu);
+ var c = this._inputField.container();
c.appendChild(menu.element());
menu.show();
menu.focus();
@@ -305,19 +286,28 @@
* Deactivate the current menu and focus on the input field.
*/
unshow : function () {
- var c = this._inputField.container();
+ this._unshow();
+ this._inputField.element().focus();
+ },
+
+ _unshow : function () {
if (this.active() !== null) {
- var act = this.active();
+ // var act = this.active();
// This does not work for alert currently!
- if (act._type !== 'alert') {
+ //if (act._type !== 'alert') {
+ if (!this._alert.active) {
+ var c = this._inputField.container();
c.removeChild(this._active.element());
- };
+ }
+ else {
+ this._unshowAlert();
+ };
+
// this._active.hide();
this.active(null);
};
- this._inputField.element().focus();
}
};
});