From 64569ba4b52b44f7e39406badac981e885291a05 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 13 Mar 2020 11:42:32 +0300 Subject: [PATCH 1/4] [SSE] Show validation list --- .../main/app/controller/DocumentHolder.js | 51 +++++++++++++++++++ .../main/app/view/DocumentHolder.js | 8 +++ 2 files changed, 59 insertions(+) diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index c8f244f0c..50a0918e5 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -311,6 +311,7 @@ define([ this.api.asc_registerCallback('asc_onFormulaInfo', _.bind(this.onFormulaInfo, this)); this.api.asc_registerCallback('asc_ChangeCropState', _.bind(this.onChangeCropState, this)); this.api.asc_registerCallback('asc_onInputMessage', _.bind(this.onInputMessage, this)); + this.api.asc_registerCallback('asc_onValidationListMenu', _.bind(this.onValidationListMenu, this)); } return this; }, @@ -3230,6 +3231,56 @@ define([ } }, + onValidationListMenu: function(textarr) { + if (textarr && textarr.length>0) { + var me = this, + documentHolderView = me.documentHolder, + menu = documentHolderView.validationMenu, + menuContainer = documentHolderView.cmpEl.find(Common.Utils.String.format('#menu-container-{0}', menu.id)); + + for (var i = 0; i < menu.items.length; i++) { + menu.removeItem(menu.items[i]); + i--; + } + + _.each(textarr, function(menuItem, index) { + var mnu = new Common.UI.MenuItem({ + caption : menuItem + }).on('click', function(item, e) { + // me.api.asc_selectFromList(item.caption); + }); + menu.addItem(mnu); + }); + + Common.UI.Menu.Manager.hideAll(); + + if (!menu.rendered) { + // Prepare menu container + if (menuContainer.length < 1) { + menuContainer = $(Common.Utils.String.format('', menu.id)); + documentHolderView.cmpEl.append(menuContainer); + } + + menu.render(menuContainer); + menu.cmpEl.attr({tabindex: "-1"}); + } + + var coord = me.api.asc_getActiveCellCoord(), + offset = {left:0,top:0}, + showPoint = [coord.asc_getX() + offset.left, (coord.asc_getY() < 0 ? 0 : coord.asc_getY()) + coord.asc_getHeight() + offset.top]; + menuContainer.css({left: showPoint[0], top : showPoint[1]}); + + menu.show(); + + menu.alignPosition(); + _.delay(function() { + menu.cmpEl.focus(); + }, 10); + } else { + this.documentHolder.validationMenu.hide(); + } + }, + SetDisabled: function(state, canProtect) { this._isDisabled = state; this._canProtect = canProtect; diff --git a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js index 2e504244a..0e43532a7 100644 --- a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js @@ -968,6 +968,14 @@ define([ mnu.cmpEl.removeAttr('oo_editor_input').attr('oo_editor_keyboard', true); }); + this.validationMenu = new Common.UI.Menu({ + maxHeight: 200, + cyclic: false, + items: [] + }).on('show:after', function () { + this.scroller.update({alwaysVisibleY: true}); + }); + me.fireEvent('createdelayedelements', [me]); }, From 1c39acf0e8c7e1d4d8389c8a1de2f5fc4f2fda09 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 16 Mar 2020 14:32:58 +0300 Subject: [PATCH 2/4] [SSE] Fix validation list --- .../main/app/controller/DocumentHolder.js | 58 ++----------------- .../main/app/view/DocumentHolder.js | 8 --- 2 files changed, 4 insertions(+), 62 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index 50a0918e5..160d3d2ff 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -303,7 +303,8 @@ define([ this.api.asc_registerCallback('asc_onSetAFDialog', _.bind(this.onApiAutofilter, this)); this.api.asc_registerCallback('asc_onEditCell', _.bind(this.onApiEditCell, this)); this.api.asc_registerCallback('asc_onLockDefNameManager', _.bind(this.onLockDefNameManager, this)); - this.api.asc_registerCallback('asc_onEntriesListMenu', _.bind(this.onEntriesListMenu, this)); // Alt + Down + this.api.asc_registerCallback('asc_onEntriesListMenu', _.bind(this.onEntriesListMenu, this, true)); // Alt + Down + this.api.asc_registerCallback('asc_onValidationListMenu', _.bind(this.onEntriesListMenu, this, false)); this.api.asc_registerCallback('asc_onFormulaCompleteMenu', _.bind(this.onFormulaCompleteMenu, this)); this.api.asc_registerCallback('asc_onShowSpecialPasteOptions', _.bind(this.onShowSpecialPasteOptions, this)); this.api.asc_registerCallback('asc_onHideSpecialPasteOptions', _.bind(this.onHideSpecialPasteOptions, this)); @@ -311,7 +312,6 @@ define([ this.api.asc_registerCallback('asc_onFormulaInfo', _.bind(this.onFormulaInfo, this)); this.api.asc_registerCallback('asc_ChangeCropState', _.bind(this.onChangeCropState, this)); this.api.asc_registerCallback('asc_onInputMessage', _.bind(this.onInputMessage, this)); - this.api.asc_registerCallback('asc_onValidationListMenu', _.bind(this.onValidationListMenu, this)); } return this; }, @@ -1944,7 +1944,7 @@ define([ } }, - onEntriesListMenu: function(textarr) { + onEntriesListMenu: function(warning, textarr) { if (textarr && textarr.length>0) { var me = this, documentHolderView = me.documentHolder, @@ -1991,7 +1991,7 @@ define([ }, 10); } else { this.documentHolder.entriesMenu.hide(); - Common.UI.warning({ + warning && Common.UI.warning({ title: this.notcriticalErrorTitle, maxwidth: 600, msg : this.txtNoChoices, @@ -3231,56 +3231,6 @@ define([ } }, - onValidationListMenu: function(textarr) { - if (textarr && textarr.length>0) { - var me = this, - documentHolderView = me.documentHolder, - menu = documentHolderView.validationMenu, - menuContainer = documentHolderView.cmpEl.find(Common.Utils.String.format('#menu-container-{0}', menu.id)); - - for (var i = 0; i < menu.items.length; i++) { - menu.removeItem(menu.items[i]); - i--; - } - - _.each(textarr, function(menuItem, index) { - var mnu = new Common.UI.MenuItem({ - caption : menuItem - }).on('click', function(item, e) { - // me.api.asc_selectFromList(item.caption); - }); - menu.addItem(mnu); - }); - - Common.UI.Menu.Manager.hideAll(); - - if (!menu.rendered) { - // Prepare menu container - if (menuContainer.length < 1) { - menuContainer = $(Common.Utils.String.format('', menu.id)); - documentHolderView.cmpEl.append(menuContainer); - } - - menu.render(menuContainer); - menu.cmpEl.attr({tabindex: "-1"}); - } - - var coord = me.api.asc_getActiveCellCoord(), - offset = {left:0,top:0}, - showPoint = [coord.asc_getX() + offset.left, (coord.asc_getY() < 0 ? 0 : coord.asc_getY()) + coord.asc_getHeight() + offset.top]; - menuContainer.css({left: showPoint[0], top : showPoint[1]}); - - menu.show(); - - menu.alignPosition(); - _.delay(function() { - menu.cmpEl.focus(); - }, 10); - } else { - this.documentHolder.validationMenu.hide(); - } - }, - SetDisabled: function(state, canProtect) { this._isDisabled = state; this._canProtect = canProtect; diff --git a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js index 0e43532a7..2e504244a 100644 --- a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js @@ -968,14 +968,6 @@ define([ mnu.cmpEl.removeAttr('oo_editor_input').attr('oo_editor_keyboard', true); }); - this.validationMenu = new Common.UI.Menu({ - maxHeight: 200, - cyclic: false, - items: [] - }).on('show:after', function () { - this.scroller.update({alwaysVisibleY: true}); - }); - me.fireEvent('createdelayedelements', [me]); }, From 97fe42707858b6ea6f4abb6e88b7e43743f1018d Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 16 Mar 2020 15:06:56 +0300 Subject: [PATCH 3/4] [SSE] Fix validation list --- .../main/app/controller/DocumentHolder.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index 160d3d2ff..75b4fcb2c 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -303,8 +303,8 @@ define([ this.api.asc_registerCallback('asc_onSetAFDialog', _.bind(this.onApiAutofilter, this)); this.api.asc_registerCallback('asc_onEditCell', _.bind(this.onApiEditCell, this)); this.api.asc_registerCallback('asc_onLockDefNameManager', _.bind(this.onLockDefNameManager, this)); - this.api.asc_registerCallback('asc_onEntriesListMenu', _.bind(this.onEntriesListMenu, this, true)); // Alt + Down - this.api.asc_registerCallback('asc_onValidationListMenu', _.bind(this.onEntriesListMenu, this, false)); + this.api.asc_registerCallback('asc_onEntriesListMenu', _.bind(this.onEntriesListMenu, this, false)); // Alt + Down + this.api.asc_registerCallback('asc_onValidationListMenu', _.bind(this.onEntriesListMenu, this, true)); this.api.asc_registerCallback('asc_onFormulaCompleteMenu', _.bind(this.onFormulaCompleteMenu, this)); this.api.asc_registerCallback('asc_onShowSpecialPasteOptions', _.bind(this.onShowSpecialPasteOptions, this)); this.api.asc_registerCallback('asc_onHideSpecialPasteOptions', _.bind(this.onHideSpecialPasteOptions, this)); @@ -1944,13 +1944,18 @@ define([ } }, - onEntriesListMenu: function(warning, textarr) { + onEntriesListMenu: function(validation, textarr) { if (textarr && textarr.length>0) { var me = this, documentHolderView = me.documentHolder, menu = documentHolderView.entriesMenu, menuContainer = documentHolderView.cmpEl.find(Common.Utils.String.format('#menu-container-{0}', menu.id)); + if (validation && menu.isVisible()) { + menu.hide(); + return; + } + for (var i = 0; i < menu.items.length; i++) { menu.removeItem(menu.items[i]); i--; @@ -1991,7 +1996,7 @@ define([ }, 10); } else { this.documentHolder.entriesMenu.hide(); - warning && Common.UI.warning({ + !validation && Common.UI.warning({ title: this.notcriticalErrorTitle, maxwidth: 600, msg : this.txtNoChoices, From ab5663c343b906ae49c89ecad843b2c8baa08bda Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 16 Mar 2020 15:36:47 +0300 Subject: [PATCH 4/4] [SSE] Fix validation list --- .../main/app/controller/DocumentHolder.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index 75b4fcb2c..d40bcffd8 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -255,7 +255,10 @@ define([ if (me.api) { me.api.isTextAreaBlur = false; if (e.target.localName == 'canvas' && !me.isEditFormula) { - documentHolderEl.focus(); + if (me._preventClick) + me._preventClick = false; + else + documentHolderEl.focus(); } } } @@ -1988,6 +1991,8 @@ define([ showPoint = [coord.asc_getX() + offset.left, (coord.asc_getY() < 0 ? 0 : coord.asc_getY()) + coord.asc_getHeight() + offset.top]; menuContainer.css({left: showPoint[0], top : showPoint[1]}); + me._preventClick = validation; + validation && menuContainer.attr('data-value', 'prevent-canvas-click'); menu.show(); menu.alignPosition();