From 6c0aca5bce94c88b2ee97d0cf23613c7224e0c2f Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Sat, 10 Aug 2019 16:38:51 +0300 Subject: [PATCH] [DE] Refactoring loading of languages: use MenuSimple component --- .../main/app/view/DocumentHolder.js | 97 ++++++++----------- .../documenteditor/main/app/view/Statusbar.js | 24 ++--- 2 files changed, 51 insertions(+), 70 deletions(-) diff --git a/apps/documenteditor/main/app/view/DocumentHolder.js b/apps/documenteditor/main/app/view/DocumentHolder.js index df1935404..6a943b309 100644 --- a/apps/documenteditor/main/app/view/DocumentHolder.js +++ b/apps/documenteditor/main/app/view/DocumentHolder.js @@ -743,19 +743,10 @@ define([ this.changeLanguageMenu = function(menu) { var i; if (me._currLang.id===null || me._currLang.id===undefined) { - for (i=0; i-1) && !menu.items[index].checked && menu.setChecked(index, true); } }; @@ -2717,13 +2708,21 @@ define([ }) }); + var langTemplate = _.template([ + '', + '', + '<%= caption %>', + '' + ].join('')); + me.langTableMenu = new Common.UI.MenuItem({ caption : me.langText, - menu : new Common.UI.Menu({ + menu : new Common.UI.MenuSimple({ cls: 'lang-menu', menuAlign: 'tl-tr', restoreHeight: 300, items : [], + itemTemplate: langTemplate, search: true }) }); @@ -3343,11 +3342,12 @@ define([ me.langParaMenu = new Common.UI.MenuItem({ caption : me.langText, - menu : new Common.UI.Menu({ + menu : new Common.UI.MenuSimple({ cls: 'lang-menu', menuAlign: 'tl-tr', restoreHeight: 300, items : [], + itemTemplate: langTemplate, search: true }) }); @@ -3728,58 +3728,39 @@ define([ var me = this; if (langs && langs.length > 0 && me.langParaMenu && me.langTableMenu) { - me.langParaMenu.menu.removeAll(); - me.langTableMenu.menu.removeAll(); - _.each(langs, function(lang, index){ - me.langParaMenu.menu.addItem(new Common.UI.MenuItem({ + var arrPara = [], arrTable = []; + _.each(langs, function(lang) { + var item = { caption : lang.displayValue, value : lang.value, checkable : true, - toggleGroup : 'popupparalang', langid : lang.code, - spellcheck : lang.spellcheck, - template: _.template([ - '', - '', - '<%= caption %>', - '' - ].join('')) - }).on('click', function(item, e){ - if (me.api){ - if (!_.isUndefined(item.options.langid)) - me.api.put_TextPrLang(item.options.langid); + spellcheck : lang.spellcheck + }; + arrPara.push(item); + arrTable.push(_.clone(item)); + }); + me.langParaMenu.menu.resetItems(arrPara); + me.langTableMenu.menu.resetItems(arrTable); - me._currLang.paraid = item.options.langid; - me.langParaMenu.menu.currentCheckedItem = item; + me.langParaMenu.menu.on('item:click', function(menu, item){ + if (me.api){ + if (!_.isUndefined(item.langid)) + me.api.put_TextPrLang(item.langid); - me.fireEvent('editcomplete', me); - } - })); + me._currLang.paraid = item.langid; + me.fireEvent('editcomplete', me); + } + }); - me.langTableMenu.menu.addItem(new Common.UI.MenuItem({ - caption : lang.displayValue, - value : lang.value, - checkable : true, - toggleGroup : 'popuptablelang', - langid : lang.code, - spellcheck : lang.spellcheck, - template: _.template([ - '', - '', - '<%= caption %>', - '' - ].join('')) - }).on('click', function(item, e){ - if (me.api){ - if (!_.isUndefined(item.options.langid)) - me.api.put_TextPrLang(item.options.langid); + me.langTableMenu.menu.on('item:click', function(menu, item, e){ + if (me.api){ + if (!_.isUndefined(item.langid)) + me.api.put_TextPrLang(item.langid); - me._currLang.tableid = item.options.langid; - me.langTableMenu.menu.currentCheckedItem = item; - - me.fireEvent('editcomplete', me); - } - })); + me._currLang.tableid = item.langid; + me.fireEvent('editcomplete', me); + } }); } }, diff --git a/apps/documenteditor/main/app/view/Statusbar.js b/apps/documenteditor/main/app/view/Statusbar.js index 346af6733..e05d256ce 100644 --- a/apps/documenteditor/main/app/view/Statusbar.js +++ b/apps/documenteditor/main/app/view/Statusbar.js @@ -66,7 +66,7 @@ define([ Common.Utils.String.format(this.pageIndexText, model.get('current'), model.get('count')) ); } - function _clickLanguage(menu, item, state) { + function _clickLanguage(menu, item) { var $parent = menu.$el.parent(); $parent.find('#status-label-lang').text(item.caption); this.langMenu.prevTip = item.value.value; @@ -228,13 +228,13 @@ define([ disabled: true }); - this.langMenu = new Common.UI.Menu({ + this.langMenu = new Common.UI.MenuSimple({ cls: 'lang-menu', style: 'margin-top:-5px;', restoreHeight: 300, itemTemplate: _.template([ - '', - '', + '', + '', '<%= caption %>', '' ].join('')), @@ -340,18 +340,18 @@ define([ }, reloadLanguages: function(array) { - this.langMenu.removeAll(); + var arr = [], + saved = this.langMenu.saved; _.each(array, function(item) { - this.langMenu.addItem({ + arr.push({ caption : item['displayValue'], value : {value: item['value'], code: item['code']}, checkable : true, - checked : this.langMenu.saved == item['displayValue'], - spellcheck : item['spellcheck'], - toggleGroup : 'language' + checked : saved == item['displayValue'], + spellcheck : item['spellcheck'] }); - }, this); - + }); + this.langMenu.resetItems(arr); if (this.langMenu.items.length>0) { this.btnLanguage.setDisabled(!!this.mode.isDisconnected); } @@ -369,7 +369,7 @@ define([ this.langMenu.saved = info.displayValue; this.langMenu.clearAll(); } else - this.langMenu.items[index].setChecked(true); + this.langMenu.setChecked(index, true); } },