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

add update pageFields after add/remove

parent 6c909198
......@@ -3481,20 +3481,25 @@ var editor;
spreadsheet_api.prototype._changePivotStyle = function (pivot, callback) {
var t = this;
var changePivotStyle = function (res) {
var ws, pivotRange;
var ws, wsModel, pivotRange, pos, i;
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.StartTransaction();
callback();
callback(wsModel);
History.EndTransaction();
pivotRange = pivot.getRange().clone();
pivotRange.union2(pivot.getRange());
// ToDo update ranges, not big range
var pos;
for (var j = 0; j < pivot.pageFieldsPositions.length; ++j) {
pos = pivot.pageFieldsPositions[j];
for (i = 0; i < pivot.pageFieldsPositions.length; ++i) {
pos = pivot.pageFieldsPositions[i];
pivotRange.union3(pos.col + 1, pos.row);
}
t.wbModel.getActiveWs().updatePivotTablesStyle(pivotRange);
wsModel.updatePivotTablesStyle(pivotRange);
ws = t.wb.getWorksheet();
ws._onUpdateFormatTable(pivotRange);
t.wb._onWSSelectionChanged();
......
......@@ -2738,34 +2738,41 @@ CT_pivotTableDefinition.prototype.asc_setColGrandTotals = function(newVal) {
};
CT_pivotTableDefinition.prototype.asc_addPageField = function (api, index) {
var t = this;
api._changePivotStyle(this, function () {
var pivotField = t.asc_getPivotFields()[index];
if (pivotField) {
if (c_oAscAxis.AxisPage !== pivotField.axis) {
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();
}
api._changePivotStyle(this, function (ws) {
ws.clearPivotRable(t);
t.addPageField(index);
ws.updatePivotTable(t);
});
};
CT_pivotTableDefinition.prototype.asc_removeField = function (api, index) {
var t = this;
api._changePivotStyle(this, function () {
api._changePivotStyle(this, function (ws) {
ws.clearPivotRable(t);
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) {
var pivotField = this.asc_getPivotFields()[index];
switch(pivotField.axis) {
......
......@@ -4866,6 +4866,33 @@
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) {
var pivotTable, pivotRange, styleInfo, style, wholeStyle, cells, j, pos, countC, countR, stripe1, stripe2,
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