Commit d471dbd8 authored by Alexander.Trofimov's avatar Alexander.Trofimov

add update pageFields after add/remove

parent 6c909198
...@@ -3481,20 +3481,25 @@ var editor; ...@@ -3481,20 +3481,25 @@ var editor;
spreadsheet_api.prototype._changePivotStyle = function (pivot, callback) { spreadsheet_api.prototype._changePivotStyle = function (pivot, callback) {
var t = this; var t = this;
var changePivotStyle = function (res) { var changePivotStyle = function (res) {
var ws, pivotRange; var ws, wsModel, pivotRange, pos, i;
if (res) { if (res) {
wsModel = t.wbModel.getActiveWs();
pivotRange = pivot.getRange().clone();
for (i = 0; i < pivot.pageFieldsPositions.length; ++i) {
pos = pivot.pageFieldsPositions[i];
pivotRange.union3(pos.col + 1, pos.row);
}
History.Create_NewPoint(); History.Create_NewPoint();
History.StartTransaction(); History.StartTransaction();
callback(); callback(wsModel);
History.EndTransaction(); History.EndTransaction();
pivotRange = pivot.getRange().clone(); pivotRange.union2(pivot.getRange());
// ToDo update ranges, not big range // ToDo update ranges, not big range
var pos; for (i = 0; i < pivot.pageFieldsPositions.length; ++i) {
for (var j = 0; j < pivot.pageFieldsPositions.length; ++j) { pos = pivot.pageFieldsPositions[i];
pos = pivot.pageFieldsPositions[j];
pivotRange.union3(pos.col + 1, pos.row); pivotRange.union3(pos.col + 1, pos.row);
} }
t.wbModel.getActiveWs().updatePivotTablesStyle(pivotRange); wsModel.updatePivotTablesStyle(pivotRange);
ws = t.wb.getWorksheet(); ws = t.wb.getWorksheet();
ws._onUpdateFormatTable(pivotRange); ws._onUpdateFormatTable(pivotRange);
t.wb._onWSSelectionChanged(); t.wb._onWSSelectionChanged();
......
...@@ -2738,34 +2738,41 @@ CT_pivotTableDefinition.prototype.asc_setColGrandTotals = function(newVal) { ...@@ -2738,34 +2738,41 @@ CT_pivotTableDefinition.prototype.asc_setColGrandTotals = function(newVal) {
}; };
CT_pivotTableDefinition.prototype.asc_addPageField = function (api, index) { CT_pivotTableDefinition.prototype.asc_addPageField = function (api, index) {
var t = this; var t = this;
api._changePivotStyle(this, function () { api._changePivotStyle(this, function (ws) {
var pivotField = t.asc_getPivotFields()[index]; ws.clearPivotRable(t);
if (pivotField) { t.addPageField(index);
if (c_oAscAxis.AxisPage !== pivotField.axis) { ws.updatePivotTable(t);
t.removeField(index);
} else {
// ToDo move to end ?
}
if (!t.pageFields) {
t.pageFields = new CT_PageFields();
}
var newField = new CT_PageField();
newField.fld = index;
newField.hier = -1;
t.pageFields.add(newField);
pivotField.axis = c_oAscAxis.AxisPage;
t.location.addColPage();
}
}); });
}; };
CT_pivotTableDefinition.prototype.asc_removeField = function (api, index) { CT_pivotTableDefinition.prototype.asc_removeField = function (api, index) {
var t = this; var t = this;
api._changePivotStyle(this, function () { api._changePivotStyle(this, function (ws) {
ws.clearPivotRable(t);
t.removeField(index); t.removeField(index);
ws.updatePivotTable(t);
}); });
}; };
CT_pivotTableDefinition.prototype.addPageField = function (index) {
var pivotField = this.asc_getPivotFields()[index];
if (pivotField) {
if (c_oAscAxis.AxisPage !== pivotField.axis) {
this.removeField(index);
} else {
// ToDo move to end ?
}
if (!this.pageFields) {
this.pageFields = new CT_PageFields();
}
var newField = new CT_PageField();
newField.fld = index;
newField.hier = -1;
this.pageFields.add(newField);
pivotField.axis = c_oAscAxis.AxisPage;
this.location.addColPage();
}
};
CT_pivotTableDefinition.prototype.removeField = function (index) { CT_pivotTableDefinition.prototype.removeField = function (index) {
var pivotField = this.asc_getPivotFields()[index]; var pivotField = this.asc_getPivotFields()[index];
switch(pivotField.axis) { switch(pivotField.axis) {
......
...@@ -4866,6 +4866,33 @@ ...@@ -4866,6 +4866,33 @@
this.pivotTables[i].init(); this.pivotTables[i].init();
} }
}; };
Worksheet.prototype.clearPivotRable = function (pivotTable) {
var pos, cells;
for (var i = 0; i < pivotTable.pageFieldsPositions.length; ++i) {
pos = pivotTable.pageFieldsPositions[i];
cells = this.getRange3(pos.row, pos.col, pos.row, pos.col + 1);
cells.clearTableStyle();
cells.cleanAll();
}
};
Worksheet.prototype.updatePivotTable = function (pivotTable) {
pivotTable.init();
var pos, cells, index;
var cacheFields = pivotTable.asc_getCacheFields();
var pivotFields = pivotTable.asc_getPivotFields();
var pageFields = pivotTable.asc_getPageFields();
for (var i = 0; i < pivotTable.pageFieldsPositions.length; ++i) {
pos = pivotTable.pageFieldsPositions[i];
cells = this.getRange3(pos.row, pos.col, pos.row, pos.col);
index = pageFields[i].asc_getIndex();
cells.setValue(pageFields[i].asc_getName() || pivotFields[index].asc_getName() ||
cacheFields[index].asc_getName());
cells = this.getRange3(pos.row, pos.col + 1, pos.row, pos.col + 1);
cells.setValue('(All)');
}
};
Worksheet.prototype.updatePivotTablesStyle = function (range) { Worksheet.prototype.updatePivotTablesStyle = function (range) {
var pivotTable, pivotRange, styleInfo, style, wholeStyle, cells, j, pos, countC, countR, stripe1, stripe2, var pivotTable, pivotRange, styleInfo, style, wholeStyle, cells, j, pos, countC, countR, stripe1, stripe2,
start = 0, emptyStripe = new Asc.CTableStyleElement(); start = 0, emptyStripe = new Asc.CTableStyleElement();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment