diff --git a/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js b/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js index d28ab9e5e..169b2bb0c 100644 --- a/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js +++ b/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js @@ -103,7 +103,7 @@ define([ '', '', '', - '', + '', '', '', '', @@ -140,7 +140,7 @@ define([ '', '', '
', - '
', + '
', '', '', '', @@ -229,16 +229,14 @@ define([ }); this.cmbType.on('selected', _.bind(this.onTypeSelect, this)); - this.cmbCode = new Common.UI.ComboBox({ - el: $('#format-settings-combo-code'), - cls: 'input-group-nr', - menuStyle: 'min-width: 310px;max-height:235px;', - editable: false, - data: [], - scrollAlwaysVisible: true, - takeFocusOnClose: true + this.codesList = new Common.UI.ListView({ + el: $('#format-settings-list-code'), + store: new Common.UI.DataViewStore(), + tabindex: 1, + itemTemplate: _.template('
<%= value %>
') }); - this.cmbCode.on('selected', _.bind(this.onCodeSelect, this)); + this.codesList.on('item:select', _.bind(this.onCodeSelect, this)); + this.codesList.on('entervalue', _.bind(this.onPrimary, this)); this.inputCustomFormat = new Common.UI.InputField({ el : $('#format-settings-txt-code'), @@ -246,7 +244,7 @@ define([ validateOnChange : true, validation : function () { return true; } }).on ('changing', function (input, value) { - (me.cmbCode.getValue() !== me.txtCustom) && me.cmbCode.setValue(me.txtCustom); + me.codesList.deselectAll(); me.Format = me.api.asc_convertNumFormatLocal2NumFormat(value); me.lblExample.text(me.api.asc_getLocaleExample(me.Format)); }); @@ -257,6 +255,7 @@ define([ this._typePanel = this.$window.find('.format-type'); this._symbolsPanel = this.$window.find('.format-symbols'); this._codePanel = this.$window.find('.format-code'); + this._nocodePanel = this.$window.find('.format-no-code'); this.lblExample = this.$window.find('#format-settings-label-example'); @@ -264,7 +263,7 @@ define([ }, getFocusedComponents: function() { - return [this.cmbFormat, this.spnDecimal, this.cmbSymbols, this.cmbNegative, this.cmbType, this.cmbCode]; + return [this.cmbFormat, this.spnDecimal, this.cmbSymbols, this.cmbNegative, this.cmbType, this.inputCustomFormat, {cmp: this.codesList, selector: '.listview'}]; }, getDefaultFocusableComponent: function () { @@ -418,10 +417,12 @@ define([ this.lblExample.text(this.api.asc_getLocaleExample(this.Format)); }, - onCodeSelect: function(combo, record){ - this.Format = record.value; + onCodeSelect: function(listView, itemView, record){ + if (!record) return; + + this.Format = record.get('format'); this.lblExample.text(this.api.asc_getLocaleExample(this.Format)); - this.inputCustomFormat.setValue(record.displayValue); + this.inputCustomFormat.setValue(record.get('value')); }, onFormatSelect: function(combo, record, e, initFormatInfo) { @@ -501,17 +502,28 @@ define([ data = [], isCustom = (this.CustomFormat) ? true : false; formatsarr.forEach(function(item) { - data.push({value: item, displayValue: me.api.asc_convertNumFormat2NumFormatLocal(item)}); + var rec = new Common.UI.DataViewModel(); + rec.set({ + value: me.api.asc_convertNumFormat2NumFormatLocal(item), + format: item + }); + data.push(rec); if (me.CustomFormat == item) isCustom = false; }); if (isCustom) { - data.push({value: this.CustomFormat, displayValue: this.CustomFormat}); + var rec = new Common.UI.DataViewModel(); + rec.set({ + value: me.api.asc_convertNumFormat2NumFormatLocal(this.CustomFormat), + format: this.CustomFormat + }); + data.push(rec); } - this.cmbCode.setData(data); - var value = me.api.asc_convertNumFormat2NumFormatLocal(this.Format); - this.cmbCode.setValue(value); - this.inputCustomFormat.setValue(value); + this.codesList.store.reset(data, {silent: false}); + var rec = this.codesList.store.findWhere({value: this.Format}); + rec && this.codesList.selectRecord(rec); + rec && this.codesList.scrollToRecord(rec); + this.inputCustomFormat.setValue(me.api.asc_convertNumFormat2NumFormatLocal(this.Format)); } this.lblExample.text(this.api.asc_getLocaleExample(this.Format)); @@ -522,6 +534,7 @@ define([ this._typePanel.toggleClass('hidden', !hasType); this._symbolsPanel.toggleClass('hidden', !hasSymbols); this._codePanel.toggleClass('hidden', !hasCode); + this._nocodePanel.toggleClass('hidden', hasCode); this._state = { hasDecimal: hasDecimal, hasNegative: hasNegative, hasSeparator: hasSeparator, hasType: hasType, hasSymbols: hasSymbols, hasCode: hasCode}; },