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

add set field column items in pivot table

parent b84a1bc3
...@@ -4924,7 +4924,7 @@ ...@@ -4924,7 +4924,7 @@
} }
}; };
Worksheet.prototype._updatePivotTable = function (pivotTable, cleanRanges) { Worksheet.prototype._updatePivotTable = function (pivotTable, cleanRanges) {
var pos, cells, index, i, j, v, field, indexField, cacheIndex, sharedItem; var pos, cells, index, i, j, v, r, c1, r1, field, indexField, cacheIndex, sharedItem, item, items, setName;
for (i = 0; i < cleanRanges.length; ++i) { for (i = 0; i < cleanRanges.length; ++i) {
cleanRanges[i].cleanAll(); cleanRanges[i].cleanAll();
} }
...@@ -4932,6 +4932,7 @@ ...@@ -4932,6 +4932,7 @@
var cacheFields = pivotTable.asc_getCacheFields(); var cacheFields = pivotTable.asc_getCacheFields();
var pivotFields = pivotTable.asc_getPivotFields(); var pivotFields = pivotTable.asc_getPivotFields();
var pageFields = pivotTable.asc_getPageFields(); var pageFields = pivotTable.asc_getPageFields();
var colFields = pivotTable.asc_getColumnFields();
var rowFields = pivotTable.asc_getRowFields(); var rowFields = pivotTable.asc_getRowFields();
var rowFieldsPos = []; var rowFieldsPos = [];
for (i = 0; i < pivotTable.pageFieldsPositions.length; ++i) { for (i = 0; i < pivotTable.pageFieldsPositions.length; ++i) {
...@@ -4946,46 +4947,86 @@ ...@@ -4946,46 +4947,86 @@
} }
var countC = pivotTable.getColumnFieldsCount(); var countC = pivotTable.getColumnFieldsCount();
var countR = pivotTable.getRowFieldsCount(true); var countR = pivotTable.getRowFieldsCount(true);
var c1 = pivotRange.c1;
var r1 = pivotRange.r1 + countC; if (countC) {
c1 = pivotRange.c1 + countR;
var setRow = false; r1 = pivotRange.r1;
for (i = 0; i < rowFields.length; ++i) {
if (0 === i) { cells = this.getRange4(r1, c1);
cells = this.getRange4(r1, c1); cells.setValue('Column Labels');
cells.setValue('Row Labels');
} ++r1;
index = rowFields[i].asc_getIndex();
field = pivotFields[index]; items = pivotTable.getColItems();
if (setRow) { if (items && countC) {
cells = this.getRange4(r1, c1); for (i = 0; i < items.length; ++i) {
cells.setValue(pivotFields[index].asc_getName() || cacheFields[index].asc_getName()); item = items[i];
setRow = false; r = item.getR();
} for (j = 0; j < item.x.length; ++j) {
rowFieldsPos[i] = c1; if (AscCommonExcel.c_oAscItemType.Grand === item.t) {
if (field && false === field.compact) { v = 'Grand Total';
++c1; } else {
setRow = true; indexField = colFields[r + j].asc_getIndex();
} cacheIndex = pivotFields[indexField].getItem(item.x[j].getV());
} sharedItem = cacheFields[indexField].getSharedItem(cacheIndex.x);
v = sharedItem.v;
++r1; }
var item, items = pivotTable.getRowItems(); if (AscCommonExcel.c_oAscItemType.Default === item.t) {
if (items) { // ToDo add other names by type
for (i = 0; i < items.length; ++i) { v += ' Total';
item = items[i]; }
for (j = 0; j < item.x.length; ++j) {
if (AscCommonExcel.c_oAscItemType.Grand === item.t) { cells = this.getRange4(r1 + r + j, c1 + i);
v = 'Grand Total'; cells.setValue(v);
} else { }
indexField = rowFields[item.getR()].asc_getIndex(); }
cacheIndex = pivotFields[indexField].getItem(item.x[j].getV()); }
sharedItem = cacheFields[indexField].getSharedItem(cacheIndex.x); }
v = sharedItem.v;
if (countR) {
c1 = pivotRange.c1;
r1 = pivotRange.r1 + countC;
setName = false;
for (i = 0; i < rowFields.length; ++i) {
if (0 === i) {
cells = this.getRange4(r1, c1);
cells.setValue('Row Labels');
}
index = rowFields[i].asc_getIndex();
field = pivotFields[index];
if (setName) {
cells = this.getRange4(r1, c1);
cells.setValue(pivotFields[index].asc_getName() || cacheFields[index].asc_getName());
setName = false;
}
rowFieldsPos[i] = c1;
if (field && false === field.compact) {
++c1;
setName = true;
}
}
++r1;
items = pivotTable.getRowItems();
if (items) {
for (i = 0; i < items.length; ++i) {
item = items[i];
r = item.getR();
for (j = 0; j < item.x.length; ++j) {
if (AscCommonExcel.c_oAscItemType.Grand === item.t) {
v = 'Grand Total';
} else {
indexField = rowFields[r].asc_getIndex();
cacheIndex = pivotFields[indexField].getItem(item.x[j].getV());
sharedItem = cacheFields[indexField].getSharedItem(cacheIndex.x);
v = sharedItem.v;
}
cells = this.getRange4(r1 + i, rowFieldsPos[item.getR()]);
cells.setValue(v);
} }
cells = this.getRange4(r1 + i, rowFieldsPos[item.getR()]);
cells.setValue(v);
} }
} }
} }
...@@ -5108,9 +5149,9 @@ ...@@ -5108,9 +5149,9 @@
} }
} }
} }
countR = pivotTable.getRowFieldsCount();
items = pivotTable.getRowItems(); items = pivotTable.getRowItems();
if (countR && items) { if (items && countR) {
countR = pivotTable.getRowFieldsCount();
start = pivotRange.r1 + countC + 1; start = pivotRange.r1 + countC + 1;
for (j = 0; j < items.length; ++j) { for (j = 0; j < items.length; ++j) {
item = items[j]; item = items[j];
......
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