[SSE] Apply sort settings

This commit is contained in:
Julia Radzhabova 2019-10-10 14:46:39 +03:00
parent bf226e3cc9
commit ca7dc3ebdc
2 changed files with 91 additions and 31 deletions

View file

@ -249,10 +249,10 @@ define([
(new SSE.Views.SortDialog({
props: props,
api: me.api,
handler: function (result) {
handler: function (result, settings) {
if (result == 'ok') {
if (me && me.api) {
me.api.asc_setSortProps(settings);
}
}
}

View file

@ -71,9 +71,18 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
this.api = options.api;
this.handler = options.handler;
this.props = options.props;
this.levels = [];
this.sortOptions = {};
this.sortStore = new Common.UI.DataViewStore();
this.options.handler = function(result, value) {
if ( result != 'ok' || this.isListValid() ) {
if (options.handler)
options.handler.call(this, result, value);
return;
}
return true;
};
Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options);
},
@ -161,8 +170,7 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
this.sort_data = [
{ value: Asc.c_oAscSortOptions.ByValue, displayValue: this.textValues },
{ value: Asc.c_oAscSortOptions.ByColorFill, displayValue: this.textCellColor },
{ value: Asc.c_oAscSortOptions.ByColorFont, displayValue: this.textFontColor },
{ value: Asc.c_oAscSortOptions.ByIcon, displayValue: this.textCellIcon }
{ value: Asc.c_oAscSortOptions.ByColorFont, displayValue: this.textFontColor }
];
this.order_data = [
{ value: Asc.c_oAscSortOptions.Ascending, displayValue: this.textAZ },
@ -176,10 +184,7 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
},
refreshList: function(levels) {
this.cmbsColumn = [];
this.cmbsSort = [];
this.cmbsOrder = [];
this.levels = [];
if (levels) {
var arr = [];
for (var i=0; i<levels.length; i++) {
@ -201,8 +206,14 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
addControls: function(listView, itemView, item) {
if (!item) return;
var cmpEl = this.sortList.cmpEl;
var i = item.get('levelIndex');
var me = this,
cmpEl = this.sortList.cmpEl,
i = item.get('levelIndex');
if (!this.levels[i])
this.levels[i] = {
order_data: this.order_data
};
var level = this.levels[i];
var el = cmpEl.find('#sort-dialog-cmb-col-' + i),
combo = new Common.UI.ComboBox({
el : el,
@ -213,10 +224,12 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
data : this.column_data
}).on('selected', function(combo, record) {
item.set('columnIndex', record.value);
level.levelProps = me.props.asc_getLevelProps(record.value);
me.updateOrderList(i);
});
var val = item.get('columnIndex');
(val!==null) && combo.setValue(item.get('columnIndex'));
this.cmbsColumn[i] = combo;
level.cmbColumn = combo;
el = cmpEl.find('#sort-dialog-cmb-sort-' + i);
combo = new Common.UI.ComboBox({
@ -227,10 +240,11 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
data : this.sort_data
}).on('selected', function(combo, record) {
item.set('sort', record.value);
me.updateOrderList(i);
});
val = item.get('sort');
(val!==null) && combo.setValue(val);
this.cmbsSort[i] = combo;
level.cmbSort = combo;
el = cmpEl.find('#sort-dialog-cmb-order-' + i);
combo = new Common.UI.ComboBox({
@ -238,13 +252,13 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
editable : false,
cls : 'input-group-nr',
menuCls : 'menu-absolute',
data : this.order_data
data : level.order_data
}).on('selected', function(combo, record) {
item.set('order', record.value);
});
val = item.get('order');
(val!==null) && combo.setValue(val);
this.cmbsOrder[i] = combo;
level.cmbOrder = combo;
},
onOptions: function () {
@ -271,20 +285,27 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
var values = this.props.asc_getSortList();
this.column_data = [];
for (var i=0; i<values.length; i++) {
this.column_data.push({ value: values[i], displayValue: values[i] });
}
for (var i=0; i<this.cmbsColumn.length; i++) {
var cmb = this.cmbsColumn[i];
if (!cmb) continue;
cmb.setData(this.column_data);
this.column_data.push({ value: i, displayValue: values[i] });
}
var me = this;
this.sortList.store.each(function(item) {
var columnIndex = (item.get('sort')==Asc.c_oAscSortOptions.ByValue) ? null : 0,
levelIndex = item.get('levelIndex');
item.set('columnIndex', columnIndex, {silent: true} );
item.set('order', Asc.c_oAscSortOptions.Ascending, {silent: true} );
me.levels[levelIndex].levelProps = (columnIndex!==null) ? me.props.asc_getLevelProps(columnIndex) : undefined;
me.addControls(null, null, item);
me.updateOrderList(levelIndex);
});
},
onAddLevel: function() {
var store = this.sortList.store,
rec = this.sortList.getSelectedRec();
rec = store.add({
levelIndex: this.cmbsColumn.length,
columnIndex: null,
levelIndex: this.levels.length,
sort: Asc.c_oAscSortOptions.ByValue,
order: Asc.c_oAscSortOptions.Ascending
}, {at: rec ? store.indexOf(rec)+1 : store.length});
@ -299,8 +320,8 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
var store = this.sortList.store,
rec = this.sortList.getSelectedRec();
rec = store.add({
levelIndex: this.cmbsColumn.length,
columnIndex: rec ? rec.get('columnIndex') : '',
levelIndex: this.levels.length,
columnIndex: rec ? rec.get('columnIndex') : null,
sort: rec ? rec.get('sort') : Asc.c_oAscSortOptions.ByValue,
order: rec ? rec.get('order') : Asc.c_oAscSortOptions.Ascending,
color: rec ? rec.get('color') : null
@ -317,10 +338,7 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
rec = this.sortList.getSelectedRec();
if (rec) {
var index = rec.get('levelIndex');
this.cmbsColumn[index] = undefined;
this.cmbsSort[index] = undefined;
this.cmbsOrder[index] = undefined;
this.levels[index] = undefined;
index = store.indexOf(rec);
store.remove(rec);
(store.length>0) && this.sortList.selectByIndex(index<store.length ? index : store.length-1);
@ -346,17 +364,52 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
this.updateMoveButtons();
},
updateOrderList: function(levelIndex) {
var level = this.levels[levelIndex],
istext = level.levelProps ? level.levelProps.asc_getIsTextData() : true,
iscolor = (level.cmbSort.getValue() !== Asc.c_oAscSortOptions.ByValue),
order = level.cmbOrder.getValue();
level.order_data = [
{ value: Asc.c_oAscSortOptions.Ascending, displayValue: (iscolor) ? (this.sortOptions.sortcol ? this.textTop : this.textLeft) : (istext ? this.textAZ : this.textAsc) },
{ value: Asc.c_oAscSortOptions.Descending, displayValue: (iscolor) ? (this.sortOptions.sortcol ? this.textBelow : this.textRight): (istext ? this.textZA : this.textDesc)}
];
level.cmbOrder.setData(level.order_data);
level.cmbOrder.setValue(order);
},
getSettings: function() {
var props = new Asc.CSortProperties();
props.asc_setHasHeaders(this.sortOptions.headers);
// props.asc_setCaseSensitive(this.sortOptions.sensitive);
props.asc_setColumnSort(this.sortOptions.sortcol);
return {};
var me = this,
arr = [];
this.sortList.store.each(function(item) {
var columnIndex = item.get('columnIndex'),
levelProp = me.levels[item.get('levelIndex')];
if (columnIndex!==null && levelProp) {
var level = new Asc.CSortPropertiesLevel();
level.asc_setIndex(columnIndex);
level.asc_setSortBy(levelProp.cmbSort.getValue());
level.asc_setDescending(levelProp.cmbOrder.getValue());
// level.asc_setColor(level.color);
arr.push[level];
}
});
props.asc_setLevels(arr);
return props;
},
isListValid: function() {
var rec = this.sortList.store.findWhere({columnIndex: null});
if (rec)
Common.UI.warning({msg: this.errorEmpty});
return !rec;
},
close: function () {
Common.UI.Window.prototype.close.call(this);
Common.Views.AdvancedSettingsWindow.prototype.close.call(this);
},
onKeyDown: function (lisvView, record, e) {
@ -395,7 +448,14 @@ define([ 'text!spreadsheeteditor/main/app/template/SortDialog.template',
textFontColor: 'Font color',
textCellIcon: 'Cell icon',
textAZ: 'A to Z',
textZA: 'Z to A'
textZA: 'Z to A',
textDesc: 'Descending',
textAsc: 'Ascending',
textTop: 'Top',
textBelow: 'Below',
textLeft: 'Left',
textRight: 'Right',
errorEmpty: 'All sort criteria must have a column or row specified.'
}, SSE.Views.SortDialog || {}));
});